diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-09-24 11:17:51 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-24 11:17:51 +0100 |
commit | 87af60c91503e37c9144f8e48022b12994ce2c85 (patch) | |
tree | 47a15f29beb65b378d85bc7686485c94cb4b71d6 /src/insexpand.c | |
parent | 9fd1583c839c5e43b0d48ec815a79005a2364776 (diff) |
patch 9.0.0567: 'completeopt' "longest" is not used for complete()v9.0.0567
Problem: 'completeopt' "longest" is not used for complete().
Solution: Also use "longest" for complete(). (Bjorn Linse, closes #11206)
Diffstat (limited to 'src/insexpand.c')
-rw-r--r-- | src/insexpand.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/insexpand.c b/src/insexpand.c index f9ee4e6e5e..37162a48ce 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -153,6 +153,8 @@ static int compl_no_insert = FALSE; // FALSE: select & insert // TRUE: noinsert static int compl_no_select = FALSE; // FALSE: select & insert // TRUE: noselect +static int compl_longest = FALSE; // FALSE: insert full match + // TRUE: insert longest prefix // Selected one of the matches. When FALSE the match was edited or using the // longest common string. @@ -1042,10 +1044,13 @@ completeopt_was_set(void) { compl_no_insert = FALSE; compl_no_select = FALSE; + compl_longest = FALSE; if (strstr((char *)p_cot, "noselect") != NULL) compl_no_select = TRUE; if (strstr((char *)p_cot, "noinsert") != NULL) compl_no_insert = TRUE; + if (strstr((char *)p_cot, "longest") != NULL) + compl_longest = TRUE; } @@ -2383,7 +2388,7 @@ ins_compl_prep(int c) if (ctrl_x_mode_not_defined_yet() || (ctrl_x_mode_normal() && !compl_started)) { - compl_get_longest = (strstr((char *)p_cot, "longest") != NULL); + compl_get_longest = compl_longest; compl_used_match = TRUE; } @@ -2864,6 +2869,7 @@ set_completion(colnr_T startcol, list_T *list) ins_compl_prep(' '); ins_compl_clear(); ins_compl_free(); + compl_get_longest = compl_longest; compl_direction = FORWARD; if (startcol > curwin->w_cursor.col) @@ -2888,10 +2894,11 @@ set_completion(colnr_T startcol, list_T *list) compl_cont_status = 0; compl_curr_match = compl_first_match; - if (compl_no_insert || compl_no_select) + int no_select = compl_no_select || compl_longest; + if (compl_no_insert || no_select) { ins_complete(K_DOWN, FALSE); - if (compl_no_select) + if (no_select) // Down/Up has no real effect. ins_complete(K_UP, FALSE); } |