mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.0548: saving the redo buffer only works one time
Problem: Saving the redo buffer only works one time, resulting in the "." command not working well for a function call inside another function call. (Ingo Karkat) Solution: Save the redo buffer at every user function call. (closes #1619)
This commit is contained in:
@@ -756,3 +756,31 @@ func Test_setbufvar_options()
|
||||
call win_gotoid(dum1_id)
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_redo_in_nested_functions()
|
||||
nnoremap g. :set opfunc=Operator<CR>g@
|
||||
function Operator( type, ... )
|
||||
let @x = 'XXX'
|
||||
execute 'normal! g`[' . (a:type ==# 'line' ? 'V' : 'v') . 'g`]' . '"xp'
|
||||
endfunction
|
||||
|
||||
function! Apply()
|
||||
5,6normal! .
|
||||
endfunction
|
||||
|
||||
new
|
||||
call setline(1, repeat(['some "quoted" text', 'more "quoted" text'], 3))
|
||||
1normal g.i"
|
||||
call assert_equal('some "XXX" text', getline(1))
|
||||
3,4normal .
|
||||
call assert_equal('some "XXX" text', getline(3))
|
||||
call assert_equal('more "XXX" text', getline(4))
|
||||
call Apply()
|
||||
call assert_equal('some "XXX" text', getline(5))
|
||||
call assert_equal('more "XXX" text', getline(6))
|
||||
bwipe!
|
||||
|
||||
nunmap g.
|
||||
delfunc Operator
|
||||
delfunc Apply
|
||||
endfunc
|
||||
|
Reference in New Issue
Block a user