annotate src/testdir/test_ins_complete.vim @ 28289:cdaff4db7760 v8.2.4670

patch 8.2.4670: memory allocation failures for new tab page not tested Commit: https://github.com/vim/vim/commit/72bb47e38f6805050ed6d969f17591bed71f83d4 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Sun Apr 3 11:22:38 2022 +0100 patch 8.2.4670: memory allocation failures for new tab page not tested Problem: Memory allocation failures for new tab page not tested. Solution: Add tests with failing memory allocation. (Yegappan Lakshmanan, closes #10067)
author Bram Moolenaar <Bram@vim.org>
date Sun, 03 Apr 2022 12:30:03 +0200
parents 3de9be15de51
children 38332c6da029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 20285
diff changeset
1 " Test for insert completion
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 20285
diff changeset
2
18892
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
3 source screendump.vim
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
4 source check.vim
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
5 import './vim9.vim' as v9
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 " Test for insert expansion
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 func Test_ins_complete()
12692
03a6aeea2096 patch 8.0.1224: still interference between test functions
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
9 edit test_ins_complete.vim
12788
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
10 " The files in the current directory interferes with the files
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
11 " used by this test. So use a separate directory for the test.
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
12 call mkdir('Xdir')
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
13 cd Xdir
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
14
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 set ff=unix
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 call writefile(["test11\t36Gepeto\t/Tag/",
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 \ "asd\ttest11file\t36G",
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 \ "Makefile\tto\trun"], 'Xtestfile')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 call writefile(['', 'start of testfile',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 \ 'ru',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 \ 'run1',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 \ 'run2',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 \ 'STARTTEST',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 \ 'ENDTEST',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 \ 'end of testfile'], 'Xtestdata')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 set ff&
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 enew!
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 edit Xtestdata
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 new
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 call append(0, ['#include "Xtestfile"', ''])
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 call cursor(2, 1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 set cot=
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 set cpt=.,w
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 " add-expands (word from next line) from other window
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 exe "normal iru\<C-N>\<C-N>\<C-X>\<C-N>\<Esc>\<C-A>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 call assert_equal('run1 run3', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 " add-expands (current buffer first)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 exe "normal o\<C-P>\<C-X>\<C-N>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 call assert_equal('run3 run3', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 " Local expansion, ends in an empty line (unless it becomes a global
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 " expansion)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 exe "normal o\<C-X>\<C-P>\<C-P>\<C-P>\<C-P>\<C-P>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 call assert_equal('', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 " starts Local and switches to global add-expansion
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47 exe "normal o\<C-X>\<C-P>\<C-P>\<C-X>\<C-X>\<C-N>\<C-X>\<C-N>\<C-N>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 call assert_equal('run1 run2', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49
26817
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
50 set cpt=.,\ ,w,i
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 " i-add-expands and switches to local
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 exe "normal OM\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>\<C-X>\<C-X>\<C-X>\<C-P>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 call assert_equal("Makefile\tto\trun3", getline('.'))
26211
485c7c4afeb7 patch 8.2.3637: typos in test files
Bram Moolenaar <Bram@vim.org>
parents: 26195
diff changeset
54 " add-expands lines (it would end in an empty line if it didn't ignore
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 " itself)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 exe "normal o\<C-X>\<C-L>\<C-X>\<C-L>\<C-P>\<C-P>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 call assert_equal("Makefile\tto\trun3", getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 call assert_equal("Makefile\tto\trun3", getline(line('.') - 1))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
60 set cpt=kXtestfile
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
61 " checks k-expansion, and file expansion (use Xtest11 instead of test11,
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62 " because TEST11.OUT may match first on DOS)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 write Xtest11.one
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64 write Xtest11.two
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
65 exe "normal o\<C-N>\<Esc>IX\<Esc>A\<C-X>\<C-F>\<C-N>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
66 call assert_equal('Xtest11.two', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
67
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
68 " use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use CTRL-X
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
69 " CTRL-F again to verify this doesn't cause trouble.
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
70 exe "normal oXt\<C-X>\<C-F>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<C-X>\<C-F>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
71 call assert_equal('Xtest11.one', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 normal ddk
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
73
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
74 " Test for expanding a non-existing filename
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
75 exe "normal oa1b2X3Y4\<C-X>\<C-F>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
76 call assert_equal('a1b2X3Y4', getline('.'))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
77 normal ddk
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
78
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
79 set cpt=w
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
80 " checks make_cyclic in other window
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
81 exe "normal oST\<C-N>\<C-P>\<C-P>\<C-P>\<C-P>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
82 call assert_equal('STARTTEST', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
83
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
84 set cpt=u nohid
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
85 " checks unloaded buffer expansion
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
86 only
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
87 exe "normal oEN\<C-N>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
88 call assert_equal('ENDTEST', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
89 " checks adding mode abortion
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
90 exe "normal ounl\<C-N>\<C-X>\<C-X>\<C-P>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
91 call assert_equal('unless', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
92
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
93 set cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
94 " tag expansion, define add-expansion interrupted
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
95 exe "normal o\<C-X>\<C-]>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-D>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
96 call assert_equal('test11file 36Gepeto /Tag/ asd', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
97 " t-expansion
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
98 exe "normal oa\<C-N>\<Esc>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
99 call assert_equal('asd', getline('.'))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
100
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
101 %bw!
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
102 call delete('Xtestfile')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
103 call delete('Xtest11.one')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
104 call delete('Xtest11.two')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
105 call delete('Xtestdata')
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
106 set cpt& cot& def& tags& tagbsearch& hidden&
12788
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
107 cd ..
cb9b2774f21f patch 8.0.1271: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12728
diff changeset
108 call delete('Xdir', 'rf')
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
109 endfunc
12728
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
110
26773
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
111 func Test_ins_complete_invalid_byte()
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
112 if has('unix') && executable('base64')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
113 " this weird command was causing an illegal memory access
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
114 call writefile(['bm9ybTlvMDCAMM4Dbw4OGA4ODg=='], 'Xinvalid64')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
115 call system('base64 -d Xinvalid64 > Xinvalid')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
116 call writefile(['qa!'], 'Xexit')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
117 call RunVim([], [], " -i NONE -n -X -Z -e -m -s -S Xinvalid -S Xexit")
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
118 call delete('Xinvalid64')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
119 call delete('Xinvalid')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
120 call delete('Xexit')
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
121 endif
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
122 endfunc
80e134cbee4b patch 8.2.3915: illegal memory access when completing with invalid bytes
Bram Moolenaar <Bram@vim.org>
parents: 26618
diff changeset
123
12728
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
124 func Test_omni_dash()
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
125 func Omni(findstart, base)
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
126 if a:findstart
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
127 return 5
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
128 else
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
129 echom a:base
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
130 return ['-help', '-v']
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
131 endif
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
132 endfunc
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
133 set omnifunc=Omni
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
134 new
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
135 exe "normal Gofind -\<C-x>\<C-o>"
23169
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
136 call assert_equal("find -help", getline('$'))
12728
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
137
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
138 bwipe!
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
139 delfunc Omni
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
140 set omnifunc=
9c1659761fc3 patch 8.0.1242: function argument with only dash is seen as number zero
Christian Brabandt <cb@256bit.org>
parents: 12692
diff changeset
141 endfunc
13215
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
142
25372
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
143 func Test_omni_autoload()
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
144 let save_rtp = &rtp
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
145 set rtp=Xruntime/some
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
146 let dir = 'Xruntime/some/autoload'
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
147 call mkdir(dir, 'p')
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
148
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
149 let lines =<< trim END
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
150 vim9script
27474
307341b9c227 patch 8.2.4265: autoload tests fails
Bram Moolenaar <Bram@vim.org>
parents: 27464
diff changeset
151 export def Func(findstart: bool, base: string): any
25372
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
152 if findstart
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
153 return 1
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
154 else
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
155 return ['match']
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
156 endif
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
157 enddef
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
158 {
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
159 eval 1 + 2
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
160 }
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
161 END
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
162 call writefile(lines, dir .. '/omni.vim')
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
163
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
164 new
27474
307341b9c227 patch 8.2.4265: autoload tests fails
Bram Moolenaar <Bram@vim.org>
parents: 27464
diff changeset
165 setlocal omnifunc=omni#Func
25372
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
166 call feedkeys("i\<C-X>\<C-O>\<Esc>", 'xt')
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
167
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
168 bwipe!
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
169 call delete('Xruntime', 'rf')
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
170 set omnifunc=
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
171 let &rtp = save_rtp
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
172 endfunc
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
173
14071
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
174 func Test_completefunc_args()
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
175 let s:args = []
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
176 func! CompleteFunc(findstart, base)
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
177 let s:args += [[a:findstart, empty(a:base)]]
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
178 endfunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
179 new
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
180
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
181 set completefunc=CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
182 call feedkeys("i\<C-X>\<C-U>\<Esc>", 'x')
14075
320956bddcef patch 8.1.0055: complete test has wrong order of arguments
Christian Brabandt <cb@256bit.org>
parents: 14071
diff changeset
183 call assert_equal([1, 1], s:args[0])
320956bddcef patch 8.1.0055: complete test has wrong order of arguments
Christian Brabandt <cb@256bit.org>
parents: 14071
diff changeset
184 call assert_equal(0, s:args[1][0])
14071
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
185 set completefunc=
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
186
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
187 let s:args = []
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
188 set omnifunc=CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
189 call feedkeys("i\<C-X>\<C-O>\<Esc>", 'x')
14075
320956bddcef patch 8.1.0055: complete test has wrong order of arguments
Christian Brabandt <cb@256bit.org>
parents: 14071
diff changeset
190 call assert_equal([1, 1], s:args[0])
320956bddcef patch 8.1.0055: complete test has wrong order of arguments
Christian Brabandt <cb@256bit.org>
parents: 14071
diff changeset
191 call assert_equal(0, s:args[1][0])
14071
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
192 set omnifunc=
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
193
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
194 bwipe!
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
195 unlet s:args
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
196 delfunc CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
197 endfunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
198
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
199 func s:CompleteDone_CompleteFuncNone( findstart, base )
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
200 if a:findstart
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
201 return 0
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
202 endif
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
203
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
204 return v:none
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
205 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
206
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
207 func s:CompleteDone_CompleteFuncDict( findstart, base )
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
208 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
209 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
210 endif
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
211
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
212 return {
19047
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
213 \ 'words': [
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
214 \ {
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
215 \ 'word': 'aword',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
216 \ 'abbr': 'wrd',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
217 \ 'menu': 'extra text',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
218 \ 'info': 'words are cool',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
219 \ 'kind': 'W',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
220 \ 'user_data': 'test'
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
221 \ }
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
222 \ ]
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
223 \ }
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
224 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
225
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
226 func s:CompleteDone_CheckCompletedItemNone()
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
227 let s:called_completedone = 1
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
228 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
229
19199
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
230 func s:CompleteDone_CheckCompletedItemDict(pre)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
231 call assert_equal( 'aword', v:completed_item[ 'word' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
232 call assert_equal( 'wrd', v:completed_item[ 'abbr' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
233 call assert_equal( 'extra text', v:completed_item[ 'menu' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
234 call assert_equal( 'words are cool', v:completed_item[ 'info' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
235 call assert_equal( 'W', v:completed_item[ 'kind' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
236 call assert_equal( 'test', v:completed_item[ 'user_data' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
237
19199
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
238 if a:pre
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
239 call assert_equal('function', complete_info().mode)
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
240 endif
19127
0ee48dc3f8bc patch 8.2.0123: complete_info() does not work when CompleteDone is triggered
Bram Moolenaar <Bram@vim.org>
parents: 19055
diff changeset
241
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
242 let s:called_completedone = 1
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
243 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
244
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
245 func Test_CompleteDoneNone()
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
246 au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemNone()
16270
749a7c03de8d patch 8.1.1139: no test for what is fixed in patch 8.1.0716
Bram Moolenaar <Bram@vim.org>
parents: 15416
diff changeset
247 let oldline = join(map(range(&columns), 'nr2char(screenchar(&lines-1, v:val+1))'), '')
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
248
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
249 set completefunc=<SID>CompleteDone_CompleteFuncNone
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
250 execute "normal a\<C-X>\<C-U>\<C-Y>"
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
251 set completefunc&
16270
749a7c03de8d patch 8.1.1139: no test for what is fixed in patch 8.1.0716
Bram Moolenaar <Bram@vim.org>
parents: 15416
diff changeset
252 let newline = join(map(range(&columns), 'nr2char(screenchar(&lines-1, v:val+1))'), '')
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
253
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
254 call assert_true(s:called_completedone)
16270
749a7c03de8d patch 8.1.1139: no test for what is fixed in patch 8.1.0716
Bram Moolenaar <Bram@vim.org>
parents: 15416
diff changeset
255 call assert_equal(oldline, newline)
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
256
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
257 let s:called_completedone = 0
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
258 au! CompleteDone
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
259 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
260
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
261 func Test_CompleteDoneDict()
19199
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
262 au CompleteDonePre * :call <SID>CompleteDone_CheckCompletedItemDict(1)
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
263 au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDict(0)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
264
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
265 set completefunc=<SID>CompleteDone_CompleteFuncDict
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
266 execute "normal a\<C-X>\<C-U>\<C-Y>"
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
267 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
268
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
269 call assert_equal('test', v:completed_item[ 'user_data' ])
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
270 call assert_true(s:called_completedone)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
271
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
272 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
273 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
274 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
275
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
276 func s:CompleteDone_CompleteFuncDictNoUserData(findstart, base)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
277 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
278 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
279 endif
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
280
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
281 return {
19047
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
282 \ 'words': [
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
283 \ {
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
284 \ 'word': 'aword',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
285 \ 'abbr': 'wrd',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
286 \ 'menu': 'extra text',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
287 \ 'info': 'words are cool',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
288 \ 'kind': 'W',
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
289 \ 'user_data': ['one', 'two'],
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
290 \ }
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
291 \ ]
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
292 \ }
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
293 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
294
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
295 func s:CompleteDone_CheckCompletedItemDictNoUserData()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
296 call assert_equal( 'aword', v:completed_item[ 'word' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
297 call assert_equal( 'wrd', v:completed_item[ 'abbr' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
298 call assert_equal( 'extra text', v:completed_item[ 'menu' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
299 call assert_equal( 'words are cool', v:completed_item[ 'info' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
300 call assert_equal( 'W', v:completed_item[ 'kind' ] )
19047
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
301 call assert_equal( ['one', 'two'], v:completed_item[ 'user_data' ] )
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
302
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
303 let s:called_completedone = 1
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
304 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
305
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
306 func Test_CompleteDoneDictNoUserData()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
307 au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDictNoUserData()
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
308
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
309 set completefunc=<SID>CompleteDone_CompleteFuncDictNoUserData
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
310 execute "normal a\<C-X>\<C-U>\<C-Y>"
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
311 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
312
19047
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
313 call assert_equal(['one', 'two'], v:completed_item[ 'user_data' ])
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
314 call assert_true(s:called_completedone)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
315
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
316 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
317 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
318 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
319
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
320 func s:CompleteDone_CompleteFuncList(findstart, base)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
321 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
322 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
323 endif
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
324
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
325 return [ 'aword' ]
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
326 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
327
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
328 func s:CompleteDone_CheckCompletedItemList()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
329 call assert_equal( 'aword', v:completed_item[ 'word' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
330 call assert_equal( '', v:completed_item[ 'abbr' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
331 call assert_equal( '', v:completed_item[ 'menu' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
332 call assert_equal( '', v:completed_item[ 'info' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
333 call assert_equal( '', v:completed_item[ 'kind' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
334 call assert_equal( '', v:completed_item[ 'user_data' ] )
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
335
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
336 let s:called_completedone = 1
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
337 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
338
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
339 func Test_CompleteDoneList()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
340 au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemList()
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
341
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
342 set completefunc=<SID>CompleteDone_CompleteFuncList
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
343 execute "normal a\<C-X>\<C-U>\<C-Y>"
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
344 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
345
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
346 call assert_equal('', v:completed_item[ 'user_data' ])
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
347 call assert_true(s:called_completedone)
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
348
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
349 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
350 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
351 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
352
14489
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
353 func Test_CompleteDone_undo()
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
354 au CompleteDone * call append(0, "prepend1")
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
355 new
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
356 call setline(1, ["line1", "line2"])
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
357 call feedkeys("Go\<C-X>\<C-N>\<CR>\<ESC>", "tx")
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
358 call assert_equal(["prepend1", "line1", "line2", "line1", ""],
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
359 \ getline(1, '$'))
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
360 undo
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
361 call assert_equal(["line1", "line2"], getline(1, '$'))
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
362 bwipe!
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
363 au! CompleteDone
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
364 endfunc
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
365
22248
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
366 func CompleteTest(findstart, query)
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
367 if a:findstart
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
368 return col('.')
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
369 endif
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
370 return ['matched']
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
371 endfunc
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
372
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
373 func Test_completefunc_info()
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
374 new
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
375 set completeopt=menuone
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
376 set completefunc=CompleteTest
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
377 call feedkeys("i\<C-X>\<C-U>\<C-R>\<C-R>=string(complete_info())\<CR>\<ESC>", "tx")
22717
bd61aaf7f2a0 patch 8.2.1907: complete_info().selected may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 22705
diff changeset
378 call assert_equal("matched{'pum_visible': 1, 'mode': 'function', 'selected': 0, 'items': [{'word': 'matched', 'menu': '', 'user_data': '', 'info': '', 'kind': '', 'abbr': ''}]}", getline(1))
22248
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
379 bwipe!
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
380 set completeopt&
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
381 set completefunc&
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
382 endfunc
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
383
13215
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
384 " Check that when using feedkeys() typeahead does not interrupt searching for
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
385 " completions.
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
386 func Test_compl_feedkeys()
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
387 new
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
388 set completeopt=menuone,noselect
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
389 call feedkeys("ajump ju\<C-X>\<C-N>\<C-P>\<ESC>", "tx")
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
390 call assert_equal("jump jump", getline(1))
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
391 bwipe!
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
392 set completeopt&
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
393 endfunc
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
394
26195
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
395 func s:ComplInCmdwin_GlobalCompletion(a, l, p)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
396 return 'global'
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
397 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
398
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
399 func s:ComplInCmdwin_LocalCompletion(a, l, p)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
400 return 'local'
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
401 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
402
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
403 func Test_compl_in_cmdwin()
23748
93f90f2ff4e9 patch 8.2.2415: no way to check for the cmdwin feature
Bram Moolenaar <Bram@vim.org>
parents: 23169
diff changeset
404 CheckFeature cmdwin
93f90f2ff4e9 patch 8.2.2415: no way to check for the cmdwin feature
Bram Moolenaar <Bram@vim.org>
parents: 23169
diff changeset
405
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
406 set wildmenu wildchar=<Tab>
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
407 com! -nargs=1 -complete=command GetInput let input = <q-args>
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
408 com! -buffer TestCommand echo 'TestCommand'
22705
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
409 let w:test_winvar = 'winvar'
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
410 let b:test_bufvar = 'bufvar'
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
411
22705
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
412 " User-defined commands
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
413 let input = ''
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
414 call feedkeys("q:iGetInput T\<C-x>\<C-v>\<CR>", 'tx!')
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
415 call assert_equal('TestCommand', input)
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
416
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
417 let input = ''
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
418 call feedkeys("q::GetInput T\<Tab>\<CR>:q\<CR>", 'tx!')
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
419 call assert_equal('T', input)
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
420
22705
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
421
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
422 com! -nargs=1 -complete=var GetInput let input = <q-args>
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
423 " Window-local variables
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
424 let input = ''
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
425 call feedkeys("q:iGetInput w:test_\<C-x>\<C-v>\<CR>", 'tx!')
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
426 call assert_equal('w:test_winvar', input)
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
427
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
428 let input = ''
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
429 call feedkeys("q::GetInput w:test_\<Tab>\<CR>:q\<CR>", 'tx!')
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
430 call assert_equal('w:test_', input)
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
431
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
432 " Buffer-local variables
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
433 let input = ''
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
434 call feedkeys("q:iGetInput b:test_\<C-x>\<C-v>\<CR>", 'tx!')
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
435 call assert_equal('b:test_bufvar', input)
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
436
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
437 let input = ''
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
438 call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!')
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
439 call assert_equal('b:test_', input)
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
440
26195
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
441
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
442 " Argument completion of buffer-local command
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
443 func s:ComplInCmdwin_GlobalCompletionList(a, l, p)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
444 return ['global']
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
445 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
446
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
447 func s:ComplInCmdwin_LocalCompletionList(a, l, p)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
448 return ['local']
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
449 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
450
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
451 func s:ComplInCmdwin_CheckCompletion(arg)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
452 call assert_equal('local', a:arg)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
453 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
454
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
455 com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
456 \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
457 com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
458 \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
459 call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
460
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
461 com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
462 \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
463 com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
464 \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
465
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
466 call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
467
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
468 func! s:ComplInCmdwin_CheckCompletion(arg)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
469 call assert_equal('global', a:arg)
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
470 endfunc
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
471 new
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
472 call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
473 quit
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
474
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
475 delfunc s:ComplInCmdwin_GlobalCompletion
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
476 delfunc s:ComplInCmdwin_LocalCompletion
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
477 delfunc s:ComplInCmdwin_GlobalCompletionList
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
478 delfunc s:ComplInCmdwin_LocalCompletionList
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
479 delfunc s:ComplInCmdwin_CheckCompletion
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
480
41b3718d84c3 patch 8.2.3629: command completion in cmdline window uses global commands
Bram Moolenaar <Bram@vim.org>
parents: 25707
diff changeset
481 delcom -buffer TestCommand
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
482 delcom TestCommand
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
483 delcom GetInput
22705
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
484 unlet w:test_winvar
ba3f547dc490 patch 8.2.1901: variable completion does not work in command line window
Bram Moolenaar <Bram@vim.org>
parents: 22427
diff changeset
485 unlet b:test_bufvar
17468
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
486 set wildmenu& wildchar&
fa6c9047ec70 patch 8.1.1732: completion in cmdwin does not work for buffer-local commands
Bram Moolenaar <Bram@vim.org>
parents: 16270
diff changeset
487 endfunc
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
488
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
489 " Test for insert path completion with completeslash option
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
490 func Test_ins_completeslash()
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
491 CheckMSWindows
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
492
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
493 call mkdir('Xdir')
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
494 let orig_shellslash = &shellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
495 set cpt&
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
496 new
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
497
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
498 set noshellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
499
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
500 set completeslash=
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
501 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
502 call assert_equal('Xdir\', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
503
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
504 set completeslash=backslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
505 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
506 call assert_equal('Xdir\', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
507
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
508 set completeslash=slash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
509 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
510 call assert_equal('Xdir/', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
511
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
512 set shellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
513
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
514 set completeslash=
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
515 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
516 call assert_equal('Xdir/', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
517
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
518 set completeslash=backslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
519 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
520 call assert_equal('Xdir\', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
521
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
522 set completeslash=slash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
523 exe "normal oXd\<C-X>\<C-F>"
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
524 call assert_equal('Xdir/', getline('.'))
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
525 %bw!
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
526 call delete('Xdir', 'rf')
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
527
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
528 set noshellslash
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
529 set completeslash=slash
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
530 call assert_true(stridx(globpath(&rtp, 'syntax/*.vim', 1, 1)[0], '\') != -1)
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
531
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
532 let &shellslash = orig_shellslash
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
533 set completeslash=
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
534 endfunc
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
535
22427
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
536 func Test_pum_stopped_by_timer()
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
537 CheckScreendump
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
538
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
539 let lines =<< trim END
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
540 call setline(1, ['hello', 'hullo', 'heeee', ''])
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
541 func StartCompl()
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
542 call timer_start(100, { -> execute('stopinsert') })
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
543 call feedkeys("Gah\<C-N>")
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
544 endfunc
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
545 END
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
546
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
547 call writefile(lines, 'Xpumscript')
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
548 let buf = RunVimInTerminal('-S Xpumscript', #{rows: 12})
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
549 call term_sendkeys(buf, ":call StartCompl()\<CR>")
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
550 call TermWait(buf, 200)
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
551 call term_sendkeys(buf, "k")
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
552 call VerifyScreenDump(buf, 'Test_pum_stopped_by_timer', {})
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
553
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
554 call StopVimInTerminal(buf)
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
555 call delete('Xpumscript')
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
556 endfunc
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
557
18892
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
558 func Test_pum_with_folds_two_tabs()
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
559 CheckScreendump
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
560
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
561 let lines =<< trim END
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
562 set fdm=marker
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
563 call setline(1, ['" x {{{1', '" a some text'])
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
564 call setline(3, range(&lines)->map({_, val -> '" a' .. val}))
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
565 norm! zm
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
566 tab sp
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
567 call feedkeys('2Gzv', 'xt')
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
568 call feedkeys("0fa", 'xt')
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
569 END
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
570
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
571 call writefile(lines, 'Xpumscript')
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
572 let buf = RunVimInTerminal('-S Xpumscript', #{rows: 10})
19954
c087099e9163 patch 8.2.0533: tests using term_wait() can still be flaky
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
573 call TermWait(buf, 50)
18892
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
574 call term_sendkeys(buf, "a\<C-N>")
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
575 call VerifyScreenDump(buf, 'Test_pum_with_folds_two_tabs', {})
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
576
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
577 call term_sendkeys(buf, "\<Esc>")
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
578 call StopVimInTerminal(buf)
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
579 call delete('Xpumscript')
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
580 endfunc
18900
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
581
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
582 func Test_pum_with_preview_win()
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
583 CheckScreendump
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
584
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
585 let lines =<< trim END
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
586 funct Omni_test(findstart, base)
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
587 if a:findstart
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
588 return col(".") - 1
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
589 endif
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
590 return [#{word: "one", info: "1info"}, #{word: "two", info: "2info"}, #{word: "three", info: "3info"}]
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
591 endfunc
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
592 set omnifunc=Omni_test
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
593 set completeopt+=longest
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
594 END
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
595
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
596 call writefile(lines, 'Xpreviewscript')
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
597 let buf = RunVimInTerminal('-S Xpreviewscript', #{rows: 12})
19954
c087099e9163 patch 8.2.0533: tests using term_wait() can still be flaky
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
598 call TermWait(buf, 50)
18900
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
599 call term_sendkeys(buf, "Gi\<C-X>\<C-O>")
19954
c087099e9163 patch 8.2.0533: tests using term_wait() can still be flaky
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
600 call TermWait(buf, 100)
18900
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
601 call term_sendkeys(buf, "\<C-N>")
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
602 call VerifyScreenDump(buf, 'Test_pum_with_preview_win', {})
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
603
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
604 call term_sendkeys(buf, "\<Esc>")
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
605 call StopVimInTerminal(buf)
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
606 call delete('Xpreviewscript')
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
607 endfunc
19055
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
608
27944
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
609 func Test_scrollbar_on_wide_char()
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
610 CheckScreendump
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
611
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
612 let lines =<< trim END
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
613 call setline(1, ['a', ' å•Šå•Šå•Š',
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
614 \ ' 哦哦哦',
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
615 \ ' 呃呃呃'])
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
616 call setline(5, range(10)->map({i, v -> 'aa' .. v .. 'bb'}))
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
617 END
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
618 call writefile(lines, 'Xwidescript')
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
619 let buf = RunVimInTerminal('-S Xwidescript', #{rows: 10})
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
620 call term_sendkeys(buf, "A\<C-N>")
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
621 call VerifyScreenDump(buf, 'Test_scrollbar_on_wide_char', {})
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
622
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
623 call StopVimInTerminal(buf)
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
624 call delete('Xwidescript')
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
625 endfunc
05fa2837e8a1 patch 8.2.4497: wrong color for half of wide character next to pum scrollbar
Bram Moolenaar <Bram@vim.org>
parents: 27780
diff changeset
626
19055
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
627 " Test for inserting the tag search pattern in insert mode
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
628 func Test_ins_compl_tag_sft()
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
629 call writefile([
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
630 \ "!_TAG_FILE_ENCODING\tutf-8\t//",
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
631 \ "first\tXfoo\t/^int first() {}$/",
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
632 \ "second\tXfoo\t/^int second() {}$/",
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
633 \ "third\tXfoo\t/^int third() {}$/"],
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
634 \ 'Xtags')
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
635 set tags=Xtags
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
636 let code =<< trim [CODE]
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
637 int first() {}
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
638 int second() {}
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
639 int third() {}
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
640 [CODE]
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
641 call writefile(code, 'Xfoo')
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
642
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
643 enew
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
644 set showfulltag
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
645 exe "normal isec\<C-X>\<C-]>\<C-N>\<CR>"
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
646 call assert_equal('int second() {}', getline(1))
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
647 set noshowfulltag
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
648
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
649 call delete('Xtags')
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
650 call delete('Xfoo')
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
651 set tags&
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
652 %bwipe!
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
653 endfunc
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
654
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
655 " Test for 'completefunc' deleting text
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
656 func Test_completefunc_error()
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
657 new
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
658 " delete text when called for the first time
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
659 func CompleteFunc(findstart, base)
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
660 if a:findstart == 1
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
661 normal dd
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
662 return col('.') - 1
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
663 endif
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
664 return ['a', 'b']
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
665 endfunc
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
666 set completefunc=CompleteFunc
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
667 call setline(1, ['', 'abcd', ''])
23772
f5225486d3de patch 8.2.2427: can still switch windows for 'completefunc'
Bram Moolenaar <Bram@vim.org>
parents: 23770
diff changeset
668 call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E578:')
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
669
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
670 " delete text when called for the second time
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
671 func CompleteFunc2(findstart, base)
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
672 if a:findstart == 1
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
673 return col('.') - 1
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
674 endif
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
675 normal dd
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
676 return ['a', 'b']
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
677 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
678 set completefunc=CompleteFunc2
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
679 call setline(1, ['', 'abcd', ''])
20229
06a1dd50463e patch 8.2.0670: cannot change window when evaluating 'completefunc'
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
680 call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E578:')
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
681
23766
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
682 " Jump to a different window from the complete function
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
683 func CompleteFunc3(findstart, base)
23766
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
684 if a:findstart == 1
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
685 return col('.') - 1
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
686 endif
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
687 wincmd p
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
688 return ['a', 'b']
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
689 endfunc
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
690 set completefunc=CompleteFunc3
23766
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
691 new
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
692 call assert_fails('exe "normal a\<C-X>\<C-U>"', 'E565:')
23766
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
693 close!
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
694
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
695 set completefunc&
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
696 delfunc CompleteFunc
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
697 delfunc CompleteFunc2
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
698 delfunc CompleteFunc3
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
699 close!
23766
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
700 endfunc
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
701
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
702 " Test for returning non-string values from 'completefunc'
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
703 func Test_completefunc_invalid_data()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
704 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
705 func! CompleteFunc(findstart, base)
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
706 if a:findstart == 1
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
707 return col('.') - 1
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
708 endif
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
709 return [{}, '', 'moon']
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
710 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
711 set completefunc=CompleteFunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
712 exe "normal i\<C-X>\<C-U>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
713 call assert_equal('moon', getline(1))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
714 set completefunc&
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
715 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
716 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
717
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
718 " Test for errors in using complete() function
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
719 func Test_complete_func_error()
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
720 call assert_fails('call complete(1, ["a"])', 'E785:')
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
721 func ListColors()
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
722 call complete(col('.'), "blue")
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
723 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
724 call assert_fails('exe "normal i\<C-R>=ListColors()\<CR>"', 'E474:')
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
725 func ListMonths()
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
726 call complete(col('.'), test_null_list())
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
727 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
728 call assert_fails('exe "normal i\<C-R>=ListMonths()\<CR>"', 'E474:')
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
729 delfunc ListColors
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
730 delfunc ListMonths
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
731 call assert_fails('call complete_info({})', 'E714:')
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
732 call assert_equal([], complete_info(['items']).items)
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
733 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
734
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
735 " Test for recursively starting completion mode using complete()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
736 func Test_recursive_complete_func()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
737 func ListColors()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
738 call complete(5, ["red", "blue"])
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
739 return ''
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
740 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
741 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
742 call setline(1, ['a1', 'a2'])
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
743 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
744 exe "normal Goa\<C-X>\<C-L>\<C-R>=ListColors()\<CR>\<C-N>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
745 call assert_equal('a2blue', getline(3))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
746 delfunc ListColors
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
747 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
748 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
749
20199
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
750 " Test for completing words following a completed word in a line
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
751 func Test_complete_wrapscan()
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
752 " complete words from another buffer
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
753 new
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
754 call setline(1, ['one two', 'three four'])
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
755 new
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
756 setlocal complete=w
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
757 call feedkeys("itw\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>", 'xt')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
758 call assert_equal('two three four', getline(1))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
759 close!
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
760 " complete words from the current buffer
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
761 setlocal complete=.
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
762 %d
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
763 call setline(1, ['one two', ''])
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
764 call cursor(2, 1)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
765 call feedkeys("ion\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>", 'xt')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
766 call assert_equal('one two one two', getline(2))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
767 close!
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
768 endfunc
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
769
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
770 " Test for completing special characters
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
771 func Test_complete_special_chars()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
772 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
773 call setline(1, 'int .*[-\^$ func float')
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
774 call feedkeys("oin\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>", 'xt')
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
775 call assert_equal('int .*[-\^$ func float', getline(2))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
776 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
777 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
778
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
779 " Test for completion when text is wrapped across lines.
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
780 func Test_complete_across_line()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
781 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
782 call setline(1, ['red green blue', 'one two three'])
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
783 setlocal textwidth=20
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
784 exe "normal 2G$a re\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
785 call assert_equal(['one two three red', 'green blue one'], getline(2, '$'))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
786 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
787 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
788
26817
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
789 " Test for completing words with a '.' at the end of a word.
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
790 func Test_complete_joinspaces()
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
791 new
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
792 call setline(1, ['one two.', 'three. four'])
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
793 set joinspaces
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
794 exe "normal Goon\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
795 call assert_equal("one two. three. four", getline(3))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
796 set joinspaces&
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
797 bw!
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
798 endfunc
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
799
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
800 " Test for using CTRL-L to add one character when completing matching
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
801 func Test_complete_add_onechar()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
802 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
803 call setline(1, ['wool', 'woodwork'])
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
804 call feedkeys("Gowoo\<C-P>\<C-P>\<C-P>\<C-L>f", 'xt')
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
805 call assert_equal('woof', getline(3))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
806
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
807 " use 'ignorecase' and backspace to erase characters from the prefix string
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
808 " and then add letters using CTRL-L
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
809 %d
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
810 set ignorecase backspace=2
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
811 setlocal complete=.
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
812 call setline(1, ['workhorse', 'workload'])
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
813 normal Go
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
814 exe "normal aWOR\<C-P>\<bs>\<bs>\<bs>\<bs>\<bs>\<bs>\<C-L>r\<C-L>\<C-L>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
815 call assert_equal('workh', getline(3))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
816 set ignorecase& backspace&
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
817 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
818 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
819
26817
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
820 " Test for using CTRL-X CTRL-L to complete whole lines lines
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
821 func Test_complete_wholeline()
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
822 new
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
823 " complete one-line
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
824 call setline(1, ['a1', 'a2'])
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
825 exe "normal ggoa\<C-X>\<C-L>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
826 call assert_equal(['a1', 'a1', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
827 " go to the next match (wrapping around the buffer)
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
828 exe "normal 2GCa\<C-X>\<C-L>\<C-N>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
829 call assert_equal(['a1', 'a', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
830 " go to the next match
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
831 exe "normal 2GCa\<C-X>\<C-L>\<C-N>\<C-N>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
832 call assert_equal(['a1', 'a2', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
833 exe "normal 2GCa\<C-X>\<C-L>\<C-N>\<C-N>\<C-N>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
834 call assert_equal(['a1', 'a1', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
835 " repeat the test using CTRL-L
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
836 " go to the next match (wrapping around the buffer)
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
837 exe "normal 2GCa\<C-X>\<C-L>\<C-L>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
838 call assert_equal(['a1', 'a2', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
839 " go to the next match
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
840 exe "normal 2GCa\<C-X>\<C-L>\<C-L>\<C-L>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
841 call assert_equal(['a1', 'a', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
842 exe "normal 2GCa\<C-X>\<C-L>\<C-L>\<C-L>\<C-L>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
843 call assert_equal(['a1', 'a1', 'a2'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
844 %d
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
845 " use CTRL-X CTRL-L to add one more line
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
846 call setline(1, ['a1', 'b1'])
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
847 setlocal complete=.
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
848 exe "normal ggOa\<C-X>\<C-L>\<C-X>\<C-L>\<C-X>\<C-L>"
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
849 call assert_equal(['a1', 'b1', '', 'a1', 'b1'], getline(1, '$'))
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
850 bw!
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
851 endfunc
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
852
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
853 " Test insert completion with 'cindent' (adjust the indent)
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
854 func Test_complete_with_cindent()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
855 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
856 setlocal cindent
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
857 call setline(1, ['if (i == 1)', " j = 2;"])
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
858 exe "normal Go{\<CR>i\<C-X>\<C-L>\<C-X>\<C-L>\<CR>}"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
859 call assert_equal(['{', "\tif (i == 1)", "\t\tj = 2;", '}'], getline(3, '$'))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
860
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
861 %d
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
862 call setline(1, ['when while', '{', ''])
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
863 setlocal cinkeys+==while
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
864 exe "normal Giwh\<C-P> "
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
865 call assert_equal("\twhile ", getline('$'))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
866 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
867 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
868
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
869 " Test for <CTRL-X> <CTRL-V> completion. Complete commands and functions
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
870 func Test_complete_cmdline()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
871 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
872 exe "normal icaddb\<C-X>\<C-V>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
873 call assert_equal('caddbuffer', getline(1))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
874 exe "normal ocall getqf\<C-X>\<C-V>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
875 call assert_equal('call getqflist(', getline(2))
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
876 exe "normal oabcxyz(\<C-X>\<C-V>"
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
877 call assert_equal('abcxyz(', getline(3))
25707
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
878 com! -buffer TestCommand1 echo 'TestCommand1'
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
879 com! -buffer TestCommand2 echo 'TestCommand2'
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
880 write TestCommand1Test
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
881 write TestCommand2Test
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
882 " Test repeating <CTRL-X> <CTRL-V> and switching to another CTRL-X mode
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
883 exe "normal oT\<C-X>\<C-V>\<C-X>\<C-V>\<C-X>\<C-F>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
884 call assert_equal('TestCommand2Test', getline(4))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
885 call delete('TestCommand1Test')
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
886 call delete('TestCommand2Test')
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
887 delcom TestCommand1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
888 delcom TestCommand2
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
889 close!
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
890 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
891
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
892 " Test for <CTRL-X> <CTRL-Z> stopping completion without changing the match
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
893 func Test_complete_stop()
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
894 new
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
895 func Save_mode1()
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
896 let g:mode1 = mode(1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
897 return ''
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
898 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
899 func Save_mode2()
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
900 let g:mode2 = mode(1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
901 return ''
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
902 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
903 inoremap <F1> <C-R>=Save_mode1()<CR>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
904 inoremap <F2> <C-R>=Save_mode2()<CR>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
905 call setline(1, ['aaa bbb ccc '])
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
906 exe "normal A\<C-N>\<C-P>\<F1>\<C-X>\<C-Z>\<F2>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
907 call assert_equal('ic', g:mode1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
908 call assert_equal('i', g:mode2)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
909 call assert_equal('aaa bbb ccc ', getline(1))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
910 exe "normal A\<C-N>\<Down>\<F1>\<C-X>\<C-Z>\<F2>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
911 call assert_equal('ic', g:mode1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
912 call assert_equal('i', g:mode2)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
913 call assert_equal('aaa bbb ccc aaa', getline(1))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
914 set completeopt+=noselect
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
915 exe "normal A \<C-N>\<Down>\<Down>\<C-L>\<C-L>\<F1>\<C-X>\<C-Z>\<F2>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
916 call assert_equal('ic', g:mode1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
917 call assert_equal('i', g:mode2)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
918 call assert_equal('aaa bbb ccc aaa bb', getline(1))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
919 set completeopt&
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
920 exe "normal A d\<C-N>\<F1>\<C-X>\<C-Z>\<F2>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
921 call assert_equal('ic', g:mode1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
922 call assert_equal('i', g:mode2)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
923 call assert_equal('aaa bbb ccc aaa bb d', getline(1))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
924 com! -buffer TestCommand1 echo 'TestCommand1'
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
925 com! -buffer TestCommand2 echo 'TestCommand2'
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
926 exe "normal oT\<C-X>\<C-V>\<C-X>\<C-V>\<F1>\<C-X>\<C-Z>\<F2>\<Esc>"
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
927 call assert_equal('ic', g:mode1)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
928 call assert_equal('i', g:mode2)
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
929 call assert_equal('TestCommand2', getline(2))
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
930 delcom TestCommand1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
931 delcom TestCommand2
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
932 unlet g:mode1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
933 unlet g:mode2
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
934 iunmap <F1>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
935 iunmap <F2>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
936 delfunc Save_mode1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
937 delfunc Save_mode2
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
938 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
939 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
940
26831
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
941 " Test for typing CTRL-R in insert completion mode to insert a register
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
942 " content.
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
943 func Test_complete_reginsert()
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
944 new
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
945 call setline(1, ['a1', 'a12', 'a123', 'a1234'])
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
946
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
947 " if a valid CTRL-X mode key is returned from <C-R>=, then it should be
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
948 " processed. Otherwise, CTRL-X mode should be stopped and the key should be
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
949 " inserted.
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
950 exe "normal Goa\<C-P>\<C-R>=\"\\<C-P>\"\<CR>"
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
951 call assert_equal('a123', getline(5))
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
952 let @r = "\<C-P>\<C-P>"
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
953 exe "normal GCa\<C-P>\<C-R>r"
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
954 call assert_equal('a12', getline(5))
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
955 exe "normal GCa\<C-P>\<C-R>=\"x\"\<CR>"
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
956 call assert_equal('a1234x', getline(5))
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
957 bw!
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
958 endfunc
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
959
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
960 func Test_issue_7021()
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
961 CheckMSWindows
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
962
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
963 let orig_shellslash = &shellslash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
964 set noshellslash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
965
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
966 set completeslash=slash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
967 call assert_false(expand('~') =~ '/')
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
968
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
969 let &shellslash = orig_shellslash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
970 set completeslash=
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
971 endfunc
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
972
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
973 " Test for 'longest' setting in 'completeopt' with latin1 and utf-8 encodings
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
974 func Test_complete_longest_match()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
975 for e in ['latin1', 'utf-8']
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
976 exe 'set encoding=' .. e
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
977 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
978 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
979 set completeopt=menu,longest
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
980 call setline(1, ['pfx_a1', 'pfx_a12', 'pfx_a123', 'pfx_b1'])
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
981 exe "normal Gopfx\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
982 call assert_equal('pfx_', getline(5))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
983 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
984 endfor
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
985
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
986 " Test for completing additional words with longest match set
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
987 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
988 call setline(1, ['abc1', 'abd2'])
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
989 exe "normal Goab\<C-P>\<C-X>\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
990 call assert_equal('ab', getline(3))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
991 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
992 set complete& completeopt&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
993 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
994
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
995 " Test for removing the first displayed completion match and selecting the
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
996 " match just before that.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
997 func Test_complete_erase_firstmatch()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
998 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
999 call setline(1, ['a12', 'a34', 'a56'])
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1000 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1001 exe "normal Goa\<C-P>\<BS>\<BS>3\<CR>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1002 call assert_equal('a34', getline('$'))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1003 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1004 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1005 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1006
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1007 " Test for completing words from unloaded buffers
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1008 func Test_complete_from_unloadedbuf()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1009 call writefile(['abc'], "Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1010 call writefile(['def'], "Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1011 edit Xfile1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1012 edit Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1013 new | close
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1014 enew
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1015 bunload Xfile1 Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1016 set complete=u
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1017 " complete from an unloaded buffer
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1018 exe "normal! ia\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1019 call assert_equal('abc', getline(1))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1020 exe "normal! od\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1021 call assert_equal('def', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1022 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1023 %bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1024 call delete("Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1025 call delete("Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1026 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1027
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1028 " Test for completing whole lines from unloaded buffers
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1029 func Test_complete_wholeline_unloadedbuf()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1030 call writefile(['a line1', 'a line2', 'a line3'], "Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1031 edit Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1032 enew
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1033 set complete=u
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1034 exe "normal! ia\<C-X>\<C-L>\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1035 call assert_equal('a line2', getline(1))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1036 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1037 " completing from an unlisted buffer should fail
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1038 bdel Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1039 exe "normal! ia\<C-X>\<C-L>\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1040 call assert_equal('a', getline(1))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1041 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1042 %bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1043 call delete("Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1044 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1045
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1046 " Test for completing words from unlisted buffers
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1047 func Test_complete_from_unlistedbuf()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1048 call writefile(['abc'], "Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1049 call writefile(['def'], "Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1050 edit Xfile1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1051 edit Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1052 new | close
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1053 bdel Xfile1 Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1054 set complete=U
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1055 " complete from an unlisted buffer
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1056 exe "normal! ia\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1057 call assert_equal('abc', getline(1))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1058 exe "normal! od\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1059 call assert_equal('def', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1060 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1061 %bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1062 call delete("Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1063 call delete("Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1064 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1065
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1066 " Test for completing whole lines from unlisted buffers
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1067 func Test_complete_wholeline_unlistedbuf()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1068 call writefile(['a line1', 'a line2', 'a line3'], "Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1069 edit Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1070 enew
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1071 set complete=U
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1072 " completing from a unloaded buffer should fail
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1073 exe "normal! ia\<C-X>\<C-L>\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1074 call assert_equal('a', getline(1))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1075 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1076 bdel Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1077 exe "normal! ia\<C-X>\<C-L>\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1078 call assert_equal('a line2', getline(1))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1079 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1080 %bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1081 call delete("Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1082 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1083
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1084 " Test for adding a multibyte character using CTRL-L in completion mode
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1085 func Test_complete_mbyte_char_add()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1086 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1087 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1088 call setline(1, 'abÄ—')
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1089 exe "normal! oa\<C-P>\<BS>\<BS>\<C-L>\<C-L>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1090 call assert_equal('abÄ—', getline(2))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1091 " Test for a leader with multibyte character
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1092 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1093 call setline(1, 'abÄ—Ä•')
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1094 exe "normal! oabÄ—\<C-P>"
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1095 call assert_equal('abÄ—Ä•', getline(2))
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1096 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1097 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1098
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1099 " Test for using <C-X><C-P> for local expansion even if 'complete' is set to
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1100 " not to complete matches from the local buffer. Also test using multiple
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1101 " <C-X> to cancel the current completion mode.
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1102 func Test_complete_local_expansion()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1103 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1104 set complete=t
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1105 call setline(1, ['abc', 'def'])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1106 exe "normal! Go\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1107 call assert_equal("def", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1108 exe "normal! Go\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1109 call assert_equal("", getline(4))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1110 exe "normal! Go\<C-X>\<C-N>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1111 call assert_equal("abc", getline(5))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1112 exe "normal! Go\<C-N>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1113 call assert_equal("", getline(6))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1114
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1115 " use multiple <C-X> to cancel the previous completion mode
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1116 exe "normal! Go\<C-P>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1117 call assert_equal("", getline(7))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1118 exe "normal! Go\<C-P>\<C-X>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1119 call assert_equal("", getline(8))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1120 exe "normal! Go\<C-P>\<C-X>\<C-X>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1121 call assert_equal("abc", getline(9))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1122
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1123 " interrupt the current completion mode
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1124 set completeopt=menu,noinsert
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1125 exe "normal! Go\<C-X>\<C-F>\<C-X>\<C-X>\<C-P>\<C-Y>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1126 call assert_equal("abc", getline(10))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1127
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1128 " when only one <C-X> is used to interrupt, do normal expansion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1129 exe "normal! Go\<C-X>\<C-F>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1130 call assert_equal("", getline(11))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1131 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1132
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1133 " using two <C-X> in non-completion mode and restarting the same mode
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1134 exe "normal! God\<C-X>\<C-X>\<C-P>\<C-X>\<C-X>\<C-P>\<C-Y>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1135 call assert_equal("def", getline(12))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1136
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1137 " test for adding a match from the original empty text
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1138 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1139 call setline(1, 'abc def g')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1140 exe "normal! o\<C-X>\<C-P>\<C-N>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1141 call assert_equal('def', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1142 exe "normal! 0C\<C-X>\<C-N>\<C-P>\<C-X>\<C-N>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1143 call assert_equal('abc', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1144
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1145 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1146 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1147
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1148 " Test for undoing changes after a insert-mode completion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1149 func Test_complete_undo()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1150 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1151 set complete=.
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1152 " undo with 'ignorecase'
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1153 call setline(1, ['ABOVE', 'BELOW'])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1154 set ignorecase
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1155 exe "normal! Goab\<C-G>u\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1156 call assert_equal("ABOVE", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1157 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1158 call assert_equal("ab", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1159 set ignorecase&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1160 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1161 " undo with longest match
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1162 set completeopt=menu,longest
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1163 call setline(1, ['above', 'about'])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1164 exe "normal! Goa\<C-G>u\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1165 call assert_equal("abo", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1166 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1167 call assert_equal("a", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1168 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1169 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1170 " undo for line completion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1171 call setline(1, ['above that change', 'below that change'])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1172 exe "normal! Goabove\<C-G>u\<C-X>\<C-L>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1173 call assert_equal("above that change", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1174 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1175 call assert_equal("above", getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1176
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1177 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1178 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1179
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1180 " Test for completing a very long word
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1181 func Test_complete_long_word()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1182 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1183 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1184 call setline(1, repeat('x', 950) .. ' one two three')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1185 exe "normal! Gox\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1186 call assert_equal(repeat('x', 950) .. ' one two three', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1187 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1188 " should fail when more than 950 characters are in a word
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1189 call setline(1, repeat('x', 951) .. ' one two three')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1190 exe "normal! Gox\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1191 call assert_equal(repeat('x', 951), getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1192
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1193 " Test for adding a very long word to an existing completion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1194 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1195 call setline(1, ['abc', repeat('x', 1016) .. '012345'])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1196 exe "normal! Goab\<C-P>\<C-X>\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1197 call assert_equal('abc ' .. repeat('x', 1016) .. '0123', getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1198 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1199 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1200
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1201 " Test for some fields in the complete items used by complete()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1202 func Test_complete_items()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1203 func CompleteItems(idx)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1204 let items = [[#{word: "one", dup: 1, user_data: 'u1'}, #{word: "one", dup: 1, user_data: 'u2'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1205 \ [#{word: "one", dup: 0, user_data: 'u3'}, #{word: "one", dup: 0, user_data: 'u4'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1206 \ [#{word: "one", icase: 1, user_data: 'u7'}, #{word: "oNE", icase: 1, user_data: 'u8'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1207 \ [#{user_data: 'u9'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1208 \ [#{word: "", user_data: 'u10'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1209 \ [#{word: "", empty: 1, user_data: 'u11'}]]
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1210 call complete(col('.'), items[a:idx])
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1211 return ''
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1212 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1213 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1214 exe "normal! i\<C-R>=CompleteItems(0)\<CR>\<C-N>\<C-Y>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1215 call assert_equal('u2', v:completed_item.user_data)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1216 call assert_equal('one', getline(1))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1217 exe "normal! o\<C-R>=CompleteItems(1)\<CR>\<C-Y>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1218 call assert_equal('u3', v:completed_item.user_data)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1219 call assert_equal('one', getline(2))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1220 exe "normal! o\<C-R>=CompleteItems(1)\<CR>\<C-N>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1221 call assert_equal('', getline(3))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1222 set completeopt=menu,noinsert
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1223 exe "normal! o\<C-R>=CompleteItems(2)\<CR>one\<C-N>\<C-Y>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1224 call assert_equal('oNE', getline(4))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1225 call assert_equal('u8', v:completed_item.user_data)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1226 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1227 exe "normal! o\<C-R>=CompleteItems(3)\<CR>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1228 call assert_equal('', getline(5))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1229 exe "normal! o\<C-R>=CompleteItems(4)\<CR>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1230 call assert_equal('', getline(6))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1231 exe "normal! o\<C-R>=CompleteItems(5)\<CR>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1232 call assert_equal('', getline(7))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1233 call assert_equal('u11', v:completed_item.user_data)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1234 " pass invalid argument to complete()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1235 let cmd = "normal! o\<C-R>=complete(1, [[]])\<CR>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1236 call assert_fails('exe cmd', 'E730:')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1237 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1238 delfunc CompleteItems
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1239 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1240
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1241 " Test for the "refresh" item in the dict returned by an insert completion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1242 " function
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1243 func Test_complete_item_refresh_always()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1244 let g:CallCount = 0
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1245 func! Tcomplete(findstart, base)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1246 if a:findstart
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1247 " locate the start of the word
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1248 let line = getline('.')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1249 let start = col('.') - 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1250 while start > 0 && line[start - 1] =~ '\a'
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1251 let start -= 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1252 endwhile
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1253 return start
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1254 else
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1255 let g:CallCount += 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1256 let res = ["update1", "update12", "update123"]
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1257 return #{words: res, refresh: 'always'}
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1258 endif
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1259 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1260 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1261 set completeopt=menu,longest
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1262 set completefunc=Tcomplete
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1263 exe "normal! iup\<C-X>\<C-U>\<BS>\<BS>\<BS>\<BS>\<BS>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1264 call assert_equal('up', getline(1))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1265 call assert_equal(2, g:CallCount)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1266 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1267 set completefunc&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1268 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1269 delfunc Tcomplete
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1270 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1271
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1272 " Test for completing from a thesaurus file without read permission
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1273 func Test_complete_unreadable_thesaurus_file()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1274 CheckUnix
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1275 CheckNotRoot
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1276
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1277 call writefile(['about', 'above'], 'Xfile')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1278 call setfperm('Xfile', '---r--r--')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1279 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1280 set complete=sXfile
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1281 exe "normal! ia\<C-P>"
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1282 call assert_equal('a', getline(1))
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1283 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1284 call delete('Xfile')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1285 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1286 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1287
23169
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1288 " Test to ensure 'Scanning...' messages are not recorded in messages history
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1289 func Test_z1_complete_no_history()
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1290 new
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1291 messages clear
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1292 let currmess = execute('messages')
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1293 setlocal dictionary=README.txt
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1294 exe "normal owh\<C-X>\<C-K>"
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1295 exe "normal owh\<C-N>"
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1296 call assert_equal(currmess, execute('messages'))
27954
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1297 bwipe!
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1298 endfunc
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1299
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1300 " A mapping is not used for the key after CTRL-X.
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1301 func Test_no_mapping_for_ctrl_x_key()
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1302 new
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1303 inoremap <C-K> <Cmd>let was_mapped = 'yes'<CR>
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1304 setlocal dictionary=README.txt
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1305 call feedkeys("aexam\<C-X>\<C-K> ", 'xt')
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1306 call assert_equal('example ', getline(1))
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1307 call assert_false(exists('was_mapped'))
3de9be15de51 patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-X
Bram Moolenaar <Bram@vim.org>
parents: 27944
diff changeset
1308 bwipe!
23169
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1309 endfunc
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1310
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1311 " Test for different ways of setting the 'completefunc' option
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1312 func Test_completefunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1313 func CompleteFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1314 call add(g:CompleteFunc1Args, [a:callnr, a:findstart, a:base])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1315 return a:findstart ? 0 : []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1316 endfunc
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1317 func CompleteFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1318 call add(g:CompleteFunc2Args, [a:findstart, a:base])
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1319 return a:findstart ? 0 : []
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1320 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1321
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1322 let lines =<< trim END
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1323 #" Test for using a global function name
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1324 LET &completefunc = 'g:CompleteFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1325 new
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1326 call setline(1, 'global')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1327 LET g:CompleteFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1328 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1329 call assert_equal([[1, ''], [0, 'global']], g:CompleteFunc2Args)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1330 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1331
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1332 #" Test for using a function()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1333 set completefunc=function('g:CompleteFunc1',\ [10])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1334 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1335 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1336 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1337 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1338 call assert_equal([[10, 1, ''], [10, 0, 'one']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1339 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1340
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1341 #" Using a funcref variable to set 'completefunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1342 VAR Fn = function('g:CompleteFunc1', [11])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1343 LET &completefunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1344 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1345 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1346 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1347 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1348 call assert_equal([[11, 1, ''], [11, 0, 'two']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1349 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1350
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1351 #" Using string(funcref_variable) to set 'completefunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1352 LET Fn = function('g:CompleteFunc1', [12])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1353 LET &completefunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1354 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1355 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1356 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1357 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1358 call assert_equal([[12, 1, ''], [12, 0, 'two']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1359 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1360
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1361 #" Test for using a funcref()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1362 set completefunc=funcref('g:CompleteFunc1',\ [13])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1363 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1364 call setline(1, 'three')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1365 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1366 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1367 call assert_equal([[13, 1, ''], [13, 0, 'three']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1368 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1369
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1370 #" Using a funcref variable to set 'completefunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1371 LET Fn = funcref('g:CompleteFunc1', [14])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1372 LET &completefunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1373 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1374 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1375 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1376 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1377 call assert_equal([[14, 1, ''], [14, 0, 'four']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1378 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1379
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1380 #" Using a string(funcref_variable) to set 'completefunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1381 LET Fn = funcref('g:CompleteFunc1', [15])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1382 LET &completefunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1383 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1384 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1385 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1386 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1387 call assert_equal([[15, 1, ''], [15, 0, 'four']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1388 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1389
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1390 #" Test for using a lambda function with set
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1391 VAR optval = "LSTART a, b LMIDDLE g:CompleteFunc1(16, a, b) LEND"
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1392 LET optval = substitute(optval, ' ', '\\ ', 'g')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1393 exe "set completefunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1394 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1395 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1396 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1397 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1398 call assert_equal([[16, 1, ''], [16, 0, 'five']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1399 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1400
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1401 #" Set 'completefunc' to a lambda expression
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1402 LET &completefunc = LSTART a, b LMIDDLE g:CompleteFunc1(17, a, b) LEND
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1403 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1404 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1405 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1406 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1407 call assert_equal([[17, 1, ''], [17, 0, 'six']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1408 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1409
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1410 #" Set 'completefunc' to string(lambda_expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1411 LET &completefunc = 'LSTART a, b LMIDDLE g:CompleteFunc1(18, a, b) LEND'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1412 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1413 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1414 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1415 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1416 call assert_equal([[18, 1, ''], [18, 0, 'six']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1417 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1418
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1419 #" Set 'completefunc' to a variable with a lambda expression
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1420 VAR Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(19, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1421 LET &completefunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1422 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1423 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1424 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1425 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1426 call assert_equal([[19, 1, ''], [19, 0, 'seven']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1427 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1428
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1429 #" Set 'completefunc' to a string(variable with a lambda expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1430 LET Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(20, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1431 LET &completefunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1432 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1433 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1434 LET g:CompleteFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1435 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1436 call assert_equal([[20, 1, ''], [20, 0, 'seven']], g:CompleteFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1437 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1438
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1439 #" Test for using a lambda function with incorrect return value
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1440 LET Lambda = LSTART a, b LMIDDLE strlen(a) LEND
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1441 LET &completefunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1442 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1443 call setline(1, 'eight')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1444 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1445 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1446
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1447 #" Test for clearing the 'completefunc' option
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1448 set completefunc=''
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1449 set completefunc&
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1450 call assert_fails("set completefunc=function('abc')", "E700:")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1451 call assert_fails("set completefunc=funcref('abc')", "E700:")
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1452
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1453 #" set 'completefunc' to a non-existing function
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
1454 set completefunc=g:CompleteFunc2
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1455 call setline(1, 'five')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1456 call assert_fails("set completefunc=function('NonExistingFunc')", 'E700:')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1457 call assert_fails("LET &completefunc = function('NonExistingFunc')", 'E700:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1458 LET g:CompleteFunc2Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1459 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1460 call assert_equal([[1, ''], [0, 'five']], g:CompleteFunc2Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1461 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1462 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1463 call v9.CheckLegacyAndVim9Success(lines)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1464
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1465 " Test for using a script-local function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1466 func s:CompleteFunc3(findstart, base)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1467 call add(g:CompleteFunc3Args, [a:findstart, a:base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1468 return a:findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1469 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1470 set completefunc=s:CompleteFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1471 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1472 call setline(1, 'script1')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1473 let g:CompleteFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1474 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1475 call assert_equal([[1, ''], [0, 'script1']], g:CompleteFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1476 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1477
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1478 let &completefunc = 's:CompleteFunc3'
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1479 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1480 call setline(1, 'script2')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1481 let g:CompleteFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1482 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1483 call assert_equal([[1, ''], [0, 'script2']], g:CompleteFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1484 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1485 delfunc s:CompleteFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1486
27780
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1487 " In Vim9 script s: can be omitted
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1488 let lines =<< trim END
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1489 vim9script
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1490 var CompleteFunc4Args = []
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1491 def CompleteFunc4(findstart: bool, base: string): any
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1492 add(CompleteFunc4Args, [findstart, base])
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1493 return findstart ? 0 : []
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1494 enddef
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1495 set completefunc=CompleteFunc4
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1496 new
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1497 setline(1, 'script1')
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1498 feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1499 assert_equal([[1, ''], [0, 'script1']], CompleteFunc4Args)
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1500 bw!
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1501 END
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1502 call v9.CheckScriptSuccess(lines)
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1503
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1504 " invalid return value
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1505 let &completefunc = {a -> 'abc'}
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1506 call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1507
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1508 " Using Vim9 lambda expression in legacy context should fail
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1509 set completefunc=(a,\ b)\ =>\ g:CompleteFunc1(21,\ a,\ b)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1510 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1511 let g:CompleteFunc1Args = []
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1512 call assert_fails('call feedkeys("A\<C-X>\<C-U>\<Esc>", "x")', 'E117:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1513 call assert_equal([], g:CompleteFunc1Args)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1514
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1515 " set 'completefunc' to a partial with dict. This used to cause a crash.
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1516 func SetCompleteFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1517 let params = {'complete': function('g:DictCompleteFunc')}
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1518 let &completefunc = params.complete
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1519 endfunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1520 func g:DictCompleteFunc(_) dict
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1521 endfunc
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1522 call SetCompleteFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1523 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1524 call SetCompleteFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1525 bw
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1526 call test_garbagecollect_now()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1527 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1528 set completefunc=
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1529 wincmd w
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1530 set completefunc=
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1531 %bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1532 delfunc g:DictCompleteFunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1533 delfunc SetCompleteFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1534
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1535 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1536 let lines =<< trim END
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1537 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1538
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1539 def Vim9CompleteFunc(callnr: number, findstart: number, base: string): any
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1540 add(g:Vim9completeFuncArgs, [callnr, findstart, base])
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1541 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1542 enddef
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1543
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1544 # Test for using a def function with completefunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1545 set completefunc=function('Vim9CompleteFunc',\ [60])
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1546 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1547 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1548 g:Vim9completeFuncArgs = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1549 feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1550 assert_equal([[60, 1, ''], [60, 0, 'one']], g:Vim9completeFuncArgs)
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1551 bw!
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1552
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1553 # Test for using a global function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1554 &completefunc = g:CompleteFunc2
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1555 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1556 setline(1, 'two')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1557 g:CompleteFunc2Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1558 feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1559 assert_equal([[1, ''], [0, 'two']], g:CompleteFunc2Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1560 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1561
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1562 # Test for using a script-local function name
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1563 def LocalCompleteFunc(findstart: number, base: string): any
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1564 add(g:LocalCompleteFuncArgs, [findstart, base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1565 return findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1566 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1567 &completefunc = LocalCompleteFunc
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1568 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1569 setline(1, 'three')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1570 g:LocalCompleteFuncArgs = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1571 feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1572 assert_equal([[1, ''], [0, 'three']], g:LocalCompleteFuncArgs)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1573 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1574 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1575 call v9.CheckScriptSuccess(lines)
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
1576
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1577 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1578 set completefunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1579 delfunc CompleteFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1580 delfunc CompleteFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1581 unlet g:CompleteFunc1Args g:CompleteFunc2Args
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1582 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1583 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1584
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1585 " Test for different ways of setting the 'omnifunc' option
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1586 func Test_omnifunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1587 func OmniFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1588 call add(g:OmniFunc1Args, [a:callnr, a:findstart, a:base])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1589 return a:findstart ? 0 : []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1590 endfunc
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1591 func OmniFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1592 call add(g:OmniFunc2Args, [a:findstart, a:base])
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1593 return a:findstart ? 0 : []
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1594 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1595
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1596 let lines =<< trim END
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1597 #" Test for using a function name
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1598 LET &omnifunc = 'g:OmniFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1599 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1600 call setline(1, 'zero')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1601 LET g:OmniFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1602 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1603 call assert_equal([[1, ''], [0, 'zero']], g:OmniFunc2Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1604 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1605
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1606 #" Test for using a function()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1607 set omnifunc=function('g:OmniFunc1',\ [10])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1608 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1609 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1610 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1611 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1612 call assert_equal([[10, 1, ''], [10, 0, 'one']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1613 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1614
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1615 #" Using a funcref variable to set 'omnifunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1616 VAR Fn = function('g:OmniFunc1', [11])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1617 LET &omnifunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1618 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1619 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1620 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1621 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1622 call assert_equal([[11, 1, ''], [11, 0, 'two']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1623 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1624
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1625 #" Using a string(funcref_variable) to set 'omnifunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1626 LET Fn = function('g:OmniFunc1', [12])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1627 LET &omnifunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1628 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1629 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1630 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1631 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1632 call assert_equal([[12, 1, ''], [12, 0, 'two']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1633 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1634
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1635 #" Test for using a funcref()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1636 set omnifunc=funcref('g:OmniFunc1',\ [13])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1637 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1638 call setline(1, 'three')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1639 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1640 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1641 call assert_equal([[13, 1, ''], [13, 0, 'three']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1642 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1643
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1644 #" Use let to set 'omnifunc' to a funcref
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1645 LET Fn = funcref('g:OmniFunc1', [14])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1646 LET &omnifunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1647 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1648 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1649 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1650 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1651 call assert_equal([[14, 1, ''], [14, 0, 'four']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1652 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1653
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1654 #" Using a string(funcref) to set 'omnifunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1655 LET Fn = funcref("g:OmniFunc1", [15])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1656 LET &omnifunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1657 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1658 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1659 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1660 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1661 call assert_equal([[15, 1, ''], [15, 0, 'four']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1662 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1663
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1664 #" Test for using a lambda function with set
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1665 VAR optval = "LSTART a, b LMIDDLE g:OmniFunc1(16, a, b) LEND"
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1666 LET optval = substitute(optval, ' ', '\\ ', 'g')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1667 exe "set omnifunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1668 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1669 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1670 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1671 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1672 call assert_equal([[16, 1, ''], [16, 0, 'five']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1673 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1674
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1675 #" Set 'omnifunc' to a lambda expression
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1676 LET &omnifunc = LSTART a, b LMIDDLE g:OmniFunc1(17, a, b) LEND
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1677 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1678 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1679 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1680 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1681 call assert_equal([[17, 1, ''], [17, 0, 'six']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1682 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1683
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1684 #" Set 'omnifunc' to a string(lambda_expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1685 LET &omnifunc = 'LSTART a, b LMIDDLE g:OmniFunc1(18, a, b) LEND'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1686 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1687 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1688 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1689 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1690 call assert_equal([[18, 1, ''], [18, 0, 'six']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1691 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1692
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1693 #" Set 'omnifunc' to a variable with a lambda expression
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1694 VAR Lambda = LSTART a, b LMIDDLE g:OmniFunc1(19, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1695 LET &omnifunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1696 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1697 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1698 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1699 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1700 call assert_equal([[19, 1, ''], [19, 0, 'seven']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1701 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1702
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1703 #" Set 'omnifunc' to a string(variable with a lambda expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1704 LET Lambda = LSTART a, b LMIDDLE g:OmniFunc1(20, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1705 LET &omnifunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1706 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1707 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1708 LET g:OmniFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1709 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1710 call assert_equal([[20, 1, ''], [20, 0, 'seven']], g:OmniFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1711 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1712
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1713 #" Test for using a lambda function with incorrect return value
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1714 LET Lambda = LSTART a, b LMIDDLE strlen(a) LEND
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1715 LET &omnifunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1716 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1717 call setline(1, 'eight')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1718 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1719 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1720
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1721 #" Test for clearing the 'omnifunc' option
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1722 set omnifunc=''
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1723 set omnifunc&
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1724 call assert_fails("set omnifunc=function('abc')", "E700:")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1725 call assert_fails("set omnifunc=funcref('abc')", "E700:")
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1726
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1727 #" set 'omnifunc' to a non-existing function
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
1728 set omnifunc=g:OmniFunc2
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1729 call setline(1, 'nine')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1730 call assert_fails("set omnifunc=function('NonExistingFunc')", 'E700:')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1731 call assert_fails("LET &omnifunc = function('NonExistingFunc')", 'E700:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1732 LET g:OmniFunc2Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1733 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1734 call assert_equal([[1, ''], [0, 'nine']], g:OmniFunc2Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1735 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1736 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1737 call v9.CheckLegacyAndVim9Success(lines)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1738
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1739 " Test for using a script-local function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1740 func s:OmniFunc3(findstart, base)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1741 call add(g:OmniFunc3Args, [a:findstart, a:base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1742 return a:findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1743 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1744 set omnifunc=s:OmniFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1745 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1746 call setline(1, 'script1')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1747 let g:OmniFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1748 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1749 call assert_equal([[1, ''], [0, 'script1']], g:OmniFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1750 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1751
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1752 let &omnifunc = 's:OmniFunc3'
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1753 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1754 call setline(1, 'script2')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1755 let g:OmniFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1756 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1757 call assert_equal([[1, ''], [0, 'script2']], g:OmniFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1758 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1759 delfunc s:OmniFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1760
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1761 " invalid return value
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1762 let &omnifunc = {a -> 'abc'}
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1763 call feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1764
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1765 " Using Vim9 lambda expression in legacy context should fail
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1766 set omnifunc=(a,\ b)\ =>\ OmniFunc1(21,\ a,\ b)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1767 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1768 let g:OmniFunc1Args = []
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1769 call assert_fails('call feedkeys("A\<C-X>\<C-O>\<Esc>", "x")', 'E117:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1770 call assert_equal([], g:OmniFunc1Args)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1771
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1772 " set 'omnifunc' to a partial with dict. This used to cause a crash.
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1773 func SetOmniFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1774 let params = {'omni': function('g:DictOmniFunc')}
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1775 let &omnifunc = params.omni
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1776 endfunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1777 func g:DictOmniFunc(_) dict
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1778 endfunc
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1779 call SetOmniFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1780 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1781 call SetOmniFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1782 bw
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1783 call test_garbagecollect_now()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1784 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1785 set omnifunc=
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1786 wincmd w
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1787 set omnifunc=
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1788 %bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1789 delfunc g:DictOmniFunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1790 delfunc SetOmniFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1791
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1792 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1793 let lines =<< trim END
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1794 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1795
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1796 def Vim9omniFunc(callnr: number, findstart: number, base: string): any
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1797 add(g:Vim9omniFunc_Args, [callnr, findstart, base])
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1798 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1799 enddef
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1800
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1801 # Test for using a def function with omnifunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1802 set omnifunc=function('Vim9omniFunc',\ [60])
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1803 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1804 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1805 g:Vim9omniFunc_Args = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1806 feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1807 assert_equal([[60, 1, ''], [60, 0, 'one']], g:Vim9omniFunc_Args)
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1808 bw!
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1809
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1810 # Test for using a global function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1811 &omnifunc = g:OmniFunc2
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1812 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1813 setline(1, 'two')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1814 g:OmniFunc2Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1815 feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1816 assert_equal([[1, ''], [0, 'two']], g:OmniFunc2Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1817 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1818
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1819 # Test for using a script-local function name
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1820 def LocalOmniFunc(findstart: number, base: string): any
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1821 add(g:LocalOmniFuncArgs, [findstart, base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1822 return findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1823 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1824 &omnifunc = LocalOmniFunc
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1825 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1826 setline(1, 'three')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1827 g:LocalOmniFuncArgs = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1828 feedkeys("A\<C-X>\<C-O>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1829 assert_equal([[1, ''], [0, 'three']], g:LocalOmniFuncArgs)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1830 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1831 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1832 call v9.CheckScriptSuccess(lines)
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
1833
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1834 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1835 set omnifunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1836 delfunc OmniFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1837 delfunc OmniFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1838 unlet g:OmniFunc1Args g:OmniFunc2Args
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1839 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1840 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1841
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1842 " Test for different ways of setting the 'thesaurusfunc' option
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1843 func Test_thesaurusfunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1844 func TsrFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1845 call add(g:TsrFunc1Args, [a:callnr, a:findstart, a:base])
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1846 return a:findstart ? 0 : []
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1847 endfunc
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1848 func TsrFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1849 call add(g:TsrFunc2Args, [a:findstart, a:base])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1850 return a:findstart ? 0 : ['sunday']
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1851 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1852
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1853 let lines =<< trim END
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1854 #" Test for using a function name
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1855 LET &thesaurusfunc = 'g:TsrFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1856 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1857 call setline(1, 'zero')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1858 LET g:TsrFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1859 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1860 call assert_equal([[1, ''], [0, 'zero']], g:TsrFunc2Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1861 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1862
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1863 #" Test for using a function()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1864 set thesaurusfunc=function('g:TsrFunc1',\ [10])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1865 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1866 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1867 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1868 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1869 call assert_equal([[10, 1, ''], [10, 0, 'one']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1870 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1871
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1872 #" Using a funcref variable to set 'thesaurusfunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1873 VAR Fn = function('g:TsrFunc1', [11])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1874 LET &thesaurusfunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1875 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1876 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1877 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1878 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1879 call assert_equal([[11, 1, ''], [11, 0, 'two']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1880 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1881
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1882 #" Using a string(funcref_variable) to set 'thesaurusfunc'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1883 LET Fn = function('g:TsrFunc1', [12])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1884 LET &thesaurusfunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1885 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1886 call setline(1, 'two')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1887 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1888 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1889 call assert_equal([[12, 1, ''], [12, 0, 'two']], g:TsrFunc1Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1890 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1891
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1892 #" Test for using a funcref()
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1893 set thesaurusfunc=funcref('g:TsrFunc1',\ [13])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1894 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1895 call setline(1, 'three')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1896 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1897 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1898 call assert_equal([[13, 1, ''], [13, 0, 'three']], g:TsrFunc1Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1899 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1900
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1901 #" Using a funcref variable to set 'thesaurusfunc'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1902 LET Fn = funcref('g:TsrFunc1', [14])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1903 LET &thesaurusfunc = Fn
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1904 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1905 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1906 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1907 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1908 call assert_equal([[14, 1, ''], [14, 0, 'four']], g:TsrFunc1Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1909 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1910
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1911 #" Using a string(funcref_variable) to set 'thesaurusfunc'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1912 LET Fn = funcref('g:TsrFunc1', [15])
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1913 LET &thesaurusfunc = string(Fn)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1914 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1915 call setline(1, 'four')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1916 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1917 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1918 call assert_equal([[15, 1, ''], [15, 0, 'four']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1919 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1920
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1921 #" Test for using a lambda function
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1922 VAR optval = "LSTART a, b LMIDDLE g:TsrFunc1(16, a, b) LEND"
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1923 LET optval = substitute(optval, ' ', '\\ ', 'g')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1924 exe "set thesaurusfunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1925 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1926 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1927 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1928 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1929 call assert_equal([[16, 1, ''], [16, 0, 'five']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1930 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1931
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1932 #" Test for using a lambda function with set
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1933 LET &thesaurusfunc = LSTART a, b LMIDDLE g:TsrFunc1(17, a, b) LEND
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1934 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1935 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1936 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1937 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1938 call assert_equal([[17, 1, ''], [17, 0, 'six']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1939 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1940
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1941 #" Set 'thesaurusfunc' to a string(lambda expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1942 LET &thesaurusfunc = 'LSTART a, b LMIDDLE g:TsrFunc1(18, a, b) LEND'
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1943 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1944 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1945 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1946 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1947 call assert_equal([[18, 1, ''], [18, 0, 'six']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1948 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1949
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1950 #" Set 'thesaurusfunc' to a variable with a lambda expression
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1951 VAR Lambda = LSTART a, b LMIDDLE g:TsrFunc1(19, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1952 LET &thesaurusfunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1953 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1954 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1955 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1956 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1957 call assert_equal([[19, 1, ''], [19, 0, 'seven']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1958 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1959
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1960 #" Set 'thesaurusfunc' to a string(variable with a lambda expression)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1961 LET Lambda = LSTART a, b LMIDDLE g:TsrFunc1(20, a, b) LEND
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1962 LET &thesaurusfunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1963 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1964 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1965 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1966 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1967 call assert_equal([[20, 1, ''], [20, 0, 'seven']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1968 bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1969
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1970 #" Test for using a lambda function with incorrect return value
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1971 LET Lambda = LSTART a, b LMIDDLE strlen(a) LEND
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1972 LET &thesaurusfunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1973 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1974 call setline(1, 'eight')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1975 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1976 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1977
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1978 #" Test for clearing the 'thesaurusfunc' option
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1979 set thesaurusfunc=''
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1980 set thesaurusfunc&
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1981 call assert_fails("set thesaurusfunc=function('abc')", "E700:")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1982 call assert_fails("set thesaurusfunc=funcref('abc')", "E700:")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1983
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1984 #" set 'thesaurusfunc' to a non-existing function
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
1985 set thesaurusfunc=g:TsrFunc2
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1986 call setline(1, 'ten')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1987 call assert_fails("set thesaurusfunc=function('NonExistingFunc')", 'E700:')
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1988 call assert_fails("LET &thesaurusfunc = function('NonExistingFunc')", 'E700:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1989 LET g:TsrFunc2Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1990 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1991 call assert_equal([[1, ''], [0, 'ten']], g:TsrFunc2Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1992 bw!
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
1993
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1994 #" Use a buffer-local value and a global value
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1995 set thesaurusfunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1996 setlocal thesaurusfunc=function('g:TsrFunc1',\ [22])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1997 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1998 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1999 call feedkeys("A\<C-X>\<C-T>\<Esc>", "x")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2000 call assert_equal('sun', getline(1))
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2001 call assert_equal([[22, 1, ''], [22, 0, 'sun']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2002 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2003 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2004 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2005 call feedkeys("A\<C-X>\<C-T>\<Esc>", "x")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2006 call assert_equal('sun', getline(1))
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2007 call assert_equal([], g:TsrFunc1Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2008 set thesaurusfunc=function('g:TsrFunc1',\ [23])
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2009 wincmd w
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2010 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2011 LET g:TsrFunc1Args = []
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2012 call feedkeys("A\<C-X>\<C-T>\<Esc>", "x")
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2013 call assert_equal('sun', getline(1))
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2014 call assert_equal([[22, 1, ''], [22, 0, 'sun']], g:TsrFunc1Args)
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2015 :%bw!
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2016 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
2017 call v9.CheckLegacyAndVim9Success(lines)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2018
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2019 " Test for using a script-local function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2020 func s:TsrFunc3(findstart, base)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2021 call add(g:TsrFunc3Args, [a:findstart, a:base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2022 return a:findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2023 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2024 set tsrfu=s:TsrFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2025 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2026 call setline(1, 'script1')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2027 let g:TsrFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2028 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2029 call assert_equal([[1, ''], [0, 'script1']], g:TsrFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2030 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2031
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2032 let &tsrfu = 's:TsrFunc3'
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2033 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2034 call setline(1, 'script2')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2035 let g:TsrFunc3Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2036 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2037 call assert_equal([[1, ''], [0, 'script2']], g:TsrFunc3Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2038 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2039 delfunc s:TsrFunc3
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2040
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2041 " invalid return value
26441
65ab0b035dd8 patch 8.2.3751: cannot assign a lambda to an option that takes a function
Bram Moolenaar <Bram@vim.org>
parents: 26408
diff changeset
2042 let &thesaurusfunc = {a -> 'abc'}
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2043 call feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2044
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2045 " Using Vim9 lambda expression in legacy context should fail
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2046 set thesaurusfunc=(a,\ b)\ =>\ TsrFunc1(21,\ a,\ b)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2047 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2048 let g:TsrFunc1Args = []
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2049 call assert_fails('call feedkeys("A\<C-X>\<C-T>\<Esc>", "x")', 'E117:')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2050 call assert_equal([], g:TsrFunc1Args)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2051 bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2052
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2053 " set 'thesaurusfunc' to a partial with dict. This used to cause a crash.
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2054 func SetTsrFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2055 let params = {'thesaurus': function('g:DictTsrFunc')}
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2056 let &thesaurusfunc = params.thesaurus
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2057 endfunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2058 func g:DictTsrFunc(_) dict
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2059 endfunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2060 call SetTsrFunc()
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2061 new
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2062 call SetTsrFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2063 bw
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2064 call test_garbagecollect_now()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2065 new
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2066 set thesaurusfunc=
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2067 wincmd w
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
2068 %bw!
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2069 delfunc SetTsrFunc
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
2070
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2071 " set buffer-local 'thesaurusfunc' to a partial with dict. This used to
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2072 " cause a crash.
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2073 func SetLocalTsrFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2074 let params = {'thesaurus': function('g:DictTsrFunc')}
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2075 let &l:thesaurusfunc = params.thesaurus
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2076 endfunc
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2077 call SetLocalTsrFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2078 call test_garbagecollect_now()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2079 call SetLocalTsrFunc()
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2080 set thesaurusfunc=
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2081 bw!
26518
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2082 delfunc g:DictTsrFunc
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
2083 delfunc SetLocalTsrFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2084
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2085 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2086 let lines =<< trim END
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2087 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2088
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2089 def Vim9tsrFunc(callnr: number, findstart: number, base: string): any
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2090 add(g:Vim9tsrFunc_Args, [callnr, findstart, base])
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2091 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2092 enddef
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2093
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2094 # Test for using a def function with thesaurusfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2095 set thesaurusfunc=function('Vim9tsrFunc',\ [60])
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2096 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2097 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2098 g:Vim9tsrFunc_Args = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2099 feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2100 assert_equal([[60, 1, ''], [60, 0, 'one']], g:Vim9tsrFunc_Args)
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2101 bw!
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2102
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2103 # Test for using a global function name
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2104 &thesaurusfunc = g:TsrFunc2
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2105 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2106 setline(1, 'two')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2107 g:TsrFunc2Args = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2108 feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2109 assert_equal([[1, ''], [0, 'two']], g:TsrFunc2Args)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2110 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2111
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2112 # Test for using a script-local function name
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
2113 def LocalTsrFunc(findstart: number, base: string): any
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2114 add(g:LocalTsrFuncArgs, [findstart, base])
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2115 return findstart ? 0 : []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2116 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
2117 &thesaurusfunc = LocalTsrFunc
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2118 new | only
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2119 setline(1, 'three')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2120 g:LocalTsrFuncArgs = []
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2121 feedkeys("A\<C-X>\<C-T>\<Esc>", 'x')
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2122 assert_equal([[1, ''], [0, 'three']], g:LocalTsrFuncArgs)
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2123 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2124 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
2125 call v9.CheckScriptSuccess(lines)
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2126
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2127 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2128 set thesaurusfunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2129 delfunc TsrFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2130 delfunc TsrFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2131 unlet g:TsrFunc1Args g:TsrFunc2Args
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2132 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2133 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2134
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
2135 " vim: shiftwidth=2 sts=2 expandtab