diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2022-02-13 11:45:09 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-13 11:45:09 +0000 |
commit | 4d03d870007c593bce2cfa8d0a6597ca3a20fa35 (patch) | |
tree | 07ccedf0699f3c0fa7eb8137156b02ede1b8c6f6 | |
parent | cdf04859699bdde891b5b52ea821d0bebd7e8ee0 (diff) |
patch 8.2.4366: not enough tests for command line completionv8.2.4366
Problem: Not enough tests for command line completion.
Solution: Add a few more tests. (Yegappan Lakshmanan, closes #9760)
-rw-r--r-- | src/cmdexpand.c | 3 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 45 | ||||
-rw-r--r-- | src/testdir/test_usercommands.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 61 insertions, 0 deletions
diff --git a/src/cmdexpand.c b/src/cmdexpand.c index 8e950ab9b4..2a65a0691e 100644 --- a/src/cmdexpand.c +++ b/src/cmdexpand.c @@ -50,6 +50,9 @@ sort_func_compare(const void *s1, const void *s2) return STRCMP(p1, p2); } +/* + * Escape special characters in the cmdline completion matches. + */ static void ExpandEscape( expand_T *xp, diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 6d0dc5bef7..a38499cca1 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -409,6 +409,12 @@ func Test_getcompletion() call assert_equal(cmds, l) let l = getcompletion('list ', 'sign') call assert_equal(['Testing'], l) + let l = getcompletion('de*', 'sign') + call assert_equal(['define'], l) + let l = getcompletion('p?', 'sign') + call assert_equal(['place'], l) + let l = getcompletion('j.', 'sign') + call assert_equal(['jump'], l) endif " Command line completion tests @@ -461,6 +467,18 @@ func Test_getcompletion() call delete('Xtags') set tags& + edit a~b + enew + call assert_equal(['a~b'], getcompletion('a~', 'buffer')) + bw a~b + + if has('unix') + edit Xtest\ + enew + call assert_equal(['Xtest\'], getcompletion('Xtest\', 'buffer')) + bw Xtest\ + endif + call assert_fails("call getcompletion('\\\\@!\\\\@=', 'buffer')", 'E871:') call assert_fails('call getcompletion("", "burp")', 'E475:') call assert_fails('call getcompletion("abc", [])', 'E475:') @@ -1006,6 +1024,25 @@ func Test_cmdline_complete_various() call feedkeys(":chist\<Esc>\<Esc>", 'xt') call assert_equal('"g/a\xb/clearjumps', @:) set wildchar& + + " should be able to complete a file name that starts with a '~'. + if has('unix') + call writefile([], '~Xtest') + call feedkeys(":e \\~X\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"e \~Xtest', @:) + call delete('~Xtest') + endif +endfunc + +" Test for 'wildignorecase' +func Test_cmdline_wildignorecase() + CheckUnix + call writefile([], 'XTEST') + set wildignorecase + call feedkeys(":e xt\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"e XTEST', @:) + set wildignorecase& + call delete('XTEST') endfunc func Test_cmdline_write_alternatefile() @@ -1627,6 +1664,14 @@ func Test_wildmode() call assert_equal('AAA AAAA AAAAA', g:Sline) call assert_equal('"b A', @:) + " when using longest completion match, matches shorter than the argument + " should be ignored (happens with :help) + set wildmode=longest,full + set wildmenu + call feedkeys(":help a*\t\<C-B>\"\<CR>", 'xt') + call assert_equal('"help a', @:) + set wildmenu& + %argdelete delcommand MyCmd delfunc T diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim index 331e55f01a..d6ac9650a5 100644 --- a/src/testdir/test_usercommands.vim +++ b/src/testdir/test_usercommands.vim @@ -384,6 +384,17 @@ func Test_CmdCompletion() com! -nargs=? -complete=custom,min DoCmd call assert_fails("call feedkeys(':DoCmd \t', 'tx')", 'E118:') + " custom completion for a pattern with a backslash + let g:ArgLead = '' + func! CustCompl(A, L, P) + let g:ArgLead = a:A + return ['one', 'two', 'three'] + endfunc + com! -nargs=? -complete=customlist,CustCompl DoCmd + call feedkeys(":DoCmd a\\\t", 'xt') + call assert_equal('a\', g:ArgLead) + delfunc CustCompl + delcom DoCmd endfunc diff --git a/src/version.c b/src/version.c index 840a0d36f8..7212b634dd 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4366, +/**/ 4365, /**/ 4364, |