blob: 28fd00c4b95ecbf393696d5ea6e9417c1deaaa7b [file] [log] [blame]
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001Test for user functions.
2Also test an <expr> mapping calling a function.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003
4STARTTEST
5:so small.vim
6:function Table(title, ...)
7: let ret = a:title
8: let idx = 1
9: while idx <= a:0
10: exe "let ret = ret . a:" . idx
11: let idx = idx + 1
12: endwhile
13: return ret
14:endfunction
15:function Compute(n1, n2, divname)
16: if a:n2 == 0
17: return "fail"
18: endif
19: exe "let g:" . a:divname . " = ". a:n1 / a:n2
20: return "ok"
21:endfunction
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000022:func Expr1()
23: normal! v
24: return "111"
25:endfunc
26:func Expr2()
27: call search('XX', 'b')
28: return "222"
29:endfunc
30:func ListItem()
31: let g:counter += 1
32: return g:counter . '. '
33:endfunc
34:func ListReset()
35: let g:counter = 0
36: return ''
37:endfunc
Bram Moolenaarbc42c1e2010-05-28 22:06:46 +020038:func FuncWithRef(a)
39: unlet g:FuncRef
40: return a:a
41:endfunc
42:let g:FuncRef=function("FuncWithRef")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000043:let counter = 0
44:inoremap <expr> ( ListItem()
45:inoremap <expr> [ ListReset()
46:imap <expr> + Expr1()
47:imap <expr> * Expr2()
Bram Moolenaar071d4272004-06-13 20:20:40 +000048:let retval = "nop"
49/^here
50C=Table("xxx", 4, "asdf")
51 =Compute(45, 0, "retval")
52 =retval
53 =Compute(45, 5, "retval")
54 =retval
Bram Moolenaarbc42c1e2010-05-28 22:06:46 +020055 =g:FuncRef(333)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000056
57XX+-XX
58---*---
59(one
60(two
Bram Moolenaar9d2c8c12007-09-25 16:00:00 +000061[(one again:$-5,$w! test.out
62:delfunc Table
63:delfunc Compute
64:delfunc Expr1
65:delfunc Expr2
66:delfunc ListItem
67:delfunc ListReset
68:unlet retval counter
69:q!
Bram Moolenaar071d4272004-06-13 20:20:40 +000070ENDTEST
71
72here