summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-02 17:31:24 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-02 17:31:24 +0100
commitf8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0 (patch)
treed7df98b978429b58403e670f2ce56b173aecf819
parent5e1e6d265d26ee2952c4a018a5ff72c950d2d700 (diff)
downloadvim-f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0.zip
patch 8.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)
-rw-r--r--src/ops.c2
-rw-r--r--src/testdir/test_visual.vim18
-rw-r--r--src/version.c2
3 files changed, 17 insertions, 5 deletions
diff --git a/src/ops.c b/src/ops.c
index f966cb964..0853fd0d0 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -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 240546bc2..d84a14062 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 9364c99fc..9e95f3a1a 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,