# HG changeset patch # User Bram Moolenaar # Date 1660419003 -7200 # Node ID f88671dbe88b554bb87ed73961548b89391f03a6 # Parent 89f1f6aa39b87f6ee25e5ee8d074e25597c47335 patch 9.0.0201: CursorLine highlight overrules virtual text highlight Commit: https://github.com/vim/vim/commit/9113c2cd19c72c0973ee5dc095a0a7f03f2af344 Author: Bram Moolenaar Date: Sat Aug 13 20:17:34 2022 +0100 patch 9.0.0201: CursorLine highlight overrules virtual text highlight Problem: CursorLine highlight overrules virtual text highlight. Solution: Let extra attribute overrule line attribute. (closes https://github.com/vim/vim/issues/10909) diff --git a/src/drawline.c b/src/drawline.c --- a/src/drawline.c +++ b/src/drawline.c @@ -1638,7 +1638,8 @@ win_line( & TP_FLAG_ALIGN_BELOW))) : bcol >= text_props[text_prop_next].tp_col - 1)) { - if (bcol <= text_props[text_prop_next].tp_col - 1 + if (text_props[text_prop_next].tp_col == MAXCOL + || bcol <= text_props[text_prop_next].tp_col - 1 + text_props[text_prop_next].tp_len) text_prop_idxs[text_props_active++] = text_prop_next; ++text_prop_next; @@ -2989,7 +2990,7 @@ win_line( { #ifdef LINE_ATTR if (line_attr) - wlv.char_attr = hl_combine_attr(extra_attr, line_attr); + wlv.char_attr = hl_combine_attr(line_attr, extra_attr); else #endif wlv.char_attr = extra_attr; diff --git a/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump b/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump --- a/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump +++ b/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump @@ -3,8 +3,8 @@ | +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|w|o| @51 | +0#0000e05#a8a8a8255@4|a+0#0000000#ffff4012|n|o|t|h|e|r| +0&#ffffff0@47 | +0#0000e05#a8a8a8255@4|O+0#ffffff16#e000002|n|e| |M|o|r|e| |H|e|r|e| +0#0000000#ffffff0@41 -| +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|h|r|e>e| @36|r+0&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d -| +0#0000e05#a8a8a8255@4| +0#0000000#ffffff0@36|a+0&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4|t+8#0000000#e0e0e08|h|r|e>e| @36|r+8&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4| +8#0000000#e0e0e08@36|a+8&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d | +0#0000e05#a8a8a8255@4|f+0#0000000#ffffff0|o|u|r| @50 |~+0#4040ff13&| @58 |~| @58 diff --git a/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump b/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump --- a/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump +++ b/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump @@ -5,8 +5,8 @@ | +0#0000e05#a8a8a8255@4|O+0#ffffff16#e000002|n|e| |M|o|r|e| |H|e|r|e| +0#0000000#ffffff0@41 | +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|h|r|e@1| @36|r+0&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d | +0#0000e05#a8a8a8255@4| +0#0000000#ffffff0@36|a+0&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d -| +0#0000e05#a8a8a8255@4|f+0#0000000#ffffff0|o|u>r| @50 -|~+0#4040ff13&| @58 +| +0#0000e05#a8a8a8255@4|f+8#0000000#e0e0e08|o|u>r| @50 +|~+0#4040ff13#ffffff0| @58 |~| @58 |~| @58 | +0#0000000&@41|4|,|4| @10|A|l@1| diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -2756,12 +2756,13 @@ func Test_props_with_text_after_nowrap() call prop_add(3, 0, #{type: 'anotherprop', text: 'right aligned', text_align: 'right'}) call prop_add(3, 0, #{type: 'anotherprop', text: 'also right aligned', text_align: 'right'}) + hi CursorLine ctermbg=lightgrey END call writefile(lines, 'XscriptPropsAfterNowrap') let buf = RunVimInTerminal('-S XscriptPropsAfterNowrap', #{rows: 12, cols: 60}) call VerifyScreenDump(buf, 'Test_prop_with_text_after_nowrap_1', {}) - call term_sendkeys(buf, ":set signcolumn=yes foldcolumn=3\") + call term_sendkeys(buf, ":set signcolumn=yes foldcolumn=3 cursorline\") call VerifyScreenDump(buf, 'Test_prop_with_text_after_nowrap_2', {}) call term_sendkeys(buf, "j") diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -736,6 +736,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 201, +/**/ 200, /**/ 199,