Hi, guys.
I've posted on vim_use some days before:

>$ vim -c "q" 'foo ~ foo'
>$ vim -c "normal '0"
>E20: Mark not set

Filename contains '~' character which is around with path separators
(i.e. ' ' and ',') has such problem.

And the patch:

Index: mark.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/mark.c,v
retrieving revision 1.13
diff -u -p -r1.13 mark.c
--- mark.c      10 May 2007 16:48:03 -0000      1.13
+++ mark.c      24 Sep 2007 01:06:36 -0000
@@ -499,7 +499,8 @@ getnextmark(startpos, dir, begin_line)
 fname2fnum(fm)
     xfmark_T   *fm;
 {
-    char_u     *p;
+    char_u     *p; 
+    char_u     *ep; /* escaped string pointer */
 
     if (fm->fname != NULL)
     {
@@ -507,7 +508,32 @@ fname2fnum(fm)
         * First expand "~/" in the file name to the home directory.
         * Try to shorten the file name.
         */
-       expand_env(fm->fname, NameBuff, MAXPATHL);
+
+       int escaped = FALSE;
+       /* expand_env use ',' and ' ' as separators. 
+        * if filename contains them, escape.
+        */
+       if (vim_strpbrk(fm->fname, ", ")) {
+           ep = vim_strsave_escaped(fm->fname, ", ");
+           escaped = True;
+       }
+       expand_env(ep, NameBuff, MAXPATHL);
+
+       /* Unescape ',' and ' ' should be save, since "\\, " are 
+        * not valid in username
+        */
+       if ( escaped ) {
+           
+           char_u *uep = NameBuff;
+           char_u *uend = uep + STRLEN(NameBuff);
+
+           while (*uep) {
+               if ( uep[0] == '\\' && ( uep[1] == ' ' || uep[1] == ',' ) )
+                   mch_memmove(uep, uep + 1, uend - uep);
+               uep++;
+           }
+       }
+
        mch_dirname(IObuff, IOSIZE);
        p = shorten_fname(NameBuff, IObuff);
 
-- 
Dasn


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui