diff options
-rw-r--r-- | src/nvim/fileio.c | 3 | ||||
-rw-r--r-- | src/nvim/window.c | 6 | ||||
-rw-r--r-- | test/functional/autocmd/autocmd_spec.lua | 7 |
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') |