mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 01:16:31 +00:00
Add v:event flag on DirChanged signaling switching window (#13153)
Closes #9909
This commit is contained in:
@@ -7506,7 +7506,7 @@ void post_chdir(CdScope scope, bool trigger_dirchanged)
|
||||
shorten_fnames(true);
|
||||
|
||||
if (trigger_dirchanged) {
|
||||
do_autocmd_dirchanged(cwd, scope);
|
||||
do_autocmd_dirchanged(cwd, scope, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1565,7 +1565,7 @@ theend:
|
||||
return file_name;
|
||||
}
|
||||
|
||||
void do_autocmd_dirchanged(char *new_dir, CdScope scope)
|
||||
void do_autocmd_dirchanged(char *new_dir, CdScope scope, bool changed_window)
|
||||
{
|
||||
static bool recursive = false;
|
||||
|
||||
@@ -1601,6 +1601,7 @@ void do_autocmd_dirchanged(char *new_dir, CdScope scope)
|
||||
|
||||
tv_dict_add_str(dict, S_LEN("scope"), buf); // -V614
|
||||
tv_dict_add_str(dict, S_LEN("cwd"), new_dir);
|
||||
tv_dict_add_bool(dict, S_LEN("changed_window"), changed_window);
|
||||
tv_dict_set_keys_readonly(dict);
|
||||
|
||||
apply_autocmds(EVENT_DIRCHANGED, (char_u *)buf, (char_u *)new_dir, false,
|
||||
@@ -1633,7 +1634,7 @@ int vim_chdirfile(char_u *fname)
|
||||
slash_adjust((char_u *)dir);
|
||||
#endif
|
||||
if (!strequal(dir, (char *)NameBuff)) {
|
||||
do_autocmd_dirchanged(dir, kCdScopeWindow);
|
||||
do_autocmd_dirchanged(dir, kCdScopeWindow, false);
|
||||
}
|
||||
|
||||
return OK;
|
||||
|
@@ -4567,7 +4567,7 @@ static void win_enter_ext(win_T *wp, bool undo_sync, int curwin_invalid,
|
||||
if (os_chdir(new_dir) == 0) {
|
||||
if (!p_acd && !strequal(new_dir, cwd)) {
|
||||
do_autocmd_dirchanged(new_dir, curwin->w_localdir
|
||||
? kCdScopeWindow : kCdScopeTab);
|
||||
? kCdScopeWindow : kCdScopeTab, true);
|
||||
}
|
||||
shorten_fnames(true);
|
||||
}
|
||||
@@ -4576,7 +4576,7 @@ static void win_enter_ext(win_T *wp, bool undo_sync, int curwin_invalid,
|
||||
// directory: Change to the global directory.
|
||||
if (os_chdir((char *)globaldir) == 0) {
|
||||
if (!p_acd && !strequal((char *)globaldir, cwd)) {
|
||||
do_autocmd_dirchanged((char *)globaldir, kCdScopeGlobal);
|
||||
do_autocmd_dirchanged((char *)globaldir, kCdScopeGlobal, true);
|
||||
}
|
||||
}
|
||||
XFREE_CLEAR(globaldir);
|
||||
|
Reference in New Issue
Block a user