aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_docmd.c39
1 files changed, 18 insertions, 21 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index b859d29a86..b94fe47c17 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -7835,13 +7835,11 @@ void post_chdir(CdScope scope, bool trigger_dirchanged)
/// @return true if the directory is successfully changed.
bool changedir_func(char_u *new_dir, CdScope scope)
{
- char_u *pdir = NULL;
- bool retval = false;
-
if (new_dir == NULL || allbuf_locked()) {
return false;
}
+ char_u *pdir = NULL;
// ":cd -": Change to previous directory
if (STRCMP(new_dir, "-") == 0) {
pdir = get_prevdir(scope);
@@ -7874,27 +7872,26 @@ bool changedir_func(char_u *new_dir, CdScope scope)
if (dir_differs && vim_chdir(new_dir) != 0) {
emsg(_(e_failed));
xfree(pdir);
- } else {
- char_u **pp;
-
- switch (scope) {
- case kCdScopeTabpage:
- pp = &curtab->tp_prevdir;
- break;
- case kCdScopeWindow:
- pp = &curwin->w_prevdir;
- break;
- default:
- pp = &prev_dir;
- }
- xfree(*pp);
- *pp = pdir;
+ return false;
+ }
- post_chdir(scope, dir_differs);
- retval = true;
+ char_u **pp;
+ switch (scope) {
+ case kCdScopeTabpage:
+ pp = &curtab->tp_prevdir;
+ break;
+ case kCdScopeWindow:
+ pp = &curwin->w_prevdir;
+ break;
+ default:
+ pp = &prev_dir;
}
+ xfree(*pp);
+ *pp = pdir;
- return retval;
+ post_chdir(scope, dir_differs);
+
+ return true;
}
/// ":cd", ":tcd", ":lcd", ":chdir", "tchdir" and ":lchdir".