summaryrefslogtreecommitdiff
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c47
1 files changed, 21 insertions, 26 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 64dcd7e2b..d8adf85bc 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7358,7 +7358,8 @@ changedir_func(
{
char_u *pdir = NULL;
int dir_differs;
- int retval = FALSE;
+ char_u *acmd_fname;
+ char_u **pp;
if (new_dir == NULL || allbuf_locked())
return FALSE;
@@ -7415,38 +7416,32 @@ changedir_func(
{
emsg(_(e_command_failed));
vim_free(pdir);
+ return FALSE;
}
+
+ if (scope == CDSCOPE_WINDOW)
+ pp = &curwin->w_prevdir;
+ else if (scope == CDSCOPE_TABPAGE)
+ pp = &curtab->tp_prevdir;
else
- {
- char_u *acmd_fname;
- char_u **pp;
+ pp = &prev_dir;
+ vim_free(*pp);
+ *pp = pdir;
+
+ post_chdir(scope);
+ if (dir_differs)
+ {
if (scope == CDSCOPE_WINDOW)
- pp = &curwin->w_prevdir;
+ acmd_fname = (char_u *)"window";
else if (scope == CDSCOPE_TABPAGE)
- pp = &curtab->tp_prevdir;
+ acmd_fname = (char_u *)"tabpage";
else
- pp = &prev_dir;
- vim_free(*pp);
- *pp = pdir;
-
- post_chdir(scope);
-
- if (dir_differs)
- {
- if (scope == CDSCOPE_WINDOW)
- acmd_fname = (char_u *)"window";
- else if (scope == CDSCOPE_TABPAGE)
- acmd_fname = (char_u *)"tabpage";
- else
- acmd_fname = (char_u *)"global";
- apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE,
- curbuf);
- }
- retval = TRUE;
+ acmd_fname = (char_u *)"global";
+ apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE,
+ curbuf);
}
-
- return retval;
+ return TRUE;
}
/*