1
0
forked from aniani/vim

patch 9.1.1123: popup hi groups not falling back to defaults

Problem:  Highlight groups PopupSelected/PopupNotification/
          MessageWindow are supposed to fall back to default highlight
          groups if they are not defined. However, once a colorscheme
          has defined them, switching to another colorscheme that
          doesn't do so will leave behind a cleared colorscheme, which
          causes the fallback to fail.

Solution: Set up default links to the relevant fallback highlight
          groups, which makes sure a `:hi clear` command will reset the
          state properly (Yee Cheng Chin).

closes: #16676

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yee Cheng Chin 2025-02-20 21:58:21 +01:00 committed by Christian Brabandt
parent 911742a975
commit e700ddeea4
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
7 changed files with 21 additions and 17 deletions

View File

@ -1,4 +1,4 @@
*popup.txt* For Vim version 9.1. Last change: 2025 Jan 08 *popup.txt* For Vim version 9.1. Last change: 2025 Feb 20
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -504,7 +504,7 @@ popup_menu({what}, {options}) *popup_menu()*
\ mapping: 0, \ mapping: 0,
\ }) \ })
< The current line is highlighted with a match using < The current line is highlighted with a match using
"PopupSelected", or "PmenuSel" if that is not defined. |hl-PopupSelected| which is linked to "PmenuSel" by default.
Use {options} to change the properties. Should at least set Use {options} to change the properties. Should at least set
"callback" to a function that handles the selected item. "callback" to a function that handles the selected item.
@ -559,7 +559,7 @@ popup_notification({what}, {options}) *popup_notification()*
\ close: 'click', \ close: 'click',
\ padding: [0,1,0,1], \ padding: [0,1,0,1],
\ }) \ })
< The PopupNotification highlight group is used instead of < The |hl-PopupNotification| highlight group is used instead of
WarningMsg if it is defined. WarningMsg if it is defined.
Without the |+timers| feature the popup will not disappear Without the |+timers| feature the popup will not disappear

View File

@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.1. Last change: 2025 Jan 20 *syntax.txt* For Vim version 9.1. Last change: 2025 Feb 20
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -5831,8 +5831,8 @@ CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
MatchParen Character under the cursor or just before it, if it MatchParen Character under the cursor or just before it, if it
is a paired bracket, and its match. |pi_paren.txt| is a paired bracket, and its match. |pi_paren.txt|
*hl-MessageWindow* *hl-MessageWindow*
MessageWindow Messages popup window used by `:echowindow`. If not defined MessageWindow Messages popup window used by `:echowindow`. Linked to
|hl-WarningMsg| is used. |hl-WarningMsg| by default.
*hl-ModeMsg* *hl-ModeMsg*
ModeMsg 'showmode' message (e.g., "-- INSERT --"). ModeMsg 'showmode' message (e.g., "-- INSERT --").
*hl-MsgArea* *hl-MsgArea*
@ -5872,10 +5872,13 @@ PmenuMatchSel Popup menu: Matched text in selected item. Applied in
combination with |hl-PmenuSel|. combination with |hl-PmenuSel|.
*hl-ComplMatchIns* *hl-ComplMatchIns*
ComplMatchIns Matched text of the currently inserted completion. ComplMatchIns Matched text of the currently inserted completion.
*hl-PopupSelected*
PopupSelected Popup window created with |popup_menu()|. Linked to
|hl-PmenuSel| by default.
*hl-PopupNotification* *hl-PopupNotification*
PopupNotification PopupNotification
Popup window created with |popup_notification()|. If not Popup window created with |popup_notification()|. Linked to
defined |hl-WarningMsg| is used. |hl-WarningMsg| by default.
*hl-Question* *hl-Question*
Question |hit-enter| prompt and yes/no questions. Question |hit-enter| prompt and yes/no questions.
*hl-QuickFixLine* *hl-QuickFixLine*

View File

