]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.061 v7.3.061
authorBram Moolenaar <Bram@vim.org>
Tue, 16 Nov 2010 15:25:51 +0000 (16:25 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 16 Nov 2010 15:25:51 +0000 (16:25 +0100)
Problem:    Remote ":drop" does not respect 'autochdir'. (Peter Odding)
Solution:   Don't restore the directory when 'autochdir' is set. (Benjamin
            Fritz)

src/main.c
src/version.c

index cc99d1fe589df6106516cf7581ad3ea832e4ef52..faf574a9b3ad9c63ea56a8aee6ea1be20478f6f0 100644 (file)
@@ -3817,6 +3817,8 @@ build_drop_cmd(filec, filev, tabs, sendReply)
     /* Check if we have at least one argument. */
     if (filec <= 0)
        mainerr_arg_missing((char_u *)filev[-1]);
+
+    /* Temporarily cd to the current directory to handle relative file names. */
     if (mch_dirname(cwd, MAXPATHL) != OK)
        return NULL;
     if ((p = vim_strsave_escaped_ext(cwd,
@@ -3858,13 +3860,20 @@ build_drop_cmd(filec, filev, tabs, sendReply)
        ga_concat(&ga, p);
        vim_free(p);
     }
+    ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>");
+
     /* The :drop commands goes to Insert mode when 'insertmode' is set, use
      * CTRL-\ CTRL-N again. */
-    ga_concat(&ga, (char_u *)"|if exists('*inputrestore')|call inputrestore()|endif<CR>");
-    ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd -");
+    ga_concat(&ga, (char_u *)"<C-\\><C-N>");
+
+    /* Switch back to the correct current directory (prior to temporary path
+     * switch) unless 'autochdir' is set, in which case it will already be
+     * correct after the :drop command. */
+    ga_concat(&ga, (char_u *)":if !exists('+acd')||!&acd|cd -|endif<CR>");
+
     if (sendReply)
-       ga_concat(&ga, (char_u *)"<CR>:call SetupRemoteReplies()");
-    ga_concat(&ga, (char_u *)"<CR>:");
+       ga_concat(&ga, (char_u *)":call SetupRemoteReplies()<CR>");
+    ga_concat(&ga, (char_u *)":");
     if (inicmd != NULL)
     {
        /* Can't use <CR> after "inicmd", because an "startinsert" would cause
index bb4282829fc6ae07edf4d971983e2e0f88cdc5fd..d46d9a0d4ef3a5e67bea5aa26766e983bb0e1eb5 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    61,
 /**/
     60,
 /**/