diff options
author | Bram Moolenaar <Bram@vim.org> | 2014-08-29 12:58:44 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2014-08-29 12:58:44 +0200 |
commit | e4df164692fef1a3c94149e1e2af68d44d335bf9 (patch) | |
tree | 983243c06916767b26eac240452e4a6d46e2994a | |
parent | 49f9dd7b916fb32bfd0cc9a50f8c4f9bb1bb760b (diff) | |
download | vim-git-e4df164692fef1a3c94149e1e2af68d44d335bf9.tar.gz |
updated for version 7.4.423v7.4.423
Problem: expand("$shell") does not work as documented.
Solution: Do not escape the $ when expanding environment variables.
-rw-r--r-- | src/misc1.c | 5 | ||||
-rw-r--r-- | src/os_unix.c | 8 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 1 |
4 files changed, 11 insertions, 5 deletions
diff --git a/src/misc1.c b/src/misc1.c index 6ae72cfbb..e3e7da824 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -78,7 +78,8 @@ get_indent_str(ptr, ts, list) if (!list || lcs_tab1) /* count a tab for what it is worth */ count += ts - (count % ts); 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); } else if (*ptr == ' ') @@ -10767,7 +10768,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags) vim_free(p); ga_clear_strings(&ga); i = mch_expand_wildcards(num_pat, pat, num_file, file, - flags); + flags|EW_KEEPDOLLAR); recursive = FALSE; return i; } diff --git a/src/os_unix.c b/src/os_unix.c index 124c2693b..b49afc3f8 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -5939,10 +5939,12 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags) *p++ = '\\'; ++j; } - else if (!intick && vim_strchr(SHELL_SPECIAL, - pat[i][j]) != NULL) + else if (!intick + && ((flags & EW_KEEPDOLLAR) == 0 || pat[i][j] != '$') + && vim_strchr(SHELL_SPECIAL, pat[i][j]) != NULL) /* Put a backslash before a special character, but not - * when inside ``. */ + * when inside ``. And not for $var when EW_KEEPDOLLAR is + * set. */ *p++ = '\\'; /* Copy one character. */ diff --git a/src/version.c b/src/version.c index 31d1b34d5..d8ed2a03a 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 423, +/**/ 422, /**/ 421, @@ -835,6 +835,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname); #define EW_ICASE 0x100 /* ignore case */ #define EW_NOERROR 0x200 /* no error for bad regexp */ #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 * is used when executing commands and EW_SILENT for interactive expanding. */ |