diff options
Diffstat (limited to 'src/ex_docmd.c')
| -rw-r--r-- | src/ex_docmd.c | 47 |
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; } /* |
