patch 8.1.2362: cannot place signs in a popup window
Problem: Cannot place signs in a popup window. (Maxim Kim)
Solution: Use the group prefix "PopUp" to specify which signs should show up
in a popup window. (closes #5277)
This commit is contained in:
21
src/sign.c
21
src/sign.c
@ -138,7 +138,20 @@ sign_in_group(sign_entry_T *sign, char_u *group)
|
||||
return ((group != NULL && STRCMP(group, "*") == 0)
|
||||
|| (group == NULL && sign->se_group == NULL)
|
||||
|| (group != NULL && sign->se_group != NULL
|
||||
&& STRCMP(group, sign->se_group->sg_name) == 0));
|
||||
&& STRCMP(group, sign->se_group->sg_name) == 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE if "sign" is to be displayed in window "wp".
|
||||
* If the group name starts with "PopUp" it only shows in a popup window.
|
||||
*/
|
||||
static int
|
||||
sign_group_for_window(sign_entry_T *sign, win_T *wp)
|
||||
{
|
||||
int for_popup = sign->se_group != NULL
|
||||
&& STRNCMP("PopUp", sign->se_group->sg_name, 5) == 0;
|
||||
|
||||
return WIN_IS_POPUP(wp) ? for_popup : !for_popup;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -484,8 +497,7 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr)
|
||||
|
||||
if (sign->se_lnum == lnum
|
||||
# ifdef FEAT_TEXT_PROP
|
||||
&& sign_in_group(sign, (char_u *)"popupmenu")
|
||||
== (WIN_IS_POPUP(wp) ? TRUE : FALSE)
|
||||
&& sign_group_for_window(sign, wp)
|
||||
# endif
|
||||
)
|
||||
{
|
||||
@ -2645,8 +2657,7 @@ get_first_valid_sign(win_T *wp)
|
||||
sign_entry_T *sign = wp->w_buffer->b_signlist;
|
||||
|
||||
# ifdef FEAT_TEXT_PROP
|
||||
while (sign != NULL && sign_in_group(sign, (char_u *)"popupmenu")
|
||||
== (WIN_IS_POPUP(wp) ? FALSE : TRUE))
|
||||
while (sign != NULL && !sign_group_for_window(sign, wp))
|
||||
sign = sign->se_next;
|
||||
# endif
|
||||
return sign;
|
||||
|
||||
Reference in New Issue
Block a user