Mercurial > vim
changeset 5263:3059c799fcd9 v7.4b.008
updated for version 7.4b.008
Problem: 'autochdir' causes setbufvar() to change the current directory.
(Ben Fritz)
Solution: When disabling autocommands also reset 'acd' temporarily.
(Christian Brabandt)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Fri, 02 Aug 2013 17:08:13 +0200 |
parents | cd7e3cdc310f |
children | 360c954b266d |
files | src/fileio.c src/version.c |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -8861,6 +8861,7 @@ aucmd_prepbuf(aco, buf) #ifdef FEAT_WINDOWS int save_ea; #endif + int save_acd; /* Find a window that is for the new buffer */ if (buf == curbuf) /* be quick when buf is curbuf */ @@ -8909,11 +8910,10 @@ aucmd_prepbuf(aco, buf) aucmd_win->w_s = &buf->b_s; ++buf->b_nwindows; win_init_empty(aucmd_win); /* set cursor and topline to safe values */ - vim_free(aucmd_win->w_localdir); - aucmd_win->w_localdir = NULL; /* Make sure w_localdir and globaldir are NULL to avoid a chdir() in * win_enter_ext(). */ + vim_free(aucmd_win->w_localdir); aucmd_win->w_localdir = NULL; aco->globaldir = globaldir; globaldir = NULL; @@ -8926,9 +8926,15 @@ aucmd_prepbuf(aco, buf) make_snapshot(SNAP_AUCMD_IDX); save_ea = p_ea; p_ea = FALSE; + + /* Prevent chdir() call in win_enter_ext(), through do_autochdir(). */ + save_acd = p_acd; + p_acd = FALSE; + (void)win_split_ins(0, WSP_TOP, aucmd_win, 0); (void)win_comp_pos(); /* recompute window positions */ p_ea = save_ea; + p_acd = save_acd; unblock_autocmds(); #endif curwin = aucmd_win;