# HG changeset patch # User Bram Moolenaar # Date 1427212138 -3600 # Node ID b225e8fed8cc0e320527922e6abf1c7b8c6b83b6 # Parent fff77fccc85896bdafa734f613f9b56cbd3f49b6 updated for version 7.4.678 Problem: When using --remote the directory may end up being wrong. Solution: Use localdir() to find out what to do. (Xaizek) diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -3914,6 +3914,7 @@ build_drop_cmd(filec, filev, tabs, sendR int i; char_u *inicmd = NULL; char_u *p; + char_u *cdp; char_u *cwd; if (filec > 0 && filev[0][0] == '+') @@ -3935,7 +3936,7 @@ build_drop_cmd(filec, filev, tabs, sendR vim_free(cwd); return NULL; } - p = vim_strsave_escaped_ext(cwd, + cdp = vim_strsave_escaped_ext(cwd, #ifdef BACKSLASH_IN_FILENAME "", /* rem_backslash() will tell what chars to escape */ #else @@ -3943,12 +3944,11 @@ build_drop_cmd(filec, filev, tabs, sendR #endif '\\', TRUE); vim_free(cwd); - if (p == NULL) + if (cdp == NULL) return NULL; ga_init2(&ga, 1, 100); ga_concat(&ga, (char_u *)":cd "); - ga_concat(&ga, p); - vim_free(p); + ga_concat(&ga, cdp); /* Call inputsave() so that a prompt for an encryption key works. */ ga_concat(&ga, (char_u *)":if exists('*inputsave')|call inputsave()|endif|"); @@ -3984,8 +3984,21 @@ build_drop_cmd(filec, filev, tabs, sendR /* 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"); + * correct after the :drop command. With line breaks and spaces: + * if !exists('+acd') || !&acd + * if haslocaldir() + * cd - + * lcd - + * elseif getcwd() ==# "current path" + * cd - + * endif + * endif + */ + ga_concat(&ga, (char_u *)":if !exists('+acd')||!&acd|if haslocaldir()|"); + ga_concat(&ga, (char_u *)"cd -|lcd -|elseif getcwd() ==# \""); + ga_concat(&ga, cdp); + ga_concat(&ga, (char_u *)"\"|cd -|endif|endif"); + vim_free(cdp); if (sendReply) ga_concat(&ga, (char_u *)":call SetupRemoteReplies()"); diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 678, +/**/ 677, /**/ 676,