summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-10 20:24:07 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-10 20:24:07 +0200
commitef85a9b2d9e992ab594e089af3883e381cfad426 (patch)
tree279b5a47466847e5f041f6a5cab5816c663385ae
parent97d2f34c8763ab3a46c9f43284cc17bad3cf9568 (diff)
downloadvim-git-ef85a9b2d9e992ab594e089af3883e381cfad426.tar.gz
patch 8.2.1170: cursor off by one with block paste while 'virtualedit' "all"v8.2.1170
Problem: Cursor off by one with block paste while 'virtualedit' is "all". Solution: Adjust condition. (Hugo Gualandi, closes #6430)
-rw-r--r--src/register.c2
-rw-r--r--src/testdir/test_registers.vim18
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 1 deletions
diff --git a/src/register.c b/src/register.c
index 9d4354aff..47fcd7382 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 d92ad977f..242dfd418 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 88bd908c6..73d456001 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1170,
+/**/
1169,
/**/
1168,