forked from aniani/vim
patch 8.2.0049: command line completion not fully tested
Problem: Command line completion not fully tested. Solution: Add more test cases. Make help sorting stable. (Dominique Pelle, closes #5402)
This commit is contained in:
@@ -5341,10 +5341,18 @@ help_compare(const void *s1, const void *s2)
|
||||
{
|
||||
char *p1;
|
||||
char *p2;
|
||||
int cmp;
|
||||
|
||||
p1 = *(char **)s1 + strlen(*(char **)s1) + 1;
|
||||
p2 = *(char **)s2 + strlen(*(char **)s2) + 1;
|
||||
return strcmp(p1, p2);
|
||||
|
||||
// Compare by help heuristic number first.
|
||||
cmp = strcmp(p1, p2);
|
||||
if (cmp != 0)
|
||||
return cmp;
|
||||
|
||||
// Compare by strings as tie-breaker when same heuristic number.
|
||||
return strcmp(*(char **)s1, *(char **)s2);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -106,3 +106,18 @@ func Test_chdir_func()
|
||||
call chdir(topdir)
|
||||
call delete('Xdir', 'rf')
|
||||
endfunc
|
||||
|
||||
func Test_cd_completion()
|
||||
call mkdir('XComplDir1', 'p')
|
||||
call mkdir('XComplDir2', 'p')
|
||||
call writefile([], 'XComplFile')
|
||||
|
||||
for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir']
|
||||
call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:)
|
||||
endfor
|
||||
|
||||
call delete('XComplDir1', 'd')
|
||||
call delete('XComplDir2', 'd')
|
||||
call delete('XComplFile')
|
||||
endfunc
|
||||
|
@@ -553,6 +553,14 @@ func Test_cmdline_complete_user_names()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_cmdline_complete_bang()
|
||||
if executable('whoami')
|
||||
return
|
||||
endif
|
||||
call feedkeys(":!whoam\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_match('^".*\<whoami\>', @:)
|
||||
endfunc
|
||||
|
||||
funct Test_cmdline_complete_languages()
|
||||
let lang = substitute(execute('language messages'), '.*"\(.*\)"$', '\1', '')
|
||||
|
||||
@@ -575,6 +583,15 @@ funct Test_cmdline_complete_languages()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_cmdline_complete_env_variable()
|
||||
let $X_VIM_TEST_COMPLETE_ENV = 'foo'
|
||||
|
||||
call feedkeys(":edit $X_VIM_TEST_COMPLETE_E\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_match('"edit $X_VIM_TEST_COMPLETE_ENV', @:)
|
||||
|
||||
unlet $X_VIM_TEST_COMPLETE_ENV
|
||||
endfunc
|
||||
|
||||
func Test_cmdline_write_alternatefile()
|
||||
new
|
||||
call setline('.', ['one', 'two'])
|
||||
|
@@ -55,3 +55,8 @@ func Test_help_local_additions()
|
||||
call delete('Xruntime', 'rf')
|
||||
let &rtp = rtp_save
|
||||
endfunc
|
||||
|
||||
func Test_help_completion()
|
||||
call feedkeys(":help :undo\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"help :undo :undoj :undol :undojoin :undolist', @:)
|
||||
endfunc
|
||||
|
@@ -45,6 +45,10 @@ func Test_menu_commands()
|
||||
imenu 2 Test.FooBar :let g:did_menu = 'insert'<CR>
|
||||
cmenu 2 Test.FooBar :let g:did_menu = 'cmdline'<CR>
|
||||
emenu n Test.FooBar
|
||||
|
||||
call feedkeys(":menu Test.FooB\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"menu Test.FooBar', @:)
|
||||
|
||||
call assert_equal('normal', g:did_menu)
|
||||
emenu v Test.FooBar
|
||||
call assert_equal('visual', g:did_menu)
|
||||
|
@@ -201,6 +201,12 @@ func Test_set_completion()
|
||||
call feedkeys(":set di\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"set dictionary diff diffexpr diffopt digraph directory display', @:)
|
||||
|
||||
call feedkeys(":setlocal di\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"setlocal dictionary diff diffexpr diffopt digraph directory display', @:)
|
||||
|
||||
call feedkeys(":setglobal di\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"setglobal dictionary diff diffexpr diffopt digraph directory display', @:)
|
||||
|
||||
" Expand boolan options. When doing :set no<Tab>
|
||||
" vim displays the options names without "no" but completion uses "no...".
|
||||
call feedkeys(":set nodi\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
@@ -239,6 +245,7 @@ func Test_set_completion()
|
||||
|
||||
call feedkeys(":set tags=./\\\\ dif\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"set tags=./\\ diff diffexpr diffopt', @:)
|
||||
|
||||
set tags&
|
||||
endfunc
|
||||
|
||||
|
@@ -180,6 +180,11 @@ func Test_syntax_completion()
|
||||
call assert_match('^"syn match Boolean Character ', @:)
|
||||
endfunc
|
||||
|
||||
func Test_echohl_completion()
|
||||
call feedkeys(":echohl no\<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"echohl NonText Normal none', @:)
|
||||
endfunc
|
||||
|
||||
func Test_syntax_arg_skipped()
|
||||
syn clear
|
||||
syntax case ignore
|
||||
|
@@ -742,6 +742,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
49,
|
||||
/**/
|
||||
48,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user