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 #9891)
diff --git a/src/testdir/test_autochdir.vim b/src/testdir/test_autochdir.vim
index 6474724..36b4695 100644
--- a/src/testdir/test_autochdir.vim
+++ b/src/testdir/test_autochdir.vim
@@ -86,22 +86,27 @@
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
index e808010..357ed40 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4513,
+/**/
4512,
/**/
4511,
diff --git a/src/window.c b/src/window.c
index 5e6fce8..cf11acf 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4772,11 +4772,6 @@
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;