Mercurial > vim
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