mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
patch 8.2.1170: cursor off by one with block paste while 'virtualedit' "all"
Problem: Cursor off by one with block paste while 'virtualedit' is "all". Solution: Adjust condition. (Hugo Gualandi, closes #6430)
This commit is contained in:
@ -1764,7 +1764,7 @@ do_put(
|
||||
{
|
||||
if (dir == FORWARD && c == NUL)
|
||||
++col;
|
||||
if (dir != FORWARD && c != NUL)
|
||||
if (dir != FORWARD && c != NUL && curwin->w_cursor.coladd > 0)
|
||||
++curwin->w_cursor.col;
|
||||
if (c == TAB)
|
||||
{
|
||||
|
@ -659,4 +659,22 @@ func Test_clipboard_nul()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_ve_blockpaste()
|
||||
new
|
||||
set ve=all
|
||||
0put =['QWERTZ','ASDFGH']
|
||||
call cursor(1,1)
|
||||
exe ":norm! \<C-V>3ljdP"
|
||||
call assert_equal(1, col('.'))
|
||||
call assert_equal(getline(1, 2), ['QWERTZ', 'ASDFGH'])
|
||||
call cursor(1,1)
|
||||
exe ":norm! \<C-V>3ljd"
|
||||
call cursor(1,1)
|
||||
norm! $3lP
|
||||
call assert_equal(5, col('.'))
|
||||
call assert_equal(getline(1, 2), ['TZ QWER', 'GH ASDF'])
|
||||
set ve&vim
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -754,6 +754,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1170,
|
||||
/**/
|
||||
1169,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user