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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui