aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/file_search.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-03-12 12:12:26 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-03-12 15:45:50 +0100
commitc5e61b41a53c4fac93f1101ece1a23168eccb3a3 (patch)
tree08dfec88cb61bed3a4bf0ae2b36d7910de3801cf /src/nvim/file_search.c
parentd9fcbc2cfb5f20f63a2870624ce48a58cf918ea8 (diff)
downloadrneovim-c5e61b41a53c4fac93f1101ece1a23168eccb3a3.tar.gz
rneovim-c5e61b41a53c4fac93f1101ece1a23168eccb3a3.tar.bz2
rneovim-c5e61b41a53c4fac93f1101ece1a23168eccb3a3.zip
DirChanged: avoid redundant events on 'autochdir'
Diffstat (limited to 'src/nvim/file_search.c')
-rw-r--r--src/nvim/file_search.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/file_search.c b/src/nvim/file_search.c
index c840c0a2d1..b73d9944ce 100644
--- a/src/nvim/file_search.c
+++ b/src/nvim/file_search.c
@@ -1566,14 +1566,25 @@ void do_autocmd_dirchanged(char *new_dir, CdScope scope)
/// @return OK or FAIL
int vim_chdirfile(char_u *fname)
{
- char_u dir[MAXPATHL];
+ char dir[MAXPATHL];
STRLCPY(dir, fname, MAXPATHL);
- *path_tail_with_sep(dir) = NUL;
- if (os_chdir((char *)dir) != 0) {
+ *path_tail_with_sep((char_u *)dir) = NUL;
+
+ if (os_dirname(NameBuff, sizeof(NameBuff)) != OK) {
+ NameBuff[0] = NUL;
+ }
+
+ if (os_chdir(dir) != 0) {
return FAIL;
}
- do_autocmd_dirchanged((char *)dir, kCdScopeWindow);
+
+#ifdef BACKSLASH_IN_FILENAME
+ slash_adjust(dir);
+#endif
+ if (!strequal(dir, (char *)NameBuff)) {
+ do_autocmd_dirchanged(dir, kCdScopeWindow);
+ }
return OK;
}