# HG changeset patch # User Bram Moolenaar # Date 1608656403 -3600 # Node ID f2a70fca3485c6b585ef3ad5220037c07a7c905e # Parent 923b2b6c6ab595ebdb6b3f6eff357394ad0a45d3 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 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) diff --git a/src/ops.c b/src/ops.c --- 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" diff --git a/src/register.c b/src/register.c --- 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) diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim --- 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'\-'" + 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 diff --git a/src/version.c b/src/version.c --- 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,