Skip to content

Commit

Permalink
patch 9.0.0894: virtual text property highlight ignores window backgr…
Browse files Browse the repository at this point in the history
…ound

Problem:    Virtual text property highlight ignores window background.
Solution:   Combine text prop attribute with win_attr into extra_attr.
            (closes vim#11462)
  • Loading branch information
brammool committed Nov 17, 2022
1 parent 01ee52b commit ee28c70
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/drawline.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ typedef struct {
char_u *p_extra; // string of extra chars, plus NUL, only used
// when c_extra and c_final are NUL
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_final; // final char, mandatory if set
int extra_for_textprop; // wlv.n_extra set for textprop
Expand Down Expand Up @@ -1997,7 +1998,8 @@ win_line(
wlv.c_final = NUL;
wlv.n_extra = (int)STRLEN(p);
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);
// restore search_attr and area_attr when n_extra
// is down to zero
Expand Down
8 changes: 8 additions & 0 deletions src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump
Original file line number Diff line number Diff line change
@@ -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|
44 changes: 44 additions & 0 deletions src/testdir/test_textprop.vim
Original file line number Diff line number Diff line change
Expand Up @@ -3422,6 +3422,50 @@ func Test_text_below_nowrap()
call StopVimInTerminal(buf)
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()
CheckRunVimInTerminal

Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
894,
/**/
893,
/**/
Expand Down

0 comments on commit ee28c70

Please sign in to comment.