annotate src/testdir/test_ins_complete.vim @ 30007:4123e4bd1708 v9.0.0341

patch 9.0.0341: mapset() does not restore <Nop> mapping properly Commit: https://github.com/vim/vim/commit/92a3d20682d46359bb50a452b4f831659e799155 Author: zeertzjq <zeertzjq@outlook.com> Date: Wed Aug 31 16:40:17 2022 +0100 patch 9.0.0341: mapset() does not restore <Nop> mapping properly Problem: mapset() does not restore <Nop> mapping properly. Solution: Use an empty string for <Nop>. (closes https://github.com/vim/vim/issues/11022)
author Bram Moolenaar <Bram@vim.org>
date Wed, 31 Aug 2022 17:45:03 +0200
parents aafac1ae89c7
children adb0de8be4ce
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.
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
12 call mkdir('Xcpldir')
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
13 cd Xcpldir
12788
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 ..
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
108 call delete('Xcpldir', '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
29000
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
143 func Test_omni_throw()
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
144 let g:CallCount = 0
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
145 func Omni(findstart, base)
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
146 let g:CallCount += 1
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
147 if a:findstart
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
148 throw "he he he"
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
149 endif
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
150 endfunc
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
151 set omnifunc=Omni
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
152 new
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
153 try
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
154 exe "normal ifoo\<C-x>\<C-o>"
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
155 call assert_false(v:true, 'command should have failed')
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
156 catch
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
157 call assert_exception('he he he')
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
158 call assert_equal(1, g:CallCount)
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
159 endtry
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
160
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
161 bwipe!
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
162 delfunc Omni
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
163 unlet g:CallCount
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
164 set omnifunc=
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
165 endfunc
7d28903e80df patch 8.2.5022: 'completefunc'/'omnifunc' error does not end completion
Bram Moolenaar <Bram@vim.org>
parents: 28682
diff changeset
166
25372
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
167 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
168 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
169 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
170 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
171 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
172
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
173 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
174 vim9script
27474
307341b9c227 patch 8.2.4265: autoload tests fails
Bram Moolenaar <Bram@vim.org>
parents: 27464
diff changeset
175 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
176 if findstart
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
177 return 1
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
178 else
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
179 return ['match']
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
180 endif
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
181 enddef
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
182 {
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
183 eval 1 + 2
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
184 }
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
185 END
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
186 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
187
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
188 new
27474
307341b9c227 patch 8.2.4265: autoload tests fails
Bram Moolenaar <Bram@vim.org>
parents: 27464
diff changeset
189 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
190 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
191
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
192 bwipe!
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
193 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
194 set omnifunc=
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
195 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
196 endfunc
c63a2d24b7e2 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails
Bram Moolenaar <Bram@vim.org>
parents: 23772
diff changeset
197
14071
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
198 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
199 let s:args = []
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
200 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
201 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
202 endfunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
203 new
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
204
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
205 set completefunc=CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
206 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
207 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
208 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
209 set completefunc=
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
210
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
211 let s:args = []
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
212 set omnifunc=CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
213 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
214 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
215 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
216 set omnifunc=
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
217
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
218 bwipe!
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
219 unlet s:args
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
220 delfunc CompleteFunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
221 endfunc
c1fcfafa8d1a patch 8.1.0053: first argument of 'completefunc' has inconsistent type
Christian Brabandt <cb@256bit.org>
parents: 13238
diff changeset
222
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
223 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
224 if a:findstart
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
225 return 0
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
226 endif
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
227
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
228 return v:none
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
229 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
230
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
231 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
232 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
233 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
234 endif
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
235
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
236 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
237 \ 'words': [
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
238 \ {
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
239 \ '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
240 \ '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
241 \ '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
242 \ '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
243 \ '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
244 \ '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
245 \ }
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
246 \ ]
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
247 \ }
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
248 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
249
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
250 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
251 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
252 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
253
19199
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261
19199
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
262 if a:pre
8cbadf7fb9d4 patch 8.2.0158: triggering CompleteDone earlier is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 19127
diff changeset
263 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
264 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
265
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
266 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
267 endfunc
13238
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 func Test_CompleteDoneNone()
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
270 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
271 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
272
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
273 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
274 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
275 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
276 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
277
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
278 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
279 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
280
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
281 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
282 au! CompleteDone
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
283 endfunc
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
284
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
285 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
286 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
287 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
288
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
289 set completefunc=<SID>CompleteDone_CompleteFuncDict
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
290 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
291 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
292
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
293 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
294 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
295
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
296 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
297 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
298 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
299
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
300 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
301 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
302 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
303 endif
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
304
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
305 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
306 \ 'words': [
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
307 \ {
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
308 \ '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
309 \ '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
310 \ '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
311 \ '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
312 \ '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
313 \ '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
314 \ }
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
315 \ ]
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
316 \ }
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
317 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
318
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
319 func s:CompleteDone_CheckCompletedItemDictNoUserData()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
320 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
321 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
322 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
323 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
324 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
325 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
326
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
327 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
328 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
329
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
330 func Test_CompleteDoneDictNoUserData()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
331 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
332
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
333 set completefunc=<SID>CompleteDone_CompleteFuncDictNoUserData
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
334 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
335 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
336
19047
a3fce2763e83 patch 8.2.0084: complete item "user_data" can only be a string
Bram Moolenaar <Bram@vim.org>
parents: 18900
diff changeset
337 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
338 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
339
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
340 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
341 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
342 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
343
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
344 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
345 if a:findstart
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
346 return 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
347 endif
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 return [ 'aword' ]
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
350 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
351
15406
63b02fcf1361 patch 8.1.0711: test files still use function!
Bram Moolenaar <Bram@vim.org>
parents: 14489
diff changeset
352 func s:CompleteDone_CheckCompletedItemList()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
353 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
354 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
355 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
356 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
357 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
358 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
359
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
360 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
361 endfunc
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
362
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
363 func Test_CompleteDoneList()
13238
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
364 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
365
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
366 set completefunc=<SID>CompleteDone_CompleteFuncList
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
367 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
368 set completefunc&
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
369
15416
5f8ddd2a7b92 patch 8.1.0716: get warning message when 'completefunc' returns nothing
Bram Moolenaar <Bram@vim.org>
parents: 15406
diff changeset
370 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
371 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
372
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
373 let s:called_completedone = 0
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
374 au! CompleteDone
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
375 endfunc
e0dcfd3dbb52 patch 8.0.1493: completion items cannot be annotated
Christian Brabandt <cb@256bit.org>
parents: 13215
diff changeset
376
14489
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
377 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
378 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
379 new
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
380 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
381 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
382 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
383 \ getline(1, '$'))
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
384 undo
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
385 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
386 bwipe!
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
387 au! CompleteDone
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
388 endfunc
cda216729f9b patch 8.1.0258: not enough testing for the CompleteDone event
Christian Brabandt <cb@256bit.org>
parents: 14075
diff changeset
389
29501
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
390 func Test_CompleteDone_modify()
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
391 let value = {
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
392 \ 'word': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
393 \ 'abbr': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
394 \ 'menu': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
395 \ 'info': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
396 \ 'kind': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
397 \ 'user_data': '',
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
398 \ }
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
399 let v:completed_item = value
29554
d413dccd4f8a patch 9.0.0118: no test for what patch 9.0.0155 fixes
Bram Moolenaar <Bram@vim.org>
parents: 29521
diff changeset
400 call assert_equal(value, v:completed_item)
29501
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
401 endfunc
69d24e60f4f8 patch 9.0.0092: plugins cannot change v:completed_item
Bram Moolenaar <Bram@vim.org>
parents: 29436
diff changeset
402
22248
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
403 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
404 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
405 return col('.')
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
406 endif
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
407 return ['matched']
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
408 endfunc
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
409
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
410 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
411 new
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
412 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
413 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
414 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
415 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
416 bwipe!
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
417 set completeopt&
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
418 set completefunc&
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
419 endfunc
80a000b09cb0 patch 8.2.1673: complete_info() selected index has an invalid value
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
420
13215
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
421 " 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
422 " completions.
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
423 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
424 new
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
425 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
426 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
427 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
428 bwipe!
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
429 set completeopt&
ae5f855a64be patch 8.0.1482: using feedkeys() does not work to test completion
Christian Brabandt <cb@256bit.org>
parents: 12788
diff changeset
430 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
431
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
432 " 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
433 func Test_ins_completeslash()
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
434 CheckMSWindows
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
435
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
436 call mkdir('Xcpldir')
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
437 let orig_shellslash = &shellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
438 set cpt&
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
439 new
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
440
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
441 set noshellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
442
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
443 set completeslash=
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
444 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
445 call assert_equal('Xcpldir\', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
446
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
447 set completeslash=backslash
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
448 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
449 call assert_equal('Xcpldir\', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
450
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
451 set completeslash=slash
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
452 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
453 call assert_equal('Xcpldir/', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
454
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
455 set shellslash
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
456
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
457 set completeslash=
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
458 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
459 call assert_equal('Xcpldir/', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
460
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
461 set completeslash=backslash
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
462 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
463 call assert_equal('Xcpldir\', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
464
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
465 set completeslash=slash
29974
aafac1ae89c7 patch 9.0.0325: MS-Windows: completion test fails
Bram Moolenaar <Bram@vim.org>
parents: 29970
diff changeset
466 exe "normal oXcp\<C-X>\<C-F>"
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
467 call assert_equal('Xcpldir/', getline('.'))
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
468 %bw!
29970
d891115c0aea patch 9.0.0323: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 29554
diff changeset
469 call delete('Xcpldir', 'rf')
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
470
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
471 set noshellslash
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
472 set completeslash=slash
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
473 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
474
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
475 let &shellslash = orig_shellslash
17588
1348696d07cd patch 8.1.1791: 'completeslash' also applies to globpath()
Bram Moolenaar <Bram@vim.org>
parents: 17553
diff changeset
476 set completeslash=
17543
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
477 endfunc
77c3f6428b6c patch 8.1.1769: 'shellslash' is also used for completion
Bram Moolenaar <Bram@vim.org>
parents: 17468
diff changeset
478
22427
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
479 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
480 CheckScreendump
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
481
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
482 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
483 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
484 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
485 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
486 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
487 endfunc
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
488 END
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
489
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
490 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
491 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
492 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
493 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
494 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
495 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
496
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
497 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
498 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
499 endfunc
58cdc5d7f143 patch 8.2.1762: when a timer uses :stopinsert completion isn't stopped
Bram Moolenaar <Bram@vim.org>
parents: 22397
diff changeset
500
28682
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
501 func Test_complete_stopinsert_startinsert()
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
502 nnoremap <F2> <Cmd>startinsert<CR>
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
503 inoremap <F2> <Cmd>stopinsert<CR>
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
504 " This just checks if this causes an error
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
505 call feedkeys("i\<C-X>\<C-N>\<F2>\<F2>", 'x')
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
506 nunmap <F2>
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
507 iunmap <F2>
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
508 endfunc
c1591fa6f81a patch 8.2.4865: :startinsert right after :stopinsert may not work
Bram Moolenaar <Bram@vim.org>
parents: 28369
diff changeset
509
18892
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
510 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
511 CheckScreendump
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
512
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
513 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
514 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
515 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
516 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
517 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
518 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
519 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
520 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
521 END
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
522
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
523 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
524 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
525 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
526 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
527 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
528
fb2d26bc8ca1 patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Bram Moolenaar <Bram@vim.org>
parents: 17588
diff changeset
529 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
530 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
531 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
532 endfunc
18900
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
533
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
534 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
535 CheckScreendump
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
536
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
537 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
538 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
539 if a:findstart
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
540 return col(".") - 1
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
541 endif
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
542 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
543 endfunc
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
544 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
545 set completeopt+=longest
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
546 END
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
547
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
548 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
549 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
550 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
551 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
552 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
553 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
554 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
555
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
556 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
557 call StopVimInTerminal(buf)
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
558 call delete('Xpreviewscript')
a9c47c623f4a patch 8.2.0011: screen updating wrong when opeing preview window
Bram Moolenaar <Bram@vim.org>
parents: 18892
diff changeset
559 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
560
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
561 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
562 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
563
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
564 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
565 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
566 \ ' 哦哦哦',
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
567 \ ' 呃呃呃'])
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
568 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
569 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
570 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
571 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
572 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
573 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
574
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
575 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
576 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
577 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
578
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
579 " 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
580 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
581 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
582 \ "!_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
583 \ "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
584 \ "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
585 \ "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
586 \ '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
587 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
588 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
589 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
590 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
591 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
592 [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
593 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
594
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
595 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
596 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
597 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
598 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
599 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
600
8645b73b3645 patch 8.2.0088: insufficient tests for tags; bug in using extra tag field
Bram Moolenaar <Bram@vim.org>
parents: 19047
diff changeset
601 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
602 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
603 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
604 %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
605 endfunc
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
606
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
607 " 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
608 func Test_completefunc_error()
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
609 new
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
610 " 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
611 func CompleteFunc(findstart, base)
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
612 if a:findstart == 1
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
613 normal dd
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
614 return col('.') - 1
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
615 endif
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
616 return ['a', 'b']
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
617 endfunc
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
618 set completefunc=CompleteFunc
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
619 call setline(1, ['', 'abcd', ''])
29014
45c182c4f7e9 patch 8.2.5029: "textlock" is always zero
Bram Moolenaar <Bram@vim.org>
parents: 29000
diff changeset
620 call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E565:')
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
621
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
622 " 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
623 func CompleteFunc2(findstart, base)
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
624 if a:findstart == 1
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
625 return col('.') - 1
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
626 endif
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
627 normal dd
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
628 return ['a', 'b']
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
629 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
630 set completefunc=CompleteFunc2
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
631 call setline(1, ['', 'abcd', ''])
29014
45c182c4f7e9 patch 8.2.5029: "textlock" is always zero
Bram Moolenaar <Bram@vim.org>
parents: 29000
diff changeset
632 call assert_fails('exe "normal 2G$a\<C-X>\<C-U>"', 'E565:')
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
633
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
634 " 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
635 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
636 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
637 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
638 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
639 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
640 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
641 endfunc
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
642 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
643 new
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
644 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
645 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
646
704fdd4d0949 patch 8.2.2424: some tests are known to cause an error with ASAN
Bram Moolenaar <Bram@vim.org>
parents: 23748
diff changeset
647 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
648 delfunc CompleteFunc
23770
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
649 delfunc CompleteFunc2
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
650 delfunc CompleteFunc3
385d33dfb7df patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Bram Moolenaar <Bram@vim.org>
parents: 23766
diff changeset
651 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
652 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
653
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
654 " 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
655 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
656 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
657 func! CompleteFunc(findstart, base)
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
658 if a:findstart == 1
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
659 return col('.') - 1
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
660 endif
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
661 return [{}, '', 'moon']
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
662 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
663 set completefunc=CompleteFunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
664 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
665 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
666 set completefunc&
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
667 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
668 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
669
20120
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
670 " 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
671 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
672 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
673 func ListColors()
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
674 call complete(col('.'), "blue")
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
675 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
676 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
677 func ListMonths()
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
678 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
679 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
680 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
681 delfunc ListColors
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
682 delfunc ListMonths
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
683 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
684 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
685 endfunc
16460964c304 patch 8.2.0615: regexp benchmark stest is old style
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
686
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
687 " 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
688 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
689 func ListColors()
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
690 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
691 return ''
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
692 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
693 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
694 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
695 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
696 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
697 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
698 delfunc ListColors
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
699 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
700 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
701
20199
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
702 " 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
703 func Test_complete_wrapscan()
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
704 " complete words from another buffer
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
705 new
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
706 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
707 new
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
708 setlocal complete=w
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
709 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
710 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
711 close!
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
712 " 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
713 setlocal complete=.
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
714 %d
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
715 call setline(1, ['one two', ''])
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
716 call cursor(2, 1)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
717 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
718 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
719 close!
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
720 endfunc
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20120
diff changeset
721
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
722 " 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
723 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
724 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
725 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
726 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
727 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
728 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
729 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
730
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
731 " 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
732 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
733 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
734 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
735 setlocal textwidth=20
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
736 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
737 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
738 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
739 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
740
26817
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
741 " 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
742 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
743 new
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
744 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
745 set joinspaces
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
746 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
747 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
748 set joinspaces&
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
749 bw!
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
750 endfunc
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
751
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
752 " 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
753 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
754 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
755 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
756 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
757 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
758
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
759 " 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
760 " 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
761 %d
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
762 set ignorecase backspace=2
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
763 setlocal complete=.
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
764 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
765 normal Go
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
766 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
767 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
768 set ignorecase& backspace&
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
769 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
770 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
771
26817
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
772 " 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
773 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
774 new
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
775 " complete one-line
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
776 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
777 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
778 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
779 " 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
780 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
781 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
782 " 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
783 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
784 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
785 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
786 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
787 " 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
788 " 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
789 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
790 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
791 " 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
792 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
793 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
794 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
795 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
796 %d
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
797 " 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
798 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
799 setlocal complete=.
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
800 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
801 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
802 bw!
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
803 endfunc
a8ded20a59e6 patch 8.2.3937: Insert mode completion function is too long
Bram Moolenaar <Bram@vim.org>
parents: 26773
diff changeset
804
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
805 " 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
806 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
807 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
808 setlocal cindent
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
809 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
810 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
811 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
812
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
813 %d
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
814 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
815 setlocal cinkeys+==while
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
816 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
817 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
818 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
819 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
820
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
821 " 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
822 func Test_complete_cmdline()
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
823 new
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
824 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
825 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
826 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
827 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
828 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
829 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
830 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
831 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
832 write TestCommand1Test
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
833 write TestCommand2Test
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
834 " 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
835 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
836 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
837 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
838 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
839 delcom TestCommand1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
840 delcom TestCommand2
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
841 close!
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
842 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
843
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
844 " 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
845 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
846 new
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
847 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
848 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
849 return ''
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
850 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
851 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
852 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
853 return ''
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
854 endfunc
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
855 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
856 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
857 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
858 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
859 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
860 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
861 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
862 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
863 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
864 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
865 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
866 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
867 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
868 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
869 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
870 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
871 set completeopt&
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
872 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
873 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
874 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
875 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
876 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
877 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
878 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
879 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
880 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
881 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
882 delcom TestCommand1
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
883 delcom TestCommand2
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
884 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
885 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
886 iunmap <F1>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
887 iunmap <F2>
31db9c6df4e3 patch 8.2.3389: cannot stop insert mode completion without side effects
Bram Moolenaar <Bram@vim.org>
parents: 25372
diff changeset
888 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
889 delfunc Save_mode2
20285
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
890 close!
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
891 endfunc
bce10d039e06 patch 8.2.0698: insert mode completion not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20229
diff changeset
892
26831
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
893 " 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
894 " content.
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
895 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
896 new
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
897 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
898
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
899 " 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
900 " 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
901 " inserted.
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
902 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
903 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
904 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
905 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
906 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
907 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
908 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
909 bw!
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
910 endfunc
537fdb6653a9 patch 8.2.3944: insert mode completion functions are too long
Bram Moolenaar <Bram@vim.org>
parents: 26817
diff changeset
911
22397
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
912 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
913 CheckMSWindows
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
914
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
915 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
916 set noshellslash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
917
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
918 set completeslash=slash
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
919 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
920
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
921 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
922 set completeslash=
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
923 endfunc
0a5770061295 patch 8.2.1747: result of expand() unexpectedly depends on 'completeslash'
Bram Moolenaar <Bram@vim.org>
parents: 22248
diff changeset
924
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
925 " 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
926 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
927 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
928 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
929 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
930 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
931 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
932 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
933 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
934 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
935 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
936 endfor
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
937
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
938 " 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
939 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
940 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
941 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
942 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
943 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
944 set complete& completeopt&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
945 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
946
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
947 " 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
948 " 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
949 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
950 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
951 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
952 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
953 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
954 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
955 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
956 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
957 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
958
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
959 " 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
960 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
961 call writefile(['abc'], "Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
962 call writefile(['def'], "Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
963 edit Xfile1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
964 edit Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
965 new | close
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
966 enew
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
967 bunload Xfile1 Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
968 set complete=u
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
969 " 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
970 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
971 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
972 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
973 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
974 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
975 %bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
976 call delete("Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
977 call delete("Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
978 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
979
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
980 " 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
981 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
982 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
983 edit Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
984 enew
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
985 set complete=u
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
986 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
987 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
988 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
989 " 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
990 bdel Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
991 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
992 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
993 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
994 %bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
995 call delete("Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
996 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
997
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
998 " 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
999 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
1000 call writefile(['abc'], "Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1001 call writefile(['def'], "Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1002 edit Xfile1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1003 edit Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1004 new | close
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1005 bdel Xfile1 Xfile2
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1006 set complete=U
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1007 " 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
1008 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
1009 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
1010 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
1011 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
1012 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1013 %bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1014 call delete("Xfile1")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1015 call delete("Xfile2")
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1016 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1017
26921
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1018 " 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
1019 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
1020 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
1021 edit Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1022 enew
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1023 set complete=U
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1024 " 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
1025 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
1026 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
1027 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1028 bdel Xfile1
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1029 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
1030 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
1031 set complete&
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1032 %bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1033 call delete("Xfile1")
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1034 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1035
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1036 " 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
1037 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
1038 new
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1039 set complete=.
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1040 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
1041 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
1042 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
1043 " 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
1044 %d
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1045 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
1046 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
1047 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
1048 bw!
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1049 endfunc
b975b7c16ba1 patch 8.2.3989: some insert completion code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 26831
diff changeset
1050
27016
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1051 " 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
1052 " 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
1053 " <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
1054 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
1055 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1056 set complete=t
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1057 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
1058 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
1059 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
1060 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
1061 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
1062 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
1063 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
1064 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
1065 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
1066
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1067 " 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
1068 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
1069 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
1070 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
1071 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
1072 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
1073 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
1074
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1075 " 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
1076 set completeopt=menu,noinsert
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1077 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
1078 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
1079
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1080 " 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
1081 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
1082 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
1083 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1084
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1085 " 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
1086 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
1087 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
1088
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1089 " 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
1090 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1091 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
1092 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
1093 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
1094 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
1095 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
1096
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1097 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1098 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1099
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1100 " 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
1101 func Test_complete_undo()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1102 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1103 set complete=.
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1104 " undo with 'ignorecase'
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1105 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
1106 set ignorecase
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1107 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
1108 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
1109 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1110 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
1111 set ignorecase&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1112 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1113 " undo with longest match
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1114 set completeopt=menu,longest
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1115 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
1116 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
1117 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
1118 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1119 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
1120 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1121 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1122 " undo for line completion
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1123 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
1124 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
1125 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
1126 undo
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1127 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
1128
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1129 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1130 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1131
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1132 " 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
1133 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
1134 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1135 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1136 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
1137 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
1138 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
1139 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1140 " 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
1141 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
1142 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
1143 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
1144
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1145 " 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
1146 %d
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1147 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
1148 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
1149 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
1150 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1151 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1152
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1153 " 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
1154 func Test_complete_items()
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1155 func CompleteItems(idx)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1156 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
1157 \ [#{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
1158 \ [#{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
1159 \ [#{user_data: 'u9'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1160 \ [#{word: "", user_data: 'u10'}],
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1161 \ [#{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
1162 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
1163 return ''
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1164 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1165 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1166 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
1167 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
1168 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
1169 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
1170 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
1171 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
1172 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
1173 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
1174 set completeopt=menu,noinsert
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1175 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
1176 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
1177 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
1178 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1179 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
1180 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
1181 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
1182 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
1183 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
1184 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
1185 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
1186 " 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
1187 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
1188 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
1189 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1190 delfunc CompleteItems
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1191 endfunc
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 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
1194 " function
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1195 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
1196 let g:CallCount = 0
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1197 func! Tcomplete(findstart, base)
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1198 if a:findstart
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1199 " 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
1200 let line = getline('.')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1201 let start = col('.') - 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1202 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
1203 let start -= 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1204 endwhile
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1205 return start
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1206 else
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1207 let g:CallCount += 1
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1208 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
1209 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
1210 endif
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1211 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1212 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1213 set completeopt=menu,longest
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1214 set completefunc=Tcomplete
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1215 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
1216 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
1217 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
1218 set completeopt&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1219 set completefunc&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1220 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1221 delfunc Tcomplete
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1222 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1223
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1224 " 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
1225 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
1226 CheckUnix
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1227 CheckNotRoot
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1228
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1229 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
1230 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
1231 new
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1232 set complete=sXfile
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1233 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
1234 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
1235 bw!
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1236 call delete('Xfile')
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1237 set complete&
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1238 endfunc
1d9a7aa42744 patch 8.2.4037: Insert mode completion is insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26921
diff changeset
1239
23169
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1240 " 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
1241 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
1242 new
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1243 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
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250 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
1251
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
1252 " 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
1253 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
1254 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
1255 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
1256 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
1257 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
1258 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
1259 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
1260 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
1261 endfunc
5e6855ebc4ea patch 8.2.2130: Insert mode completion messages end up in message history
Bram Moolenaar <Bram@vim.org>
parents: 22717
diff changeset
1262
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1263 " 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
1264 func Test_completefunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1265 func CompleteFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1266 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
1267 return a:findstart ? 0 : []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1268 endfunc
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1269 func CompleteFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1270 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
1271 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
1272 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1273
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
1274 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
1275 #" 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
1276 LET &completefunc = 'g:CompleteFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1277 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
1278 call setline(1, 'global')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1279 LET g:CompleteFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1280 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
1281 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
1282 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1283
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
1284 #" 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
1285 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
1286 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
1287 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1288 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
1289 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
1290 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
1291 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1292
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
1293 #" 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
1294 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
1295 LET &completefunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1296 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
1297 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1298 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
1299 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
1300 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
1301 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1302
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
1303 #" 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
1304 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
1305 LET &completefunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1306 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
1307 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1308 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
1309 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
1310 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
1311 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
1312
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1313 #" 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
1314 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
1315 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
1316 call setline(1, 'three')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1317 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
1318 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
1319 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
1320 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
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 #" 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
1323 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
1324 LET &completefunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1325 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
1326 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1327 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
1328 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
1329 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
1330 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
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 #" 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
1333 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
1334 LET &completefunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1335 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
1336 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1337 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
1338 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
1339 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
1340 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1341
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
1342 #" 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
1343 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
1344 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
1345 exe "set completefunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1346 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
1347 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1348 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
1349 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
1350 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
1351 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1352
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 #" 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
1354 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
1355 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
1356 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1357 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
1358 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
1359 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
1360 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
1361
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
1362 #" 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
1363 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
1364 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
1365 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1366 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
1367 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
1368 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
1369 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
1370
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1371 #" 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
1372 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
1373 LET &completefunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1374 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
1375 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1376 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
1377 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
1378 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
1379 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1380
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
1381 #" 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
1382 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
1383 LET &completefunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1384 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
1385 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1386 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
1387 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
1388 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
1389 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
1390
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1391 #" 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
1392 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
1393 LET &completefunc = Lambda
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, '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
1396 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
1397 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
1398
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 #" 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
1400 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
1401 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
1402 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
1403 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
1404
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
1405 #" 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
1406 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
1407 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
1408 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
1409 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
1410 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
1411 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
1412 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
1413 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
1414 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1415 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
1416
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1417 " 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
1418 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
1419 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
1420 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
1421 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1422 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
1423 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1424 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
1425 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
1426 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
1427 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
1428 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1429
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1430 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
1431 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1432 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
1433 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
1434 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
1435 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
1436 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1437 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
1438
27780
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1439 " 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
1440 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
1441 vim9script
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1442 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
1443 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
1444 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
1445 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
1446 enddef
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1447 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
1448 new
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1449 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
1450 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
1451 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
1452 bw!
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1453 END
f1d5822ca0d7 patch 8.2.4416: Vim9: using a script-local function requires using "s:"
Bram Moolenaar <Bram@vim.org>
parents: 27671
diff changeset
1454 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
1455
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1456 " 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
1457 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
1458 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
1459
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1460 " 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
1461 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
1462 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1463 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
1464 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
1465 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
1466
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
1467 " 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
1468 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
1469 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
1470 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
1471 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
1472 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
1473 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
1474 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
1475 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
1476 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
1477 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
1478 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
1479 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
1480 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
1481 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
1482 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
1483 %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
1484 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
1485 delfunc SetCompleteFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1486
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1487 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1488 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
1489 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1490
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1491 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
1492 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
1493 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1494 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
1495
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1496 # 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
1497 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
1498 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1499 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1500 g:Vim9completeFuncArgs = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1501 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
1502 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
1503 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
1504
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1505 # 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
1506 &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
1507 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
1508 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
1509 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
1510 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
1511 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
1512 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1513
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1514 # 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
1515 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
1516 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
1517 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
1518 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1519 &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
1520 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
1521 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
1522 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
1523 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
1524 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
1525 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1526 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1527 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
1528
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1529 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1530 set completefunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1531 delfunc CompleteFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1532 delfunc CompleteFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1533 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
1534 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1535 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1536
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1537 " 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
1538 func Test_omnifunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1539 func OmniFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1540 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
1541 return a:findstart ? 0 : []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1542 endfunc
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1543 func OmniFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1544 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
1545 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
1546 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1547
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
1548 let lines =<< trim END
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1549 #" 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
1550 LET &omnifunc = 'g:OmniFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1551 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1552 call setline(1, 'zero')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1553 LET g:OmniFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1554 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
1555 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
1556 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1557
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
1558 #" 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
1559 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
1560 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
1561 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1562 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
1563 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
1564 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
1565 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1566
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
1567 #" 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
1568 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
1569 LET &omnifunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1570 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
1571 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1572 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
1573 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
1574 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
1575 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1576
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
1577 #" 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
1578 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
1579 LET &omnifunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1580 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
1581 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1582 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
1583 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
1584 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
1585 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
1586
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1587 #" 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
1588 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
1589 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
1590 call setline(1, 'three')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1591 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
1592 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
1593 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
1594 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
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 #" 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
1597 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
1598 LET &omnifunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1599 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
1600 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1601 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
1602 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
1603 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
1604 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
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 #" 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
1607 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
1608 LET &omnifunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1609 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
1610 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1611 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
1612 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
1613 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
1614 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1615
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
1616 #" 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
1617 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
1618 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
1619 exe "set omnifunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1620 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
1621 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1622 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
1623 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
1624 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
1625 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1626
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 #" 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
1628 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
1629 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
1630 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1631 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
1632 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
1633 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
1634 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
1635
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
1636 #" 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
1637 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
1638 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
1639 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1640 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
1641 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
1642 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
1643 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
1644
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1645 #" 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
1646 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
1647 LET &omnifunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1648 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
1649 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1650 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
1651 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
1652 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
1653 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1654
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
1655 #" 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
1656 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
1657 LET &omnifunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1658 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
1659 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1660 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
1661 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
1662 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
1663 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
1664
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1665 #" 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
1666 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
1667 LET &omnifunc = Lambda
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, '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
1670 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
1671 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
1672
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 #" 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
1674 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
1675 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
1676 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
1677 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
1678
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
1679 #" 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
1680 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
1681 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
1682 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
1683 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
1684 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
1685 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
1686 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
1687 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
1688 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1689 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
1690
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1691 " 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
1692 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
1693 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
1694 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
1695 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1696 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
1697 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1698 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
1699 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
1700 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
1701 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
1702 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1703
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1704 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
1705 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1706 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
1707 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
1708 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
1709 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
1710 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1711 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
1712
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1713 " 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
1714 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
1715 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
1716
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1717 " 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
1718 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
1719 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1720 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
1721 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
1722 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
1723
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
1724 " 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
1725 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
1726 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
1727 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
1728 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
1729 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
1730 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
1731 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
1732 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
1733 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
1734 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
1735 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
1736 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
1737 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
1738 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
1739 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
1740 %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
1741 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
1742 delfunc SetOmniFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1743
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1744 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1745 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
1746 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1747
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1748 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
1749 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
1750 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1751 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
1752
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1753 # 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
1754 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
1755 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1756 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1757 g:Vim9omniFunc_Args = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1758 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
1759 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
1760 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
1761
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1762 # 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
1763 &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
1764 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
1765 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
1766 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
1767 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
1768 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
1769 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1770
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1771 # 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
1772 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
1773 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
1774 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
1775 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
1776 &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
1777 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
1778 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
1779 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
1780 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
1781 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
1782 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1783 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1784 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
1785
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1786 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1787 set omnifunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1788 delfunc OmniFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1789 delfunc OmniFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1790 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
1791 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1792 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1793
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1794 " 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
1795 func Test_thesaurusfunc_callback()
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1796 func TsrFunc1(callnr, findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1797 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
1798 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
1799 endfunc
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1800 func TsrFunc2(findstart, base)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1801 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
1802 return a:findstart ? 0 : ['sunday']
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1803 endfunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
1804
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
1805 let lines =<< trim END
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1806 #" 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
1807 LET &thesaurusfunc = 'g:TsrFunc2'
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1808 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1809 call setline(1, 'zero')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1810 LET g:TsrFunc2Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1811 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
1812 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
1813 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1814
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
1815 #" 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
1816 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
1817 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
1818 call setline(1, 'one')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1819 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
1820 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
1821 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
1822 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1823
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
1824 #" 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
1825 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
1826 LET &thesaurusfunc = Fn
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1827 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
1828 call setline(1, 'two')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1829 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
1830 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
1831 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
1832 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
1833
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1834 #" 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
1835 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
1836 LET &thesaurusfunc = string(Fn)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1837 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1838 call setline(1, 'two')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1839 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1840 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
1841 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
1842 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1843
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1844 #" Test for using a funcref()
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1845 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
1846 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1847 call setline(1, 'three')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1848 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1849 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
1850 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
1851 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1852
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1853 #" 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
1854 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
1855 LET &thesaurusfunc = Fn
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1856 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
1857 call setline(1, 'four')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1858 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
1859 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
1860 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
1861 bw!
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1862
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1863 #" 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
1864 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
1865 LET &thesaurusfunc = string(Fn)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1866 new
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1867 call setline(1, 'four')
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1868 LET g:TsrFunc1Args = []
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1869 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
1870 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
1871 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1872
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
1873 #" 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
1874 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
1875 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
1876 exe "set thesaurusfunc=" .. optval
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1877 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
1878 call setline(1, 'five')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1879 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
1880 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
1881 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
1882 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
1883
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 #" 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
1885 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
1886 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
1887 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1888 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
1889 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
1890 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
1891 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1892
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
1893 #" 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
1894 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
1895 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
1896 call setline(1, 'six')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1897 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
1898 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
1899 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
1900 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1901
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
1902 #" 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
1903 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
1904 LET &thesaurusfunc = Lambda
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1905 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
1906 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1907 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
1908 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
1909 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
1910 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
1911
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
1912 #" 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
1913 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
1914 LET &thesaurusfunc = string(Lambda)
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1915 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
1916 call setline(1, 'seven')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1917 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
1918 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
1919 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
1920 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
1921
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1922 #" 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
1923 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
1924 LET &thesaurusfunc = Lambda
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, '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
1927 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
1928 bw!
26388
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1929
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 #" 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
1931 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
1932 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
1933 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
1934 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
1935
13ba00ef7687 patch 8.2.3788: lambda for option that is a function may be freed
Bram Moolenaar <Bram@vim.org>
parents: 26456
diff changeset
1936 #" 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
1937 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
1938 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
1939 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
1940 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
1941 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
1942 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
1943 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
1944 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
1945
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 #" 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
1947 set thesaurusfunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1948 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
1949 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1950 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
1951 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
1952 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
1953 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
1954 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
1955 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1956 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
1957 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
1958 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
1959 call assert_equal([], g:TsrFunc1Args)
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1960 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
1961 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
1962 call setline(1, 'sun')
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
1963 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
1964 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
1965 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
1966 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
1967 :%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
1968 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
1969 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
1970
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1971 " 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
1972 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
1973 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
1974 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
1975 endfunc
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1976 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
1977 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1978 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
1979 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
1980 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
1981 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
1982 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1983
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1984 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
1985 new
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1986 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
1987 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
1988 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
1989 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
1990 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1991 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
1992
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
1993 " 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
1994 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
1995 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
1996
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
1997 " 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
1998 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
1999 new | only
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2000 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
2001 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
2002 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
2003 bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2004
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 " 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
2006 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
2007 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
2008 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
2009 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
2010 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
2011 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
2012 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
2013 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
2014 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
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 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
2017 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
2018 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
2019 wincmd w
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
2020 %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
2021 delfunc SetTsrFunc
26452
65b4109a4297 patch 8.2.3756: might crash when callback is not valid
Bram Moolenaar <Bram@vim.org>
parents: 26441
diff changeset
2022
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
2023 " 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
2024 " 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
2025 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
2026 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
2027 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
2028 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
2029 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
2030 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
2031 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
2032 set thesaurusfunc=
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2033 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
2034 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
2035 delfunc SetLocalTsrFunc
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2036
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2037 " Vim9 tests
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2038 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
2039 vim9script
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2040
26618
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2041 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
2042 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
2043 return findstart ? 0 : []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2044 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
2045
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2046 # 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
2047 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
2048 new | only
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2049 setline(1, 'one')
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2050 g:Vim9tsrFunc_Args = []
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2051 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
2052 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
2053 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
2054
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2055 # 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
2056 &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
2057 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
2058 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
2059 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
2060 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
2061 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
2062 bw!
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2063
b531c26f728b patch 8.2.3838: cannot use script-local function for setting *func options
Bram Moolenaar <Bram@vim.org>
parents: 26526
diff changeset
2064 # 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
2065 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
2066 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
2067 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
2068 enddef
27671
19367412787c patch 8.2.4361: Vim9: some tests fail
Bram Moolenaar <Bram@vim.org>
parents: 27474
diff changeset
2069 &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
2070 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
2071 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
2072 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
2073 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
2074 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
2075 bw!
26456
7eaf61a67d18 patch 8.2.3758: options that take a function insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26452
diff changeset
2076 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27016
diff changeset
2077 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
2078
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2079 " cleanup
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2080 set thesaurusfunc&
26526
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2081 delfunc TsrFunc1
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2082 delfunc TsrFunc2
33d680d372aa patch 8.2.3792: setting *func options insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 26518
diff changeset
2083 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
2084 %bw!
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2085 endfunc
8aba638e91eb patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2086
28369
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2087 func FooBarComplete(findstart, base)
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2088 if a:findstart
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2089 return col('.') - 1
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2090 else
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2091 return ["Foo", "Bar", "}"]
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2092 endif
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2093 endfunc
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2094
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2095 func Test_complete_smartindent()
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2096 new
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2097 setlocal smartindent completefunc=FooBarComplete
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2098
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2099 exe "norm! o{\<cr>\<c-x>\<c-u>\<c-p>}\<cr>\<esc>"
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2100 let result = getline(1,'$')
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2101 call assert_equal(['', '{','}',''], result)
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2102 bw!
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2103 delfunction! FooBarComplete
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2104 endfunc
38332c6da029 patch 8.2.4710: smart indenting does not work after completion
Bram Moolenaar <Bram@vim.org>
parents: 27954
diff changeset
2105
29355
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2106 func Test_complete_overrun()
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2107 " this was going past the end of the copied text
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2108 new
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2109 sil norm si”0s0 
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2110 bwipe!
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2111 endfunc
796198629190 patch 9.0.0020: with some completion reading past end of string
Bram Moolenaar <Bram@vim.org>
parents: 29014
diff changeset
2112
29406
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2113 func Test_infercase_very_long_line()
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2114 " this was truncating the line when inferring case
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2115 new
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2116 let longLine = "blah "->repeat(300)
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2117 let verylongLine = "blah "->repeat(400)
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2118 call setline(1, verylongLine)
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2119 call setline(2, longLine)
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2120 set ic infercase
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2121 exe "normal 2Go\<C-X>\<C-L>\<Esc>"
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2122 call assert_equal(longLine, getline(3))
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2123
29436
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2124 " check that the too long text is NUL terminated
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2125 %del
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2126 norm o
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2127 norm 1987ax
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2128 exec "norm ox\<C-X>\<C-L>"
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2129 call assert_equal(repeat('x', 1987), getline(3))
6888567953ca patch 9.0.0060: accessing uninitialized memory when completing long line
Bram Moolenaar <Bram@vim.org>
parents: 29408
diff changeset
2130
29406
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2131 bwipe!
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2132 set noic noinfercase
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2133 endfunc
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2134
29408
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2135 func Test_ins_complete_add()
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2136 " this was reading past the end of allocated memory
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2137 new
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2138 norm o
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2139 norm 7o€€
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2140 sil! norm o
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2141
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2142 bwipe!
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2143 endfunc
c12fb2c5b1b3 patch 9.0.0046: reading past end of completion with duplicate match
Bram Moolenaar <Bram@vim.org>
parents: 29406
diff changeset
2144
29521
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2145 func Test_ins_complete_end_of_line()
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2146 " this was reading past the end of the line
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2147 new
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2148 norm 8o€ý 
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2149 sil! norm o
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2150
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2151 bwipe!
f538704ca03b patch 9.0.0102: reading past end of line with insert mode completion
Bram Moolenaar <Bram@vim.org>
parents: 29501
diff changeset
2152 endfunc
29406
979ce206409a patch 9.0.0045: reading past end of completion with a long line
Bram Moolenaar <Bram@vim.org>
parents: 29369
diff changeset
2153
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19651
diff changeset
2154 " vim: shiftwidth=2 sts=2 expandtab