mirror of
https://github.com/neovim/neovim.git
synced 2025-09-08 04:18:18 +00: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:
@@ -90,22 +90,27 @@ func Test_verbose_pwd()
|
|||||||
set acd
|
set acd
|
||||||
wincmd w
|
wincmd w
|
||||||
call assert_match('\[autochdir\].*testdir$', execute('verbose pwd'))
|
call assert_match('\[autochdir\].*testdir$', execute('verbose pwd'))
|
||||||
execute 'lcd' cwd
|
|
||||||
call assert_match('\[window\].*testdir$', execute('verbose pwd'))
|
|
||||||
execute 'tcd' cwd
|
execute 'tcd' cwd
|
||||||
call assert_match('\[tabpage\].*testdir$', execute('verbose pwd'))
|
call assert_match('\[tabpage\].*testdir$', execute('verbose pwd'))
|
||||||
execute 'cd' cwd
|
execute 'cd' cwd
|
||||||
call assert_match('\[global\].*testdir$', execute('verbose pwd'))
|
call assert_match('\[global\].*testdir$', execute('verbose pwd'))
|
||||||
|
execute 'lcd' cwd
|
||||||
|
call assert_match('\[window\].*testdir$', execute('verbose pwd'))
|
||||||
edit
|
edit
|
||||||
call assert_match('\[autochdir\].*testdir$', execute('verbose pwd'))
|
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
|
wincmd w
|
||||||
call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
||||||
set noacd
|
set noacd
|
||||||
call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
||||||
wincmd w
|
wincmd w
|
||||||
call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
call assert_match('\[window\].*testdir$', execute('verbose pwd'))
|
||||||
execute 'cd' cwd
|
execute 'cd' cwd
|
||||||
call assert_match('\[global\].*testdir', execute('verbose pwd'))
|
call assert_match('\[global\].*testdir$', execute('verbose pwd'))
|
||||||
wincmd w
|
wincmd w
|
||||||
call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd'))
|
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.
|
/// Used after making another window the current one: change directory if needed.
|
||||||
void fix_current_dir(void)
|
void fix_current_dir(void)
|
||||||
{
|
{
|
||||||
if (p_acd) {
|
|
||||||
do_autochdir();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// New directory is either the local directory of the window, tab or NULL.
|
// New directory is either the local directory of the window, tab or NULL.
|
||||||
char *new_dir = (char *)(curwin->w_localdir
|
char *new_dir = (char *)(curwin->w_localdir
|
||||||
? curwin->w_localdir : curtab->tp_localdir);
|
? curwin->w_localdir : curtab->tp_localdir);
|
||||||
|
@@ -64,7 +64,7 @@ describe('autochdir behavior', function()
|
|||||||
it('win_execute() does not change directory', function()
|
it('win_execute() does not change directory', function()
|
||||||
local subdir = 'Xfile'
|
local subdir = 'Xfile'
|
||||||
command('cd '..dir)
|
command('cd '..dir)
|
||||||
command('set autochdir')
|
command('set acd')
|
||||||
call('mkdir', subdir)
|
call('mkdir', subdir)
|
||||||
local winid = eval('win_getid()')
|
local winid = eval('win_getid()')
|
||||||
command('new '..subdir..'/file')
|
command('new '..subdir..'/file')
|
||||||
@@ -85,23 +85,28 @@ describe('autochdir behavior', function()
|
|||||||
command('split '..subdir..'/local.txt')
|
command('split '..subdir..'/local.txt')
|
||||||
command('lcd '..subdir)
|
command('lcd '..subdir)
|
||||||
matches('%[window%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
matches('%[window%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||||
command('set autochdir')
|
command('set acd')
|
||||||
command('wincmd w')
|
command('wincmd w')
|
||||||
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
||||||
command('lcd '..cwd)
|
|
||||||
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
|
||||||
command('tcd '..cwd)
|
command('tcd '..cwd)
|
||||||
matches('%[tabpage%].*'..dir, exec_capture('verbose pwd'))
|
matches('%[tabpage%].*'..dir, exec_capture('verbose pwd'))
|
||||||
command('cd '..cwd)
|
command('cd '..cwd)
|
||||||
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
||||||
|
command('lcd '..cwd)
|
||||||
|
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||||
command('edit')
|
command('edit')
|
||||||
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
matches('%[autochdir%].*'..dir, exec_capture('verbose pwd'))
|
||||||
|
command('enew')
|
||||||
command('wincmd w')
|
command('wincmd w')
|
||||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
||||||
command('set noautochdir')
|
command('wincmd w')
|
||||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
matches('%[window%].*'..dir, exec_capture('verbose pwd'))
|
||||||
command('wincmd w')
|
command('wincmd w')
|
||||||
matches('%[autochdir%].*'..dir..'[/\\]'..subdir, exec_capture('verbose pwd'))
|
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)
|
command('cd '..cwd)
|
||||||
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
matches('%[global%].*'..dir, exec_capture('verbose pwd'))
|
||||||
command('wincmd w')
|
command('wincmd w')
|
||||||
|
Reference in New Issue
Block a user