blob: 5abc140be0dedadd2c8e739f435c118768ddd27a [file] [log] [blame]
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001Test for user functions.
2Also test an <expr> mapping calling a function.
Bram Moolenaarbdb62052012-07-16 17:31:53 +02003Also test that a builtin function cannot be replaced.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004
5STARTTEST
6:so small.vim
7:function Table(title, ...)
8: let ret = a:title
9: let idx = 1
10: while idx <= a:0
11: exe "let ret = ret . a:" . idx
12: let idx = idx + 1
13: endwhile
14: return ret
15:endfunction
16:function Compute(n1, n2, divname)
17: if a:n2 == 0
18: return "fail"
19: endif
20: exe "let g:" . a:divname . " = ". a:n1 / a:n2
21: return "ok"
22:endfunction
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000023:func Expr1()
24: normal! v
25: return "111"
26:endfunc
27:func Expr2()
28: call search('XX', 'b')
29: return "222"
30:endfunc
31:func ListItem()
32: let g:counter += 1
33: return g:counter . '. '
34:endfunc
35:func ListReset()
36: let g:counter = 0
37: return ''
38:endfunc
Bram Moolenaarbc42c1e2010-05-28 22:06:46 +020039:func FuncWithRef(a)
40: unlet g:FuncRef
41: return a:a
42:endfunc
43:let g:FuncRef=function("FuncWithRef")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000044:let counter = 0
45:inoremap <expr> ( ListItem()
46:inoremap <expr> [ ListReset()
47:imap <expr> + Expr1()
48:imap <expr> * Expr2()
Bram Moolenaar071d4272004-06-13 20:20:40 +000049:let retval = "nop"
50/^here
51C=Table("xxx", 4, "asdf")
52 =Compute(45, 0, "retval")
53 =retval
54 =Compute(45, 5, "retval")
55 =retval
Bram Moolenaarbc42c1e2010-05-28 22:06:46 +020056 =g:FuncRef(333)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000057
58XX+-XX
59---*---
60(one
61(two
Bram Moolenaarbdb62052012-07-16 17:31:53 +020062[(one again:call append(line('$'), max([1, 2, 3]))
63:call extend(g:, {'max': function('min')})
64:call append(line('$'), max([1, 2, 3]))
65:$-7,$w! test.out
Bram Moolenaar9d2c8c12007-09-25 16:00:00 +000066:delfunc Table
67:delfunc Compute
68:delfunc Expr1
69:delfunc Expr2
70:delfunc ListItem
71:delfunc ListReset
72:unlet retval counter
73:q!
Bram Moolenaar071d4272004-06-13 20:20:40 +000074ENDTEST
75
76here