mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
patch 9.0.1802: Multiline regex with Visual selection fails with virtual text
Problem: Multiline regex with Visual selection fails when Visual selection contains virtual text after last char. Solution: Only include virtual text after last char when getting full line length. closes: #12908 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
parent
b49ad28d73
commit
e3daa06be1
@ -809,7 +809,7 @@ win_linetabsize_cts(chartabsize_T *cts, colnr_T len)
|
|||||||
cts->cts_vcol += win_lbr_chartabsize(cts, NULL);
|
cts->cts_vcol += win_lbr_chartabsize(cts, NULL);
|
||||||
#ifdef FEAT_PROP_POPUP
|
#ifdef FEAT_PROP_POPUP
|
||||||
// check for a virtual text at the end of a line or on an empty line
|
// check for a virtual text at the end of a line or on an empty line
|
||||||
if (cts->cts_has_prop_with_text && *cts->cts_ptr == NUL)
|
if (len == MAXCOL && cts->cts_has_prop_with_text && *cts->cts_ptr == NUL)
|
||||||
{
|
{
|
||||||
(void)win_lbr_chartabsize(cts, NULL);
|
(void)win_lbr_chartabsize(cts, NULL);
|
||||||
cts->cts_vcol += cts->cts_cur_text_width;
|
cts->cts_vcol += cts->cts_cur_text_width;
|
||||||
@ -1196,8 +1196,7 @@ win_lbr_chartabsize(
|
|||||||
|| (tp->tp_col == MAXCOL
|
|| (tp->tp_col == MAXCOL
|
||||||
&& ((tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
|
&& ((tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
|
||||||
? col == 0
|
? col == 0
|
||||||
: s[0] == NUL
|
: s[0] == NUL && cts->cts_with_trailing)))
|
||||||
&& cts->cts_with_trailing)))
|
|
||||||
&& -tp->tp_id - 1 < gap->ga_len)
|
&& -tp->tp_id - 1 < gap->ga_len)
|
||||||
{
|
{
|
||||||
char_u *p = ((char_u **)gap->ga_data)[-tp->tp_id - 1];
|
char_u *p = ((char_u **)gap->ga_data)[-tp->tp_id - 1];
|
||||||
|
8
src/testdir/dumps/Test_prop_with_text_empty_line_6.dump
Normal file
8
src/testdir/dumps/Test_prop_with_text_empty_line_6.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|X+0&#ffff4012@59
|
||||||
|
|a+0&#e0e0e08@1>a+0&#ffffff0| @56
|
||||||
|
|X+0&#ffff4012@59
|
||||||
|
@1| +0&#ffffff0@58
|
||||||
|
|b+0&#e0e0e08@2|b+0&#ffffff0@2| @53
|
||||||
|
|~+0#4040ff13&| @58
|
||||||
|
|~| @58
|
||||||
|
|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@13|3|x|3| @6|2|,|3| @10|A|l@1|
|
8
src/testdir/dumps/Test_prop_with_text_empty_line_7.dump
Normal file
8
src/testdir/dumps/Test_prop_with_text_empty_line_7.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|X+0&#ffff4012@59
|
||||||
|
>a+0&#ffffff0@2| @56
|
||||||
|
|X+0&#ffff4012@59
|
||||||
|
@1| +0&#ffffff0@58
|
||||||
|
|b@5| @53
|
||||||
|
|~+0#4040ff13&| @58
|
||||||
|
|~| @58
|
||||||
|
|s+0#e000002&|e|a|r|c|h| |h|i|t| |B|O|T|.@2|t|i|n|u|i|n|g| |a|t| |T|O|P| +0#0000000&@10|2|,|1| @10|A|l@1|
|
8
src/testdir/dumps/Test_prop_with_text_empty_line_8.dump
Normal file
8
src/testdir/dumps/Test_prop_with_text_empty_line_8.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|X+0&#ffff4012@59
|
||||||
|
|a+0&#ffffff0@2| @56
|
||||||
|
|c>X+0&#ffff4012@58
|
||||||
|
@2| +0&#ffffff0@57
|
||||||
|
|b@5| @53
|
||||||
|
|~+0#4040ff13&| @58
|
||||||
|
|~| @58
|
||||||
|
|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@29|3|,|2| @10|A|l@1|
|
8
src/testdir/dumps/Test_prop_with_text_empty_line_9.dump
Normal file
8
src/testdir/dumps/Test_prop_with_text_empty_line_9.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|X+0&#ffff4012@59
|
||||||
|
>a+0&#ffffff0@2| @56
|
||||||
|
|c|X+0&#ffff4012@58
|
||||||
|
@2| +0&#ffffff0@57
|
||||||
|
|b@5| @53
|
||||||
|
|~+0#4040ff13&| @58
|
||||||
|
|~| @58
|
||||||
|
|s+0#e000002&|e|a|r|c|h| |h|i|t| |B|O|T|.@2|t|i|n|u|i|n|g| |a|t| |T|O|P| +0#0000000&@10|2|,|1| @10|A|l@1|
|
@ -3235,6 +3235,14 @@ func Test_props_with_text_empty_line()
|
|||||||
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_4', {})
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_4', {})
|
||||||
call term_sendkeys(buf, "j")
|
call term_sendkeys(buf, "j")
|
||||||
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_5', {})
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_5', {})
|
||||||
|
call term_sendkeys(buf, "0\<C-V>2l2k")
|
||||||
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_6', {})
|
||||||
|
call term_sendkeys(buf, "\<Esc>/aaa\\n\\%V\<CR>")
|
||||||
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_7', {})
|
||||||
|
call term_sendkeys(buf, "3ggic")
|
||||||
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_8', {})
|
||||||
|
call term_sendkeys(buf, "\<Esc>/aaa\\nc\\%V\<CR>")
|
||||||
|
call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_9', {})
|
||||||
|
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
endfunc
|
||||||
|
@ -699,6 +699,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1802,
|
||||||
/**/
|
/**/
|
||||||
1801,
|
1801,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user