From e4df164692fef1a3c94149e1e2af68d44d335bf9 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 29 Aug 2014 12:58:44 +0200 Subject: updated for version 7.4.423 Problem: expand("$shell") does not work as documented. Solution: Do not escape the $ when expanding environment variables. --- src/misc1.c | 5 +++-- src/os_unix.c | 8 +++++--- src/version.c | 2 ++ src/vim.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src') 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 @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 423, /**/ 422, /**/ diff --git a/src/vim.h b/src/vim.h index cb2a9e5b3..2a6d9a044 100644 --- a/src/vim.h +++ b/src/vim.h @@ -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. */ -- cgit v1.2.1