# HG changeset patch # User Bram Moolenaar # Date 1674316841 -3600 # Node ID 7d0025a2940ac4f34d42de3ad4d456749deda360 # Parent fb4192bcb42a8d927a7ab788e54edf7dedae4f34 patch 9.0.1226: spurious empty line when using text properties Commit: https://github.com/vim/vim/commit/51b2fc2ef5183487dc1acd9f526e904e5bda7814 Author: Bram Moolenaar Date: Sat Jan 21 15:54:59 2023 +0000 patch 9.0.1226: spurious empty line when using text properties Problem: Spurious empty line when using text propertie and virtual text. Solution: Do not set "text_prop_follows" when the other text property is not virtual text. (closes #11846) diff --git a/src/drawline.c b/src/drawline.c --- a/src/drawline.c +++ b/src/drawline.c @@ -2016,7 +2016,8 @@ win_line( text_prop_type = pt; text_prop_attr = hl_combine_attr(text_prop_attr, used_attr); - other_tpi = used_tpi; + if (used_tpi >= 0 && text_props[used_tpi].tp_id < 0) + other_tpi = used_tpi; text_prop_flags = pt->pt_flags; text_prop_id = tp->tp_id; used_tpi = tpi; diff --git a/src/testdir/dumps/Test_textprop_nesting.dump b/src/testdir/dumps/Test_textprop_nesting.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_nesting.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|c|o|n|s|t| |f|u|n|c|:| |f|u|n|c|.|I|F|u|n|c|t|i|o|n| |=| |(|{+0#ffffff16#e000002|t|e|x|t| |l|o|n|g| |e|n|o|u|g|h| |t|o| |w|r|a|p| |l|i|n|e|,| |t|e|x|t| |l|o|n|g| |e|n|… +| @3|s|e|t|L|o|a|d|i|n|g| +0#0000000#ffffff0@60 +| +0#ffffff16#e000002| +0#0000000#ffffff0|}|)| |=|>| |{| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|0|-|1| @8|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 @@ -1342,14 +1342,39 @@ func Test_textprop_after_tab() call prop_add(1, 2, {'length': 3, 'type': 'search'}) call prop_add(2, 3, {'length': 3, 'type': 'search'}) END - call writefile(lines, 'XtestPropTab', 'D') - let buf = RunVimInTerminal('-S XtestPropTab', {'rows': 6}) + call writefile(lines, 'XtextPropTab', 'D') + let buf = RunVimInTerminal('-S XtextPropTab', {'rows': 6}) call VerifyScreenDump(buf, 'Test_textprop_tab', {}) " clean up call StopVimInTerminal(buf) endfunc +func Test_textprop_nesting() + CheckScreendump + + let lines =<< trim END + vim9script + var lines =<< trim LINESEND + + const func: func.IFunction = ({ + setLoading + }) => { + LINESEND + setline(1, lines) + prop_type_add('prop_add_test', {highlight: "ErrorMsg"}) + prop_add(2, 31, {type: 'prop_add_test', end_lnum: 4, end_col: 2}) + var text = 'text long enough to wrap line, text long enough to wrap line, text long enough to wrap line...' + prop_add(2, 0, {type: 'prop_add_test', text_wrap: 'truncate', text_align: 'after', text: text}) + END + call writefile(lines, 'XtextpropNesting', 'D') + let buf = RunVimInTerminal('-S XtextpropNesting', {'rows': 8}) + call VerifyScreenDump(buf, 'Test_textprop_nesting', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + func Test_textprop_nowrap_scrolled() CheckScreendump diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1226, +/**/ 1225, /**/ 1224,