]> granicus.if.org Git - vim/commitdiff
patch 9.0.0722: virtual text "after" does not show with 'list' set v9.0.0722
authorBram Moolenaar <Bram@vim.org>
Tue, 11 Oct 2022 14:29:50 +0000 (15:29 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 11 Oct 2022 14:29:50 +0000 (15:29 +0100)
Problem:    Virtual text "after" does not show with 'list' set.
Solution:   Do not break out of the loop when another text prop follows.
            (closes #11337)

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

index b71bedefabfbd72f73bea7b4b1d090b7a0fb0a1b..2f28417acbd6afecb775d0205efc3ce1fd1d9a8e 100644 (file)
@@ -3787,14 +3787,18 @@ win_line(
 
            // When not wrapping and finished diff lines, or when displayed
            // '$' and highlighting until last column, break here.
-           if ((!wp->w_p_wrap
+           if (((!wp->w_p_wrap
 #ifdef FEAT_DIFF
                        && wlv.filler_todo <= 0
 #endif
 #ifdef FEAT_PROP_POPUP
-                       && !text_prop_above && !text_prop_follows
+                       && !text_prop_above
 #endif
-                   ) || lcs_eol_one == -1)
+                ) || lcs_eol_one == -1)
+#ifdef FEAT_PROP_POPUP
+                   && !text_prop_follows
+#endif
+                      )
                break;
 #ifdef FEAT_PROP_POPUP
            if (!wp->w_p_wrap && text_prop_follows && !text_prop_above)
diff --git a/src/testdir/dumps/Test_props_after_1.dump b/src/testdir/dumps/Test_props_after_1.dump
new file mode 100644 (file)
index 0000000..dd607f6
--- /dev/null
@@ -0,0 +1,8 @@
+|o+0&#ffffff0|n|e| @2|0+0#e000e06&| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0| |…
+| +0#0000000&@4|0+0#e000e06&|-|1|-|2|-|3|-|4|-|5|-|6|-|7|-|8|-|9|-|1|0|-|1@1|-|1|2|-|1|3|-|1|4|-|1|5|-|1|6|-|1|7|-|1|8|-|1|9|-|2|0|-|2|…
+| +0#0000000&|0+0#e000e06&|.|1|.|2|.|3|.|4|.|5|.|6|.|7|.|8|.|9|.|1|0|.|1@1|.|1|2|.|1|3|.|1|4|.|1|5|.|1|6|.|1|7|.|1|8|.|1|9|.|2|0|.|2|1|.|2@1|…
+|t+0#0000000&|w>o| @56
+|~+0#4040ff13&| @58
+|~| @58
+|~| @58
+| +0#0000000&@41|2|,|3| @10|A|l@1| 
diff --git a/src/testdir/dumps/Test_props_after_2.dump b/src/testdir/dumps/Test_props_after_2.dump
new file mode 100644 (file)
index 0000000..146f045
--- /dev/null
@@ -0,0 +1,8 @@
+|o+0&#ffffff0|n|e|$+0#4040ff13&| +0#0000000&@2|0+0#e000e06&| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0|…
+| +0#0000000&@4|0+0#e000e06&|-|1|-|2|-|3|-|4|-|5|-|6|-|7|-|8|-|9|-|1|0|-|1@1|-|1|2|-|1|3|-|1|4|-|1|5|-|1|6|-|1|7|-|1|8|-|1|9|-|2|0|-|2|…
+| +0#0000000&|0+0#e000e06&|.|1|.|2|.|3|.|4|.|5|.|6|.|7|.|8|.|9|.|1|0|.|1@1|.|1|2|.|1|3|.|1|4|.|1|5|.|1|6|.|1|7|.|1|8|.|1|9|.|2|0|.|2|1|.|2@1|…
+|t+0#0000000&|w>o|$+0#4040ff13&| +0#0000000&@55
+|~+0#4040ff13&| @58
+|~| @58
+|~| @58
+|:+0#0000000&|s|e|t| |l|i|s|t| @32|2|,|3| @10|A|l@1| 
index b270b6ca5e938d67525d73bb4f9344c057dcf7cf..e4a5f2d655fc5c1c6ceea4ad402a342d9b21d033 100644 (file)
@@ -2628,6 +2628,43 @@ func Test_props_with_text_after()
   call assert_fails('call prop_add(1, 2, #{text: "yes", text_align: "right", type: "some"})', 'E1294:')
 endfunc
 
+func Test_props_with_text_after_and_list()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+      vim9script
+      setline(1, ['one', 'two'])
+      prop_type_add('test', {highlight: 'Special'})
+      prop_add(1, 0, {
+          type: 'test',
+          text: range(50)->join(' '),
+          text_align: 'after',
+          text_padding_left: 3
+      })
+      prop_add(1, 0, {
+          type: 'test',
+          text: range(50)->join('-'),
+          text_align: 'after',
+          text_padding_left: 5
+      })
+      prop_add(1, 0, {
+          type: 'test',
+          text: range(50)->join('.'),
+          text_align: 'after',
+          text_padding_left: 1
+      })
+      normal G$
+  END
+  call writefile(lines, 'XscriptPropsAfter', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsAfter', #{rows: 8, cols: 60})
+  call VerifyScreenDump(buf, 'Test_props_after_1', {})
+
+  call term_sendkeys(buf, ":set list\<CR>")
+  call VerifyScreenDump(buf, 'Test_props_after_2', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_props_with_text_after_below_trunc()
   CheckRunVimInTerminal
 
index 86bec6c581ab69d145a608011bb9dc2212c03961..26768930f1a583921f44c543d98df55677fbf5f4 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    722,
 /**/
     721,
 /**/