mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.3591: no event is triggered when closing a window (#16306)
Problem: No event is triggered when closing a window.
Solution: Add the WinClosed event. (Naohiro Ono, closes vim/vim#9110)
23beefed73
Nvim has already implemented this feature, so this only changes tests
and docs.
This commit is contained in:
parent
5ff972cafe
commit
dba3590a0e
@ -1002,8 +1002,9 @@ VimResume After Nvim resumes from |suspend| state.
|
||||
*VimSuspend*
|
||||
VimSuspend Before Nvim enters |suspend| state.
|
||||
*WinClosed*
|
||||
WinClosed After closing a window. <afile> expands to the
|
||||
|window-ID|.
|
||||
WinClosed After closing a window. The pattern is
|
||||
matched against the |window-ID|. Both
|
||||
<amatch> and <afile> are set to the |window-ID|.
|
||||
After WinLeave.
|
||||
Non-recursive (event cannot trigger itself).
|
||||
See also |ExitPre|, |QuitPre|.
|
||||
|
@ -186,7 +186,6 @@ Events:
|
||||
|TermOpen|
|
||||
|UIEnter|
|
||||
|UILeave|
|
||||
|WinClosed|
|
||||
|
||||
Functions:
|
||||
|dictwatcheradd()| notifies a callback whenever a |Dict| is modified
|
||||
|
@ -222,6 +222,7 @@ func Test_win_tab_autocmd()
|
||||
|
||||
augroup testing
|
||||
au WinNew * call add(g:record, 'WinNew')
|
||||
au WinClosed * call add(g:record, 'WinClosed')
|
||||
au WinEnter * call add(g:record, 'WinEnter')
|
||||
au WinLeave * call add(g:record, 'WinLeave')
|
||||
au TabNew * call add(g:record, 'TabNew')
|
||||
@ -238,8 +239,8 @@ func Test_win_tab_autocmd()
|
||||
call assert_equal([
|
||||
\ 'WinLeave', 'WinNew', 'WinEnter',
|
||||
\ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter',
|
||||
\ 'WinLeave', 'TabLeave', 'TabClosed', 'WinEnter', 'TabEnter',
|
||||
\ 'WinLeave', 'WinEnter'
|
||||
\ 'WinLeave', 'TabLeave', 'WinClosed', 'TabClosed', 'WinEnter', 'TabEnter',
|
||||
\ 'WinLeave', 'WinClosed', 'WinEnter'
|
||||
\ ], g:record)
|
||||
|
||||
let g:record = []
|
||||
@ -250,7 +251,7 @@ func Test_win_tab_autocmd()
|
||||
call assert_equal([
|
||||
\ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter',
|
||||
\ 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter',
|
||||
\ 'TabClosed'
|
||||
\ 'WinClosed', 'TabClosed'
|
||||
\ ], g:record)
|
||||
|
||||
augroup testing
|
||||
@ -259,6 +260,45 @@ func Test_win_tab_autocmd()
|
||||
unlet g:record
|
||||
endfunc
|
||||
|
||||
func Test_WinClosed()
|
||||
" Test that the pattern is matched against the closed window's ID, and both
|
||||
" <amatch> and <afile> are set to it.
|
||||
new
|
||||
let winid = win_getid()
|
||||
let g:matched = v:false
|
||||
augroup test-WinClosed
|
||||
autocmd!
|
||||
execute 'autocmd WinClosed' winid 'let g:matched = v:true'
|
||||
autocmd WinClosed * let g:amatch = str2nr(expand('<amatch>'))
|
||||
autocmd WinClosed * let g:afile = str2nr(expand('<afile>'))
|
||||
augroup END
|
||||
close
|
||||
call assert_true(g:matched)
|
||||
call assert_equal(winid, g:amatch)
|
||||
call assert_equal(winid, g:afile)
|
||||
|
||||
" Test that WinClosed is non-recursive.
|
||||
new
|
||||
new
|
||||
call assert_equal(3, winnr('$'))
|
||||
let g:triggered = 0
|
||||
augroup test-WinClosed
|
||||
autocmd!
|
||||
autocmd WinClosed * let g:triggered += 1
|
||||
autocmd WinClosed * 2 wincmd c
|
||||
augroup END
|
||||
close
|
||||
call assert_equal(1, winnr('$'))
|
||||
call assert_equal(1, g:triggered)
|
||||
|
||||
autocmd! test-WinClosed
|
||||
augroup! test-WinClosed
|
||||
unlet g:matched
|
||||
unlet g:amatch
|
||||
unlet g:afile
|
||||
unlet g:triggered
|
||||
endfunc
|
||||
|
||||
func s:AddAnAutocmd()
|
||||
augroup vimBarTest
|
||||
au BufReadCmd * echo 'hello'
|
||||
|
Loading…
Reference in New Issue
Block a user