aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/fileio.c3
-rw-r--r--src/nvim/window.c6
-rw-r--r--test/functional/autocmd/autocmd_spec.lua7
3 files changed, 13 insertions, 3 deletions
diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c
index 865da25009..7a46957151 100644
--- a/src/nvim/fileio.c
+++ b/src/nvim/fileio.c
@@ -6862,7 +6862,8 @@ static bool apply_autocmds_group(event_T event, char_u *fname, char_u *fname_io,
|| event == EVENT_SPELLFILEMISSING
|| event == EVENT_SYNTAX
|| event == EVENT_SIGNAL
- || event == EVENT_TABCLOSED) {
+ || event == EVENT_TABCLOSED
+ || event == EVENT_WINCLOSED) {
fname = vim_strsave(fname);
} else {
fname = (char_u *)FullName_save((char *)fname, false);
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 4743dca3ff..9efed49e70 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -2695,8 +2695,10 @@ static void do_autocmd_winclosed(win_T *win)
return;
}
recursive = true;
- apply_autocmds(EVENT_WINCLOSED, win->w_buffer->b_fname,
- win->w_buffer->b_fname, false, win->w_buffer);
+
+ char_u winid[10];
+ vim_snprintf((char *)winid, sizeof(winid), "%i", win->handle);
+ apply_autocmds(EVENT_WINCLOSED, winid, winid, false, win->w_buffer);
recursive = false;
}
diff --git a/test/functional/autocmd/autocmd_spec.lua b/test/functional/autocmd/autocmd_spec.lua
index 31c6edb940..6cb12750a1 100644
--- a/test/functional/autocmd/autocmd_spec.lua
+++ b/test/functional/autocmd/autocmd_spec.lua
@@ -50,6 +50,13 @@ describe('autocmd', function()
eq(1, eval('g:triggered'))
end)
+ it('WinClosed event exposes window id as <afile>', function()
+ command('new')
+ local id = meths.get_current_win().id
+ helpers.nvim('command', 'au! WinClosed * echom "winclosed:".expand("<afile>").":".expand("<amatch>").":".win_getid()')
+ eq(string.format("winclosed:%s:%s:%s", id, id, id), helpers.nvim('exec', 'close', true))
+ end)
+
it(':bdelete triggers WinClosed event', function()
command('let g:triggered = 0')
command('autocmd WinClosed <buffer> :let g:triggered+=1')