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:
Bram Moolenaar
2020-07-10 20:24:07 +02:00
parent 97d2f34c87
commit ef85a9b2d9
3 changed files with 21 additions and 1 deletions

View File

@ -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)
{

View File

@ -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

View File

@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1170,
/**/
1169,
/**/