diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-10-11 15:29:50 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-10-11 15:29:50 +0100 |
commit | 877151b3d8f6dacca56ce8e7f20fa5b27142d782 (patch) | |
tree | ff676de455aa541563005b93e402a4a2b9352965 | |
parent | 9466fb8001227a4bc9045e91045426bc40680366 (diff) | |
download | vim-git-9.0.0722.tar.gz |
patch 9.0.0722: virtual text "after" does not show with 'list' setv9.0.0722
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)
-rw-r--r-- | src/drawline.c | 10 | ||||
-rw-r--r-- | src/testdir/dumps/Test_props_after_1.dump | 8 | ||||
-rw-r--r-- | src/testdir/dumps/Test_props_after_2.dump | 8 | ||||
-rw-r--r-- | src/testdir/test_textprop.vim | 37 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 62 insertions, 3 deletions
diff --git a/src/drawline.c b/src/drawline.c index b71bedefa..2f28417ac 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -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 index 000000000..dd607f6b0 --- /dev/null +++ b/src/testdir/dumps/Test_props_after_1.dump @@ -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 index 000000000..146f04516 --- /dev/null +++ b/src/testdir/dumps/Test_props_after_2.dump @@ -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| diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index b270b6ca5..e4a5f2d65 100644 --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -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 diff --git a/src/version.c b/src/version.c index 86bec6c58..26768930f 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 722, +/**/ 721, /**/ 720, |