172defda8SBram Moolenaar" Test argument list commands 272defda8SBram Moolenaar 3494e9069SBram Moolenaarsource check.vim 49f6277bdSBram Moolenaarsource shared.vim 59f6277bdSBram Moolenaarsource term_util.vim 69f6277bdSBram Moolenaar 7*3cad4703SShougo Matsushitafunc Reset_arglist() 8*3cad4703SShougo Matsushita args a | %argd 9*3cad4703SShougo Matsushitaendfunc 10*3cad4703SShougo Matsushita 1172defda8SBram Moolenaarfunc Test_argidx() 1272defda8SBram Moolenaar args a b c 1372defda8SBram Moolenaar last 1472defda8SBram Moolenaar call assert_equal(2, argidx()) 1572defda8SBram Moolenaar %argdelete 1672defda8SBram Moolenaar call assert_equal(0, argidx()) 1769a92fb5SBram Moolenaar " doing it again doesn't result in an error 1869a92fb5SBram Moolenaar %argdelete 1969a92fb5SBram Moolenaar call assert_equal(0, argidx()) 2069a92fb5SBram Moolenaar call assert_fails('2argdelete', 'E16:') 2172defda8SBram Moolenaar 2272defda8SBram Moolenaar args a b c 2372defda8SBram Moolenaar call assert_equal(0, argidx()) 2472defda8SBram Moolenaar next 2572defda8SBram Moolenaar call assert_equal(1, argidx()) 2672defda8SBram Moolenaar next 2772defda8SBram Moolenaar call assert_equal(2, argidx()) 2872defda8SBram Moolenaar 1argdelete 2972defda8SBram Moolenaar call assert_equal(1, argidx()) 3072defda8SBram Moolenaar 1argdelete 3172defda8SBram Moolenaar call assert_equal(0, argidx()) 3272defda8SBram Moolenaar 1argdelete 3372defda8SBram Moolenaar call assert_equal(0, argidx()) 3472defda8SBram Moolenaarendfunc 35a24f0a55SBram Moolenaar 36a24f0a55SBram Moolenaarfunc Test_argadd() 37*3cad4703SShougo Matsushita call Reset_arglist() 38*3cad4703SShougo Matsushita 39a24f0a55SBram Moolenaar %argdelete 40a24f0a55SBram Moolenaar argadd a b c 41a24f0a55SBram Moolenaar call assert_equal(0, argidx()) 42a24f0a55SBram Moolenaar 43a24f0a55SBram Moolenaar %argdelete 44a24f0a55SBram Moolenaar argadd a 45a24f0a55SBram Moolenaar call assert_equal(0, argidx()) 46a24f0a55SBram Moolenaar argadd b c d 47a24f0a55SBram Moolenaar call assert_equal(0, argidx()) 48a24f0a55SBram Moolenaar 49a24f0a55SBram Moolenaar call Init_abc() 50a24f0a55SBram Moolenaar argadd x 51a24f0a55SBram Moolenaar call Assert_argc(['a', 'b', 'x', 'c']) 52a24f0a55SBram Moolenaar call assert_equal(1, argidx()) 53a24f0a55SBram Moolenaar 54a24f0a55SBram Moolenaar call Init_abc() 55a24f0a55SBram Moolenaar 0argadd x 56a24f0a55SBram Moolenaar call Assert_argc(['x', 'a', 'b', 'c']) 57a24f0a55SBram Moolenaar call assert_equal(2, argidx()) 58a24f0a55SBram Moolenaar 59a24f0a55SBram Moolenaar call Init_abc() 60a24f0a55SBram Moolenaar 1argadd x 61a24f0a55SBram Moolenaar call Assert_argc(['a', 'x', 'b', 'c']) 62a24f0a55SBram Moolenaar call assert_equal(2, argidx()) 63a24f0a55SBram Moolenaar 64a24f0a55SBram Moolenaar call Init_abc() 65a24f0a55SBram Moolenaar $argadd x 66a24f0a55SBram Moolenaar call Assert_argc(['a', 'b', 'c', 'x']) 67a24f0a55SBram Moolenaar call assert_equal(1, argidx()) 68a24f0a55SBram Moolenaar 69a24f0a55SBram Moolenaar call Init_abc() 70a24f0a55SBram Moolenaar $argadd x 71a24f0a55SBram Moolenaar +2argadd y 72a24f0a55SBram Moolenaar call Assert_argc(['a', 'b', 'c', 'x', 'y']) 73a24f0a55SBram Moolenaar call assert_equal(1, argidx()) 742faa29f8SBram Moolenaar 752faa29f8SBram Moolenaar %argd 762faa29f8SBram Moolenaar edit d 772faa29f8SBram Moolenaar arga 78398ee732SBram Moolenaar call assert_equal(1, len(argv())) 79398ee732SBram Moolenaar call assert_equal('d', get(argv(), 0, '')) 80398ee732SBram Moolenaar 81398ee732SBram Moolenaar %argd 82398ee732SBram Moolenaar edit some\ file 83398ee732SBram Moolenaar arga 84398ee732SBram Moolenaar call assert_equal(1, len(argv())) 85398ee732SBram Moolenaar call assert_equal('some file', get(argv(), 0, '')) 862faa29f8SBram Moolenaar 872faa29f8SBram Moolenaar %argd 882faa29f8SBram Moolenaar new 892faa29f8SBram Moolenaar arga 90398ee732SBram Moolenaar call assert_equal(0, len(argv())) 91bfb2bb16SDominique Pelle 92bfb2bb16SDominique Pelle if has('unix') 93bfb2bb16SDominique Pelle call assert_fails('argadd `Xdoes_not_exist`', 'E479:') 94bfb2bb16SDominique Pelle endif 95a24f0a55SBram Moolenaarendfunc 96a24f0a55SBram Moolenaar 9732bbd009SBram Moolenaarfunc Test_argadd_empty_curbuf() 9832bbd009SBram Moolenaar new 9932bbd009SBram Moolenaar let curbuf = bufnr('%') 10032bbd009SBram Moolenaar call writefile(['test', 'Xargadd'], 'Xargadd') 10132bbd009SBram Moolenaar " must not re-use the current buffer. 10232bbd009SBram Moolenaar argadd Xargadd 10332bbd009SBram Moolenaar call assert_equal(curbuf, bufnr('%')) 10432bbd009SBram Moolenaar call assert_equal('', bufname('%')) 10502b31110SBram Moolenaar call assert_equal(1, '$'->line()) 10632bbd009SBram Moolenaar rew 107073e4b92SBram Moolenaar call assert_notequal(curbuf, '%'->bufnr()) 108073e4b92SBram Moolenaar call assert_equal('Xargadd', '%'->bufname()) 10932bbd009SBram Moolenaar call assert_equal(2, line('$')) 11032bbd009SBram Moolenaar 111d339828bSBram Moolenaar call delete('Xargadd') 11232bbd009SBram Moolenaar %argd 11332bbd009SBram Moolenaar bwipe! 11432bbd009SBram Moolenaarendfunc 11532bbd009SBram Moolenaar 116a24f0a55SBram Moolenaarfunc Init_abc() 117a24f0a55SBram Moolenaar args a b c 118a24f0a55SBram Moolenaar next 119a24f0a55SBram Moolenaarendfunc 120a24f0a55SBram Moolenaar 121a24f0a55SBram Moolenaarfunc Assert_argc(l) 122a24f0a55SBram Moolenaar call assert_equal(len(a:l), argc()) 123a24f0a55SBram Moolenaar let i = 0 124a24f0a55SBram Moolenaar while i < len(a:l) && i < argc() 125a24f0a55SBram Moolenaar call assert_equal(a:l[i], argv(i)) 126a24f0a55SBram Moolenaar let i += 1 127a24f0a55SBram Moolenaar endwhile 128a24f0a55SBram Moolenaarendfunc 12999dbe291SBram Moolenaar 13099dbe291SBram Moolenaar" Test for [count]argument and [count]argdelete commands 13199dbe291SBram Moolenaar" Ported from the test_argument_count.in test script 1328c34aa09SBram Moolenaarfunc Test_argument() 133*3cad4703SShougo Matsushita call Reset_arglist() 13499dbe291SBram Moolenaar 13599dbe291SBram Moolenaar let save_hidden = &hidden 13699dbe291SBram Moolenaar set hidden 13799dbe291SBram Moolenaar 13899dbe291SBram Moolenaar let g:buffers = [] 13999dbe291SBram Moolenaar augroup TEST 14099dbe291SBram Moolenaar au BufEnter * call add(buffers, expand('%:t')) 14199dbe291SBram Moolenaar augroup END 14299dbe291SBram Moolenaar 14399dbe291SBram Moolenaar argadd a b c d 14499dbe291SBram Moolenaar $argu 14599dbe291SBram Moolenaar $-argu 14699dbe291SBram Moolenaar -argu 14799dbe291SBram Moolenaar 1argu 14899dbe291SBram Moolenaar +2argu 14999dbe291SBram Moolenaar 15099dbe291SBram Moolenaar augroup TEST 15199dbe291SBram Moolenaar au! 15299dbe291SBram Moolenaar augroup END 15399dbe291SBram Moolenaar 15499dbe291SBram Moolenaar call assert_equal(['d', 'c', 'b', 'a', 'c'], g:buffers) 15599dbe291SBram Moolenaar 156949f1989SBram Moolenaar call assert_equal("\na b [c] d ", execute(':args')) 15799dbe291SBram Moolenaar 15899dbe291SBram Moolenaar .argd 15999dbe291SBram Moolenaar call assert_equal(['a', 'b', 'd'], argv()) 16099dbe291SBram Moolenaar 16199dbe291SBram Moolenaar -argd 16299dbe291SBram Moolenaar call assert_equal(['a', 'd'], argv()) 16399dbe291SBram Moolenaar 16499dbe291SBram Moolenaar $argd 16599dbe291SBram Moolenaar call assert_equal(['a'], argv()) 16699dbe291SBram Moolenaar 16799dbe291SBram Moolenaar 1arga c 16899dbe291SBram Moolenaar 1arga b 16999dbe291SBram Moolenaar $argu 17099dbe291SBram Moolenaar $arga x 17199dbe291SBram Moolenaar call assert_equal(['a', 'b', 'c', 'x'], argv()) 17299dbe291SBram Moolenaar 17330141704SBram Moolenaar 0arga y 17430141704SBram Moolenaar call assert_equal(['y', 'a', 'b', 'c', 'x'], argv()) 17599dbe291SBram Moolenaar 17699dbe291SBram Moolenaar %argd 17799dbe291SBram Moolenaar call assert_equal([], argv()) 17899dbe291SBram Moolenaar 17999dbe291SBram Moolenaar arga a b c d e f 18099dbe291SBram Moolenaar 2,$-argd 18199dbe291SBram Moolenaar call assert_equal(['a', 'f'], argv()) 18299dbe291SBram Moolenaar 18399dbe291SBram Moolenaar let &hidden = save_hidden 18499dbe291SBram Moolenaar 1859800bfe0SBram Moolenaar let save_columns = &columns 1869800bfe0SBram Moolenaar let &columns = 79 1877147820cSBram Moolenaar try 1889800bfe0SBram Moolenaar exe 'args ' .. join(range(1, 81)) 1899800bfe0SBram Moolenaar call assert_equal(join([ 1909800bfe0SBram Moolenaar \ '', 1919800bfe0SBram Moolenaar \ '[1] 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 ', 1929800bfe0SBram Moolenaar \ '2 7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 ', 1939800bfe0SBram Moolenaar \ '3 8 13 18 23 28 33 38 43 48 53 58 63 68 73 78 ', 1949800bfe0SBram Moolenaar \ '4 9 14 19 24 29 34 39 44 49 54 59 64 69 74 79 ', 1959800bfe0SBram Moolenaar \ '5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 ', 1969800bfe0SBram Moolenaar \ ], "\n"), 1979800bfe0SBram Moolenaar \ execute('args')) 1989800bfe0SBram Moolenaar 1999800bfe0SBram Moolenaar " No trailing newline with one item per row. 2009800bfe0SBram Moolenaar let long_arg = repeat('X', 81) 2019800bfe0SBram Moolenaar exe 'args ' .. long_arg 2029800bfe0SBram Moolenaar call assert_equal("\n[".long_arg.']', execute('args')) 2037147820cSBram Moolenaar finally 2049800bfe0SBram Moolenaar let &columns = save_columns 2057147820cSBram Moolenaar endtry 2069800bfe0SBram Moolenaar 20799dbe291SBram Moolenaar " Setting argument list should fail when the current buffer has unsaved 20899dbe291SBram Moolenaar " changes 20999dbe291SBram Moolenaar %argd 21099dbe291SBram Moolenaar enew! 21199dbe291SBram Moolenaar set modified 21299dbe291SBram Moolenaar call assert_fails('args x y z', 'E37:') 21399dbe291SBram Moolenaar args! x y z 21499dbe291SBram Moolenaar call assert_equal(['x', 'y', 'z'], argv()) 21599dbe291SBram Moolenaar call assert_equal('x', expand('%:t')) 21699dbe291SBram Moolenaar 21799dbe291SBram Moolenaar last | enew | argu 21899dbe291SBram Moolenaar call assert_equal('z', expand('%:t')) 21999dbe291SBram Moolenaar 22099dbe291SBram Moolenaar %argdelete 22199dbe291SBram Moolenaar call assert_fails('argument', 'E163:') 2228c34aa09SBram Moolenaarendfunc 22399dbe291SBram Moolenaar 2245d69da46SBram Moolenaarfunc Test_list_arguments() 225*3cad4703SShougo Matsushita call Reset_arglist() 2265d69da46SBram Moolenaar 2275d69da46SBram Moolenaar " four args half the screen width makes two lines with two columns 2285d69da46SBram Moolenaar let aarg = repeat('a', &columns / 2 - 4) 2295d69da46SBram Moolenaar let barg = repeat('b', &columns / 2 - 4) 2305d69da46SBram Moolenaar let carg = repeat('c', &columns / 2 - 4) 2315d69da46SBram Moolenaar let darg = repeat('d', &columns / 2 - 4) 2325d69da46SBram Moolenaar exe 'argadd ' aarg barg carg darg 2335d69da46SBram Moolenaar 2345d69da46SBram Moolenaar redir => result 2355d69da46SBram Moolenaar args 2365d69da46SBram Moolenaar redir END 2375d69da46SBram Moolenaar call assert_match('\[' . aarg . '] \+' . carg . '\n' . barg . ' \+' . darg, trim(result)) 2385d69da46SBram Moolenaar 2395d69da46SBram Moolenaar " if one arg is longer than half the screen make one column 2405d69da46SBram Moolenaar exe 'argdel' aarg 2415d69da46SBram Moolenaar let aarg = repeat('a', &columns / 2 + 2) 2425d69da46SBram Moolenaar exe '0argadd' aarg 2435d69da46SBram Moolenaar redir => result 2445d69da46SBram Moolenaar args 2455d69da46SBram Moolenaar redir END 2465d69da46SBram Moolenaar call assert_match(aarg . '\n\[' . barg . ']\n' . carg . '\n' . darg, trim(result)) 2475d69da46SBram Moolenaar 2485d69da46SBram Moolenaar %argdelete 2495d69da46SBram Moolenaarendfunc 2505d69da46SBram Moolenaar 2512ac372ccSBram Moolenaarfunc Test_args_with_quote() 2523de8c2d1SBram Moolenaar " Only on Unix can a file name include a double quote. 2536d91bcb4SBram Moolenaar CheckUnix 2546d91bcb4SBram Moolenaar 2552ac372ccSBram Moolenaar args \"foobar 2562ac372ccSBram Moolenaar call assert_equal('"foobar', argv(0)) 2572ac372ccSBram Moolenaar %argdelete 2582ac372ccSBram Moolenaarendfunc 2592ac372ccSBram Moolenaar 26099dbe291SBram Moolenaar" Test for 0argadd and 0argedit 26199dbe291SBram Moolenaar" Ported from the test_argument_0count.in test script 2628c34aa09SBram Moolenaarfunc Test_zero_argadd() 263*3cad4703SShougo Matsushita call Reset_arglist() 26499dbe291SBram Moolenaar 26599dbe291SBram Moolenaar arga a b c d 26699dbe291SBram Moolenaar 2argu 26799dbe291SBram Moolenaar 0arga added 26899dbe291SBram Moolenaar call assert_equal(['added', 'a', 'b', 'c', 'd'], argv()) 26999dbe291SBram Moolenaar 27099dbe291SBram Moolenaar 2argu 27199dbe291SBram Moolenaar arga third 27299dbe291SBram Moolenaar call assert_equal(['added', 'a', 'third', 'b', 'c', 'd'], argv()) 27399dbe291SBram Moolenaar 27499dbe291SBram Moolenaar %argd 27599dbe291SBram Moolenaar arga a b c d 27699dbe291SBram Moolenaar 2argu 27799dbe291SBram Moolenaar 0arge edited 27899dbe291SBram Moolenaar call assert_equal(['edited', 'a', 'b', 'c', 'd'], argv()) 27999dbe291SBram Moolenaar 28099dbe291SBram Moolenaar 2argu 28199dbe291SBram Moolenaar arga third 28299dbe291SBram Moolenaar call assert_equal(['edited', 'a', 'third', 'b', 'c', 'd'], argv()) 28390305c66SBram Moolenaar 28490305c66SBram Moolenaar 2argu 28590305c66SBram Moolenaar argedit file\ with\ spaces another file 28690305c66SBram Moolenaar call assert_equal(['edited', 'a', 'file with spaces', 'another', 'file', 'third', 'b', 'c', 'd'], argv()) 28790305c66SBram Moolenaar call assert_equal('file with spaces', expand('%')) 2888c34aa09SBram Moolenaarendfunc 28999dbe291SBram Moolenaar 29099dbe291SBram Moolenaar" Test for argc() 2918c34aa09SBram Moolenaarfunc Test_argc() 29299dbe291SBram Moolenaar call Reset_arglist() 29399dbe291SBram Moolenaar call assert_equal(0, argc()) 29499dbe291SBram Moolenaar argadd a b 29599dbe291SBram Moolenaar call assert_equal(2, argc()) 2968c34aa09SBram Moolenaarendfunc 29799dbe291SBram Moolenaar 29899dbe291SBram Moolenaar" Test for arglistid() 2998c34aa09SBram Moolenaarfunc Test_arglistid() 30099dbe291SBram Moolenaar call Reset_arglist() 30199dbe291SBram Moolenaar arga a b 30299dbe291SBram Moolenaar call assert_equal(0, arglistid()) 30399dbe291SBram Moolenaar split 30499dbe291SBram Moolenaar arglocal 30599dbe291SBram Moolenaar call assert_equal(1, arglistid()) 30699dbe291SBram Moolenaar tabnew | tabfirst 30799dbe291SBram Moolenaar call assert_equal(0, arglistid(2)) 30899dbe291SBram Moolenaar call assert_equal(1, arglistid(1, 1)) 30999dbe291SBram Moolenaar call assert_equal(0, arglistid(2, 1)) 31099dbe291SBram Moolenaar call assert_equal(1, arglistid(1, 2)) 31199dbe291SBram Moolenaar tabonly | only | enew! 31299dbe291SBram Moolenaar argglobal 31399dbe291SBram Moolenaar call assert_equal(0, arglistid()) 3148c34aa09SBram Moolenaarendfunc 31599dbe291SBram Moolenaar 316e6e3989cSBram Moolenaar" Tests for argv() and argc() 3178c34aa09SBram Moolenaarfunc Test_argv() 31899dbe291SBram Moolenaar call Reset_arglist() 31999dbe291SBram Moolenaar call assert_equal([], argv()) 32099dbe291SBram Moolenaar call assert_equal("", argv(2)) 321e6e3989cSBram Moolenaar call assert_equal(0, argc()) 32299dbe291SBram Moolenaar argadd a b c d 323e6e3989cSBram Moolenaar call assert_equal(4, argc()) 32499dbe291SBram Moolenaar call assert_equal('c', argv(2)) 325e6e3989cSBram Moolenaar 326e6e3989cSBram Moolenaar let w1_id = win_getid() 327e6e3989cSBram Moolenaar split 328e6e3989cSBram Moolenaar let w2_id = win_getid() 329e6e3989cSBram Moolenaar arglocal 330e6e3989cSBram Moolenaar args e f g 331e6e3989cSBram Moolenaar tabnew 332e6e3989cSBram Moolenaar let w3_id = win_getid() 333e6e3989cSBram Moolenaar split 334e6e3989cSBram Moolenaar let w4_id = win_getid() 335e6e3989cSBram Moolenaar argglobal 336e6e3989cSBram Moolenaar tabfirst 337e6e3989cSBram Moolenaar call assert_equal(4, argc(w1_id)) 338e6e3989cSBram Moolenaar call assert_equal('b', argv(1, w1_id)) 339e6e3989cSBram Moolenaar call assert_equal(['a', 'b', 'c', 'd'], argv(-1, w1_id)) 340e6e3989cSBram Moolenaar 341e6e3989cSBram Moolenaar call assert_equal(3, argc(w2_id)) 342e6e3989cSBram Moolenaar call assert_equal('f', argv(1, w2_id)) 343e6e3989cSBram Moolenaar call assert_equal(['e', 'f', 'g'], argv(-1, w2_id)) 344e6e3989cSBram Moolenaar 345e6e3989cSBram Moolenaar call assert_equal(3, argc(w3_id)) 346e6e3989cSBram Moolenaar call assert_equal('e', argv(0, w3_id)) 347e6e3989cSBram Moolenaar call assert_equal(['e', 'f', 'g'], argv(-1, w3_id)) 348e6e3989cSBram Moolenaar 349e6e3989cSBram Moolenaar call assert_equal(4, argc(w4_id)) 350e6e3989cSBram Moolenaar call assert_equal('c', argv(2, w4_id)) 351e6e3989cSBram Moolenaar call assert_equal(['a', 'b', 'c', 'd'], argv(-1, w4_id)) 352e6e3989cSBram Moolenaar 353e6e3989cSBram Moolenaar call assert_equal(4, argc(-1)) 354e6e3989cSBram Moolenaar call assert_equal(3, argc()) 355e6e3989cSBram Moolenaar call assert_equal('d', argv(3, -1)) 356e6e3989cSBram Moolenaar call assert_equal(['a', 'b', 'c', 'd'], argv(-1, -1)) 357e6e3989cSBram Moolenaar tabonly | only | enew! 358e6e3989cSBram Moolenaar " Negative test cases 359e6e3989cSBram Moolenaar call assert_equal(-1, argc(100)) 360e6e3989cSBram Moolenaar call assert_equal('', argv(1, 100)) 361e6e3989cSBram Moolenaar call assert_equal([], argv(-1, 100)) 362e6e3989cSBram Moolenaar call assert_equal('', argv(10, -1)) 3638c34aa09SBram Moolenaarendfunc 36499dbe291SBram Moolenaar 36599dbe291SBram Moolenaar" Test for the :argedit command 3668c34aa09SBram Moolenaarfunc Test_argedit() 36799dbe291SBram Moolenaar call Reset_arglist() 36899dbe291SBram Moolenaar argedit a 36999dbe291SBram Moolenaar call assert_equal(['a'], argv()) 37099dbe291SBram Moolenaar call assert_equal('a', expand('%:t')) 37199dbe291SBram Moolenaar argedit b 37299dbe291SBram Moolenaar call assert_equal(['a', 'b'], argv()) 37399dbe291SBram Moolenaar call assert_equal('b', expand('%:t')) 37499dbe291SBram Moolenaar argedit a 37590305c66SBram Moolenaar call assert_equal(['a', 'b', 'a'], argv()) 37699dbe291SBram Moolenaar call assert_equal('a', expand('%:t')) 3779b50bba6SBram Moolenaar " When file name case is ignored, an existing buffer with only case 378cf1ba35fSBram Moolenaar " difference is re-used. 37990305c66SBram Moolenaar argedit C D 38090305c66SBram Moolenaar call assert_equal('C', expand('%:t')) 38190305c66SBram Moolenaar call assert_equal(['a', 'b', 'a', 'C', 'D'], argv()) 38299dbe291SBram Moolenaar argedit c 3839b50bba6SBram Moolenaar if has('fname_case') 38490305c66SBram Moolenaar call assert_equal(['a', 'b', 'a', 'C', 'c', 'D'], argv()) 3859b50bba6SBram Moolenaar else 3869b50bba6SBram Moolenaar call assert_equal(['a', 'b', 'a', 'C', 'C', 'D'], argv()) 3879b50bba6SBram Moolenaar endif 38899dbe291SBram Moolenaar 0argedit x 3899b50bba6SBram Moolenaar if has('fname_case') 39090305c66SBram Moolenaar call assert_equal(['x', 'a', 'b', 'a', 'C', 'c', 'D'], argv()) 3919b50bba6SBram Moolenaar else 3929b50bba6SBram Moolenaar call assert_equal(['x', 'a', 'b', 'a', 'C', 'C', 'D'], argv()) 3939b50bba6SBram Moolenaar endif 39499dbe291SBram Moolenaar enew! | set modified 39599dbe291SBram Moolenaar call assert_fails('argedit y', 'E37:') 39699dbe291SBram Moolenaar argedit! y 3979b50bba6SBram Moolenaar if has('fname_case') 39890305c66SBram Moolenaar call assert_equal(['x', 'y', 'y', 'a', 'b', 'a', 'C', 'c', 'D'], argv()) 3999b50bba6SBram Moolenaar else 4009b50bba6SBram Moolenaar call assert_equal(['x', 'y', 'y', 'a', 'b', 'a', 'C', 'C', 'D'], argv()) 4019b50bba6SBram Moolenaar endif 40299dbe291SBram Moolenaar %argd 4039b50bba6SBram Moolenaar bwipe! C 4049b50bba6SBram Moolenaar bwipe! D 40546a53dfcSBram Moolenaar 40646a53dfcSBram Moolenaar " :argedit reuses the current buffer if it is empty 40746a53dfcSBram Moolenaar %argd 40846a53dfcSBram Moolenaar " make sure to use a new buffer number for x when it is loaded 40946a53dfcSBram Moolenaar bw! x 41046a53dfcSBram Moolenaar new 411a8eee21eSBram Moolenaar let a = bufnr() 41246a53dfcSBram Moolenaar argedit x 413a8eee21eSBram Moolenaar call assert_equal(a, bufnr()) 414a8eee21eSBram Moolenaar call assert_equal('x', bufname()) 41546a53dfcSBram Moolenaar %argd 41646a53dfcSBram Moolenaar bw! x 4178c34aa09SBram Moolenaarendfunc 41899dbe291SBram Moolenaar 41999dbe291SBram Moolenaar" Test for the :argdelete command 4208c34aa09SBram Moolenaarfunc Test_argdelete() 42199dbe291SBram Moolenaar call Reset_arglist() 42299dbe291SBram Moolenaar args aa a aaa b bb 42399dbe291SBram Moolenaar argdelete a* 42499dbe291SBram Moolenaar call assert_equal(['b', 'bb'], argv()) 42599dbe291SBram Moolenaar call assert_equal('aa', expand('%:t')) 42699dbe291SBram Moolenaar last 42799dbe291SBram Moolenaar argdelete % 42899dbe291SBram Moolenaar call assert_equal(['b'], argv()) 4297b22117cSBram Moolenaar call assert_fails('argdelete', 'E610:') 43099dbe291SBram Moolenaar call assert_fails('1,100argdelete', 'E16:') 431531be47aSBram Moolenaar call assert_fails('argdel /\)/', 'E55:') 432afe8cf61SBram Moolenaar call assert_fails('1argdel 1', 'E474:') 4337b22117cSBram Moolenaar 4347b22117cSBram Moolenaar call Reset_arglist() 4357b22117cSBram Moolenaar args a b c d 4367b22117cSBram Moolenaar next 4377b22117cSBram Moolenaar argdel 4387b22117cSBram Moolenaar call Assert_argc(['a', 'c', 'd']) 4397b22117cSBram Moolenaar %argdel 440bfb2bb16SDominique Pelle 441bfb2bb16SDominique Pelle call assert_fails('argdel does_not_exist', 'E480:') 4428c34aa09SBram Moolenaarendfunc 44399dbe291SBram Moolenaar 444b513d307SBram Moolenaarfunc Test_argdelete_completion() 445b513d307SBram Moolenaar args foo bar 446b513d307SBram Moolenaar 447b513d307SBram Moolenaar call feedkeys(":argdelete \<C-A>\<C-B>\"\<CR>", 'tx') 448b513d307SBram Moolenaar call assert_equal('"argdelete bar foo', @:) 449b513d307SBram Moolenaar 450b513d307SBram Moolenaar call feedkeys(":argdelete x \<C-A>\<C-B>\"\<CR>", 'tx') 451b513d307SBram Moolenaar call assert_equal('"argdelete x bar foo', @:) 452b513d307SBram Moolenaar 453b513d307SBram Moolenaar %argd 454b513d307SBram Moolenaarendfunc 455b513d307SBram Moolenaar 45699dbe291SBram Moolenaar" Tests for the :next, :prev, :first, :last, :rewind commands 4578c34aa09SBram Moolenaarfunc Test_argpos() 45899dbe291SBram Moolenaar call Reset_arglist() 45999dbe291SBram Moolenaar args a b c d 46099dbe291SBram Moolenaar last 46199dbe291SBram Moolenaar call assert_equal(3, argidx()) 46299dbe291SBram Moolenaar call assert_fails('next', 'E165:') 46399dbe291SBram Moolenaar prev 46499dbe291SBram Moolenaar call assert_equal(2, argidx()) 46599dbe291SBram Moolenaar Next 46699dbe291SBram Moolenaar call assert_equal(1, argidx()) 46799dbe291SBram Moolenaar first 46899dbe291SBram Moolenaar call assert_equal(0, argidx()) 46999dbe291SBram Moolenaar call assert_fails('prev', 'E164:') 47099dbe291SBram Moolenaar 3next 47199dbe291SBram Moolenaar call assert_equal(3, argidx()) 47299dbe291SBram Moolenaar rewind 47399dbe291SBram Moolenaar call assert_equal(0, argidx()) 47499dbe291SBram Moolenaar %argd 4758c34aa09SBram Moolenaarendfunc 47653f1673cSBram Moolenaar 47753f1673cSBram Moolenaar" Test for autocommand that redefines the argument list, when doing ":all". 4788c34aa09SBram Moolenaarfunc Test_arglist_autocmd() 47953f1673cSBram Moolenaar autocmd BufReadPost Xxx2 next Xxx2 Xxx1 48053f1673cSBram Moolenaar call writefile(['test file Xxx1'], 'Xxx1') 48153f1673cSBram Moolenaar call writefile(['test file Xxx2'], 'Xxx2') 48253f1673cSBram Moolenaar call writefile(['test file Xxx3'], 'Xxx3') 48353f1673cSBram Moolenaar 48453f1673cSBram Moolenaar new 48553f1673cSBram Moolenaar " redefine arglist; go to Xxx1 48653f1673cSBram Moolenaar next! Xxx1 Xxx2 Xxx3 487afe8cf61SBram Moolenaar " open window for all args; Reading Xxx2 will change the arglist and the 488afe8cf61SBram Moolenaar " third window will get Xxx1: 489afe8cf61SBram Moolenaar " win 1: Xxx1 490afe8cf61SBram Moolenaar " win 2: Xxx2 491afe8cf61SBram Moolenaar " win 3: Xxx1 49253f1673cSBram Moolenaar all 49353f1673cSBram Moolenaar call assert_equal('test file Xxx1', getline(1)) 49453f1673cSBram Moolenaar wincmd w 49553f1673cSBram Moolenaar wincmd w 49653f1673cSBram Moolenaar call assert_equal('test file Xxx1', getline(1)) 49753f1673cSBram Moolenaar rewind 49853f1673cSBram Moolenaar call assert_equal('test file Xxx2', getline(1)) 49953f1673cSBram Moolenaar 50053f1673cSBram Moolenaar autocmd! BufReadPost Xxx2 50153f1673cSBram Moolenaar enew! | only 50253f1673cSBram Moolenaar call delete('Xxx1') 50353f1673cSBram Moolenaar call delete('Xxx2') 50453f1673cSBram Moolenaar call delete('Xxx3') 50553f1673cSBram Moolenaar argdelete Xxx* 50653f1673cSBram Moolenaar bwipe! Xxx1 Xxx2 Xxx3 5078c34aa09SBram Moolenaarendfunc 5088c34aa09SBram Moolenaar 5098c34aa09SBram Moolenaarfunc Test_arg_all_expand() 5108c34aa09SBram Moolenaar call writefile(['test file Xxx1'], 'Xx x') 5118c34aa09SBram Moolenaar next notexist Xx\ x runtest.vim 5128c34aa09SBram Moolenaar call assert_equal('notexist Xx\ x runtest.vim', expand('##')) 5138c34aa09SBram Moolenaar call delete('Xx x') 5148c34aa09SBram Moolenaarendfunc 515e961cba3SBram Moolenaar 516e961cba3SBram Moolenaarfunc Test_large_arg() 517e961cba3SBram Moolenaar " Argument longer or equal to the number of columns used to cause 518e961cba3SBram Moolenaar " access to invalid memory. 519e961cba3SBram Moolenaar exe 'argadd ' .repeat('x', &columns) 520e961cba3SBram Moolenaar args 521e961cba3SBram Moolenaarendfunc 52272e1b391SBram Moolenaar 52372e1b391SBram Moolenaarfunc Test_argdo() 52472e1b391SBram Moolenaar next! Xa.c Xb.c Xc.c 52572e1b391SBram Moolenaar new 52672e1b391SBram Moolenaar let l = [] 52772e1b391SBram Moolenaar argdo call add(l, expand('%')) 52872e1b391SBram Moolenaar call assert_equal(['Xa.c', 'Xb.c', 'Xc.c'], l) 52972e1b391SBram Moolenaar bwipe Xa.c Xb.c Xc.c 53072e1b391SBram Moolenaarendfunc 5319f6277bdSBram Moolenaar 5328e7d6223SBram Moolenaar" Test for quitting Vim with unedited files in the argument list 5339f6277bdSBram Moolenaarfunc Test_quit_with_arglist() 534494e9069SBram Moolenaar CheckRunVimInTerminal 53521829c5fSBram Moolenaar 5369f6277bdSBram Moolenaar let buf = RunVimInTerminal('', {'rows': 6}) 537818fc9adSBram Moolenaar call term_sendkeys(buf, ":set nomore\n") 5389f6277bdSBram Moolenaar call term_sendkeys(buf, ":args a b c\n") 5399f6277bdSBram Moolenaar call term_sendkeys(buf, ":quit\n") 5406a2c5a7dSBram Moolenaar call TermWait(buf) 5419f6277bdSBram Moolenaar call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))}) 5429f6277bdSBram Moolenaar call StopVimInTerminal(buf) 543406cd90fSBram Moolenaar 544406cd90fSBram Moolenaar " Try :confirm quit with unedited files in arglist 545406cd90fSBram Moolenaar let buf = RunVimInTerminal('', {'rows': 6}) 546406cd90fSBram Moolenaar call term_sendkeys(buf, ":set nomore\n") 547406cd90fSBram Moolenaar call term_sendkeys(buf, ":args a b c\n") 548406cd90fSBram Moolenaar call term_sendkeys(buf, ":confirm quit\n") 5496a2c5a7dSBram Moolenaar call TermWait(buf) 550406cd90fSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', 551406cd90fSBram Moolenaar \ term_getline(buf, 6))}) 552406cd90fSBram Moolenaar call term_sendkeys(buf, "N") 5536a2c5a7dSBram Moolenaar call TermWait(buf) 554406cd90fSBram Moolenaar call term_sendkeys(buf, ":confirm quit\n") 555406cd90fSBram Moolenaar call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', 556406cd90fSBram Moolenaar \ term_getline(buf, 6))}) 557406cd90fSBram Moolenaar call term_sendkeys(buf, "Y") 5586a2c5a7dSBram Moolenaar call TermWait(buf) 559818fc9adSBram Moolenaar call WaitForAssert({-> assert_equal("finished", term_getstatus(buf))}) 560818fc9adSBram Moolenaar only! 5611671f448SBram Moolenaar " When this test fails, swap files are left behind which breaks subsequent 5621671f448SBram Moolenaar " tests 5631671f448SBram Moolenaar call delete('.a.swp') 5641671f448SBram Moolenaar call delete('.b.swp') 5651671f448SBram Moolenaar call delete('.c.swp') 5669f6277bdSBram Moolenaarendfunc 5679f6277bdSBram Moolenaar 568bb4b93edSBram Moolenaar" Test for ":all" not working when in the cmdline window 569bb4b93edSBram Moolenaarfunc Test_all_not_allowed_from_cmdwin() 57021829c5fSBram Moolenaar CheckFeature cmdwin 57121829c5fSBram Moolenaar 572bb4b93edSBram Moolenaar au BufEnter * all 573bb4b93edSBram Moolenaar next x 574bed72df3SBram Moolenaar " Use try/catch here, somehow assert_fails() doesn't work on MS-Windows 575bed72df3SBram Moolenaar " console. 576bed72df3SBram Moolenaar let caught = 'no' 577bed72df3SBram Moolenaar try 578bed72df3SBram Moolenaar exe ":norm! 7q?apat\<CR>" 579bed72df3SBram Moolenaar catch /E11:/ 580bed72df3SBram Moolenaar let caught = 'yes' 581bed72df3SBram Moolenaar endtry 582bed72df3SBram Moolenaar call assert_equal('yes', caught) 583bb4b93edSBram Moolenaar au! BufEnter 584bb4b93edSBram Moolenaarendfunc 585bb4b93edSBram Moolenaar 5869f6277bdSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 587