mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.2433: opening cmdline window gives error in BufLeave autocommand
Problem: Opening cmdline window gives error in BufLeave autocommand.
Solution: Reset cmdwin_type when triggering the autocommand.
b63f3ca66d
This commit is contained in:
parent
3f9fa730ce
commit
07f6f12cf5
@ -2434,6 +2434,11 @@ int do_ecmd(
|
|||||||
* is returned by buflist_new(), nothing to do here.
|
* is returned by buflist_new(), nothing to do here.
|
||||||
*/
|
*/
|
||||||
if (buf != curbuf) {
|
if (buf != curbuf) {
|
||||||
|
const int save_cmdwin_type = cmdwin_type;
|
||||||
|
|
||||||
|
// BufLeave applies to the old buffer.
|
||||||
|
cmdwin_type = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Be careful: The autocommands may delete any buffer and change
|
* Be careful: The autocommands may delete any buffer and change
|
||||||
* the current buffer.
|
* the current buffer.
|
||||||
@ -2449,6 +2454,7 @@ int do_ecmd(
|
|||||||
}
|
}
|
||||||
set_bufref(&au_new_curbuf, buf);
|
set_bufref(&au_new_curbuf, buf);
|
||||||
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, false, curbuf);
|
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, false, curbuf);
|
||||||
|
cmdwin_type = save_cmdwin_type;
|
||||||
if (!bufref_valid(&au_new_curbuf)) {
|
if (!bufref_valid(&au_new_curbuf)) {
|
||||||
// New buffer has been deleted.
|
// New buffer has been deleted.
|
||||||
delbuf_msg(new_name); // Frees new_name.
|
delbuf_msg(new_name); // Frees new_name.
|
||||||
|
@ -1005,6 +1005,25 @@ func Test_buffers_lastused()
|
|||||||
bwipeout bufc
|
bwipeout bufc
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for CmdwinEnter autocmd
|
||||||
|
func Test_cmdwin_autocmd()
|
||||||
|
CheckFeature cmdwin
|
||||||
|
|
||||||
|
augroup CmdWin
|
||||||
|
au!
|
||||||
|
autocmd BufLeave * if &buftype == '' | update | endif
|
||||||
|
autocmd CmdwinEnter * startinsert
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
call assert_fails('call feedkeys("q:xyz\<CR>", "xt")', 'E492:')
|
||||||
|
call assert_equal('xyz', @:)
|
||||||
|
|
||||||
|
augroup CmdWin
|
||||||
|
au!
|
||||||
|
augroup END
|
||||||
|
augroup! CmdWin
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_cmdlineclear_tabenter()
|
func Test_cmdlineclear_tabenter()
|
||||||
" See test/functional/legacy/cmdline_spec.lua
|
" See test/functional/legacy/cmdline_spec.lua
|
||||||
CheckScreendump
|
CheckScreendump
|
||||||
|
Loading…
Reference in New Issue
Block a user