diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index 3af7f516d6..aea3f2b6d2 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -2343,6 +2343,8 @@ static void ins_compl_new_leader(void) ui_flush(); } + int save_w_wrow; + int save_w_leftcol; if (compl_started) { ins_compl_set_original_text(compl_leader.data, compl_leader.size); if (is_cpt_func_refresh_always()) { @@ -2355,13 +2357,15 @@ static void ins_compl_new_leader(void) spell_bad_len = 0; // need to redetect bad word // Matches were cleared, need to search for them now. // Set "compl_restarting" to avoid that the first match is inserted. + save_w_wrow = curwin->w_wrow; + save_w_leftcol = curwin->w_leftcol; compl_restarting = true; if (ins_compl_has_autocomplete()) { ins_compl_enable_autocomplete(); } else { compl_autocomplete = false; } - if (ins_complete(Ctrl_N, true) == FAIL) { + if (ins_complete(Ctrl_N, false) == FAIL) { compl_cont_status = 0; } compl_restarting = false; @@ -2370,7 +2374,9 @@ static void ins_compl_new_leader(void) compl_enter_selects = !compl_used_match && compl_selected_item != -1; // Show the popup menu with a different set of matches. - ins_compl_show_pum(); + if (!compl_interrupted) { + show_pum(save_w_wrow, save_w_leftcol); + } // Don't let Enter select the original text when there is no popup menu. if (compl_match_array == NULL) {