mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.0130: cursor position wrong when inserting around virtual text
Problem: Cursor position wrong when inserting around virtual text. Solution: Update the cursor position properly.
This commit is contained in:
parent
05a8061eec
commit
1f4ee19eef
@ -1589,13 +1589,6 @@ win_line(
|
|||||||
n_attr_skip = added;
|
n_attr_skip = added;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the cursor is on or after this position,
|
|
||||||
// move it forward.
|
|
||||||
if (wp == curwin
|
|
||||||
&& lnum == curwin->w_cursor.lnum
|
|
||||||
&& curwin->w_cursor.col >= vcol)
|
|
||||||
curwin->w_cursor.col += n_extra;
|
|
||||||
}
|
}
|
||||||
// reset the ID in the copy to avoid it being used
|
// reset the ID in the copy to avoid it being used
|
||||||
// again
|
// again
|
||||||
|
@ -288,8 +288,13 @@ edit(
|
|||||||
conceal_check_cursor_line(cursor_line_was_concealed);
|
conceal_check_cursor_line(cursor_line_was_concealed);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// need to position cursor again when on a TAB
|
// Need to position cursor again when on a TAB and when on a char with
|
||||||
if (gchar_cursor() == TAB)
|
// virtual text.
|
||||||
|
if (gchar_cursor() == TAB
|
||||||
|
#ifdef FEAT_PROP_POPUP
|
||||||
|
|| curbuf->b_has_textprop
|
||||||
|
#endif
|
||||||
|
)
|
||||||
curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL);
|
curwin->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|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
|
|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
|
|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
|
||||||
|~+0#4040ff13&| @58
|
|~+0#4040ff13&| @58
|
||||||
|~| @58
|
|~| @58
|
||||||
|~| @58
|
|~| @58
|
||||||
| +0#0000000&@41|1|,|7@1|-|9|3| @6|A|l@1|
|
| +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
| +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|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|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#4040ff13&| @58
|
|~+0#4040ff13&| @58
|
||||||
|~| @58
|
|~| @58
|
||||||
|~| @58
|
|~| @58
|
||||||
| +0#0000000&@41|1|,|7@1|-|9|3| @6|A|l@1|
|
| +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1|
|
||||||
|
@ -2256,4 +2256,20 @@ func Test_removed_prop_with_text_cleans_up_array()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
def Test_insert_text_before_virtual_text()
|
||||||
|
new foobar
|
||||||
|
setline(1, '12345678')
|
||||||
|
prop_type_add('test', {highlight: 'Search'})
|
||||||
|
prop_add(1, 5, {
|
||||||
|
type: 'test',
|
||||||
|
text: ' virtual text '
|
||||||
|
})
|
||||||
|
normal! f4axyz
|
||||||
|
normal! f5iXYZ
|
||||||
|
assert_equal('1234xyzXYZ5678', getline(1))
|
||||||
|
|
||||||
|
prop_type_delete('test')
|
||||||
|
bwipe!
|
||||||
|
enddef
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -735,6 +735,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 */
|
||||||
|
/**/
|
||||||
|
130,
|
||||||
/**/
|
/**/
|
||||||
129,
|
129,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user