163a60dedSBram Moolenaar" Tests for user defined commands
263a60dedSBram Moolenaar
3cc7eb2aaSBram Moolenaarsource vim9.vim
4cc7eb2aaSBram Moolenaar
563a60dedSBram Moolenaar" Test for <mods> in user defined commands
663a60dedSBram Moolenaarfunction Test_cmdmods()
763a60dedSBram Moolenaar  let g:mods = ''
863a60dedSBram Moolenaar
97a1637f4SBram Moolenaar  command! -nargs=* MyCmd let g:mods = '<mods>'
1063a60dedSBram Moolenaar
1163a60dedSBram Moolenaar  MyCmd
127a1637f4SBram Moolenaar  call assert_equal('', g:mods)
1363a60dedSBram Moolenaar  aboveleft MyCmd
147a1637f4SBram Moolenaar  call assert_equal('aboveleft', g:mods)
153bcfca3aSBram Moolenaar  abo MyCmd
167a1637f4SBram Moolenaar  call assert_equal('aboveleft', g:mods)
1763a60dedSBram Moolenaar  belowright MyCmd
187a1637f4SBram Moolenaar  call assert_equal('belowright', g:mods)
193bcfca3aSBram Moolenaar  bel MyCmd
207a1637f4SBram Moolenaar  call assert_equal('belowright', g:mods)
2163a60dedSBram Moolenaar  botright MyCmd
227a1637f4SBram Moolenaar  call assert_equal('botright', g:mods)
233bcfca3aSBram Moolenaar  bo MyCmd
247a1637f4SBram Moolenaar  call assert_equal('botright', g:mods)
2563a60dedSBram Moolenaar  browse MyCmd
267a1637f4SBram Moolenaar  call assert_equal('browse', g:mods)
273bcfca3aSBram Moolenaar  bro MyCmd
287a1637f4SBram Moolenaar  call assert_equal('browse', g:mods)
2963a60dedSBram Moolenaar  confirm MyCmd
307a1637f4SBram Moolenaar  call assert_equal('confirm', g:mods)
313bcfca3aSBram Moolenaar  conf MyCmd
327a1637f4SBram Moolenaar  call assert_equal('confirm', g:mods)
3363a60dedSBram Moolenaar  hide MyCmd
347a1637f4SBram Moolenaar  call assert_equal('hide', g:mods)
353bcfca3aSBram Moolenaar  hid MyCmd
367a1637f4SBram Moolenaar  call assert_equal('hide', g:mods)
3763a60dedSBram Moolenaar  keepalt MyCmd
387a1637f4SBram Moolenaar  call assert_equal('keepalt', g:mods)
393bcfca3aSBram Moolenaar  keepa MyCmd
407a1637f4SBram Moolenaar  call assert_equal('keepalt', g:mods)
4163a60dedSBram Moolenaar  keepjumps MyCmd
427a1637f4SBram Moolenaar  call assert_equal('keepjumps', g:mods)
433bcfca3aSBram Moolenaar  keepj MyCmd
447a1637f4SBram Moolenaar  call assert_equal('keepjumps', g:mods)
4563a60dedSBram Moolenaar  keepmarks MyCmd
467a1637f4SBram Moolenaar  call assert_equal('keepmarks', g:mods)
473bcfca3aSBram Moolenaar  kee MyCmd
487a1637f4SBram Moolenaar  call assert_equal('keepmarks', g:mods)
4963a60dedSBram Moolenaar  keeppatterns MyCmd
507a1637f4SBram Moolenaar  call assert_equal('keeppatterns', g:mods)
513bcfca3aSBram Moolenaar  keepp MyCmd
527a1637f4SBram Moolenaar  call assert_equal('keeppatterns', g:mods)
533bcfca3aSBram Moolenaar  leftabove MyCmd  " results in :aboveleft
547a1637f4SBram Moolenaar  call assert_equal('aboveleft', g:mods)
553bcfca3aSBram Moolenaar  lefta MyCmd
567a1637f4SBram Moolenaar  call assert_equal('aboveleft', g:mods)
5763a60dedSBram Moolenaar  lockmarks MyCmd
587a1637f4SBram Moolenaar  call assert_equal('lockmarks', g:mods)
593bcfca3aSBram Moolenaar  loc MyCmd
607a1637f4SBram Moolenaar  call assert_equal('lockmarks', g:mods)
613bcfca3aSBram Moolenaar  " noautocmd MyCmd
6263a60dedSBram Moolenaar  noswapfile MyCmd
637a1637f4SBram Moolenaar  call assert_equal('noswapfile', g:mods)
643bcfca3aSBram Moolenaar  nos MyCmd
657a1637f4SBram Moolenaar  call assert_equal('noswapfile', g:mods)
663bcfca3aSBram Moolenaar  rightbelow MyCmd " results in :belowright
677a1637f4SBram Moolenaar  call assert_equal('belowright', g:mods)
683bcfca3aSBram Moolenaar  rightb MyCmd
697a1637f4SBram Moolenaar  call assert_equal('belowright', g:mods)
703bcfca3aSBram Moolenaar  " sandbox MyCmd
7163a60dedSBram Moolenaar  silent MyCmd
727a1637f4SBram Moolenaar  call assert_equal('silent', g:mods)
733bcfca3aSBram Moolenaar  sil MyCmd
747a1637f4SBram Moolenaar  call assert_equal('silent', g:mods)
7563a60dedSBram Moolenaar  tab MyCmd
767a1637f4SBram Moolenaar  call assert_equal('tab', g:mods)
7763a60dedSBram Moolenaar  topleft MyCmd
787a1637f4SBram Moolenaar  call assert_equal('topleft', g:mods)
793bcfca3aSBram Moolenaar  to MyCmd
807a1637f4SBram Moolenaar  call assert_equal('topleft', g:mods)
813bcfca3aSBram Moolenaar  " unsilent MyCmd
8263a60dedSBram Moolenaar  verbose MyCmd
837a1637f4SBram Moolenaar  call assert_equal('verbose', g:mods)
843bcfca3aSBram Moolenaar  verb MyCmd
857a1637f4SBram Moolenaar  call assert_equal('verbose', g:mods)
8663a60dedSBram Moolenaar  vertical MyCmd
877a1637f4SBram Moolenaar  call assert_equal('vertical', g:mods)
883bcfca3aSBram Moolenaar  vert MyCmd
897a1637f4SBram Moolenaar  call assert_equal('vertical', g:mods)
9063a60dedSBram Moolenaar
9163a60dedSBram Moolenaar  aboveleft belowright botright browse confirm hide keepalt keepjumps
9263a60dedSBram Moolenaar	      \ keepmarks keeppatterns lockmarks noswapfile silent tab
9363a60dedSBram Moolenaar	      \ topleft verbose vertical MyCmd
9463a60dedSBram Moolenaar
957a1637f4SBram Moolenaar  call assert_equal('browse confirm hide keepalt keepjumps ' .
967a1637f4SBram Moolenaar      \ 'keepmarks keeppatterns lockmarks noswapfile silent ' .
977a1637f4SBram Moolenaar      \ 'verbose aboveleft belowright botright tab topleft vertical', g:mods)
9863a60dedSBram Moolenaar
9963a60dedSBram Moolenaar  let g:mods = ''
10063a60dedSBram Moolenaar  command! -nargs=* MyQCmd let g:mods .= '<q-mods> '
10163a60dedSBram Moolenaar
10263a60dedSBram Moolenaar  vertical MyQCmd
10363a60dedSBram Moolenaar  call assert_equal('"vertical" ', g:mods)
10463a60dedSBram Moolenaar
10563a60dedSBram Moolenaar  delcommand MyCmd
10663a60dedSBram Moolenaar  delcommand MyQCmd
10763a60dedSBram Moolenaar  unlet g:mods
10863a60dedSBram Moolenaarendfunction
109eac784ecSBram Moolenaar
110e61e548dSBram Moolenaarfunc SaveCmdArgs(...)
111e61e548dSBram Moolenaar  let g:args = a:000
112e61e548dSBram Moolenaarendfunc
113e61e548dSBram Moolenaar
114e61e548dSBram Moolenaarfunc Test_f_args()
115e61e548dSBram Moolenaar  command -nargs=* TestFArgs call SaveCmdArgs(<f-args>)
116e61e548dSBram Moolenaar
117e61e548dSBram Moolenaar  TestFArgs
118e61e548dSBram Moolenaar  call assert_equal([], g:args)
119e61e548dSBram Moolenaar
120e61e548dSBram Moolenaar  TestFArgs one two three
121e61e548dSBram Moolenaar  call assert_equal(['one', 'two', 'three'], g:args)
122e61e548dSBram Moolenaar
123e61e548dSBram Moolenaar  TestFArgs one\\two three
124e61e548dSBram Moolenaar  call assert_equal(['one\two', 'three'], g:args)
125e61e548dSBram Moolenaar
126e61e548dSBram Moolenaar  TestFArgs one\ two three
127e61e548dSBram Moolenaar  call assert_equal(['one two', 'three'], g:args)
128e61e548dSBram Moolenaar
129e61e548dSBram Moolenaar  TestFArgs one\"two three
130e61e548dSBram Moolenaar  call assert_equal(['one\"two', 'three'], g:args)
131e61e548dSBram Moolenaar
132e61e548dSBram Moolenaar  delcommand TestFArgs
133e61e548dSBram Moolenaarendfunc
134e61e548dSBram Moolenaar
135e61e548dSBram Moolenaarfunc Test_q_args()
136e61e548dSBram Moolenaar  command -nargs=* TestQArgs call SaveCmdArgs(<q-args>)
137e61e548dSBram Moolenaar
138e61e548dSBram Moolenaar  TestQArgs
139e61e548dSBram Moolenaar  call assert_equal([''], g:args)
140e61e548dSBram Moolenaar
141e61e548dSBram Moolenaar  TestQArgs one two three
142e61e548dSBram Moolenaar  call assert_equal(['one two three'], g:args)
143e61e548dSBram Moolenaar
144e61e548dSBram Moolenaar  TestQArgs one\\two three
145e61e548dSBram Moolenaar  call assert_equal(['one\\two three'], g:args)
146e61e548dSBram Moolenaar
147e61e548dSBram Moolenaar  TestQArgs one\ two three
148e61e548dSBram Moolenaar  call assert_equal(['one\ two three'], g:args)
149e61e548dSBram Moolenaar
150e61e548dSBram Moolenaar  TestQArgs one\"two three
151e61e548dSBram Moolenaar  call assert_equal(['one\"two three'], g:args)
152e61e548dSBram Moolenaar
153e61e548dSBram Moolenaar  delcommand TestQArgs
154e61e548dSBram Moolenaarendfunc
155e61e548dSBram Moolenaar
156e61e548dSBram Moolenaarfunc Test_reg_arg()
157e61e548dSBram Moolenaar  command -nargs=* -reg TestRegArg call SaveCmdArgs("<reg>", "<register>")
158e61e548dSBram Moolenaar
159e61e548dSBram Moolenaar  TestRegArg
160e61e548dSBram Moolenaar  call assert_equal(['', ''], g:args)
161e61e548dSBram Moolenaar
162e61e548dSBram Moolenaar  TestRegArg x
163e61e548dSBram Moolenaar  call assert_equal(['x', 'x'], g:args)
164e61e548dSBram Moolenaar
165e61e548dSBram Moolenaar  delcommand TestRegArg
166e61e548dSBram Moolenaarendfunc
167e61e548dSBram Moolenaar
168e61e548dSBram Moolenaarfunc Test_no_arg()
169e61e548dSBram Moolenaar  command -nargs=* TestNoArg call SaveCmdArgs("<args>", "<>", "<x>", "<lt>")
170e61e548dSBram Moolenaar
171e61e548dSBram Moolenaar  TestNoArg
172e61e548dSBram Moolenaar  call assert_equal(['', '<>', '<x>', '<'], g:args)
173e61e548dSBram Moolenaar
174e61e548dSBram Moolenaar  TestNoArg one
175e61e548dSBram Moolenaar  call assert_equal(['one', '<>', '<x>', '<'], g:args)
176e61e548dSBram Moolenaar
177e61e548dSBram Moolenaar  delcommand TestNoArg
178e61e548dSBram Moolenaarendfunc
179e61e548dSBram Moolenaar
180e61e548dSBram Moolenaarfunc Test_range_arg()
181e61e548dSBram Moolenaar  command -range TestRangeArg call SaveCmdArgs(<range>, <line1>, <line2>)
182e61e548dSBram Moolenaar  new
183e61e548dSBram Moolenaar  call setline(1, range(100))
184e61e548dSBram Moolenaar  let lnum = line('.')
185e61e548dSBram Moolenaar
186e61e548dSBram Moolenaar  TestRangeArg
187e61e548dSBram Moolenaar  call assert_equal([0, lnum, lnum], g:args)
188e61e548dSBram Moolenaar
189e61e548dSBram Moolenaar  99TestRangeArg
190e61e548dSBram Moolenaar  call assert_equal([1, 99, 99], g:args)
191e61e548dSBram Moolenaar
192e61e548dSBram Moolenaar  88,99TestRangeArg
193e61e548dSBram Moolenaar  call assert_equal([2, 88, 99], g:args)
194e61e548dSBram Moolenaar
195e61e548dSBram Moolenaar  call assert_fails('102TestRangeArg', 'E16:')
196e61e548dSBram Moolenaar
197e61e548dSBram Moolenaar  bwipe!
198e61e548dSBram Moolenaar  delcommand TestRangeArg
199e61e548dSBram Moolenaarendfunc
200e61e548dSBram Moolenaar
201eac784ecSBram Moolenaarfunc Test_Ambiguous()
202eac784ecSBram Moolenaar  command Doit let g:didit = 'yes'
203eac784ecSBram Moolenaar  command Dothat let g:didthat = 'also'
204eac784ecSBram Moolenaar  call assert_fails('Do', 'E464:')
205eac784ecSBram Moolenaar  Doit
206eac784ecSBram Moolenaar  call assert_equal('yes', g:didit)
207eac784ecSBram Moolenaar  Dothat
208eac784ecSBram Moolenaar  call assert_equal('also', g:didthat)
209eac784ecSBram Moolenaar  unlet g:didit
210eac784ecSBram Moolenaar  unlet g:didthat
211eac784ecSBram Moolenaar
212eac784ecSBram Moolenaar  delcommand Doit
213eac784ecSBram Moolenaar  Do
214eac784ecSBram Moolenaar  call assert_equal('also', g:didthat)
215eac784ecSBram Moolenaar  delcommand Dothat
216e61e548dSBram Moolenaar
217e61e548dSBram Moolenaar  call assert_fails("\x4ei\041", ' you demand a ')
218eac784ecSBram Moolenaarendfunc
219eac784ecSBram Moolenaar
22055d46913SBram Moolenaarfunc Test_redefine_on_reload()
22155d46913SBram Moolenaar  call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists')
22255d46913SBram Moolenaar  call assert_equal(0, exists(':ExistingCommand'))
22355d46913SBram Moolenaar  source Xcommandexists
22455d46913SBram Moolenaar  call assert_equal(2, exists(':ExistingCommand'))
22555d46913SBram Moolenaar  " Redefining a command when reloading a script is OK.
22655d46913SBram Moolenaar  source Xcommandexists
22755d46913SBram Moolenaar  call assert_equal(2, exists(':ExistingCommand'))
22855d46913SBram Moolenaar
22955d46913SBram Moolenaar  " But redefining in another script is not OK.
23055d46913SBram Moolenaar  call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists2')
23155d46913SBram Moolenaar  call assert_fails('source Xcommandexists2', 'E174:')
23255d46913SBram Moolenaar  call delete('Xcommandexists2')
23355d46913SBram Moolenaar
23455d46913SBram Moolenaar  " And defining twice in one script is not OK.
23555d46913SBram Moolenaar  delcommand ExistingCommand
23655d46913SBram Moolenaar  call assert_equal(0, exists(':ExistingCommand'))
23755d46913SBram Moolenaar  call writefile([
23855d46913SBram Moolenaar	\ 'command ExistingCommand echo "yes"',
23955d46913SBram Moolenaar	\ 'command ExistingCommand echo "no"',
24055d46913SBram Moolenaar	\ ], 'Xcommandexists')
24155d46913SBram Moolenaar  call assert_fails('source Xcommandexists', 'E174:')
24255d46913SBram Moolenaar  call assert_equal(2, exists(':ExistingCommand'))
24355d46913SBram Moolenaar
24455d46913SBram Moolenaar  call delete('Xcommandexists')
24555d46913SBram Moolenaar  delcommand ExistingCommand
24655d46913SBram Moolenaarendfunc
24755d46913SBram Moolenaar
248eac784ecSBram Moolenaarfunc Test_CmdUndefined()
249eac784ecSBram Moolenaar  call assert_fails('Doit', 'E492:')
250eac784ecSBram Moolenaar  au CmdUndefined Doit :command Doit let g:didit = 'yes'
251eac784ecSBram Moolenaar  Doit
252eac784ecSBram Moolenaar  call assert_equal('yes', g:didit)
253eac784ecSBram Moolenaar  delcommand Doit
254eac784ecSBram Moolenaar
255eac784ecSBram Moolenaar  call assert_fails('Dothat', 'E492:')
256eac784ecSBram Moolenaar  au CmdUndefined * let g:didnot = 'yes'
257eac784ecSBram Moolenaar  call assert_fails('Dothat', 'E492:')
258eac784ecSBram Moolenaar  call assert_equal('yes', g:didnot)
259eac784ecSBram Moolenaarendfunc
26065c836e6SBram Moolenaar
26165c836e6SBram Moolenaarfunc Test_CmdErrors()
26265c836e6SBram Moolenaar  call assert_fails('com! docmd :', 'E183:')
26365c836e6SBram Moolenaar  call assert_fails('com! \<Tab> :', 'E182:')
26465c836e6SBram Moolenaar  call assert_fails('com! _ :', 'E182:')
26565c836e6SBram Moolenaar  call assert_fails('com! X :', 'E841:')
26665c836e6SBram Moolenaar  call assert_fails('com! - DoCmd :', 'E175:')
26765c836e6SBram Moolenaar  call assert_fails('com! -xxx DoCmd :', 'E181:')
26865c836e6SBram Moolenaar  call assert_fails('com! -addr DoCmd :', 'E179:')
269e61e548dSBram Moolenaar  call assert_fails('com! -addr=asdf DoCmd :', 'E180:')
27065c836e6SBram Moolenaar  call assert_fails('com! -complete DoCmd :', 'E179:')
27165c836e6SBram Moolenaar  call assert_fails('com! -complete=xxx DoCmd :', 'E180:')
27265c836e6SBram Moolenaar  call assert_fails('com! -complete=custom DoCmd :', 'E467:')
27365c836e6SBram Moolenaar  call assert_fails('com! -complete=customlist DoCmd :', 'E467:')
27465c836e6SBram Moolenaar  call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:')
27565c836e6SBram Moolenaar  call assert_fails('com! -nargs=x DoCmd :', 'E176:')
27665c836e6SBram Moolenaar  call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:')
27765c836e6SBram Moolenaar  call assert_fails('com! -count=x DoCmd :', 'E178:')
27865c836e6SBram Moolenaar  call assert_fails('com! -range=x DoCmd :', 'E178:')
27965c836e6SBram Moolenaar
280cc7eb2aaSBram Moolenaar  com! -complete=file DoCmd :
281cc7eb2aaSBram Moolenaar  call assert_match('E1208:', v:warningmsg)
282cc7eb2aaSBram Moolenaar  let v:warningmsg = ''
283cc7eb2aaSBram Moolenaar  com! -nargs=0 -complete=file DoCmd :
284cc7eb2aaSBram Moolenaar  call assert_match('E1208:', v:warningmsg)
285cc7eb2aaSBram Moolenaar
286cc7eb2aaSBram Moolenaar  let lines =<< trim END
287cc7eb2aaSBram Moolenaar      vim9script
288cc7eb2aaSBram Moolenaar      com! -complete=file DoCmd :
289cc7eb2aaSBram Moolenaar  END
290cc7eb2aaSBram Moolenaar  call CheckScriptFailure(lines, 'E1208', 2)
291cc7eb2aaSBram Moolenaar
292cc7eb2aaSBram Moolenaar  let lines =<< trim END
293cc7eb2aaSBram Moolenaar      vim9script
294cc7eb2aaSBram Moolenaar      com! -nargs=0 -complete=file DoCmd :
295cc7eb2aaSBram Moolenaar  END
296cc7eb2aaSBram Moolenaar  call CheckScriptFailure(lines, 'E1208', 2)
297cc7eb2aaSBram Moolenaar
29865c836e6SBram Moolenaar  com! -nargs=0 DoCmd :
29965c836e6SBram Moolenaar  call assert_fails('DoCmd x', 'E488:')
30065c836e6SBram Moolenaar
30165c836e6SBram Moolenaar  com! -nargs=1 DoCmd :
30265c836e6SBram Moolenaar  call assert_fails('DoCmd', 'E471:')
30365c836e6SBram Moolenaar
30465c836e6SBram Moolenaar  com! -nargs=+ DoCmd :
30565c836e6SBram Moolenaar  call assert_fails('DoCmd', 'E471:')
30665c836e6SBram Moolenaar
30765c836e6SBram Moolenaar  call assert_fails('com DoCmd :', 'E174:')
30865c836e6SBram Moolenaar  comclear
30965c836e6SBram Moolenaar  call assert_fails('delcom DoCmd', 'E184:')
31065c836e6SBram Moolenaarendfunc
31165c836e6SBram Moolenaar
31265c836e6SBram Moolenaarfunc CustomComplete(A, L, P)
31365c836e6SBram Moolenaar  return "January\nFebruary\nMars\n"
31465c836e6SBram Moolenaarendfunc
31565c836e6SBram Moolenaar
31665c836e6SBram Moolenaarfunc CustomCompleteList(A, L, P)
31724ebd83eSBram Moolenaar  return [ "Monday", "Tuesday", "Wednesday", {}]
31865c836e6SBram Moolenaarendfunc
31965c836e6SBram Moolenaar
32065c836e6SBram Moolenaarfunc Test_CmdCompletion()
32165c836e6SBram Moolenaar  call feedkeys(":com -\<C-A>\<C-B>\"\<CR>", 'tx')
322*326e7da6SBram Moolenaar  call assert_equal('"com -addr bang bar buffer complete count keepscript nargs range register', @:)
32365c836e6SBram Moolenaar
32465c836e6SBram Moolenaar  call feedkeys(":com -nargs=0 -\<C-A>\<C-B>\"\<CR>", 'tx')
325*326e7da6SBram Moolenaar  call assert_equal('"com -nargs=0 -addr bang bar buffer complete count keepscript nargs range register', @:)
32665c836e6SBram Moolenaar
32765c836e6SBram Moolenaar  call feedkeys(":com -nargs=\<C-A>\<C-B>\"\<CR>", 'tx')
32865c836e6SBram Moolenaar  call assert_equal('"com -nargs=* + 0 1 ?', @:)
32965c836e6SBram Moolenaar
33065c836e6SBram Moolenaar  call feedkeys(":com -addr=\<C-A>\<C-B>\"\<CR>", 'tx')
33151a7454cSBram Moolenaar  call assert_equal('"com -addr=arguments buffers lines loaded_buffers other quickfix tabs windows', @:)
33265c836e6SBram Moolenaar
33365c836e6SBram Moolenaar  call feedkeys(":com -complete=co\<C-A>\<C-B>\"\<CR>", 'tx')
33465c836e6SBram Moolenaar  call assert_equal('"com -complete=color command compiler', @:)
33565c836e6SBram Moolenaar
33665c836e6SBram Moolenaar  command! DoCmd1 :
33765c836e6SBram Moolenaar  command! DoCmd2 :
33865c836e6SBram Moolenaar  call feedkeys(":com \<C-A>\<C-B>\"\<CR>", 'tx')
33965c836e6SBram Moolenaar  call assert_equal('"com DoCmd1 DoCmd2', @:)
34065c836e6SBram Moolenaar
34165c836e6SBram Moolenaar  call feedkeys(":DoC\<C-A>\<C-B>\"\<CR>", 'tx')
34265c836e6SBram Moolenaar  call assert_equal('"DoCmd1 DoCmd2', @:)
34365c836e6SBram Moolenaar
34465c836e6SBram Moolenaar  call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
34565c836e6SBram Moolenaar  call assert_equal('"delcom DoCmd1 DoCmd2', @:)
34665c836e6SBram Moolenaar
34765c836e6SBram Moolenaar  delcom DoCmd1
34865c836e6SBram Moolenaar  call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
34965c836e6SBram Moolenaar  call assert_equal('"delcom DoCmd2', @:)
35065c836e6SBram Moolenaar
35165c836e6SBram Moolenaar  call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
35265c836e6SBram Moolenaar  call assert_equal('"com DoCmd2', @:)
35365c836e6SBram Moolenaar
35465c836e6SBram Moolenaar  delcom DoCmd2
35565c836e6SBram Moolenaar  call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx')
35665c836e6SBram Moolenaar  call assert_equal('"delcom DoC', @:)
35765c836e6SBram Moolenaar
35865c836e6SBram Moolenaar  call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx')
35965c836e6SBram Moolenaar  call assert_equal('"com DoC', @:)
36065c836e6SBram Moolenaar
361de69a735SMartin Tournoij  com! -nargs=1 -complete=behave DoCmd :
36265c836e6SBram Moolenaar  call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
36365c836e6SBram Moolenaar  call assert_equal('"DoCmd mswin xterm', @:)
36465c836e6SBram Moolenaar
365de69a735SMartin Tournoij  com! -nargs=* -complete=custom,CustomComplete DoCmd :
36665c836e6SBram Moolenaar  call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
36765c836e6SBram Moolenaar  call assert_equal('"DoCmd January February Mars', @:)
36865c836e6SBram Moolenaar
369de69a735SMartin Tournoij  com! -nargs=? -complete=customlist,CustomCompleteList DoCmd :
37065c836e6SBram Moolenaar  call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
37165c836e6SBram Moolenaar  call assert_equal('"DoCmd Monday Tuesday Wednesday', @:)
37265c836e6SBram Moolenaar
373de69a735SMartin Tournoij  com! -nargs=+ -complete=custom,CustomCompleteList DoCmd :
37465c836e6SBram Moolenaar  call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E730:')
37565c836e6SBram Moolenaar
376de69a735SMartin Tournoij  com! -nargs=+ -complete=customlist,CustomComp DoCmd :
37765c836e6SBram Moolenaar  call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E117:')
37824ebd83eSBram Moolenaar
37924ebd83eSBram Moolenaar  " custom completion without a function
380de69a735SMartin Tournoij  com! -nargs=? -complete=custom, DoCmd
38124ebd83eSBram Moolenaar  call assert_beeps("call feedkeys(':DoCmd \t', 'tx')")
38224ebd83eSBram Moolenaar
3839d8d0b5cSBram Moolenaar  " custom completion failure with the wrong function
384de69a735SMartin Tournoij  com! -nargs=? -complete=custom,min DoCmd
3859d8d0b5cSBram Moolenaar  call assert_fails("call feedkeys(':DoCmd \t', 'tx')", 'E118:')
3869d8d0b5cSBram Moolenaar
38724ebd83eSBram Moolenaar  delcom DoCmd
38865c836e6SBram Moolenaarendfunc
38920951482SBram Moolenaar
39020951482SBram Moolenaarfunc CallExecute(A, L, P)
39120951482SBram Moolenaar  " Drop first '\n'
39220951482SBram Moolenaar  return execute('echo "hi"')[1:]
39320951482SBram Moolenaarendfunc
39420951482SBram Moolenaar
39520951482SBram Moolenaarfunc Test_use_execute_in_completion()
39620951482SBram Moolenaar  command! -nargs=* -complete=custom,CallExecute DoExec :
39720951482SBram Moolenaar  call feedkeys(":DoExec \<C-A>\<C-B>\"\<CR>", 'tx')
39820951482SBram Moolenaar  call assert_equal('"DoExec hi', @:)
39920951482SBram Moolenaar  delcommand DoExec
40020951482SBram Moolenaarendfunc
40151a7454cSBram Moolenaar
40251a7454cSBram Moolenaarfunc Test_addr_all()
40351a7454cSBram Moolenaar  command! -addr=lines DoSomething let g:a1 = <line1> | let g:a2 = <line2>
40451a7454cSBram Moolenaar  %DoSomething
40551a7454cSBram Moolenaar  call assert_equal(1, g:a1)
40651a7454cSBram Moolenaar  call assert_equal(line('$'), g:a2)
40751a7454cSBram Moolenaar
40851a7454cSBram Moolenaar  command! -addr=arguments DoSomething let g:a1 = <line1> | let g:a2 = <line2>
40951a7454cSBram Moolenaar  args one two three
41051a7454cSBram Moolenaar  %DoSomething
41151a7454cSBram Moolenaar  call assert_equal(1, g:a1)
41251a7454cSBram Moolenaar  call assert_equal(3, g:a2)
41351a7454cSBram Moolenaar
41451a7454cSBram Moolenaar  command! -addr=buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
41551a7454cSBram Moolenaar  %DoSomething
41651a7454cSBram Moolenaar  for low in range(1, bufnr('$'))
41751a7454cSBram Moolenaar    if buflisted(low)
41851a7454cSBram Moolenaar      break
41951a7454cSBram Moolenaar    endif
42051a7454cSBram Moolenaar  endfor
42151a7454cSBram Moolenaar  call assert_equal(low, g:a1)
42251a7454cSBram Moolenaar  call assert_equal(bufnr('$'), g:a2)
42351a7454cSBram Moolenaar
42451a7454cSBram Moolenaar  command! -addr=loaded_buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
42551a7454cSBram Moolenaar  %DoSomething
42651a7454cSBram Moolenaar  for low in range(1, bufnr('$'))
42751a7454cSBram Moolenaar    if bufloaded(low)
42851a7454cSBram Moolenaar      break
42951a7454cSBram Moolenaar    endif
43051a7454cSBram Moolenaar  endfor
43151a7454cSBram Moolenaar  call assert_equal(low, g:a1)
43251a7454cSBram Moolenaar  for up in range(bufnr('$'), 1, -1)
43351a7454cSBram Moolenaar    if bufloaded(up)
43451a7454cSBram Moolenaar      break
43551a7454cSBram Moolenaar    endif
43651a7454cSBram Moolenaar  endfor
43751a7454cSBram Moolenaar  call assert_equal(up, g:a2)
43851a7454cSBram Moolenaar
43951a7454cSBram Moolenaar  command! -addr=windows DoSomething  let g:a1 = <line1> | let g:a2 = <line2>
44051a7454cSBram Moolenaar  new
44151a7454cSBram Moolenaar  %DoSomething
44251a7454cSBram Moolenaar  call assert_equal(1, g:a1)
44351a7454cSBram Moolenaar  call assert_equal(winnr('$'), g:a2)
44451a7454cSBram Moolenaar  bwipe
44551a7454cSBram Moolenaar
44651a7454cSBram Moolenaar  command! -addr=tabs DoSomething  let g:a1 = <line1> | let g:a2 = <line2>
44751a7454cSBram Moolenaar  tabnew
44851a7454cSBram Moolenaar  %DoSomething
44951a7454cSBram Moolenaar  call assert_equal(1, g:a1)
45051a7454cSBram Moolenaar  call assert_equal(len(gettabinfo()), g:a2)
45151a7454cSBram Moolenaar  bwipe
45251a7454cSBram Moolenaar
453b731689eSBram Moolenaar  command! -addr=other DoSomething  let g:a1 = <line1> | let g:a2 = <line2>
45451a7454cSBram Moolenaar  DoSomething
455b731689eSBram Moolenaar  call assert_equal(line('.'), g:a1)
456b731689eSBram Moolenaar  call assert_equal(line('.'), g:a2)
457b731689eSBram Moolenaar  %DoSomething
458b731689eSBram Moolenaar  call assert_equal(1, g:a1)
459b731689eSBram Moolenaar  call assert_equal(line('$'), g:a2)
46051a7454cSBram Moolenaar
46151a7454cSBram Moolenaar  delcommand DoSomething
46251a7454cSBram Moolenaarendfunc
463d1f90bbcSBram Moolenaar
464d1f90bbcSBram Moolenaarfunc Test_command_list()
465d1f90bbcSBram Moolenaar  command! DoCmd :
466d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
467d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0                        :",
468d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
469d1f90bbcSBram Moolenaar
470d1f90bbcSBram Moolenaar  " Test with various -range= and -count= argument values.
471d1f90bbcSBram Moolenaar  command! -range DoCmd :
472d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
473d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .                   :",
474d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
475d1f90bbcSBram Moolenaar  command! -range=% DoCmd :
476d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
477d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    %                   :",
478d1f90bbcSBram Moolenaar        \           execute('command! DoCmd'))
479d1f90bbcSBram Moolenaar  command! -range=2 DoCmd :
480d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
481d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    2                   :",
482d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
483d1f90bbcSBram Moolenaar  command! -count=2 DoCmd :
484d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
485b731689eSBram Moolenaar        \        .. "\n    DoCmd             0    2c ?                :",
486d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
487d1f90bbcSBram Moolenaar
488d1f90bbcSBram Moolenaar  " Test with various -addr= argument values.
489d1f90bbcSBram Moolenaar  command! -addr=lines DoCmd :
490d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
491d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .                   :",
492d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
493d1f90bbcSBram Moolenaar  command! -addr=arguments DoCmd :
494d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
495d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  arg              :",
496d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
497d1f90bbcSBram Moolenaar  command! -addr=buffers DoCmd :
498d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
499d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  buf              :",
500d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
501d1f90bbcSBram Moolenaar  command! -addr=loaded_buffers DoCmd :
502d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
503d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  load             :",
504d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
505d1f90bbcSBram Moolenaar  command! -addr=windows DoCmd :
506d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
507d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  win              :",
508d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
509d1f90bbcSBram Moolenaar  command! -addr=tabs DoCmd :
510d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
511d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  tab              :",
512d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
513d1f90bbcSBram Moolenaar  command! -addr=other DoCmd :
514d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
515d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0    .  ?                :",
516d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
517d1f90bbcSBram Moolenaar
518d1f90bbcSBram Moolenaar  " Test with various -complete= argument values (non-exhaustive list)
519de69a735SMartin Tournoij  command! -nargs=1 -complete=arglist DoCmd :
520d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
521de69a735SMartin Tournoij        \        .. "\n    DoCmd             1            arglist     :",
522d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
523de69a735SMartin Tournoij  command! -nargs=* -complete=augroup DoCmd :
524d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
525de69a735SMartin Tournoij        \        .. "\n    DoCmd             *            augroup     :",
526d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
527de69a735SMartin Tournoij  command! -nargs=? -complete=custom,CustomComplete DoCmd :
528d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
529de69a735SMartin Tournoij        \        .. "\n    DoCmd             ?            custom      :",
530d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
531de69a735SMartin Tournoij  command! -nargs=+ -complete=customlist,CustomComplete DoCmd :
532d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
533de69a735SMartin Tournoij        \        .. "\n    DoCmd             +            customlist  :",
534d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
535d1f90bbcSBram Moolenaar
536d1f90bbcSBram Moolenaar  " Test with various -narg= argument values.
537d1f90bbcSBram Moolenaar  command! -nargs=0 DoCmd :
538d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
539d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0                        :",
540d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
541d1f90bbcSBram Moolenaar  command! -nargs=1 DoCmd :
542d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
543d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             1                        :",
544d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
545d1f90bbcSBram Moolenaar  command! -nargs=* DoCmd :
546d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
547d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             *                        :",
548d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
549d1f90bbcSBram Moolenaar  command! -nargs=? DoCmd :
550d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
551d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             ?                        :",
552d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
553d1f90bbcSBram Moolenaar  command! -nargs=+ DoCmd :
554d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
555d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             +                        :",
556d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
557d1f90bbcSBram Moolenaar
558d1f90bbcSBram Moolenaar  " Test with other arguments.
559d1f90bbcSBram Moolenaar  command! -bang DoCmd :
560d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
561d1f90bbcSBram Moolenaar        \        .. "\n!   DoCmd             0                        :",
562d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
563d1f90bbcSBram Moolenaar  command! -bar DoCmd :
564d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
565d1f90bbcSBram Moolenaar        \        .. "\n|   DoCmd             0                        :",
566d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
567d1f90bbcSBram Moolenaar  command! -register DoCmd :
568d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
569d1f90bbcSBram Moolenaar        \        .. "\n\"   DoCmd             0                        :",
570d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
571d1f90bbcSBram Moolenaar  command! -buffer DoCmd :
572d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
573d1f90bbcSBram Moolenaar        \        .. "\nb   DoCmd             0                        :"
574d1f90bbcSBram Moolenaar        \        .. "\n\"   DoCmd             0                        :",
575d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
576d1f90bbcSBram Moolenaar  comclear
577d1f90bbcSBram Moolenaar
578d1f90bbcSBram Moolenaar  " Test with many args.
579d1f90bbcSBram Moolenaar  command! -bang -bar -register -buffer -nargs=+ -complete=environment -addr=windows -count=3 DoCmd :
580d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
581d1f90bbcSBram Moolenaar        \        .. "\n!\"b|DoCmd             +    3c win  environment :",
582d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
583d1f90bbcSBram Moolenaar  comclear
584d1f90bbcSBram Moolenaar
585d1f90bbcSBram Moolenaar  " Test with special characters in command definition.
586d1f90bbcSBram Moolenaar  command! DoCmd :<cr><tab><c-d>
587d1f90bbcSBram Moolenaar  call assert_equal("\n    Name              Args Address Complete    Definition"
588d1f90bbcSBram Moolenaar        \        .. "\n    DoCmd             0                        :<CR><Tab><C-D>",
589d1f90bbcSBram Moolenaar        \           execute('command DoCmd'))
590d1f90bbcSBram Moolenaar
591d1f90bbcSBram Moolenaar  " Test output in verbose mode.
592d1f90bbcSBram Moolenaar  command! DoCmd :
593d1f90bbcSBram Moolenaar  call assert_match("^\n"
594d1f90bbcSBram Moolenaar        \        .. "    Name              Args Address Complete    Definition\n"
595d1f90bbcSBram Moolenaar        \        .. "    DoCmd             0                        :\n"
596d1f90bbcSBram Moolenaar        \        .. "\tLast set from .*/test_usercommands.vim line \\d\\+$",
597d1f90bbcSBram Moolenaar        \           execute('verbose command DoCmd'))
598d1f90bbcSBram Moolenaar
599d1f90bbcSBram Moolenaar  comclear
600d1f90bbcSBram Moolenaar  call assert_equal("\nNo user-defined commands found", execute(':command Xxx'))
601d1f90bbcSBram Moolenaar  call assert_equal("\nNo user-defined commands found", execute('command'))
602d1f90bbcSBram Moolenaarendfunc
60324ebd83eSBram Moolenaar
6048b633135SBram Moolenaar" Test for a custom user completion returning the wrong value type
6058b633135SBram Moolenaarfunc Test_usercmd_custom()
6068b633135SBram Moolenaar  func T1(a, c, p)
6078b633135SBram Moolenaar    return "a\nb\n"
6088b633135SBram Moolenaar  endfunc
6098b633135SBram Moolenaar  command -nargs=* -complete=customlist,T1 TCmd1
610ea04a6e8SBram Moolenaar  call feedkeys(":TCmd1 \<C-A>\<C-B>\"\<CR>", 'xt')
611ea04a6e8SBram Moolenaar  call assert_equal('"TCmd1 ', @:)
6128b633135SBram Moolenaar  delcommand TCmd1
6138b633135SBram Moolenaar  delfunc T1
6148b633135SBram Moolenaar
6158b633135SBram Moolenaar  func T2(a, c, p)
616ea04a6e8SBram Moolenaar    return {}
6178b633135SBram Moolenaar  endfunc
6188b633135SBram Moolenaar  command -nargs=* -complete=customlist,T2 TCmd2
619ea04a6e8SBram Moolenaar  call feedkeys(":TCmd2 \<C-A>\<C-B>\"\<CR>", 'xt')
620ea04a6e8SBram Moolenaar  call assert_equal('"TCmd2 ', @:)
6218b633135SBram Moolenaar  delcommand TCmd2
6228b633135SBram Moolenaar  delfunc T2
6238b633135SBram Moolenaarendfunc
6248b633135SBram Moolenaar
6255d7c2df5SBram Moolenaarfunc Test_usercmd_with_block()
6265d7c2df5SBram Moolenaar  command DoSomething {
627ec1b0968SBram Moolenaar        g:didit = 'yes'  # comment
628ec1b0968SBram Moolenaar        # comment line
6295d7c2df5SBram Moolenaar        g:didmore = 'more'
6305d7c2df5SBram Moolenaar      }
6315d7c2df5SBram Moolenaar  DoSomething
6325d7c2df5SBram Moolenaar  call assert_equal('yes', g:didit)
6335d7c2df5SBram Moolenaar  call assert_equal('more', g:didmore)
6345d7c2df5SBram Moolenaar  unlet g:didit
6355d7c2df5SBram Moolenaar  unlet g:didmore
6366868634aSBram Moolenaar  delcommand DoSomething
6376868634aSBram Moolenaar
6386868634aSBram Moolenaar  command DoMap {
6396868634aSBram Moolenaar	echo [1, 2, 3]->map((_, v) => v + 1)
6406868634aSBram Moolenaar    }
6416868634aSBram Moolenaar  DoMap
6426868634aSBram Moolenaar  delcommand DoMap
6435d7c2df5SBram Moolenaar
6445d7c2df5SBram Moolenaar  let lines =<< trim END
6455d7c2df5SBram Moolenaar      command DoesNotEnd {
6465d7c2df5SBram Moolenaar         echo 'hello'
6475d7c2df5SBram Moolenaar  END
6485d7c2df5SBram Moolenaar  call CheckScriptFailure(lines, 'E1026:')
64963b91736SBram Moolenaar
65063b91736SBram Moolenaar  let lines =<< trim END
65163b91736SBram Moolenaar      command BarCommand {
65263b91736SBram Moolenaar         echo 'hello' | echo 'there'
65363b91736SBram Moolenaar        }
65463b91736SBram Moolenaar      BarCommand
65563b91736SBram Moolenaar  END
65663b91736SBram Moolenaar  call CheckScriptFailure(lines, 'E1231:')
6575d7c2df5SBram Moolenaarendfunc
6585d7c2df5SBram Moolenaar
659bdcba24dSBram Moolenaarfunc Test_delcommand_buffer()
660bdcba24dSBram Moolenaar  command Global echo 'global'
661bdcba24dSBram Moolenaar  command -buffer OneBuffer echo 'one'
662bdcba24dSBram Moolenaar  new
663bdcba24dSBram Moolenaar  command -buffer TwoBuffer echo 'two'
664bdcba24dSBram Moolenaar  call assert_equal(0, exists(':OneBuffer'))
665bdcba24dSBram Moolenaar  call assert_equal(2, exists(':Global'))
666bdcba24dSBram Moolenaar  call assert_equal(2, exists(':TwoBuffer'))
667bdcba24dSBram Moolenaar  delcommand -buffer TwoBuffer
668bdcba24dSBram Moolenaar  call assert_equal(0, exists(':TwoBuffer'))
669bdcba24dSBram Moolenaar  call assert_fails('delcommand -buffer Global', 'E1237:')
670bdcba24dSBram Moolenaar  call assert_fails('delcommand -buffer OneBuffer', 'E1237:')
671bdcba24dSBram Moolenaar  bwipe!
672bdcba24dSBram Moolenaar  call assert_equal(2, exists(':OneBuffer'))
673bdcba24dSBram Moolenaar  delcommand -buffer OneBuffer
674bdcba24dSBram Moolenaar  call assert_equal(0, exists(':OneBuffer'))
675bdcba24dSBram Moolenaar  call assert_fails('delcommand -buffer Global', 'E1237:')
676bdcba24dSBram Moolenaar  delcommand Global
677bdcba24dSBram Moolenaar  call assert_equal(0, exists(':Global'))
678bdcba24dSBram Moolenaarendfunc
679bdcba24dSBram Moolenaar
68024ebd83eSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
681