diff --git a/7.4.423 b/7.4.423 new file mode 100644 index 0000000..fc04ae0 --- /dev/null +++ b/7.4.423 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.423 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.423 +Problem: expand("$shell") does not work as documented. +Solution: Do not escape the $ when expanding environment variables. +Files: src/os_unix.c, src/misc1.c, src/vim.h + + +*** ../vim-7.4.422/src/os_unix.c 2014-07-30 17:21:53.815518506 +0200 +--- src/os_unix.c 2014-08-29 12:47:57.230428808 +0200 +*************** +*** 5939,5948 **** + *p++ = '\\'; + ++j; + } +! else if (!intick && vim_strchr(SHELL_SPECIAL, +! pat[i][j]) != NULL) + /* Put a backslash before a special character, but not +! * when inside ``. */ + *p++ = '\\'; + + /* Copy one character. */ +--- 5939,5950 ---- + *p++ = '\\'; + ++j; + } +! 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 ``. And not for $var when EW_KEEPDOLLAR is +! * set. */ + *p++ = '\\'; + + /* Copy one character. */ +*** ../vim-7.4.422/src/misc1.c 2014-08-06 17:44:09.867161966 +0200 +--- src/misc1.c 2014-08-29 12:48:11.390428839 +0200 +*************** +*** 78,84 **** + 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 */ + count += ptr2cells(ptr); + } + else if (*ptr == ' ') +--- 78,85 ---- + 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, displays: ^I */ + count += ptr2cells(ptr); + } + else if (*ptr == ' ') +*************** +*** 10767,10773 **** + vim_free(p); + ga_clear_strings(&ga); + i = mch_expand_wildcards(num_pat, pat, num_file, file, +! flags); + recursive = FALSE; + return i; + } +--- 10768,10774 ---- + vim_free(p); + ga_clear_strings(&ga); + i = mch_expand_wildcards(num_pat, pat, num_file, file, +! flags|EW_KEEPDOLLAR); + recursive = FALSE; + return i; + } +*** ../vim-7.4.422/src/vim.h 2014-08-23 14:16:11.880625637 +0200 +--- src/vim.h 2014-08-29 12:46:47.370428655 +0200 +*************** +*** 835,840 **** +--- 835,841 ---- + #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. */ + +*** ../vim-7.4.422/src/version.c 2014-08-29 12:08:39.686423658 +0200 +--- src/version.c 2014-08-29 12:48:54.138428932 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 423, + /**/ + +-- +From "know your smileys": + :~) A man with a tape recorder up his nose + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///