Mercurial > vim
changeset 31788:7d0025a2940a v9.0.1226
patch 9.0.1226: spurious empty line when using text properties
Commit: https://github.com/vim/vim/commit/51b2fc2ef5183487dc1acd9f526e904e5bda7814
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 21 Jan 2023 17:00:41 +0100 |
parents | fb4192bcb42a |
children | a38f4bb86bc5 |
files | src/drawline.c src/testdir/dumps/Test_textprop_nesting.dump src/testdir/test_textprop.vim src/version.c |
diffstat | 4 files changed, 39 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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;
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|
--- 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