" Tests for editing the command line. source check.vim source screendump.vim source view_util.vim func Test_complete_tab() call writefile(['testfile'], 'Xtestfile') call feedkeys(":e Xtest\t\r", "tx") call assert_equal('testfile', getline(1)) call delete('Xtestfile') endfunc func Test_complete_list() " We can't see the output, but at least we check the code runs properly. call feedkeys(":e test\\r", "tx") call assert_equal('test', expand('%:t')) " If a command doesn't support completion, then CTRL-D should be literally " used. call feedkeys(":chistory \\\"\", 'xt') call assert_equal("\"chistory \", @:) endfunc func Test_complete_wildmenu() call mkdir('Xdir1/Xdir2', 'p') call writefile(['testfile1'], 'Xdir1/Xtestfile1') call writefile(['testfile2'], 'Xdir1/Xtestfile2') call writefile(['testfile3'], 'Xdir1/Xdir2/Xtestfile3') call writefile(['testfile3'], 'Xdir1/Xdir2/Xtestfile4') set wildmenu " Pressing completes, and moves to next files when pressing again. call feedkeys(":e Xdir1/\\\", 'tx') call assert_equal('testfile1', getline(1)) call feedkeys(":e Xdir1/\\\\", 'tx') call assert_equal('testfile2', getline(1)) " is like but begin with the last match and then go to " previous. call feedkeys(":e Xdir1/Xtest\\", 'tx') call assert_equal('testfile2', getline(1)) call feedkeys(":e Xdir1/Xtest\\\", 'tx') call assert_equal('testfile1', getline(1)) " / to move to previous/next file. call feedkeys(":e Xdir1/\\\", 'tx') call assert_equal('testfile1', getline(1)) call feedkeys(":e Xdir1/\\\\", 'tx') call assert_equal('testfile2', getline(1)) call feedkeys(":e Xdir1/\\\\\", 'tx') call assert_equal('testfile1', getline(1)) " / to go up/down directories. call feedkeys(":e Xdir1/\\\", 'tx') call assert_equal('testfile3', getline(1)) call feedkeys(":e Xdir1/\\\\\", 'tx') call assert_equal('testfile1', getline(1)) " Test for canceling the wild menu by adding a character redrawstatus call feedkeys(":e Xdir1/\x\\"\", 'xt') call assert_equal('"e Xdir1/Xdir2/x', @:) " Completion using a relative path cd Xdir1/Xdir2 call feedkeys(":e ../\\\\\\"\", 'tx') call assert_equal('"e Xtestfile3 Xtestfile4', @:) cd - " cleanup %bwipe call delete('Xdir1/Xdir2/Xtestfile4') call delete('Xdir1/Xdir2/Xtestfile3') call delete('Xdir1/Xtestfile2') call delete('Xdir1/Xtestfile1') call delete('Xdir1/Xdir2', 'd') call delete('Xdir1', 'd') set nowildmenu endfunc func Test_map_completion() if !has('cmdline_compl') return endif call feedkeys(":map \\"\", 'xt') call assert_equal('"map ', getreg(':')) call feedkeys(":map