diff options
author | Michael Ennen <mike.ennen@gmail.com> | 2016-12-15 13:53:14 -0700 |
---|---|---|
committer | Michael Ennen <mike.ennen@gmail.com> | 2017-02-14 17:38:16 -0700 |
commit | fc46efd3f2d95920bf50832848515b14b12c0723 (patch) | |
tree | 1f32c6d5bd993e86a63826329ddc806d415b315d /src/nvim/testdir/test_expr.vim | |
parent | bb7d0deb2f93bd7980a51dca05ae222e751ab632 (diff) | |
download | rneovim-fc46efd3f2d95920bf50832848515b14b12c0723.tar.gz rneovim-fc46efd3f2d95920bf50832848515b14b12c0723.tar.bz2 rneovim-fc46efd3f2d95920bf50832848515b14b12c0723.zip |
vim-patch:7.4.2072
Problem: substitute() does not support a Funcref argument.
Solution: Support a Funcref like it supports a string starting with "\=".
https://github.com/vim/vim/commit/72ab729c3dcdea0fba44d8e676602c847e841bcd
Diffstat (limited to 'src/nvim/testdir/test_expr.vim')
-rw-r--r-- | src/nvim/testdir/test_expr.vim | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_expr.vim b/src/nvim/testdir/test_expr.vim index 39dcacb55f..0e409009e0 100644 --- a/src/nvim/testdir/test_expr.vim +++ b/src/nvim/testdir/test_expr.vim @@ -106,3 +106,21 @@ func Test_setmatches() call setmatches(set) call assert_equal(exp, getmatches()) endfunc + +func Test_substitute_expr() + let g:val = 'XXX' + call assert_equal('XXX', substitute('yyy', 'y*', '\=g:val', '')) + call assert_equal('XXX', substitute('yyy', 'y*', {-> g:val}, '')) + call assert_equal("-\u1b \uf2-", substitute("-%1b %f2-", '%\(\x\x\)', + \ '\=nr2char("0x" . submatch(1))', 'g')) + call assert_equal("-\u1b \uf2-", substitute("-%1b %f2-", '%\(\x\x\)', + \ {-> nr2char("0x" . submatch(1))}, 'g')) + + call assert_equal('231', substitute('123', '\(.\)\(.\)\(.\)', + \ {-> submatch(2) . submatch(3) . submatch(1)}, '')) + + func Recurse() + return substitute('yyy', 'y*', {-> g:val}, '') + endfunc + call assert_equal('--', substitute('xxx', 'x*', {-> '-' . Recurse() . '-'}, '')) +endfunc |