aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/test_functions.vim
diff options
context:
space:
mode:
authorKunMing Xie <qqzz014@gmail.com>2018-06-25 04:16:57 +0800
committerJustin M. Keyes <justinkz@gmail.com>2018-06-24 22:16:57 +0200
commit38fb83585421c45828a4934fc75f7952b2baf116 (patch)
tree895110c4cabaedc565cb2e3d458008799f351697 /src/nvim/testdir/test_functions.vim
parent83be7cec98713a7a313529b6a0cbadb465800c5c (diff)
downloadrneovim-38fb83585421c45828a4934fc75f7952b2baf116.tar.gz
rneovim-38fb83585421c45828a4934fc75f7952b2baf116.tar.bz2
rneovim-38fb83585421c45828a4934fc75f7952b2baf116.zip
vim-patch:8.0.0548: saving the redo buffer only works one time (#8629)
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 vim/vim#1619) https://github.com/vim/vim/commit/d4863aa99e0527e9505c79cbeafc68a6832200bf
Diffstat (limited to 'src/nvim/testdir/test_functions.vim')
-rw-r--r--src/nvim/testdir/test_functions.vim28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim
index 3028f72fec..c59134908c 100644
--- a/src/nvim/testdir/test_functions.vim
+++ b/src/nvim/testdir/test_functions.vim
@@ -795,3 +795,31 @@ func Test_shellescape()
let &shell = save_shell
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