blob: 95d696913dbcceca492b72b7e7fb87fec15314fd [file] [log] [blame]
Bram Moolenaarcfe435d2020-04-25 20:02:55 +02001" Test commands that are not compiled in a :def function
2
Bram Moolenaar6378c4f2020-04-26 13:50:41 +02003source check.vim
Bram Moolenaarcfe435d2020-04-25 20:02:55 +02004source vim9.vim
Bram Moolenaare88c8e82020-11-01 17:03:37 +01005source term_util.vim
Bram Moolenaare9f262b2020-07-05 14:57:51 +02006source view_util.vim
Bram Moolenaarcfe435d2020-04-25 20:02:55 +02007
8def Test_edit_wildcards()
Bram Moolenaarac564082020-09-27 19:05:33 +02009 var filename = 'Xtest'
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020010 edit `=filename`
11 assert_equal('Xtest', bufname())
12
Bram Moolenaarac564082020-09-27 19:05:33 +020013 var filenr = 123
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020014 edit Xtest`=filenr`
15 assert_equal('Xtest123', bufname())
16
17 filenr = 77
18 edit `=filename``=filenr`
19 assert_equal('Xtest77', bufname())
20
21 edit X`=filename`xx`=filenr`yy
22 assert_equal('XXtestxx77yy', bufname())
Bram Moolenaar025cb1c2020-12-14 18:31:27 +010023
24 CheckDefFailure(['edit `=xxx`'], 'E1001:')
25 CheckDefFailure(['edit `="foo"'], 'E1083:')
Bram Moolenaarcfe435d2020-04-25 20:02:55 +020026enddef
27
Bram Moolenaar6378c4f2020-04-26 13:50:41 +020028def Test_hardcopy_wildcards()
29 CheckUnix
30 CheckFeature postscript
31
Bram Moolenaarac564082020-09-27 19:05:33 +020032 var outfile = 'print'
Bram Moolenaar6378c4f2020-04-26 13:50:41 +020033 hardcopy > X`=outfile`.ps
34 assert_true(filereadable('Xprint.ps'))
35
36 delete('Xprint.ps')
37enddef
38
39def Test_syn_include_wildcards()
40 writefile(['syn keyword Found found'], 'Xthemine.vim')
Bram Moolenaarac564082020-09-27 19:05:33 +020041 var save_rtp = &rtp
Bram Moolenaar6378c4f2020-04-26 13:50:41 +020042 &rtp = '.'
43
Bram Moolenaarac564082020-09-27 19:05:33 +020044 var fname = 'mine'
Bram Moolenaar6378c4f2020-04-26 13:50:41 +020045 syn include @Group Xthe`=fname`.vim
46 assert_match('Found.* contained found', execute('syn list Found'))
47
48 &rtp = save_rtp
49 delete('Xthemine.vim')
50enddef
51
Bram Moolenaar7e8967f2020-06-27 21:56:17 +020052def Test_echo_linebreak()
Bram Moolenaarac564082020-09-27 19:05:33 +020053 var lines =<< trim END
Bram Moolenaar7e8967f2020-06-27 21:56:17 +020054 vim9script
55 redir @a
56 echo 'one'
57 .. 'two'
58 redir END
59 assert_equal("\nonetwo", @a)
60 END
61 CheckScriptSuccess(lines)
62
63 lines =<< trim END
64 vim9script
65 redir @a
66 echo 11 +
67 77
68 - 22
69 redir END
70 assert_equal("\n66", @a)
71 END
72 CheckScriptSuccess(lines)
73enddef
74
Bram Moolenaar13106602020-10-04 16:06:05 +020075def Test_condition_types()
76 var lines =<< trim END
77 if 'text'
78 endif
79 END
Bram Moolenaarea2d4072020-11-12 12:08:51 +010080 CheckDefAndScriptFailure(lines, 'E1135:', 1)
Bram Moolenaar13106602020-10-04 16:06:05 +020081
82 lines =<< trim END
83 if [1]
84 endif
85 END
86 CheckDefFailure(lines, 'E1012:', 1)
87 CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
88
89 lines =<< trim END
90 g:cond = 'text'
91 if g:cond
92 endif
93 END
Bram Moolenaarea2d4072020-11-12 12:08:51 +010094 CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
Bram Moolenaar13106602020-10-04 16:06:05 +020095
96 lines =<< trim END
97 g:cond = 0
98 if g:cond
99 elseif 'text'
100 endif
101 END
102 CheckDefFailure(lines, 'E1012:', 3)
Bram Moolenaarea2d4072020-11-12 12:08:51 +0100103 CheckScriptFailure(['vim9script'] + lines, 'E1135:', 4)
Bram Moolenaar13106602020-10-04 16:06:05 +0200104
105 lines =<< trim END
106 if g:cond
107 elseif [1]
108 endif
109 END
110 CheckDefFailure(lines, 'E1012:', 2)
111 CheckScriptFailure(['vim9script'] + lines, 'E745:', 3)
112
113 lines =<< trim END
114 g:cond = 'text'
115 if 0
116 elseif g:cond
117 endif
118 END
Bram Moolenaarea2d4072020-11-12 12:08:51 +0100119 CheckDefExecAndScriptFailure(lines, 'E1135:', 3)
Bram Moolenaar13106602020-10-04 16:06:05 +0200120
121 lines =<< trim END
122 while 'text'
123 endwhile
124 END
125 CheckDefFailure(lines, 'E1012:', 1)
Bram Moolenaarea2d4072020-11-12 12:08:51 +0100126 CheckScriptFailure(['vim9script'] + lines, 'E1135:', 2)
Bram Moolenaar13106602020-10-04 16:06:05 +0200127
128 lines =<< trim END
129 while [1]
130 endwhile
131 END
132 CheckDefFailure(lines, 'E1012:', 1)
133 CheckScriptFailure(['vim9script'] + lines, 'E745:', 2)
134
135 lines =<< trim END
136 g:cond = 'text'
137 while g:cond
138 endwhile
139 END
Bram Moolenaarea2d4072020-11-12 12:08:51 +0100140 CheckDefExecAndScriptFailure(lines, 'E1135:', 2)
Bram Moolenaar13106602020-10-04 16:06:05 +0200141enddef
142
Bram Moolenaarfaf86262020-06-27 23:07:36 +0200143def Test_if_linebreak()
Bram Moolenaarac564082020-09-27 19:05:33 +0200144 var lines =<< trim END
Bram Moolenaarfaf86262020-06-27 23:07:36 +0200145 vim9script
146 if 1 &&
Bram Moolenaar2bb26582020-10-03 22:52:39 +0200147 true
148 || 1
Bram Moolenaarfaf86262020-06-27 23:07:36 +0200149 g:res = 42
150 endif
151 assert_equal(42, g:res)
152 END
153 CheckScriptSuccess(lines)
154 unlet g:res
155
156 lines =<< trim END
157 vim9script
158 if 1 &&
159 0
160 g:res = 0
161 elseif 0 ||
162 0
163 || 1
164 g:res = 12
165 endif
166 assert_equal(12, g:res)
167 END
168 CheckScriptSuccess(lines)
169 unlet g:res
170enddef
171
172def Test_while_linebreak()
Bram Moolenaarac564082020-09-27 19:05:33 +0200173 var lines =<< trim END
Bram Moolenaarfaf86262020-06-27 23:07:36 +0200174 vim9script
Bram Moolenaarac564082020-09-27 19:05:33 +0200175 var nr = 0
Bram Moolenaard5053d02020-06-28 15:51:16 +0200176 while nr <
177 10 + 3
178 nr = nr
179 + 4
180 endwhile
181 assert_equal(16, nr)
182 END
183 CheckScriptSuccess(lines)
184
185 lines =<< trim END
186 vim9script
Bram Moolenaarac564082020-09-27 19:05:33 +0200187 var nr = 0
Bram Moolenaard5053d02020-06-28 15:51:16 +0200188 while nr
189 <
190 10
191 +
192 3
193 nr = nr
194 +
195 4
Bram Moolenaarfaf86262020-06-27 23:07:36 +0200196 endwhile
197 assert_equal(16, nr)
198 END
199 CheckScriptSuccess(lines)
200enddef
Bram Moolenaarcfe435d2020-04-25 20:02:55 +0200201
Bram Moolenaarb7a78f72020-06-28 18:43:40 +0200202def Test_for_linebreak()
Bram Moolenaarac564082020-09-27 19:05:33 +0200203 var lines =<< trim END
Bram Moolenaarb7a78f72020-06-28 18:43:40 +0200204 vim9script
Bram Moolenaarac564082020-09-27 19:05:33 +0200205 var nr = 0
Bram Moolenaarb7a78f72020-06-28 18:43:40 +0200206 for x
207 in
208 [1, 2, 3, 4]
209 nr = nr + x
210 endfor
211 assert_equal(10, nr)
212 END
213 CheckScriptSuccess(lines)
214
215 lines =<< trim END
216 vim9script
Bram Moolenaarac564082020-09-27 19:05:33 +0200217 var nr = 0
Bram Moolenaarb7a78f72020-06-28 18:43:40 +0200218 for x
219 in
220 [1, 2,
221 3, 4
222 ]
223 nr = nr
224 +
225 x
226 endfor
227 assert_equal(10, nr)
228 END
229 CheckScriptSuccess(lines)
230enddef
231
Bram Moolenaard2ef6b32020-07-02 21:11:34 +0200232def Test_method_call_linebreak()
Bram Moolenaarac564082020-09-27 19:05:33 +0200233 var lines =<< trim END
Bram Moolenaar5f195932020-07-01 20:07:14 +0200234 vim9script
Bram Moolenaarac564082020-09-27 19:05:33 +0200235 var res = []
Bram Moolenaar5f195932020-07-01 20:07:14 +0200236 func RetArg(
237 arg
238 )
239 let s:res = a:arg
240 endfunc
241 [1,
242 2,
243 3]->RetArg()
244 assert_equal([1, 2, 3], res)
245 END
246 CheckScriptSuccess(lines)
247enddef
248
Bram Moolenaar683581e2020-10-22 21:22:58 +0200249def Test_skipped_expr_linebreak()
250 if 0
251 var x = []
252 ->map({ -> 0})
253 endif
254enddef
255
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200256def Test_dict_member()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100257 var test: dict<list<number>> = {data: [3, 1, 2]}
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200258 test.data->sort()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100259 assert_equal({data: [1, 2, 3]}, test)
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200260 test.data
261 ->reverse()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100262 assert_equal({data: [3, 2, 1]}, test)
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200263
Bram Moolenaarac564082020-09-27 19:05:33 +0200264 var lines =<< trim END
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200265 vim9script
Bram Moolenaare0de1712020-12-02 17:36:54 +0100266 var test: dict<list<number>> = {data: [3, 1, 2]}
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200267 test.data->sort()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100268 assert_equal({data: [1, 2, 3]}, test)
Bram Moolenaar0a47e092020-07-08 18:30:06 +0200269 END
270 CheckScriptSuccess(lines)
271enddef
272
Bram Moolenaare9f262b2020-07-05 14:57:51 +0200273def Test_bar_after_command()
274 def RedrawAndEcho()
Bram Moolenaarac564082020-09-27 19:05:33 +0200275 var x = 'did redraw'
Bram Moolenaare9f262b2020-07-05 14:57:51 +0200276 redraw | echo x
277 enddef
278 RedrawAndEcho()
279 assert_match('did redraw', Screenline(&lines))
280
Bram Moolenaar788123c2020-07-05 15:32:17 +0200281 def CallAndEcho()
Bram Moolenaarac564082020-09-27 19:05:33 +0200282 var x = 'did redraw'
Bram Moolenaar788123c2020-07-05 15:32:17 +0200283 reg_executing() | echo x
284 enddef
285 CallAndEcho()
286 assert_match('did redraw', Screenline(&lines))
287
Bram Moolenaare9f262b2020-07-05 14:57:51 +0200288 if has('unix')
289 # bar in filter write command does not start new command
290 def WriteToShell()
291 new
292 setline(1, 'some text')
293 w !cat | cat > Xoutfile
294 bwipe!
295 enddef
296 WriteToShell()
297 assert_equal(['some text'], readfile('Xoutfile'))
298 delete('Xoutfile')
299
300 # bar in filter read command does not start new command
301 def ReadFromShell()
302 new
303 r! echo hello there | cat > Xoutfile
304 r !echo again | cat >> Xoutfile
305 bwipe!
306 enddef
307 ReadFromShell()
308 assert_equal(['hello there', 'again'], readfile('Xoutfile'))
309 delete('Xoutfile')
310 endif
311enddef
312
Bram Moolenaarb074e8b2020-07-11 13:40:45 +0200313def Test_filter_is_not_modifier()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100314 var tags = [{a: 1, b: 2}, {x: 3, y: 4}]
Bram Moolenaarb074e8b2020-07-11 13:40:45 +0200315 filter(tags, { _, v -> has_key(v, 'x') ? 1 : 0 })
Bram Moolenaare0de1712020-12-02 17:36:54 +0100316 assert_equal([{x: 3, y: 4}], tags)
Bram Moolenaarb074e8b2020-07-11 13:40:45 +0200317enddef
318
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100319def Test_command_modifier_filter()
Bram Moolenaar4f6b6ed2020-10-29 20:24:34 +0100320 var lines =<< trim END
321 final expected = "\nType Name Content\n c \"c piyo"
322 @a = 'hoge'
323 @b = 'fuga'
324 @c = 'piyo'
325
326 assert_equal(execute('filter /piyo/ registers abc'), expected)
327 END
328 CheckDefAndScriptSuccess(lines)
329enddef
330
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100331def Test_win_command_modifiers()
332 assert_equal(1, winnr('$'))
333
334 set splitright
335 vsplit
336 assert_equal(2, winnr())
337 close
338 aboveleft vsplit
339 assert_equal(1, winnr())
340 close
341 set splitright&
342
343 vsplit
344 assert_equal(1, winnr())
345 close
346 belowright vsplit
347 assert_equal(2, winnr())
348 close
349 rightbelow vsplit
350 assert_equal(2, winnr())
351 close
352
Bram Moolenaar97a19002020-11-01 22:15:44 +0100353 if has('browse')
354 browse set
355 assert_equal('option-window', expand('%'))
356 close
357 endif
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100358
359 vsplit
360 botright split
361 assert_equal(3, winnr())
362 assert_equal(&columns, winwidth(0))
363 close
364 close
365
366 vsplit
367 topleft split
368 assert_equal(1, winnr())
369 assert_equal(&columns, winwidth(0))
370 close
371 close
372
373 gettabinfo()->len()->assert_equal(1)
374 tab split
375 gettabinfo()->len()->assert_equal(2)
376 tabclose
377
378 vertical new
379 assert_inrange(&columns / 2 - 2, &columns / 2 + 1, winwidth(0))
380 close
381enddef
382
383func Test_command_modifier_confirm()
384 CheckNotGui
385 CheckRunVimInTerminal
386
387 " Test for saving all the modified buffers
388 let lines =<< trim END
389 call setline(1, 'changed')
390 def Getout()
391 confirm write Xfile
392 enddef
393 END
394 call writefile(lines, 'Xconfirmscript')
395 call writefile(['empty'], 'Xfile')
396 let buf = RunVimInTerminal('-S Xconfirmscript', {'rows': 8})
397 call term_sendkeys(buf, ":call Getout()\n")
398 call WaitForAssert({-> assert_match('(Y)es, \[N\]o: ', term_getline(buf, 8))}, 1000)
399 call term_sendkeys(buf, "y")
Bram Moolenaar645cd3e2020-11-01 20:04:57 +0100400 call WaitForAssert({-> assert_match('(Y)es, \[N\]o: ', term_getline(buf, 8))}, 1000)
401 call term_sendkeys(buf, "\<CR>")
402 call TermWait(buf)
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100403 call StopVimInTerminal(buf)
404
405 call assert_equal(['changed'], readfile('Xfile'))
406 call delete('Xfile')
Bram Moolenaar645cd3e2020-11-01 20:04:57 +0100407 call delete('.Xfile.swp') " in case Vim was killed
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100408 call delete('Xconfirmscript')
409endfunc
410
411def Test_command_modifiers_keep()
412 if has('unix')
413 def DoTest(addRflag: bool, keepMarks: bool, hasMarks: bool)
414 new
415 setline(1, ['one', 'two', 'three'])
416 normal 1Gma
417 normal 2Gmb
418 normal 3Gmc
419 if addRflag
420 set cpo+=R
421 else
422 set cpo-=R
423 endif
424 if keepMarks
425 keepmarks :%!cat
426 else
427 :%!cat
428 endif
429 if hasMarks
430 assert_equal(1, line("'a"))
431 assert_equal(2, line("'b"))
432 assert_equal(3, line("'c"))
433 else
434 assert_equal(0, line("'a"))
435 assert_equal(0, line("'b"))
436 assert_equal(0, line("'c"))
437 endif
438 quit!
439 enddef
440 DoTest(false, false, true)
441 DoTest(true, false, false)
442 DoTest(false, true, true)
443 DoTest(true, true, true)
444 set cpo&vim
Bram Moolenaarf65b35b2020-11-04 18:02:44 +0100445
446 new
447 setline(1, ['one', 'two', 'three', 'four'])
448 assert_equal(4, line("$"))
449 normal 1Gma
450 normal 2Gmb
451 normal 3Gmc
452 lockmarks :1,2!wc
453 # line is deleted, marks don't move
454 assert_equal(3, line("$"))
455 assert_equal('four', getline(3))
456 assert_equal(1, line("'a"))
457 assert_equal(2, line("'b"))
458 assert_equal(3, line("'c"))
459 quit!
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100460 endif
461
Bram Moolenaarf65b35b2020-11-04 18:02:44 +0100462 edit Xone
463 edit Xtwo
464 assert_equal('Xone', expand('#'))
465 keepalt edit Xthree
466 assert_equal('Xone', expand('#'))
467
468 normal /a*b*
469 assert_equal('a*b*', histget("search"))
470 keeppatterns normal /c*d*
471 assert_equal('a*b*', histget("search"))
472
473 new
474 setline(1, range(10))
475 :10
476 normal gg
477 assert_equal(10, getpos("''")[1])
478 keepjumps normal 5G
479 assert_equal(10, getpos("''")[1])
480 quit!
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100481enddef
482
483def Test_command_modifier_other()
Bram Moolenaar66669fc2020-11-04 18:53:35 +0100484 new Xsomefile
485 setline(1, 'changed')
486 var buf = bufnr()
487 hide edit Xotherfile
488 var info = getbufinfo(buf)
489 assert_equal(1, info[0].hidden)
490 assert_equal(1, info[0].changed)
491 edit Xsomefile
492 bwipe!
493
494 au BufNewFile Xfile g:readFile = 1
495 g:readFile = 0
496 edit Xfile
497 assert_equal(1, g:readFile)
498 bwipe!
499 g:readFile = 0
500 noautocmd edit Xfile
501 assert_equal(0, g:readFile)
502
503 noswapfile edit XnoSwap
504 assert_equal(0, &l:swapfile)
505 bwipe!
506
507 var caught = false
508 try
509 sandbox !ls
510 catch /E48:/
511 caught = true
512 endtry
513 assert_true(caught)
514
515 :8verbose g:verbose_now = &verbose
516 assert_equal(8, g:verbose_now)
517 unlet g:verbose_now
518enddef
519
520def EchoHere()
521 echomsg 'here'
522enddef
523def EchoThere()
524 unsilent echomsg 'there'
525enddef
526
527def Test_modifier_silent_unsilent()
528 echomsg 'last one'
529 silent echomsg "text"
530 assert_equal("\nlast one", execute(':1messages'))
531
532 silent! echoerr "error"
533
534 echomsg 'last one'
535 silent EchoHere()
536 assert_equal("\nlast one", execute(':1messages'))
537
538 silent EchoThere()
539 assert_equal("\nthere", execute(':1messages'))
Bram Moolenaare88c8e82020-11-01 17:03:37 +0100540enddef
541
Bram Moolenaar36113e42020-11-02 21:08:47 +0100542def Test_range_after_command_modifier()
543 CheckScriptFailure(['vim9script', 'silent keepjump 1d _'], 'E1050:', 2)
544 new
545 setline(1, 'xxx')
546 CheckScriptSuccess(['vim9script', 'silent keepjump :1d _'])
547 assert_equal('', getline(1))
548 bwipe!
549enddef
550
Bram Moolenaar007f9d62020-07-06 23:04:49 +0200551def Test_eval_command()
Bram Moolenaarac564082020-09-27 19:05:33 +0200552 var from = 3
553 var to = 5
Bram Moolenaar007f9d62020-07-06 23:04:49 +0200554 g:val = 111
555 def Increment(nrs: list<number>)
556 for nr in nrs
557 g:val += nr
558 endfor
559 enddef
560 eval range(from, to)
561 ->Increment()
562 assert_equal(111 + 3 + 4 + 5, g:val)
563 unlet g:val
Bram Moolenaard0fe6202020-12-05 17:11:12 +0100564
565 var lines =<< trim END
566 vim9script
567 g:caught = 'no'
568 try
569 eval 123 || 0
570 catch
571 g:caught = 'yes'
572 endtry
573 assert_equal('yes', g:caught)
574 unlet g:caught
575 END
576 CheckScriptSuccess(lines)
Bram Moolenaar007f9d62020-07-06 23:04:49 +0200577enddef
578
Bram Moolenaarb8a92962020-08-20 18:02:47 +0200579def Test_map_command()
Bram Moolenaarac564082020-09-27 19:05:33 +0200580 var lines =<< trim END
Bram Moolenaarb8a92962020-08-20 18:02:47 +0200581 nnoremap <F3> :echo 'hit F3 #'<CR>
582 assert_equal(":echo 'hit F3 #'<CR>", maparg("<F3>", "n"))
583 END
584 CheckDefSuccess(lines)
585 CheckScriptSuccess(['vim9script'] + lines)
586enddef
587
Bram Moolenaarb3ea36c2020-08-23 21:46:32 +0200588def Test_normal_command()
589 new
590 setline(1, 'doesnotexist')
Bram Moolenaarac564082020-09-27 19:05:33 +0200591 var caught = 0
Bram Moolenaarb3ea36c2020-08-23 21:46:32 +0200592 try
593 exe "norm! \<C-]>"
594 catch /E433/
595 caught = 2
596 endtry
597 assert_equal(2, caught)
598
599 try
600 exe "norm! 3\<C-]>"
601 catch /E433/
602 caught = 3
603 endtry
604 assert_equal(3, caught)
605 bwipe!
606enddef
607
Bram Moolenaarc3516f72020-09-08 22:45:35 +0200608def Test_put_command()
609 new
610 @p = 'ppp'
611 put p
612 assert_equal('ppp', getline(2))
613
614 put ='below'
615 assert_equal('below', getline(3))
616 put! ='above'
617 assert_equal('above', getline(3))
618 assert_equal('below', getline(4))
619
Bram Moolenaar08597872020-12-10 19:43:40 +0100620 # compute range at runtime
621 setline(1, range(1, 8))
622 @a = 'aaa'
623 :$-2put a
624 assert_equal('aaa', getline(7))
625
626 setline(1, range(1, 8))
627 :2
628 :+2put! a
629 assert_equal('aaa', getline(4))
630
Bram Moolenaarc3516f72020-09-08 22:45:35 +0200631 bwipe!
Bram Moolenaar025cb1c2020-12-14 18:31:27 +0100632
633 CheckDefFailure(['put =xxx'], 'E1001:')
634enddef
635
636def Test_put_with_linebreak()
637 new
638 var lines =<< trim END
639 vim9script
640 pu =split('abc', '\zs')
641 ->join()
642 END
643 CheckScriptSuccess(lines)
644 getline(2)->assert_equal('a b c')
645 bwipe!
Bram Moolenaarc3516f72020-09-08 22:45:35 +0200646enddef
647
Bram Moolenaar3bd8de42020-09-14 16:37:34 +0200648def Test_command_star_range()
649 new
650 setline(1, ['xxx foo xxx', 'xxx bar xxx', 'xxx foo xx bar'])
651 setpos("'<", [0, 1, 0, 0])
652 setpos("'>", [0, 3, 0, 0])
653 :*s/\(foo\|bar\)/baz/g
654 getline(1, 3)->assert_equal(['xxx baz xxx', 'xxx baz xxx', 'xxx baz xx baz'])
655
656 bwipe!
657enddef
658
Bram Moolenaar20d89e02020-10-20 23:11:33 +0200659def Test_f_args()
660 var lines =<< trim END
661 vim9script
662
663 func SaveCmdArgs(...)
664 let g:args = a:000
665 endfunc
666
667 command -nargs=* TestFArgs call SaveCmdArgs(<f-args>)
668
669 TestFArgs
670 assert_equal([], g:args)
671
672 TestFArgs one two three
673 assert_equal(['one', 'two', 'three'], g:args)
674 END
675 CheckScriptSuccess(lines)
676enddef
Bram Moolenaarc3516f72020-09-08 22:45:35 +0200677
Bram Moolenaar95388e32020-11-20 21:07:00 +0100678def Test_star_command()
679 var lines =<< trim END
680 vim9script
681 @s = 'g:success = 8'
682 set cpo+=*
683 exe '*s'
684 assert_equal(8, g:success)
685 unlet g:success
686 set cpo-=*
687 assert_fails("exe '*s'", 'E1050:')
688 END
689 CheckScriptSuccess(lines)
690enddef
691
Bram Moolenaar47a2abf2020-11-25 20:12:11 +0100692def Test_cmd_argument_without_colon()
693 new Xfile
694 setline(1, ['a', 'b', 'c', 'd'])
695 write
696 edit +3 %
697 assert_equal(3, getcurpos()[1])
698 edit +/a %
699 assert_equal(1, getcurpos()[1])
700 bwipe
701 delete('Xfile')
702enddef
703
Bram Moolenaarb7a78f72020-06-28 18:43:40 +0200704
Bram Moolenaarcfe435d2020-04-25 20:02:55 +0200705" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker