summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-08-29 12:58:44 +0200
committerBram Moolenaar <Bram@vim.org>2014-08-29 12:58:44 +0200
commite4df164692fef1a3c94149e1e2af68d44d335bf9 (patch)
tree983243c06916767b26eac240452e4a6d46e2994a
parent49f9dd7b916fb32bfd0cc9a50f8c4f9bb1bb760b (diff)
downloadvim-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.c5
-rw-r--r--src/os_unix.c8
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h1
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,
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. */