@ -8191,6 +8191,7 @@ hl-PmenuSbar syntax.txt /*hl-PmenuSbar*
hl-PmenuSel syntax.txt /*hl-PmenuSel* hl-PmenuSel syntax.txt /*hl-PmenuSel*
hl-PmenuThumb syntax.txt /*hl-PmenuThumb* hl-PmenuThumb syntax.txt /*hl-PmenuThumb*
hl-PopupNotification syntax.txt /*hl-PopupNotification* hl-PopupNotification syntax.txt /*hl-PopupNotification*
hl-PopupSelected syntax.txt /*hl-PopupSelected*
hl-Question syntax.txt /*hl-Question* hl-Question syntax.txt /*hl-Question*
hl-QuickFixLine syntax.txt /*hl-QuickFixLine* hl-QuickFixLine syntax.txt /*hl-QuickFixLine*
hl-Scrollbar syntax.txt /*hl-Scrollbar* hl-Scrollbar syntax.txt /*hl-Scrollbar*

View File

@ -262,6 +262,9 @@ static char *(highlight_init_both[]) = {
"default link PmenuMatchSel PmenuSel", "default link PmenuMatchSel PmenuSel",
"default link PmenuExtra Pmenu", "default link PmenuExtra Pmenu",
"default link PmenuExtraSel PmenuSel", "default link PmenuExtraSel PmenuSel",
"default link PopupSelected PmenuSel",
"default link MessageWindow WarningMsg",
"default link PopupNotification WarningMsg",
CENT("Normal cterm=NONE", "Normal gui=NONE"), CENT("Normal cterm=NONE", "Normal gui=NONE"),
NULL NULL
}; };

View File

@ -696,9 +696,6 @@ popup_highlight_curline(win_T *wp)
if (!sign_exists_by_name(sign_name)) if (!sign_exists_by_name(sign_name))
{ {
char *linehl = "PopupSelected"; char *linehl = "PopupSelected";
if (syn_name2id((char_u *)linehl) == 0)
linehl = "PmenuSel";
sign_define_by_name(sign_name, NULL, (char_u *)linehl, NULL, NULL, NULL, sign_define_by_name(sign_name, NULL, (char_u *)linehl, NULL, NULL, NULL,
NULL, SIGN_DEF_PRIO); NULL, SIGN_DEF_PRIO);
} }
@ -2006,10 +2003,8 @@ popup_update_color(win_T *wp, create_type_T type)
{ {
char *hiname = type == TYPE_MESSAGE_WIN char *hiname = type == TYPE_MESSAGE_WIN
? "MessageWindow" : "PopupNotification"; ? "MessageWindow" : "PopupNotification";
int nr = syn_name2id((char_u *)hiname);
set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1, set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1,
(char_u *)(nr == 0 ? "WarningMsg" : hiname), (char_u *)hiname,
OPT_FREE|OPT_LOCAL, 0); OPT_FREE|OPT_LOCAL, 0);
} }

View File

@ -1,6 +1,6 @@
>1+0&#ffffff0| @7|╔+0#e000002&|═@21|╗| +0#0000000&@41 >1+0&#ffffff0| @7|╔+0&#5fd7ff255|═@21|╗| +0&#ffffff0@41
|2| @7|║+0#e000002&| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| @2|║| +0#0000000&@41 |2| @7|║+0&#5fd7ff255| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| @2|║| +0&#ffffff0@41
|3| @7|╚+0#e000002&|═@21|╝| +0#0000000&@41 |3| @7|╚+0&#5fd7ff255|═@21|╝| +0&#ffffff0@41
|4| @7|╔+0&#5fd7ff255|═@31|╗| +0&#ffffff0@31 |4| @7|╔+0&#5fd7ff255|═@31|╗| +0&#ffffff0@31
|5| @7|║+0&#5fd7ff255| |a|n|o|t|h|e|r| |i|m|p|o|r|t|a|n|t| |n|o|t|i|f|i|c|a|t|i|o|n| |║| +0&#ffffff0@31 |5| @7|║+0&#5fd7ff255| |a|n|o|t|h|e|r| |i|m|p|o|r|t|a|n|t| |n|o|t|i|f|i|c|a|t|i|o|n| |║| +0&#ffffff0@31
|6| @7|╚+0&#5fd7ff255|═@31|╝| +0&#ffffff0@31 |6| @7|╚+0&#5fd7ff255|═@31|╝| +0&#ffffff0@31

View File

@ -704,6 +704,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 */
/**/
1123,
/**/ /**/
1122, 1122,
/**/ /**/