aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-08-18 07:10:27 +0800
committerGitHub <noreply@github.com>2024-08-17 23:10:27 +0000
commitcce1eb0806cc8c2f75b60aee5841b4750c2258c1 (patch)
tree7c4bef5a46e3f2e7d40122aee7d00b6bee8ecefc
parentb0a042e877c08797054c4dc1c1672b2b59f15ee3 (diff)
downloadrneovim-cce1eb0806cc8c2f75b60aee5841b4750c2258c1.tar.gz
rneovim-cce1eb0806cc8c2f75b60aee5841b4750c2258c1.tar.bz2
rneovim-cce1eb0806cc8c2f75b60aee5841b4750c2258c1.zip
fix(api): error properly with invalid field in nvim_open_win (#30078)
-rw-r--r--src/nvim/api/win_config.c2
-rw-r--r--test/functional/ui/float_spec.lua46
2 files changed, 39 insertions, 9 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index f0b90d8512..996e587446 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -1038,7 +1038,7 @@ static void parse_border_style(Object style, WinConfig *fconfig, Error *err)
static void generate_api_error(win_T *wp, const char *attribute, Error *err)
{
- if (wp->w_floating) {
+ if (wp != NULL && wp->w_floating) {
api_set_error(err, kErrorTypeValidation,
"Missing 'relative' field when reconfiguring floating window %d",
wp->handle);
diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua
index 7aff47e50e..754f0772f6 100644
--- a/test/functional/ui/float_spec.lua
+++ b/test/functional/ui/float_spec.lua
@@ -327,6 +327,35 @@ describe('float window', function()
eq(12, pos[2])
end)
+ it('error message when invalid field specified for split', function()
+ local bufnr = api.nvim_create_buf(false, true)
+ eq(
+ "non-float cannot have 'row'",
+ pcall_err(api.nvim_open_win, bufnr, true, { split = 'right', row = 10 })
+ )
+ eq(
+ "non-float cannot have 'col'",
+ pcall_err(api.nvim_open_win, bufnr, true, { split = 'right', col = 10 })
+ )
+ eq(
+ "non-float cannot have 'bufpos'",
+ pcall_err(api.nvim_open_win, bufnr, true, { split = 'right', bufpos = { 0, 0 } })
+ )
+ local winid = api.nvim_open_win(bufnr, true, { split = 'right' })
+ eq(
+ "non-float cannot have 'row'",
+ pcall_err(api.nvim_win_set_config, winid, { split = 'right', row = 10 })
+ )
+ eq(
+ "non-float cannot have 'col'",
+ pcall_err(api.nvim_win_set_config, winid, { split = 'right', col = 10 })
+ )
+ eq(
+ "non-float cannot have 'bufpos'",
+ pcall_err(api.nvim_win_set_config, winid, { split = 'right', bufpos = { 0, 0 } })
+ )
+ end)
+
it('error message when reconfig missing relative field', function()
local bufnr = api.nvim_create_buf(false, true)
local opts = {
@@ -337,15 +366,16 @@ describe('float window', function()
relative = 'editor',
style = 'minimal',
}
- local win_id = api.nvim_open_win(bufnr, true, opts)
+ local winid = api.nvim_open_win(bufnr, true, opts)
eq(
- "Missing 'relative' field when reconfiguring floating window 1001",
- pcall_err(api.nvim_win_set_config, win_id, {
- width = 3,
- height = 3,
- row = 10,
- col = 10,
- }))
+ "Missing 'relative' field when reconfiguring floating window 1001",
+ pcall_err(api.nvim_win_set_config, winid, {
+ width = 3,
+ height = 3,
+ row = 10,
+ col = 10,
+ })
+ )
end)
it('is not operated on by windo when non-focusable #15374', function()