mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +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
	 zeertzjq
					zeertzjq