diff options
-rw-r--r-- | src/charset.c | 8 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_1.dump | 2 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_2.dump | 2 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_3.dump | 2 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_4.dump | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_5.dump | 8 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_inserts_text_6.dump | 8 | ||||
-rw-r--r-- | src/testdir/test_textprop.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
9 files changed, 48 insertions, 8 deletions
diff --git a/src/charset.c b/src/charset.c index 27213e93a9..7a18a97d41 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1130,6 +1130,7 @@ win_lbr_chartabsize( # ifdef FEAT_PROP_POPUP if (cts->cts_has_prop_with_text && *line != NUL) { + int normal_size = size; int i; int col = (int)(s - line); garray_T *gap = &wp->w_buffer->b_textprop_text; @@ -1141,7 +1142,8 @@ win_lbr_chartabsize( // Watch out for the text being deleted. "cts_text_props" is a // copy, the text prop may actually have been removed from the line. if (tp->tp_id < 0 - && ((tp->tp_col - 1 >= col && tp->tp_col - 1 < col + size) + && ((tp->tp_col - 1 >= col + && tp->tp_col - 1 < col + normal_size) || (tp->tp_col == MAXCOL && (s[0] == NUL || s[1] == NUL) && cts->cts_with_trailing)) && -tp->tp_id - 1 < gap->ga_len) @@ -1152,7 +1154,6 @@ win_lbr_chartabsize( { int cells = vim_strsize(p); - added = wp->w_width - (vcol + size) % wp->w_width; if (tp->tp_col == MAXCOL) { int below = (tp->tp_flags & TP_FLAG_ALIGN_BELOW); @@ -1163,8 +1164,11 @@ win_lbr_chartabsize( // Keep in sync with where textprop_size_after_trunc() // is called in win_line(). if (!wrap) + { + added = wp->w_width - (vcol + size) % wp->w_width; cells = textprop_size_after_trunc(wp, below, added, p, &n_used); + } // right-aligned does not really matter here, same as // "after" if (below) diff --git a/src/testdir/dumps/Test_prop_inserts_text_1.dump b/src/testdir/dumps/Test_prop_inserts_text_1.dump index 95e2d7a70f..2cd71f6fe1 100644 --- a/src/testdir/dumps/Test_prop_inserts_text_1.dump +++ b/src/testdir/dumps/Test_prop_inserts_text_1.dump @@ -1,6 +1,8 @@ |i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| |s|o |m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n>g| @27 |p|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @40 +|F|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @34 |e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@49 |~+0#4040ff13&| @58 +|~| @58 | +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_2.dump b/src/testdir/dumps/Test_prop_inserts_text_2.dump index d61bf1b5b9..095e232d64 100644 --- a/src/testdir/dumps/Test_prop_inserts_text_2.dump +++ b/src/testdir/dumps/Test_prop_inserts_text_2.dump @@ -1,6 +1,8 @@ | +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| | +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n>g| @23 | +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 | +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 |~+0#4040ff13&| @58 +|~| @58 | +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_3.dump b/src/testdir/dumps/Test_prop_inserts_text_3.dump index c7685d9a87..b438142cfe 100644 --- a/src/testdir/dumps/Test_prop_inserts_text_3.dump +++ b/src/testdir/dumps/Test_prop_inserts_text_3.dump @@ -1,6 +1,8 @@ | +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| | +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 | +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s>t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 | +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 |~+0#4040ff13&| @58 +|~| @58 | +0#0000000&@41|2|,|7|-|1|9| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_4.dump b/src/testdir/dumps/Test_prop_inserts_text_4.dump index 6f94b85af8..8c3a022a08 100644 --- a/src/testdir/dumps/Test_prop_inserts_text_4.dump +++ b/src/testdir/dumps/Test_prop_inserts_text_4.dump @@ -1,6 +1,8 @@ | +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| | +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 | +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 -| +0#0000e05#a8a8a8255@1>e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=>1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 |~+0#4040ff13&| @58 -| +0#0000000&@41|3|,|0|-|1| @8|A|l@1| +|~| @58 +| +0#0000000&@41|3|,|1|3|-|1|6| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_5.dump b/src/testdir/dumps/Test_prop_inserts_text_5.dump new file mode 100644 index 0000000000..c7e1c57d7e --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_5.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=>2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|1|6|-|2@1| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_6.dump b/src/testdir/dumps/Test_prop_inserts_text_6.dump new file mode 100644 index 0000000000..acef485b00 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_6.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1>e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|4|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index 61e8598278..5ff87b4f10 100644 --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -2317,11 +2317,16 @@ func Test_prop_inserts_text() call prop_type_add('multibyte', #{highlight: 'Visual'}) call prop_add(2, 4, #{type: 'multibyte', text: 'söme和平téxt'}) - call setline(3, '') - call prop_add(3, 1, #{type: 'someprop', text: 'empty line'}) + call setline(3, 'Foo foo = { 1, 2 };') + call prop_type_add( 'testprop', #{highlight: 'Comment'}) + call prop_add(3, 13, #{type: 'testprop', text: '.x='}) + call prop_add(3, 16, #{type: 'testprop', text: '.y='}) + + call setline(4, '') + call prop_add(4, 1, #{type: 'someprop', text: 'empty line'}) END call writefile(lines, 'XscriptPropsWithText') - let buf = RunVimInTerminal('-S XscriptPropsWithText', #{rows: 6, cols: 60}) + let buf = RunVimInTerminal('-S XscriptPropsWithText', #{rows: 8, cols: 60}) call VerifyScreenDump(buf, 'Test_prop_inserts_text_1', {}) call term_sendkeys(buf, ":set signcolumn=yes\<CR>") @@ -2330,8 +2335,13 @@ func Test_prop_inserts_text() call term_sendkeys(buf, "2G$") call VerifyScreenDump(buf, 'Test_prop_inserts_text_3', {}) - call term_sendkeys(buf, "3G") + call term_sendkeys(buf, "3Gf1") call VerifyScreenDump(buf, 'Test_prop_inserts_text_4', {}) + call term_sendkeys(buf, "f2") + call VerifyScreenDump(buf, 'Test_prop_inserts_text_5', {}) + + call term_sendkeys(buf, "4G") + call VerifyScreenDump(buf, 'Test_prop_inserts_text_6', {}) call StopVimInTerminal(buf) call delete('XscriptPropsWithText') diff --git a/src/version.c b/src/version.c index 4bab4a58dc..2f34ffe2c2 100644 --- a/src/version.c +++ b/src/version.c @@ -736,6 +736,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 168, +/**/ 167, /**/ 166, |