mirror of
https://github.com/neovim/neovim.git
synced 2026-03-29 03:42:11 +00:00
fix(api): improve external window validation
Problem: "win" is allowed in external window configs in some cases. External window converted to normal float can't move tabpages in one nvim_win_set_config call. External window can't be turned into a normal split. Solution: disallow setting "win" for external windows. Allow external window to move tabpages, which turns it non-external. Allow external window to be turned into a (non-external) split. parse_win_config has more validation issues from not considering the window's existing config enough (not from this PR). For example, zindex can be set for an existing split if "split"/"vertical" isn't given, despite intending for that to be an error. Plus the logic is confusing. It could do with a refactor at some point...
This commit is contained in:
@@ -3821,6 +3821,18 @@ describe('float window', function()
|
||||
)
|
||||
eq("Must specify 'width'", pcall_err(api.nvim_open_win, buf, false, { relative = 'editor', row = 0, col = 0 }))
|
||||
eq("Must specify 'height'", pcall_err(api.nvim_open_win, buf, false, { relative = 'editor', row = 0, col = 0, width = 2 }))
|
||||
|
||||
if multigrid then
|
||||
eq(
|
||||
"external window cannot have 'win'",
|
||||
pcall_err(api.nvim_open_win, buf, false, { external = true, win = 0, width = 10, height = 10 })
|
||||
)
|
||||
api.nvim_open_win(buf, true, { external = true, width = 10, height = 10 })
|
||||
eq("external window cannot have 'win'", pcall_err(api.nvim_win_set_config, 0, { win = 0 }))
|
||||
-- OK to include "win" if external window is also reconfigured to a normal float.
|
||||
api.nvim_win_set_config(0, { relative = 'editor', win = 0, row = 0, col = 0, width = 5, height = 5 })
|
||||
eq('editor', api.nvim_win_get_config(0).relative)
|
||||
end
|
||||
end)
|
||||
|
||||
it('can be placed relative window or cursor', function()
|
||||
|
||||
Reference in New Issue
Block a user