Mercurial > vim
changeset 21238:136b33ce8216 v8.2.1170
patch 8.2.1170: cursor off by one with block paste while 'virtualedit' "all"
Commit: https://github.com/vim/vim/commit/ef85a9b2d9e992ab594e089af3883e381cfad426
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jul 10 20:24:07 2020 +0200
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 https://github.com/vim/vim/issues/6430)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 10 Jul 2020 20:30:05 +0200 |
parents | d1413829fbc3 |
children | bc30efb26e7d |
files | src/register.c src/testdir/test_registers.vim src/version.c |
diffstat | 3 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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