1
0
forked from aniani/vim

updated for version 7.3.443

Problem:    MS-Windows: 'shcf' and 'shellxquote' defaults are not very good.
Solution:   Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz)
This commit is contained in:
Bram Moolenaar
2012-02-12 23:23:31 +01:00
parent 60542ac9fd
commit a64ba220f0
3 changed files with 48 additions and 8 deletions

View File

@@ -3883,7 +3883,8 @@ set_init_3()
#if defined(MSDOS) || defined(WIN3264) || defined(OS2)
/*
* Set 'shellcmdflag and 'shellquote' depending on the 'shell' option.
* Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the
* 'shell' option.
* This is done after other initializations, where 'shell' might have been
* set, but only if they have not been set before. Default for p_shcf is
* "/c", for p_shq is "". For "sh" like shells it is changed here to
@@ -3920,6 +3921,42 @@ set_init_3()
# endif
# endif
}
else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL)
{
int idx3;
/*
* cmd.exe on Windows will strip the first and last double quote given
* on the command line, e.g. most of the time things like:
* cmd /c "my path/to/echo" "my args to echo"
* become:
* my path/to/echo" "my args to echo
* when executed.
*
* To avoid this, use the /s argument in addition to /c to force the
* stripping behavior, and also set shellxquote to automatically
* surround the entire command in quotes (which get stripped as
* noted).
*/
/* Set shellxquote default to add the quotes to be stripped. */
idx3 = findoption((char_u *)"sxq");
if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
{
p_sxq = (char_u *)"\"";
options[idx3].def_val[VI_DEFAULT] = p_sxq;
}
/* Set shellcmdflag default to always strip the quotes, note the order
* between /s and /c is important or cmd.exe will treat the /s as part
* of the command to be executed. */
idx3 = findoption((char_u *)"shcf");
if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
{
p_shcf = (char_u *)"/s /c";
options[idx3].def_val[VI_DEFAULT] = p_shcf;
}
}
#endif
#ifdef FEAT_TITLE