Patch 9.0.0894
Problem: Virtual text property highlight ignores window background.
Solution: Combine text prop attribute with win_attr into extra_attr.
(closes #11462)
Files: src/drawline.c, src/testdir/test_textprop.vim,
src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump
*** ../vim-9.0.0893/src/drawline.c 2022-11-16 22:12:34.417823681 +0000
--- src/drawline.c 2022-11-17 14:39:49.806885991 +0000
***************
*** 130,136 ****
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 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
--- 130,137 ----
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, 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
***************
*** 1997,2003 ****
wlv.c_final = NUL;
wlv.n_extra = (int)STRLEN(p);
wlv.extra_for_textprop = TRUE;
! wlv.extra_attr = used_attr;
n_attr = mb_charlen(p);
// restore search_attr and area_attr when n_extra
// is down to zero
--- 1998,2005 ----
wlv.c_final = NUL;
wlv.n_extra = (int)STRLEN(p);
wlv.extra_for_textprop = TRUE;
! 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
*** ../vim-9.0.0893/src/testdir/test_textprop.vim 2022-11-16
22:12:34.421823679 +0000
--- src/testdir/test_textprop.vim 2022-11-17 14:53:16.186716901 +0000
***************
*** 3422,3427 ****
--- 3422,3471 ----
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
***
../vim-9.0.0893/src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump
2022-11-17 14:55:21.390743941 +0000
--- src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump
2022-11-17 14:53:26.726719715 +0000
***************
*** 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|
*** ../vim-9.0.0893/src/version.c 2022-11-17 12:41:38.350199459 +0000
--- src/version.c 2022-11-17 14:41:39.354825665 +0000
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 894,
/**/
--
>From "know your smileys":
:-O>-o Smiley American tourist (note big mouth and camera)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/20221117145628.211701C09F7%40moolenaar.net.