mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.0.0845: shell command with just space gives strange error (#21029)
Problem: Shell command with just space gives strange error.
Solution: Skip white space at start of the argument. (Christian Brabandt,
Shane-XB-Qian, closes vim/vim#11515, closes vim/vim#11495)
4e7590ec00
Co-authored-by: shane.xb.qian <shane.qian@foxmail.com>
This commit is contained in:
parent
4d2373f5f6
commit
7335a67b57
@ -1135,10 +1135,12 @@ void do_bang(int addr_count, exarg_T *eap, bool forceit, bool do_in, bool do_out
|
||||
msg_scroll = scroll_save;
|
||||
}
|
||||
|
||||
// Try to find an embedded bang, like in :!<cmd> ! [args]
|
||||
// (:!! is indicated by the 'forceit' variable)
|
||||
// Try to find an embedded bang, like in ":!<cmd> ! [args]"
|
||||
// ":!!" is indicated by the 'forceit' variable.
|
||||
bool ins_prevcmd = forceit;
|
||||
trailarg = arg;
|
||||
|
||||
// Skip leading white space to avoid a strange error with some shells.
|
||||
trailarg = skipwhite(arg);
|
||||
do {
|
||||
len = strlen(trailarg) + 1;
|
||||
if (newcmd != NULL) {
|
||||
|
@ -1628,6 +1628,53 @@ func Test_cmd_bang_E135()
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_cmd_bang_args()
|
||||
new
|
||||
:.!
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
" Note that below there is one space char after the '!'. This caused a
|
||||
" shell error in the past, see https://github.com/vim/vim/issues/11495.
|
||||
:.!
|
||||
call assert_equal(0, v:shell_error)
|
||||
bwipe!
|
||||
|
||||
CheckUnix
|
||||
:.!pwd
|
||||
call assert_equal(0, v:shell_error)
|
||||
:.! pwd
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
" Note there is one space after 'pwd'.
|
||||
:.! pwd
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
" Note there are two spaces after 'pwd'.
|
||||
:.! pwd
|
||||
call assert_equal(0, v:shell_error)
|
||||
:.!ls ~
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
" Note there is one space char after '~'.
|
||||
:.!ls ~
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
" Note there are two spaces after '~'.
|
||||
:.!ls ~
|
||||
call assert_equal(0, v:shell_error)
|
||||
|
||||
:.!echo "foo"
|
||||
call assert_equal(getline('.'), "foo")
|
||||
:.!echo "foo "
|
||||
call assert_equal(getline('.'), "foo ")
|
||||
:.!echo " foo "
|
||||
call assert_equal(getline('.'), " foo ")
|
||||
:.!echo " foo "
|
||||
call assert_equal(getline('.'), " foo ")
|
||||
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
" Test for using ~ for home directory in cmdline completion matches
|
||||
func Test_cmdline_expand_home()
|
||||
call mkdir('Xdir')
|
||||
|
Loading…
Reference in New Issue
Block a user