forked from aniani/vim
patch 9.0.1636: expanding a pattern interferes with cmdline completion
Problem: Expanding a pattern interferes with command line completion. Solution: Set the file index only when appropriate. (closes #12519)
This commit is contained in:
@@ -957,7 +957,7 @@ ExpandOne(
|
|||||||
int mode)
|
int mode)
|
||||||
{
|
{
|
||||||
char_u *ss = NULL;
|
char_u *ss = NULL;
|
||||||
static int findex;
|
static int findex; // TODO: Move into expand_T
|
||||||
static char_u *orig_save = NULL; // kept value of orig
|
static char_u *orig_save = NULL; // kept value of orig
|
||||||
int orig_saved = FALSE;
|
int orig_saved = FALSE;
|
||||||
int i;
|
int i;
|
||||||
@@ -971,8 +971,9 @@ ExpandOne(
|
|||||||
if (mode == WILD_CANCEL)
|
if (mode == WILD_CANCEL)
|
||||||
ss = vim_strsave(orig_save ? orig_save : (char_u *)"");
|
ss = vim_strsave(orig_save ? orig_save : (char_u *)"");
|
||||||
else if (mode == WILD_APPLY)
|
else if (mode == WILD_APPLY)
|
||||||
ss = vim_strsave(findex == -1 ? (orig_save ?
|
ss = vim_strsave(findex == -1
|
||||||
orig_save : (char_u *)"") : xp->xp_files[findex]);
|
? (orig_save ? orig_save : (char_u *)"")
|
||||||
|
: xp->xp_files[findex]);
|
||||||
|
|
||||||
// free old names
|
// free old names
|
||||||
if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST)
|
if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST)
|
||||||
@@ -985,7 +986,9 @@ ExpandOne(
|
|||||||
if (compl_match_array != NULL)
|
if (compl_match_array != NULL)
|
||||||
cmdline_pum_remove();
|
cmdline_pum_remove();
|
||||||
}
|
}
|
||||||
findex = 0;
|
// TODO: Remove condition if "findex" is part of expand_T ?
|
||||||
|
if (mode != WILD_EXPAND_FREE && mode != WILD_ALL && mode != WILD_ALL_KEEP)
|
||||||
|
findex = 0;
|
||||||
|
|
||||||
if (mode == WILD_FREE) // only release file name
|
if (mode == WILD_FREE) // only release file name
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@@ -1336,6 +1336,30 @@ func Test_cmdline_complete_various()
|
|||||||
call assert_equal('"py3file', @:)
|
call assert_equal('"py3file', @:)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test that expanding a pattern doesn't interfere with cmdline completion.
|
||||||
|
func Test_expand_during_cmdline_completion()
|
||||||
|
func ExpandStuff()
|
||||||
|
badd <script>:p:h/README.*
|
||||||
|
call assert_equal(expand('<script>:p:h') .. '/README.txt', bufname('$'))
|
||||||
|
$bwipe
|
||||||
|
call assert_equal('README.txt', expand('README.*'))
|
||||||
|
call assert_equal(['README.txt'], getcompletion('README.*', 'file'))
|
||||||
|
endfunc
|
||||||
|
augroup test_CmdlineChanged
|
||||||
|
autocmd!
|
||||||
|
autocmd CmdlineChanged * call ExpandStuff()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
call feedkeys(":sign \<Tab>\<Tab>\<Tab>\<Tab>\<C-B>\"\<CR>", 'xt')
|
||||||
|
call assert_equal('"sign place', @:)
|
||||||
|
|
||||||
|
augroup test_CmdlineChanged
|
||||||
|
au!
|
||||||
|
augroup END
|
||||||
|
augroup! test_CmdlineChanged
|
||||||
|
delfunc ExpandStuff
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Test for 'wildignorecase'
|
" Test for 'wildignorecase'
|
||||||
func Test_cmdline_wildignorecase()
|
func Test_cmdline_wildignorecase()
|
||||||
CheckUnix
|
CheckUnix
|
||||||
@@ -1675,6 +1699,7 @@ func Test_cmd_bang_E135()
|
|||||||
augroup test_cmd_filter_E135
|
augroup test_cmd_filter_E135
|
||||||
au!
|
au!
|
||||||
augroup END
|
augroup END
|
||||||
|
augroup! test_cmd_filter_E135
|
||||||
%bwipe!
|
%bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -2134,7 +2159,7 @@ endfunc
|
|||||||
func Test_cmd_map_cmdlineChanged()
|
func Test_cmd_map_cmdlineChanged()
|
||||||
let g:log = []
|
let g:log = []
|
||||||
cnoremap <F1> l<Cmd><CR>s
|
cnoremap <F1> l<Cmd><CR>s
|
||||||
augroup test
|
augroup test_CmdlineChanged
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd CmdlineChanged : let g:log += [getcmdline()]
|
autocmd CmdlineChanged : let g:log += [getcmdline()]
|
||||||
augroup END
|
augroup END
|
||||||
@@ -2150,9 +2175,10 @@ func Test_cmd_map_cmdlineChanged()
|
|||||||
|
|
||||||
unlet g:log
|
unlet g:log
|
||||||
cunmap <F1>
|
cunmap <F1>
|
||||||
augroup test
|
augroup test_CmdlineChanged
|
||||||
autocmd!
|
autocmd!
|
||||||
augroup END
|
augroup END
|
||||||
|
augroup! test_CmdlineChanged
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" Test for the 'suffixes' option
|
" Test for the 'suffixes' option
|
||||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1636,
|
||||||
/**/
|
/**/
|
||||||
1635,
|
1635,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user