Mercurial > vim
comparison src/testdir/test_expr.vim @ 9626:172131507c85 v7.4.2090
commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jul 22 21:50:18 2016 +0200
patch 7.4.2090
Problem: Using submatch() in a lambda passed to substitute() is verbose.
Solution: Use a static list and pass it as an optional argument to the
function. Fix memory leak.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 22 Jul 2016 22:00:07 +0200 |
parents | bf204ab1ce7d |
children | 6226de5f8137 |
comparison
equal
deleted
inserted
replaced
9625:4c2524dd2403 | 9626:172131507c85 |
---|---|
151 func Recurse() | 151 func Recurse() |
152 return substitute('yyy', 'y*', {-> g:val}, '') | 152 return substitute('yyy', 'y*', {-> g:val}, '') |
153 endfunc | 153 endfunc |
154 call assert_equal('--', substitute('xxx', 'x*', {-> '-' . Recurse() . '-'}, '')) | 154 call assert_equal('--', substitute('xxx', 'x*', {-> '-' . Recurse() . '-'}, '')) |
155 endfunc | 155 endfunc |
156 | |
157 func Test_substitute_expr_arg() | |
158 call assert_equal('123456789-123456789=', substitute('123456789', | |
159 \ '\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', | |
160 \ {m -> m[0] . '-' . m[1] . m[2] . m[3] . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, '')) | |
161 | |
162 call assert_equal('123456-123456=789', substitute('123456789', | |
163 \ '\(.\)\(.\)\(.\)\(a*\)\(n*\)\(.\)\(.\)\(.\)\(x*\)', | |
164 \ {m -> m[0] . '-' . m[1] . m[2] . m[3] . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, '')) | |
165 | |
166 call assert_equal('123456789-123456789x=', substitute('123456789', | |
167 \ '\(.\)\(.\)\(.*\)', | |
168 \ {m -> m[0] . '-' . m[1] . m[2] . m[3] . 'x' . m[4] . m[5] . m[6] . m[7] . m[8] . m[9] . '='}, '')) | |
169 | |
170 call assert_fails("call substitute('xxx', '.', {m -> string(add(m, 'x'))}, '')", 'E742:') | |
171 call assert_fails("call substitute('xxx', '.', {m -> string(insert(m, 'x'))}, '')", 'E742:') | |
172 call assert_fails("call substitute('xxx', '.', {m -> string(extend(m, ['x']))}, '')", 'E742:') | |
173 call assert_fails("call substitute('xxx', '.', {m -> string(remove(m, 1))}, '')", 'E742:') | |
174 endfunc |