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 <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Girish Palya
2025-09-10 04:04:24 -04:00
committed by Christian Brabandt
parent f6659f6e61
commit 2525c56e42
5 changed files with 16 additions and 13 deletions

View File

@ -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 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 preinsert
When autocompletion is not enabled, inserts the part of the When autocompletion is not enabled, inserts the part of the
first candidate word beyond the current completion leader, 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'. move. Requires 'fuzzy' unset and 'menuone' in 'completeopt'.
When 'autocomplete' is enabled, inserts the longest common When 'autocomplete' is enabled, inserts the longest common
prefix of matches (from all shown items or buffer-specific prefix of matches (from all shown items or from the
matches), highlighted with |hl-PreInsert|. This occurs only current buffer items). This occurs only when no menu item
when no menu item is selected. Press CTRL-Y to accept. is selected. Press CTRL-Y to accept.
preview Show extra information about the currently selected preview Show extra information about the currently selected
completion in the preview window. Only works in 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-PmenuThumb| X popup menu scrollbar thumb
|hl-PmenuMatch| k popup menu matched text |hl-PmenuMatch| k popup menu matched text
|hl-PmenuMatchSel| < popup menu matched text in selected line |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: The display modes are:
r reverse (termcap entry "mr" and "me") r reverse (termcap entry "mr" and "me")

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -5999,7 +5999,7 @@ PmenuMatchSel Popup menu: Matched text in selected item. Applied in
*hl-ComplMatchIns* *hl-ComplMatchIns*
ComplMatchIns Matched text of the currently inserted completion. ComplMatchIns Matched text of the currently inserted completion.
*hl-PreInsert* *hl-PreInsert*
PreInsert Text inserted during autocompletion when "preinsert". PreInsert Text inserted when "preinsert" is in 'completeopt'.
*hl-PopupSelected* *hl-PopupSelected*
PopupSelected Popup window created with |popup_menu()|. Linked to PopupSelected Popup window created with |popup_menu()|. Linked to
|hl-PmenuSel| by default. |hl-PmenuSel| by default.

View File

@ -1067,10 +1067,13 @@ ins_compl_col_range_attr(linenr_T lnum, int col)
{ {
int start_col; int start_col;
int attr; int attr;
int has_preinsert = ins_compl_has_preinsert();
if ((get_cot_flags() & COT_FUZZY) if ((get_cot_flags() & COT_FUZZY)
|| (!compl_autocomplete || (!has_preinsert
&& (attr = syn_name2attr((char_u *)"ComplMatchIns")) == 0) && (attr = syn_name2attr((char_u *)"ComplMatchIns")) == 0)
|| (!compl_autocomplete && has_preinsert
&& (attr = syn_name2attr((char_u *)"PreInsert")) == 0)
|| (compl_autocomplete || (compl_autocomplete
&& (!compl_autocomplete_preinsert && (!compl_autocomplete_preinsert
|| (attr = syn_name2attr((char_u *)"PreInsert")) == 0))) || (attr = syn_name2attr((char_u *)"PreInsert")) == 0)))
@ -2531,9 +2534,7 @@ ins_compl_new_leader(void)
if (compl_started && compl_autocomplete if (compl_started && compl_autocomplete
&& !ins_compl_preinsert_effect()) && !ins_compl_preinsert_effect())
{ {
if (ins_compl_insert(TRUE, TRUE) != OK) if (ins_compl_insert(TRUE, TRUE) == OK)
(void)ins_compl_insert(FALSE, FALSE);
else
compl_autocomplete_preinsert = TRUE; compl_autocomplete_preinsert = TRUE;
} }
else else

View File

@ -1,7 +1,7 @@
|f+0&#ffffff0|o@1| @71 |f+0&#ffffff0|o@1| @71
|f|o@1|b|a|r| @68 |f|o@1|b|a|r| @68
|f|o@1|b|a|r|b|a|z| @65 |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#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| @8| +0#4040ff13#ffffff0@59
|f+0#0000001#ffd7ff255|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59 |f+0#0000001#ffd7ff255|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59

View File

@ -724,6 +724,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1750,
/**/ /**/
1749, 1749,
/**/ /**/