From 2525c56e423b3ddce8de925f582b9c4d00079675 Mon Sep 17 00:00:00 2001 From: Girish Palya Date: Wed, 10 Sep 2025 04:04:24 -0400 Subject: [PATCH] patch 9.1.1750: completion: preinserted text highlighed using ComplMatchIns Problem: completion: preinserted text highlighed using ComplMatchIns Solution: Use highlighting group PreInsert and update the documentation (Girish Palya). When "preinsert" is included in 'completeopt', only the PreInsert highlight group should be applied, whether autocompletion is active or not. Previously, ComplMatchIns was used when autocompletion was not enabled. Related to https://github.com/vim/vim/pull/18213. closes: #18254 Signed-off-by: Girish Palya Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 12 ++++++------ runtime/doc/syntax.txt | 4 ++-- src/insexpand.c | 9 +++++---- src/testdir/dumps/Test_autocompletedelay_7.dump | 2 +- src/version.c | 2 ++ 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 51c3c64e59..54b046b7d2 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2025 Sep 08 +*options.txt* For Vim version 9.1. Last change: 2025 Sep 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2303,13 +2303,13 @@ A jump table for the options with a short description can be found at |Q_op|. preinsert When autocompletion is not enabled, inserts the part of the first candidate word beyond the current completion leader, - highlighted with |hl-ComplMatchIns|. The cursor does not + highlighted with |hl-PreInsert|. The cursor does not move. Requires 'fuzzy' unset and 'menuone' in 'completeopt'. When 'autocomplete' is enabled, inserts the longest common - prefix of matches (from all shown items or buffer-specific - matches), highlighted with |hl-PreInsert|. This occurs only - when no menu item is selected. Press CTRL-Y to accept. + prefix of matches (from all shown items or from the + current buffer items). This occurs only when no menu item + is selected. Press CTRL-Y to accept. preview Show extra information about the currently selected completion in the preview window. Only works in @@ -4725,7 +4725,7 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-PmenuThumb| X popup menu scrollbar thumb |hl-PmenuMatch| k popup menu matched text |hl-PmenuMatchSel| < popup menu matched text in selected line - |hl-PreInsert| I text inserted when "preinsert" and 'autocomplete' + |hl-PreInsert| I text inserted when "preinsert" is in 'completeopt' The display modes are: r reverse (termcap entry "mr" and "me") diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 949bf1759f..39a64da63d 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2025 Sep 08 +*syntax.txt* For Vim version 9.1. Last change: 2025 Sep 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5999,7 +5999,7 @@ PmenuMatchSel Popup menu: Matched text in selected item. Applied in *hl-ComplMatchIns* ComplMatchIns Matched text of the currently inserted completion. *hl-PreInsert* -PreInsert Text inserted during autocompletion when "preinsert". +PreInsert Text inserted when "preinsert" is in 'completeopt'. *hl-PopupSelected* PopupSelected Popup window created with |popup_menu()|. Linked to |hl-PmenuSel| by default. diff --git a/src/insexpand.c b/src/insexpand.c index d797bc5d94..dac3698cf7 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -1067,10 +1067,13 @@ ins_compl_col_range_attr(linenr_T lnum, int col) { int start_col; int attr; + int has_preinsert = ins_compl_has_preinsert(); if ((get_cot_flags() & COT_FUZZY) - || (!compl_autocomplete + || (!has_preinsert && (attr = syn_name2attr((char_u *)"ComplMatchIns")) == 0) + || (!compl_autocomplete && has_preinsert + && (attr = syn_name2attr((char_u *)"PreInsert")) == 0) || (compl_autocomplete && (!compl_autocomplete_preinsert || (attr = syn_name2attr((char_u *)"PreInsert")) == 0))) @@ -2531,9 +2534,7 @@ ins_compl_new_leader(void) if (compl_started && compl_autocomplete && !ins_compl_preinsert_effect()) { - if (ins_compl_insert(TRUE, TRUE) != OK) - (void)ins_compl_insert(FALSE, FALSE); - else + if (ins_compl_insert(TRUE, TRUE) == OK) compl_autocomplete_preinsert = TRUE; } else diff --git a/src/testdir/dumps/Test_autocompletedelay_7.dump b/src/testdir/dumps/Test_autocompletedelay_7.dump index 954b785d87..6c43fa46e9 100644 --- a/src/testdir/dumps/Test_autocompletedelay_7.dump +++ b/src/testdir/dumps/Test_autocompletedelay_7.dump @@ -1,7 +1,7 @@ |f+0&#ffffff0|o@1| @71 |f|o@1|b|a|r| @68 |f|o@1|b|a|r|b|a|z| @65 -|f>o@1| @71 +|f>o+0#00e0003&@1| +0#0000000&@71 |f+0#0000001#e0e0e08|o@1| @11| +0#4040ff13#ffffff0@59 |f+0#0000001#ffd7ff255|o@1|b|a|r| @8| +0#4040ff13#ffffff0@59 |f+0#0000001#ffd7ff255|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59 diff --git a/src/version.c b/src/version.c index 10958a5091..c741108d90 100644 --- a/src/version.c +++ b/src/version.c @@ -724,6 +724,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1750, /**/ 1749, /**/