diff --git a/src/testdir/test_autochdir.vim b/src/testdir/test_autochdir.vim index f6cc1483262e0..c85cc1932b06c 100644 --- a/src/testdir/test_autochdir.vim +++ b/src/testdir/test_autochdir.vim @@ -25,6 +25,33 @@ func Test_set_filename() call delete('samples/Xtest') endfunc +func Test_set_filename_other_window() + call ch_logfile('logfile', 'w') + let cwd = getcwd() + call test_autochdir() + call mkdir('Xa') + call mkdir('Xb') + call mkdir('Xc') + try + args Xa/aaa.txt Xb/bbb.txt + set acd + let winid = win_getid() + snext + call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) + call win_execute(winid, 'file ' .. cwd .. '/Xc/ccc.txt') + call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) + finally + set noacd + call chdir(cwd) + call delete('Xa', 'rf') + call delete('Xb', 'rf') + call delete('Xc', 'rf') + bwipe! aaa.txt + bwipe! bbb.txt + bwipe! ccc.txt + endtry +endfunc + func Test_verbose_pwd() let cwd = getcwd() call test_autochdir() @@ -53,6 +80,8 @@ func Test_verbose_pwd() set noacd call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) wincmd w + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + execute 'cd' cwd 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 66a0e92c80e6c..338b8a4ad4046 100644 --- a/src/version.c +++ b/src/version.c @@ -753,6 +753,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3739, /**/ 3738, /**/ diff --git a/src/window.c b/src/window.c index c14abe4897307..4050ed04dda2b 100644 --- a/src/window.c +++ b/src/window.c @@ -4858,6 +4858,11 @@ win_enter_ext(win_T *wp, int flags) 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;