diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-01-02 17:31:24 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-01-02 17:31:24 +0100 |
commit | f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0 (patch) | |
tree | d7df98b978429b58403e670f2ce56b173aecf819 /src | |
parent | 5e1e6d265d26ee2952c4a018a5ff72c950d2d700 (diff) |
patch 8.0.0140v8.0.0140
Problem: Pasting inserted text in Visual mode does not work properly.
(Matthew Malcomson)
Solution: Stop Visual mode before stuffing the inserted text. (Christian
Brabandt, from neovim #5709)
Diffstat (limited to 'src')
-rw-r--r-- | src/ops.c | 2 | ||||
-rw-r--r-- | src/testdir/test_visual.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 17 insertions, 5 deletions
@@ -3351,6 +3351,8 @@ do_put( */ if (regname == '.') { + if (VIsual_active) + stuffcharReadbuff(VIsual_mode); (void)stuff_inserted((dir == FORWARD ? (count == -1 ? 'o' : 'a') : (count == -1 ? 'O' : 'i')), count, FALSE); /* Putting the text is done later, so can't really move the cursor to diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim index 240546bc23..d84a14062b 100644 --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1,13 +1,13 @@ -" Tests for Visual mode. Uses double-wide character. -if !has('multi_byte') - finish -endif - +" Tests for various Visual mode. if !has('visual') finish endif func Test_block_shift_multibyte() + " Uses double-wide character. + if !has('multi_byte') + return + endif split call setline(1, ['xヹxxx', 'ヹxxx']) exe "normal 1G0l\<C-V>jl>" @@ -15,3 +15,11 @@ func Test_block_shift_multibyte() call assert_equal(' ヹxxx', getline(2)) q! endfunc + +func Test_dotregister_paste() + new + exe "norm! ihello world\<esc>" + norm! 0ve".p + call assert_equal('hello world world', getline(1)) + q! +endfunc diff --git a/src/version.c b/src/version.c index 9364c99fc7..9e95f3a1ad 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 140, +/**/ 139, /**/ 138, |