patch 9.1.1006: PmenuMatch completion highlight can be combined Commit: https://github.com/vim/vim/commit/9eff3ee81839d67999491d293879ada134df2d3e Author: glepnir <glephun...@gmail.com> Date: Sat Jan 11 16:47:34 2025 +0100
patch 9.1.1006: PmenuMatch completion highlight can be combined Problem: PmenuMatch completion highlight can be combined Solution: Combine highlight groups PmenuMatch with Pmenu and PmenuMatchSel with PmenuSel (glepnir) fixes: #15563 closes: #16408 Signed-off-by: glepnir <glephun...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 7640ee183..2fb320efc 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2024 Dec 16 +*syntax.txt* For Vim version 9.1. Last change: 2025 Jan 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5854,9 +5854,11 @@ PmenuSbar Popup menu: Scrollbar. *hl-PmenuThumb* PmenuThumb Popup menu: Thumb of the scrollbar. *hl-PmenuMatch* -PmenuMatch Popup menu: Matched text in normal item. +PmenuMatch Popup menu: Matched text in normal item. Applied in + combination with |hl-Pmenu|. *hl-PmenuMatchSel* -PmenuMatchSel Popup menu: Matched text in selected item. +PmenuMatchSel Popup menu: Matched text in selected item. Applied in + combination with |hl-PmenuSel|. *hl-ComplMatchIns* ComplMatchIns Matched text of the currently inserted completion. *hl-PopupNotification* diff --git a/src/popupmenu.c b/src/popupmenu.c index ea2edca9a..14cc69a86 100644 --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -450,13 +450,18 @@ pum_compute_text_attrs(char_u *text, hlf_T hlf, int user_hlattr) if (char_pos == ((int_u *)ga->ga_data)[i]) { new_attr = highlight_attr[is_select ? HLF_PMSI : HLF_PMNI]; + new_attr = hl_combine_attr(highlight_attr[hlf], new_attr); break; } } } else if (matched_start && ptr < text + leader_len) + { new_attr = highlight_attr[is_select ? HLF_PMSI : HLF_PMNI]; + new_attr = hl_combine_attr(highlight_attr[hlf], new_attr); + } + new_attr = hl_combine_attr(highlight_attr[HLF_PNI], new_attr); if (user_hlattr > 0) new_attr = hl_combine_attr(new_attr, user_hlattr); diff --git a/src/testdir/dumps/Test_pum_highlights_18.dump b/src/testdir/dumps/Test_pum_highlights_18.dump new file mode 100644 index 000000000..a57f7a2be --- /dev/null +++ b/src/testdir/dumps/Test_pum_highlights_18.dump @@ -0,0 +1,20 @@ +|f+0&#ffffff0|b> @72 +|f+0#40ffff15#e0e0e08|o+0#0000001&@1|B+0#40ffff15&|a+0#0000001&|z| @1|f|o@1|k|i|n|d| | +0#4040ff13#ffffff0@58 +|f+0&#ffd7ff255|o+0#0000001&@1|b+0#4040ff13&|a+0#0000001&|r| @1|f|o@1|k|i|n|d| | +0#4040ff13#ffffff0@58 +|f+0&#ffd7ff255|o+0#0000001&@1|b+0#4040ff13&|a+0#0000001&|l|a| |f|o@1|k|i|n|d| | +0#4040ff13#ffffff0@58 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |9| +0#0000000&@34 diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index 0303c42bd..08b9cd9ca 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -1511,6 +1511,16 @@ func Test_pum_highlights_match() call term_sendkeys(buf, "\<ESC>S/non_existing_folder\<C-X>\<C-F>") call TermWait(buf, 50) call VerifyScreenDump(buf, 'Test_pum_highlights_15', {}) + call term_sendkeys(buf, "\<C-E>\<Esc>") + + call term_sendkeys(buf, ":hi PmenuMatchSel ctermfg=14\<CR>") + call TermWait(buf, 50) + call term_sendkeys(buf, ":hi PmenuMatch ctermfg=12\<CR>") + call term_sendkeys(buf, ":set cot=menu,noinsert,fuzzy\<CR>") + call term_sendkeys(buf, "S\<C-X>\<C-O>") + call TermWait(buf, 50) + call term_sendkeys(buf, "fb") + call VerifyScreenDump(buf, 'Test_pum_highlights_18', {}) call term_sendkeys(buf, "\<C-E>\<Esc>") call TermWait(buf) diff --git a/src/version.c b/src/version.c index 1927d9e82..9d9f90535 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1006, /**/ 1005, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tWdu7-0054mX-2X%40256bit.org.