diff options
Diffstat (limited to 'src/nvim/edit.c')
| -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; | 
