From ef85a9b2d9e992ab594e089af3883e381cfad426 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar <Bram@vim.org> Date: Fri, 10 Jul 2020 20:24:07 +0200 Subject: [PATCH] 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) --- src/register.c | 2 +- src/testdir/test_registers.vim | 18 ++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/register.c b/src/register.c index 9d4354aff2..47fcd73824 100644 --- a/src/register.c +++ b/src/register.c @@ -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) { diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim index d92ad977f1..242dfd4183 100644 --- a/src/testdir/test_registers.vim +++ b/src/testdir/test_registers.vim @@ -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 diff --git a/src/version.c b/src/version.c index 88bd908c65..73d4560014 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1170, /**/ 1169, /**/ -- GitLab