diff options
-rw-r--r-- | src/nvim/cmdexpand.c | 4 | ||||
-rw-r--r-- | test/old/testdir/test_functions.vim | 12 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/nvim/cmdexpand.c b/src/nvim/cmdexpand.c index fcfeda5482..28cc70ff5a 100644 --- a/src/nvim/cmdexpand.c +++ b/src/nvim/cmdexpand.c @@ -2407,6 +2407,10 @@ void set_cmd_context(expand_T *xp, char *str, int len, int col, int use_ccline) xp->xp_context = ccline->xp_context; xp->xp_pattern = ccline->cmdbuff; xp->xp_arg = ccline->xp_arg; + if (xp->xp_context == EXPAND_SHELLCMDLINE) { + int context = xp->xp_context; + set_context_for_wildcard_arg(NULL, xp->xp_pattern, false, xp, &context); + } } else { while (nextcomm != NULL) { nextcomm = set_one_cmd_context(xp, nextcomm); diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index 7c6c32f3c4..4ddb3db6fa 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -2072,10 +2072,20 @@ func Test_input_func() call assert_fails("call input('F:', '', 'invalid')", 'E180:') call assert_fails("call input('F:', '', [])", 'E730:') - " Test for using 'command' as the completion function + " Test for using "command" as the completion function call feedkeys(":let c = input('Command? ', '', 'command')\<CR>" \ .. "echo bufnam\<C-A>\<CR>", 'xt') call assert_equal('echo bufname(', c) + + " Test for using "shellcmdline" as the completion function + call feedkeys(":let c = input('Shell? ', '', 'shellcmdline')\<CR>" + \ .. "vim test_functions.\<C-A>\<CR>", 'xt') + call assert_equal('vim test_functions.vim', c) + if executable('whoami') + call feedkeys(":let c = input('Shell? ', '', 'shellcmdline')\<CR>" + \ .. "whoam\<C-A>\<CR>", 'xt') + call assert_match('\<whoami\>', c) + endif endfunc " Test for the inputdialog() function |