mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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 vim/vim#9891)
b29ae15977
This commit is contained in:
parent
8e06377bc6
commit
eb70540ff0
@ -90,22 +90,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'))
|
||||
|
||||
|
@ -4680,10 +4680,6 @@ static void win_enter_ext(win_T *const wp, const int flags)
|
||||
/// Used after making another window the current one: change directory if needed.
|
||||
void fix_current_dir(void)
|
||||
{
|
||||
if (p_acd) {
|
||||
do_autochdir();
|
||||
return;
|
||||
}
|
||||
// New directory is either the local directory of the window, tab or NULL.
|
||||
char *new_dir = (char *)(curwin->w_localdir
|
||||
? curwin->w_localdir : curtab->tp_localdir);
|
||||
|
@ -64,7 +64,7 @@ describe('autochdir behavior', function()
|
||||
it('win_execute() does not change directory', function()
|
||||
local subdir = 'Xfile'
|
||||
command('cd '..dir)
|
||||
command('set autochdir')
|
||||
command('set acd')
|
||||
call('mkdir', subdir)
|
||||
local winid = eval('win_getid()')
|
||||
command('new '..subdir..'/file')
|
||||
@ -85,23 +85,28 @@ describe('autochdir behavior', function()
|
||||
command('split '..subdir..'/local.txt')
|
||||
command('lcd '..subdir)
|
||||
matches('%[window%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||
command('set autochdir')
|
||||
command('set acd')
|
||||
command('wincmd w')
|
||||
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('lcd '..cwd)
|
||||
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('tcd '..cwd)
|
||||
matches('%[tabpage%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('cd '..cwd)
|
||||
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('lcd '..cwd)
|
||||
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('edit')
|
||||
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('enew')
|
||||
command('wincmd w')
|
||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||
command('set noautochdir')
|
||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||
command('wincmd w')
|
||||
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('wincmd w')
|
||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||
command('set noacd')
|
||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||
command('wincmd w')
|
||||
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('cd '..cwd)
|
||||
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
||||
command('wincmd w')
|
||||
|
Loading…
Reference in New Issue
Block a user