changeset 10494:1e700d72561d v8.0.0140

commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jan 2 17:31:24 2017 +0100 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)
author Christian Brabandt <cb@256bit.org>
date Mon, 02 Jan 2017 17:45:04 +0100
parents 521b15754ff6
children 4466bc67f772
files src/ops.c src/testdir/test_visual.vim src/version.c
diffstat 3 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- 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,