]> granicus.if.org Git - vim/commitdiff
patch 8.0.0140 v8.0.0140
authorBram Moolenaar <Bram@vim.org>
Mon, 2 Jan 2017 16:31:24 +0000 (17:31 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 2 Jan 2017 16:31:24 +0000 (17:31 +0100)
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)

src/ops.c
src/testdir/test_visual.vim
src/version.c

index f966cb9646009f2550bea6ac548b64f2bca9b874..0853fd0d09b154648777d4c1e9bcffcebd862c97 100644 (file)
--- 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
index 240546bc23f0a558f523e90fdc2481b5fd0f6684..d84a14062b2052d804a581eb14fa32af813c9a9d 100644 (file)
@@ -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
index 9364c99fc72ed74838efb5f5a2539085b93ae087..9e95f3a1ad7f7f9ace1e324b6098e1a7fab224c7 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    140,
 /**/
     139,
 /**/