1
0
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:
Bram Moolenaar
2022-11-17 14:56:00 +00:00
parent 01ee52bab6
commit ee28c707e4
4 changed files with 58 additions and 2 deletions

View File

@@ -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

View File

@@ -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|

View File

@@ -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

View File

@@ -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,
/**/ /**/