# HG changeset patch # User Bram Moolenaar # Date 1646500502 -3600 # Node ID d265246e6628350257cb2fa9794b9037cd777a64 # Parent 6c7a0523dc73e47c5ce03f593f1d63a98636e04e patch 8.2.4513: window-local directory is not applied if 'acd' fails Commit: https://github.com/vim/vim/commit/b29ae159777028bb3266835b55716749ab0515be Author: zeertzjq Date: Sat Mar 5 17:00:31 2022 +0000 patch 8.2.4513: window-local directory is not applied if 'acd' fails Problem: Window-local directory is not applied if 'acd' fails. Solution: Don't call do_autochdir(). (closes https://github.com/vim/vim/issues/9891) diff --git a/src/testdir/test_autochdir.vim b/src/testdir/test_autochdir.vim --- a/src/testdir/test_autochdir.vim +++ b/src/testdir/test_autochdir.vim @@ -86,22 +86,27 @@ func Test_verbose_pwd() set acd wincmd w call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) - execute 'lcd' cwd - call assert_match('\[window\].*testdir$', execute('verbose pwd')) execute 'tcd' cwd call assert_match('\[tabpage\].*testdir$', execute('verbose pwd')) execute 'cd' cwd call assert_match('\[global\].*testdir$', execute('verbose pwd')) + execute 'lcd' cwd + call assert_match('\[window\].*testdir$', execute('verbose pwd')) edit call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) + enew + wincmd w + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + wincmd w + call assert_match('\[window\].*testdir$', execute('verbose pwd')) wincmd w call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) set noacd call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) wincmd w - call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + call assert_match('\[window\].*testdir$', execute('verbose pwd')) execute 'cd' cwd - call assert_match('\[global\].*testdir', execute('verbose pwd')) + call assert_match('\[global\].*testdir$', execute('verbose pwd')) wincmd w call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4513, +/**/ 4512, /**/ 4511, diff --git a/src/window.c b/src/window.c --- a/src/window.c +++ b/src/window.c @@ -4772,11 +4772,6 @@ win_enter(win_T *wp, int undo_sync) static void fix_current_dir(void) { -#ifdef FEAT_AUTOCHDIR - if (p_acd) - do_autochdir(); - else -#endif if (curwin->w_localdir != NULL || curtab->tp_localdir != NULL) { char_u *dirname;