0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.1538: cannot specify highlighting for notifications

Problem:    Cannot specify highlighting for notifications.
Solution:   Use the PopupNotification group if it exists. Add a minimal width
            to notifications.
This commit is contained in:
Bram Moolenaar
2019-06-15 14:31:55 +02:00
parent fc06cbbf86
commit dfa97f2aed
6 changed files with 24 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
*popup.txt* For Vim version 8.1. Last change: 2019 Jun 12 *popup.txt* For Vim version 8.1. Last change: 2019 Jun 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -93,8 +93,6 @@ TODO:
- Add 'balloonpopup': instead of showing text, let the callback open a popup - Add 'balloonpopup': instead of showing text, let the callback open a popup
window and return the window ID. The popup will then be closed when the window and return the window ID. The popup will then be closed when the
mouse moves, except when it moves inside the popup. mouse moves, except when it moves inside the popup.
- For notifications use the PopupNotification highlight group, fall back to
WarningMsg if it isn't defined.
- For the "moved" property also include mouse movement? - For the "moved" property also include mouse movement?
- Make redrawing more efficient and avoid flicker: - Make redrawing more efficient and avoid flicker:
- put popup menu also put in popup_mask? - put popup menu also put in popup_mask?
@@ -300,6 +298,7 @@ popup_notification({text}, {options}) *popup_notification()*
call popup_create({text}, { call popup_create({text}, {
\ 'line': 1, \ 'line': 1,
\ 'col': 10, \ 'col': 10,
\ 'minwidth': 20,
\ 'time': 3000, \ 'time': 3000,
\ 'tabpage': -1, \ 'tabpage': -1,
\ 'zindex': 200, \ 'zindex': 200,
@@ -308,6 +307,8 @@ popup_notification({text}, {options}) *popup_notification()*
\ 'border': [], \ 'border': [],
\ 'padding': [0,1,0,1], \ 'padding': [0,1,0,1],
\ }) \ })
< The PopupNotification highlight group is used instead of
WarningMsg if it is defined.
< The position will be adjusted to avoid overlap with other < The position will be adjusted to avoid overlap with other
notifications. notifications.
Use {options} to change the properties. Use {options} to change the properties.

View File

@@ -258,6 +258,8 @@ apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict)
dictitem_T *di; dictitem_T *di;
int i; int i;
di = dict_find(dict, (char_u *)"minwidth", -1);
if (di != NULL)
wp->w_minwidth = dict_get_number(dict, (char_u *)"minwidth"); wp->w_minwidth = dict_get_number(dict, (char_u *)"minwidth");
wp->w_minheight = dict_get_number(dict, (char_u *)"minheight"); wp->w_minheight = dict_get_number(dict, (char_u *)"minheight");
wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth"); wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth");
@@ -856,13 +858,17 @@ popup_create(typval_T *argvars, typval_T *rettv, create_type_T type)
wp->w_wantcol = 10; wp->w_wantcol = 10;
wp->w_zindex = POPUPWIN_NOTIFICATION_ZINDEX; wp->w_zindex = POPUPWIN_NOTIFICATION_ZINDEX;
wp->w_minwidth = 20;
wp->w_popup_drag = 1;
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
wp->w_popup_border[i] = 1; wp->w_popup_border[i] = 1;
wp->w_popup_padding[1] = 1; wp->w_popup_padding[1] = 1;
wp->w_popup_padding[3] = 1; wp->w_popup_padding[3] = 1;
nr = syn_name2id((char_u *)"PopupNotification");
set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1, set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1,
(char_u *)"WarningMsg", OPT_FREE|OPT_LOCAL, 0); (char_u *)(nr == 0 ? "WarningMsg" : "PopupNotification"),
wp->w_popup_drag = 1; OPT_FREE|OPT_LOCAL, 0);
} }
// Deal with options. // Deal with options.

View File

@@ -1,6 +1,6 @@
>1+0&#ffffff0| @7|╔+0#e000002&|═@19|╗| +0#0000000&@43 >1+0&#ffffff0| @7|╔+0#e000002&|═@21|╗| +0#0000000&@41
|2| @7|║+0#e000002&| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| |║| +0#0000000&@43 |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
|3| @7|╚+0#e000002&|═@19|╝| +0#0000000&@43 |3| @7|╚+0#e000002&|═@21|╝| +0#0000000&@41
|4| @73 |4| @73
|5| @73 |5| @73
|6| @73 |6| @73

View File

@@ -1,10 +1,10 @@
>1+0&#ffffff0| @7|╔+0#e000002&|═@19|╗| +0#0000000&@43 >1+0&#ffffff0| @7|╔+0#e000002&|═@21|╗| +0#0000000&@41
|2| @7|║+0#e000002&| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| |║| +0#0000000&@43 |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
|3| @7|╚+0#e000002&|═@19|╝| +0#0000000&@43 |3| @7|╚+0#e000002&|═@21|╝| +0#0000000&@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
|7| @73 |7| @73
|8| @73 |8| @73
|9| @73 |9| @73
@57|1|,|1| @10|T|o|p| |:|c|a|l@1| |p|o|p|u|p|_|n|o|t|i|f|i|c|a|t|i|o|n|(|'|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|'|1|,|1| @10|T|o|p|

View File

@@ -1191,7 +1191,8 @@ func Test_notifications()
call VerifyScreenDump(buf, 'Test_popupwin_notify_01', {}) call VerifyScreenDump(buf, 'Test_popupwin_notify_01', {})
" second one goes below the first one " second one goes below the first one
call term_sendkeys(buf, ":call popup_notification('another important notification', {'highlight': 'Notification'})\<CR>") call term_sendkeys(buf, ":hi link PopupNotification Notification\<CR>")
call term_sendkeys(buf, ":call popup_notification('another important notification', {})\<CR>")
call VerifyScreenDump(buf, 'Test_popupwin_notify_02', {}) call VerifyScreenDump(buf, 'Test_popupwin_notify_02', {})

View File

@@ -777,6 +777,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 */
/**/
1538,
/**/ /**/
1537, 1537,
/**/ /**/