summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-01-21 15:54:59 +0000
committerBram Moolenaar <Bram@vim.org>2023-01-21 15:54:59 +0000
commit51b2fc2ef5183487dc1acd9f526e904e5bda7814 (patch)
tree31c0715d2db91c566e6758c542a3fda272deca49
parent11977f917506d950b7e0cae558bd9189260b253b (diff)
downloadvim-git-9.0.1226.tar.gz
patch 9.0.1226: spurious empty line when using text propertiesv9.0.1226
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)
-rw-r--r--src/drawline.c3
-rw-r--r--src/testdir/dumps/Test_textprop_nesting.dump8
-rw-r--r--src/testdir/test_textprop.vim29
-rw-r--r--src/version.c2
4 files changed, 39 insertions, 3 deletions
diff --git a/src/drawline.c b/src/drawline.c
index a82a5e49f..b4208a833 100644
--- 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
index 000000000..e02cc541a
--- /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
index f1c79845a..93c434f7c 100644
--- 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
index 6a11b7fcb..73211b6a5 100644
--- 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,