while ((c = *++arg) != NUL && (c == ' ' || c == '\t'))
/* 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;
}
unlet $X_VIM_TEST_COMPLETE_ENV
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
func Test_cmdline_complete_various()
" completion for a command starting with a comment