mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #10738 from bfredl/cmdwinclose
api/window: disallow closing non-current window in cmdwin state
This commit is contained in:
commit
c190415dc2
@ -541,14 +541,19 @@ void nvim_win_close(Window window, Boolean force, Error *err)
|
|||||||
if (!win) {
|
if (!win) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tabpage_T *tabpage = win_find_tabpage(win);
|
|
||||||
|
|
||||||
|
if (cmdwin_type != 0) {
|
||||||
|
if (win == curwin) {
|
||||||
|
cmdwin_result = Ctrl_C;
|
||||||
|
} else {
|
||||||
|
api_set_error(err, kErrorTypeException, "%s", _(e_cmdwin));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tabpage_T *tabpage = win_find_tabpage(win);
|
||||||
TryState tstate;
|
TryState tstate;
|
||||||
try_enter(&tstate);
|
try_enter(&tstate);
|
||||||
if (cmdwin_type != 0 && win == curwin) {
|
ex_win_close(force, win, tabpage == curtab ? NULL : tabpage);
|
||||||
cmdwin_result = Ctrl_C;
|
|
||||||
} else {
|
|
||||||
ex_win_close(force, win, tabpage == curtab ? NULL : tabpage);
|
|
||||||
}
|
|
||||||
vim_ignored = try_leave(&tstate, err);
|
vim_ignored = try_leave(&tstate, err);
|
||||||
}
|
}
|
||||||
|
@ -326,12 +326,13 @@ describe('API/win', function()
|
|||||||
it('in cmdline-window #9767', function()
|
it('in cmdline-window #9767', function()
|
||||||
command('split')
|
command('split')
|
||||||
eq(2, #meths.list_wins())
|
eq(2, #meths.list_wins())
|
||||||
|
local oldwin = meths.get_current_win()
|
||||||
-- Open cmdline-window.
|
-- Open cmdline-window.
|
||||||
feed('q:')
|
feed('q:')
|
||||||
eq(3, #meths.list_wins())
|
eq(3, #meths.list_wins())
|
||||||
eq(':', funcs.getcmdwintype())
|
eq(':', funcs.getcmdwintype())
|
||||||
-- Vim: not allowed to close other windows from cmdline-window.
|
-- Vim: not allowed to close other windows from cmdline-window.
|
||||||
expect_err('Invalid window id$', meths.win_close, 1, true)
|
expect_err('E11: Invalid in command%-line window; <CR> executes, CTRL%-C quits$', meths.win_close, oldwin, true)
|
||||||
-- Close cmdline-window.
|
-- Close cmdline-window.
|
||||||
meths.win_close(0,true)
|
meths.win_close(0,true)
|
||||||
eq(2, #meths.list_wins())
|
eq(2, #meths.list_wins())
|
||||||
|
Loading…
Reference in New Issue
Block a user