Mercurial > vim
comparison src/testdir/script_util.vim @ 21632:792398a9fe39 v8.2.1366
patch 8.2.1366: test 49 is old style
Commit: https://github.com/vim/vim/commit/a6296200bd5191bab7efcdcc16c9e79eb498e8e0
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Aug 5 11:23:13 2020 +0200
patch 8.2.1366: test 49 is old style
Problem: Test 49 is old style.
Solution: Convert several tests to new style. (Yegappan Lakshmanan,
closes #6629)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 05 Aug 2020 11:30:03 +0200 |
parents | |
children | f936d46cc9c1 |
comparison
equal
deleted
inserted
replaced
21631:e55aba8c2146 | 21632:792398a9fe39 |
---|---|
1 " Functions shared by the tests for Vim Script | |
2 | |
3 " Commands to track the execution path of a script | |
4 com! XpathINIT let g:Xpath = '' | |
5 com! -nargs=1 -bar Xpath let g:Xpath ..= <args> | |
6 com! XloopINIT let g:Xloop = 1 | |
7 com! -nargs=1 -bar Xloop let g:Xpath ..= <args> .. g:Xloop | |
8 com! XloopNEXT let g:Xloop += 1 | |
9 | |
10 " MakeScript() - Make a script file from a function. {{{2 | |
11 " | |
12 " Create a script that consists of the body of the function a:funcname. | |
13 " Replace any ":return" by a ":finish", any argument variable by a global | |
14 " variable, and every ":call" by a ":source" for the next following argument | |
15 " in the variable argument list. This function is useful if similar tests are | |
16 " to be made for a ":return" from a function call or a ":finish" in a script | |
17 " file. | |
18 func MakeScript(funcname, ...) | |
19 let script = tempname() | |
20 execute "redir! >" . script | |
21 execute "function" a:funcname | |
22 redir END | |
23 execute "edit" script | |
24 " Delete the "function" and the "endfunction" lines. Do not include the | |
25 " word "function" in the pattern since it might be translated if LANG is | |
26 " set. When MakeScript() is being debugged, this deletes also the debugging | |
27 " output of its line 3 and 4. | |
28 exec '1,/.*' . a:funcname . '(.*)/d' | |
29 /^\d*\s*endfunction\>/,$d | |
30 %s/^\d*//e | |
31 %s/return/finish/e | |
32 %s/\<a:\(\h\w*\)/g:\1/ge | |
33 normal gg0 | |
34 let cnt = 0 | |
35 while search('\<call\s*\%(\u\|s:\)\w*\s*(.*)', 'W') > 0 | |
36 let cnt = cnt + 1 | |
37 s/\<call\s*\%(\u\|s:\)\w*\s*(.*)/\='source ' . a:{cnt}/ | |
38 endwhile | |
39 g/^\s*$/d | |
40 write | |
41 bwipeout | |
42 return script | |
43 endfunc | |
44 | |
45 " ExecAsScript - Source a temporary script made from a function. {{{2 | |
46 " | |
47 " Make a temporary script file from the function a:funcname, ":source" it, and | |
48 " delete it afterwards. However, if an exception is thrown the file may remain, | |
49 " the caller should call DeleteTheScript() afterwards. | |
50 let s:script_name = '' | |
51 function! ExecAsScript(funcname) | |
52 " Make a script from the function passed as argument. | |
53 let s:script_name = MakeScript(a:funcname) | |
54 | |
55 " Source and delete the script. | |
56 exec "source" s:script_name | |
57 call delete(s:script_name) | |
58 let s:script_name = '' | |
59 endfunction | |
60 | |
61 function! DeleteTheScript() | |
62 if s:script_name | |
63 call delete(s:script_name) | |
64 let s:script_name = '' | |
65 endif | |
66 endfunc | |
67 | |
68 com! -nargs=1 -bar ExecAsScript call ExecAsScript(<f-args>) | |
69 |