forked from aniani/vim
patch 8.2.2206: :exe command line completion only works for first argument
Problem: :exe command line completion only works for first argument. Solution: Skip over text if more is following. (closes #7546)
This commit is contained in:
18
src/eval.c
18
src/eval.c
@@ -1904,6 +1904,24 @@ set_context_for_expression(
|
|||||||
while ((c = *++arg) != NUL && (c == ' ' || c == '\t'))
|
while ((c = *++arg) != NUL && (c == ' ' || c == '\t'))
|
||||||
/* skip */ ;
|
/* skip */ ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ":exe one two" completes "two"
|
||||||
|
if ((cmdidx == CMD_execute
|
||||||
|
|| cmdidx == CMD_echo
|
||||||
|
|| cmdidx == CMD_echon
|
||||||
|
|| cmdidx == CMD_echomsg)
|
||||||
|
&& xp->xp_context == EXPAND_EXPRESSION)
|
||||||
|
{
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
char_u *n = skiptowhite(arg);
|
||||||
|
|
||||||
|
if (n == arg || IS_WHITE_OR_NUL(*skipwhite(n)))
|
||||||
|
break;
|
||||||
|
arg = skipwhite(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
xp->xp_pattern = arg;
|
xp->xp_pattern = arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -673,6 +673,17 @@ func Test_cmdline_complete_env_variable()
|
|||||||
unlet $X_VIM_TEST_COMPLETE_ENV
|
unlet $X_VIM_TEST_COMPLETE_ENV
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_cmdline_complete_expression()
|
||||||
|
let g:SomeVar = 'blah'
|
||||||
|
for cmd in ['exe', 'echo', 'echon', 'echomsg']
|
||||||
|
call feedkeys(":" .. cmd .. " SomeV\<Tab>\<C-B>\"\<CR>", 'tx')
|
||||||
|
call assert_match('"' .. cmd .. ' SomeVar', @:)
|
||||||
|
call feedkeys(":" .. cmd .. " foo SomeV\<Tab>\<C-B>\"\<CR>", 'tx')
|
||||||
|
call assert_match('"' .. cmd .. ' foo SomeVar', @:)
|
||||||
|
endfor
|
||||||
|
unlet g:SomeVar
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Test for various command-line completion
|
" Test for various command-line completion
|
||||||
func Test_cmdline_complete_various()
|
func Test_cmdline_complete_various()
|
||||||
" completion for a command starting with a comment
|
" completion for a command starting with a comment
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2206,
|
||||||
/**/
|
/**/
|
||||||
2205,
|
2205,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user