0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 7.4.423

Problem:    expand("$shell") does not work as documented.
Solution:   Do not escape the $ when expanding environment variables.
This commit is contained in:
Bram Moolenaar
2014-08-29 12:58:44 +02:00
parent 49f9dd7b91
commit e4df164692
4 changed files with 11 additions and 5 deletions

View File

@@ -78,7 +78,8 @@ get_indent_str(ptr, ts, list)
if (!list || lcs_tab1) /* count a tab for what it is worth */ if (!list || lcs_tab1) /* count a tab for what it is worth */
count += ts - (count % ts); count += ts - (count % ts);
else else
/* in list mode, when tab is not set, count screen char width for Tab: ^I */ /* In list mode, when tab is not set, count screen char width
* for Tab, displays: ^I */
count += ptr2cells(ptr); count += ptr2cells(ptr);
} }
else if (*ptr == ' ') else if (*ptr == ' ')
@@ -10767,7 +10768,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
vim_free(p); vim_free(p);
ga_clear_strings(&ga); ga_clear_strings(&ga);
i = mch_expand_wildcards(num_pat, pat, num_file, file, i = mch_expand_wildcards(num_pat, pat, num_file, file,
flags); flags|EW_KEEPDOLLAR);
recursive = FALSE; recursive = FALSE;
return i; return i;
} }

View File

@@ -5939,10 +5939,12 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
*p++ = '\\'; *p++ = '\\';
++j; ++j;
} }
else if (!intick && vim_strchr(SHELL_SPECIAL, else if (!intick
pat[i][j]) != NULL) && ((flags & EW_KEEPDOLLAR) == 0 || pat[i][j] != '$')
&& vim_strchr(SHELL_SPECIAL, pat[i][j]) != NULL)
/* Put a backslash before a special character, but not /* Put a backslash before a special character, but not
* when inside ``. */ * when inside ``. And not for $var when EW_KEEPDOLLAR is
* set. */
*p++ = '\\'; *p++ = '\\';
/* Copy one character. */ /* Copy one character. */

View File

@@ -741,6 +741,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 */
/**/
423,
/**/ /**/
422, 422,
/**/ /**/

View File

@@ -835,6 +835,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define EW_ICASE 0x100 /* ignore case */ #define EW_ICASE 0x100 /* ignore case */
#define EW_NOERROR 0x200 /* no error for bad regexp */ #define EW_NOERROR 0x200 /* no error for bad regexp */
#define EW_NOTWILD 0x400 /* add match with literal name if exists */ #define EW_NOTWILD 0x400 /* add match with literal name if exists */
#define EW_KEEPDOLLAR 0x800 /* do not escape $, $var is expanded */
/* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
* is used when executing commands and EW_SILENT for interactive expanding. */ * is used when executing commands and EW_SILENT for interactive expanding. */