changeset 23287:f2a70fca3485 v8.2.2189

patch 8.2.2189: cannot repeat a command that uses the small delete register Commit: https://github.com/vim/vim/commit/032a2d050b82b146d70d6ff714838ee62c07d8ad Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 22 17:59:35 2020 +0100 patch 8.2.2189: cannot repeat a command that uses the small delete register Problem: Cannot repeat a command that uses the small delete register. Solution: Store the register name instead of the contents. (Christian Brabandt, closes #7527)
author Bram Moolenaar <Bram@vim.org>
date Tue, 22 Dec 2020 18:00:03 +0100
parents 923b2b6c6ab5
children b8de37e308f2
files src/ops.c src/register.c src/testdir/test_registers.vim src/version.c
diffstat 4 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -9,7 +9,7 @@
 
 /*
  * ops.c: implementation of various operators: op_shift, op_delete, op_tilde,
- *	  op_change, op_yank, do_put, do_join
+ *	  op_change, op_yank, do_join
  */
 
 #include "vim.h"
--- a/src/register.c
+++ b/src/register.c
@@ -809,7 +809,14 @@ insert_reg(
 	{
 	    for (i = 0; i < y_current->y_size; ++i)
 	    {
-		stuffescaped(y_current->y_array[i], literally);
+		if (regname == '-')
+		{
+		    AppendCharToRedobuff(Ctrl_R);
+		    AppendCharToRedobuff(regname);
+		    do_put(regname, NULL, BACKWARD, 1L, PUT_CURSEND);
+		}
+		else
+		    stuffescaped(y_current->y_array[i], literally);
 		// Insert a newline between lines and after last line if
 		// y_type is MLINE.
 		if (y_current->y_type == MLINE || i < y_current->y_size - 1)
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -698,4 +698,15 @@ func Test_ve_blockpaste()
   bwipe!
 endfunc
 
+func Test_insert_small_delete()
+  new
+  call setline(1, ['foo foobar bar'])
+  call cursor(1,1)
+  exe ":norm! ciw'\<C-R>-'"
+  call assert_equal(getline(1), "'foo' foobar bar")
+  exe ":norm! w.w."
+  call assert_equal(getline(1), "'foo' 'foobar' 'bar'")
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2189,
+/**/
     2188,
 /**/
     2187,