diff options
-rw-r--r-- | src/nvim/edit.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index e51a6e9b09..8c376c3748 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -184,9 +184,6 @@ static expand_T compl_xp; static int compl_opt_refresh_always = FALSE; -static bool compl_show_pum = true; // true: show popup menu - // false: don't show popup menu - typedef struct insert_state { VimState state; cmdarg_T *ca; @@ -1250,7 +1247,7 @@ normalchar: static void insert_do_complete(InsertState *s) { compl_busy = true; - if (ins_complete(s->c) == FAIL) { + if (ins_complete(s->c, true) == FAIL) { compl_cont_status = 0; } compl_busy = false; @@ -2356,18 +2353,16 @@ void set_completion(colnr_T startcol, list_T *list) int save_w_wrow = curwin->w_wrow; compl_curr_match = compl_first_match; - compl_show_pum = false; if (compl_no_insert) { - ins_complete(K_DOWN); + ins_complete(K_DOWN, false); } else { - ins_complete(Ctrl_N); + ins_complete(Ctrl_N, false); if (compl_no_select) { - ins_complete(Ctrl_P); + ins_complete(Ctrl_P, false); } } // Lazily show the popup menu, unless we got interrupted. - compl_show_pum = true; if (!compl_interrupted) { show_pum(save_w_wrow); } @@ -2948,18 +2943,17 @@ static void ins_compl_new_leader(void) ins_bytes(compl_leader + ins_compl_len()); compl_used_match = FALSE; - if (compl_started) + if (compl_started) { ins_compl_set_original_text(compl_leader); - else { - 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. - */ - compl_restarting = TRUE; - if (ins_complete(Ctrl_N) == FAIL) + } else { + 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. + compl_restarting = true; + if (ins_complete(Ctrl_N, true) == FAIL) { compl_cont_status = 0; - compl_restarting = FALSE; + } + compl_restarting = false; } compl_enter_selects = !compl_used_match; @@ -4311,7 +4305,7 @@ static int ins_compl_use_match(int c) * Called when character "c" was typed, which has a meaning for completion. * Returns OK if completion was done, FAIL if something failed. */ -static int ins_complete(int c) +static int ins_complete(int c, bool enable_pum) { char_u *line; int startcol = 0; /* column where searched text starts */ @@ -4795,7 +4789,7 @@ static int ins_complete(int c) } // Show the popup menu, unless we got interrupted. - if (!compl_interrupted && compl_show_pum) { + if (enable_pum && !compl_interrupted) { show_pum(save_w_wrow); } compl_was_interrupted = compl_interrupted; |