forked from aniani/vim
patch 9.0.0894: virtual text property highlight ignores window background
Problem: Virtual text property highlight ignores window background. Solution: Combine text prop attribute with win_attr into extra_attr. (closes #11462)
This commit is contained in:
@@ -130,7 +130,8 @@ typedef struct {
|
|||||||
char_u *p_extra; // string of extra chars, plus NUL, only used
|
char_u *p_extra; // string of extra chars, plus NUL, only used
|
||||||
// when c_extra and c_final are NUL
|
// when c_extra and c_final are NUL
|
||||||
char_u *p_extra_free; // p_extra buffer that needs to be freed
|
char_u *p_extra_free; // p_extra buffer that needs to be freed
|
||||||
int extra_attr; // attributes for p_extra
|
int extra_attr; // attributes for p_extra, should be combined
|
||||||
|
// with win_attr if needed
|
||||||
int c_extra; // extra chars, all the same
|
int c_extra; // extra chars, all the same
|
||||||
int c_final; // final char, mandatory if set
|
int c_final; // final char, mandatory if set
|
||||||
int extra_for_textprop; // wlv.n_extra set for textprop
|
int extra_for_textprop; // wlv.n_extra set for textprop
|
||||||
@@ -1997,7 +1998,8 @@ win_line(
|
|||||||
wlv.c_final = NUL;
|
wlv.c_final = NUL;
|
||||||
wlv.n_extra = (int)STRLEN(p);
|
wlv.n_extra = (int)STRLEN(p);
|
||||||
wlv.extra_for_textprop = TRUE;
|
wlv.extra_for_textprop = TRUE;
|
||||||
wlv.extra_attr = used_attr;
|
wlv.extra_attr = hl_combine_attr(wlv.win_attr,
|
||||||
|
used_attr);
|
||||||
n_attr = mb_charlen(p);
|
n_attr = mb_charlen(p);
|
||||||
// restore search_attr and area_attr when n_extra
|
// restore search_attr and area_attr when n_extra
|
||||||
// is down to zero
|
// is down to zero
|
||||||
|
@@ -0,0 +1,8 @@
|
|||||||
|
> +0&#ffffff0@74
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @17| +0#0000001#ffd7ff255@16| +0#4040ff13#ffffff0@38
|
||||||
|
|~| @17| +0#0000001#ffd7ff255| +0#0000e05&|+| |S+0#0000001&|o|m|e| | +0#4040ff13#afffff255|x| |t+0#0000001#ffd7ff255|e|x|t| | +0#4040ff13#ffffff0@38
|
||||||
|
|~| @17| +0#0000001#ffd7ff255@16| +0#4040ff13#ffffff0@38
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
| +0#0000000&@56|0|,|0|-|1| @8|A|l@1|
|
@@ -3422,6 +3422,50 @@ func Test_text_below_nowrap()
|
|||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_virtual_text_in_popup_highlight()
|
||||||
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
let lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
|
||||||
|
# foreground highlight only, popup background is used
|
||||||
|
prop_type_add('Prop1', {'highlight': 'SpecialKey'})
|
||||||
|
# foreground and background highlight, popup background is not used
|
||||||
|
prop_type_add('Prop2', {'highlight': 'DiffDelete'})
|
||||||
|
|
||||||
|
var popupText = [{
|
||||||
|
text: 'Some text',
|
||||||
|
props: [
|
||||||
|
{
|
||||||
|
col: 1,
|
||||||
|
type: 'Prop1',
|
||||||
|
text: ' + '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
col: 6,
|
||||||
|
type: 'Prop2',
|
||||||
|
text: ' x '
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
var popupArgs = {
|
||||||
|
line: 3,
|
||||||
|
col: 20,
|
||||||
|
maxwidth: 80,
|
||||||
|
highlight: 'PMenu',
|
||||||
|
border: [],
|
||||||
|
borderchars: [' '],
|
||||||
|
}
|
||||||
|
|
||||||
|
popup_create(popupText, popupArgs)
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XscriptVirtualHighlight', 'D')
|
||||||
|
let buf = RunVimInTerminal('-S XscriptVirtualHighlight', #{rows: 8})
|
||||||
|
call VerifyScreenDump(buf, 'Test_virtual_text_in_popup_highlight_1', {})
|
||||||
|
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_insert_text_change_arg()
|
func Test_insert_text_change_arg()
|
||||||
CheckRunVimInTerminal
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
894,
|
||||||
/**/
|
/**/
|
||||||
893,
|
893,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user