Mercurial > vim
changeset 26416:7606d9b13068 v8.2.3739
patch 8.2.3739: in wrong directory when using win_execute() with 'acd' set
Commit: https://github.com/vim/vim/commit/dea4a616376c6500894c16e26057ce16d7ef9f0e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 4 22:03:34 2021 +0000
patch 8.2.3739: in wrong directory when using win_execute() with 'acd' set
Problem: In wrong directory when using win_execute() with 'acd' set.
Solution: Restore the directory when returning to the window. (closes https://github.com/vim/vim/issues/9276)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 04 Dec 2021 23:15:03 +0100 |
parents | f54838eb6663 |
children | 49cd1ff825c4 |
files | src/testdir/test_autochdir.vim src/version.c src/window.c |
diffstat | 3 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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'))