mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.0845: shell command with just space gives strange error
Problem: Shell command with just space gives strange error. Solution: Skip white space at start of the argument. (Christian Brabandt, Shane-XB-Qian, closes #11515, closes #11495)
This commit is contained in:
parent
7b224fdf4a
commit
4e7590ec00
@ -899,11 +899,13 @@ do_bang(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to find an embedded bang, like in :!<cmd> ! [args]
|
* Try to find an embedded bang, like in ":!<cmd> ! [args]"
|
||||||
* (:!! is indicated by the 'forceit' variable)
|
* ":!!" is indicated by the 'forceit' variable.
|
||||||
*/
|
*/
|
||||||
ins_prevcmd = forceit;
|
ins_prevcmd = forceit;
|
||||||
trailarg = arg;
|
|
||||||
|
// Skip leading white space to avoid a strange error with some shells.
|
||||||
|
trailarg = skipwhite(arg);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
len = (int)STRLEN(trailarg) + 1;
|
len = (int)STRLEN(trailarg) + 1;
|
||||||
|
@ -1653,6 +1653,53 @@ func Test_cmd_bang_E135()
|
|||||||
%bwipe!
|
%bwipe!
|
||||||
endfunc
|
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
|
" Test for using ~ for home directory in cmdline completion matches
|
||||||
func Test_cmdline_expand_home()
|
func Test_cmdline_expand_home()
|
||||||
call mkdir('Xexpdir', 'R')
|
call mkdir('Xexpdir', 'R')
|
||||||
|
@ -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 */
|
||||||
|
/**/
|
||||||
|
845,
|
||||||
/**/
|
/**/
|
||||||
844,
|
844,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user