]> granicus.if.org Git - vim/commitdiff
patch 9.0.1226: spurious empty line when using text properties v9.0.1226
authorBram Moolenaar <Bram@vim.org>
Sat, 21 Jan 2023 15:54:59 +0000 (15:54 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 21 Jan 2023 15:54:59 +0000 (15:54 +0000)
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)

src/drawline.c
src/testdir/dumps/Test_textprop_nesting.dump [new file with mode: 0644]
src/testdir/test_textprop.vim
src/version.c

index a82a5e49f53e8f22ebd56e61d3724d39d3253f07..b4208a833c7025fd658581636c1a483973d683ee 100644 (file)
@@ -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 (file)
index 0000000..e02cc54
--- /dev/null
@@ -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| 
index f1c79845a533236ccd1269388f96a4e423c7f81c..93c434f7c6c0d6c2a6687e1003066c6ddb7cf9d2 100644 (file)
@@ -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
 
index 6a11b7fcb1bbb9d64987151868cfb69526ed8049..73211b6a5a2d4f0ed6cab3cb8f6e7203734cf432 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1226,
 /**/
     1225,
 /**/