0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.1.0022: repeating put from expression register fails

Problem:    Repeating put from expression register fails.
Solution:   Re-evaluate the expression register. (Andy Massimino,
            closes #2945)
This commit is contained in:
Bram Moolenaar
2018-05-23 21:53:52 +02:00
parent d315cf551f
commit 833093bfb0
3 changed files with 23 additions and 0 deletions

View File

@@ -844,6 +844,14 @@ start_redo(long count, int old_redo)
if (c >= '1' && c < '9') if (c >= '1' && c < '9')
++c; ++c;
add_char_buff(&readbuf2, c); add_char_buff(&readbuf2, c);
/* the expression register should be re-evaluated */
if (c == '=')
{
add_char_buff(&readbuf2, CAR);
cmd_silent = TRUE;
}
c = read_redo(FALSE, old_redo); c = read_redo(FALSE, old_redo);
} }

View File

@@ -45,3 +45,16 @@ func Test_put_lines()
bw! bw!
call setreg('a', a[0], a[1]) call setreg('a', a[0], a[1])
endfunc endfunc
func Test_put_expr()
new
call setline(1, repeat(['A'], 6))
exec "1norm! \"=line('.')\<cr>p"
norm! j0.
norm! j0.
exec "4norm! \"=\<cr>P"
norm! j0.
norm! j0.
call assert_equal(['A1','A2','A3','4A','5A','6A'], getline(1,'$'))
bw!
endfunc

View File

@@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
22,
/**/ /**/
21, 21,
/**/ /**/