aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-03-19 15:28:24 +0800
committerGitHub <noreply@github.com>2025-03-19 07:28:24 +0000
commit63bbb7c109a5db1520148168c40e0e5ce512a41f (patch)
tree4e0536171f0900fae6a23a4f700cd4910f322d54
parent190d0241e2a0cd4ec4bcb520772db835df935530 (diff)
downloadrneovim-63bbb7c109a5db1520148168c40e0e5ce512a41f.tar.gz
rneovim-63bbb7c109a5db1520148168c40e0e5ce512a41f.tar.bz2
rneovim-63bbb7c109a5db1520148168c40e0e5ce512a41f.zip
fix(api): fix 'winborder' preventing splits with nvim_open_win (#32981)
While at it, rename the p_winbd variable to p_winborder, as 'winbd' is not the option's short name. Co-authored-by: glepnir <glephunter@gmail.com>
-rw-r--r--src/nvim/api/win_config.c11
-rw-r--r--src/nvim/option_vars.h2
-rw-r--r--src/nvim/options.lua2
-rw-r--r--test/functional/api/window_spec.lua8
4 files changed, 18 insertions, 5 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index 31de5ca1eb..4b5b02e507 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -1273,13 +1273,18 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco
}
}
- if (HAS_KEY_X(config, border) || *p_winbd != NUL) {
+ Object border_style = OBJECT_INIT;
+ if (HAS_KEY_X(config, border)) {
if (is_split) {
api_set_error(err, kErrorTypeValidation, "non-float cannot have 'border'");
goto fail;
}
- Object style = config->border.type != kObjectTypeNil ? config->border : CSTR_AS_OBJ(p_winbd);
- parse_border_style(style, fconfig, err);
+ border_style = config->border;
+ } else if (*p_winborder != NUL) {
+ border_style = CSTR_AS_OBJ(p_winborder);
+ }
+ if (border_style.type != kObjectTypeNil) {
+ parse_border_style(border_style, fconfig, err);
if (ERROR_SET(err)) {
goto fail;
}
diff --git a/src/nvim/option_vars.h b/src/nvim/option_vars.h
index a484eb8447..3f0445675d 100644
--- a/src/nvim/option_vars.h
+++ b/src/nvim/option_vars.h
@@ -566,7 +566,7 @@ EXTERN OptInt p_wcm; ///< 'wildcharm'
EXTERN int p_wic; ///< 'wildignorecase'
EXTERN char *p_wim; ///< 'wildmode'
EXTERN int p_wmnu; ///< 'wildmenu'
-EXTERN char *p_winbd; ///< 'winborder'
+EXTERN char *p_winborder; ///< 'winborder'
EXTERN OptInt p_wh; ///< 'winheight'
EXTERN OptInt p_wmh; ///< 'winminheight'
EXTERN OptInt p_wmw; ///< 'winminwidth'
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index 6c71477ba0..bb63ff638b 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -10205,7 +10205,7 @@ local options = {
scope = { 'global' },
short_desc = N_('border of floating window'),
type = 'string',
- varname = 'p_winbd',
+ varname = 'p_winborder',
},
{
abbreviation = 'wi',
diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua
index 028f0beb38..119c185b72 100644
--- a/test/functional/api/window_spec.lua
+++ b/test/functional/api/window_spec.lua
@@ -1825,6 +1825,14 @@ describe('API/win', function()
)
end)
+ it("can create split window when 'winborder' is set", function()
+ local old_win = api.nvim_get_current_win()
+ api.nvim_set_option_value('winborder', 'single', {})
+ local new_win = api.nvim_open_win(0, false, { split = 'right', win = 0 })
+ eq({ 'row', { { 'leaf', old_win }, { 'leaf', new_win } } }, fn.winlayout())
+ eq('', api.nvim_win_get_config(new_win).relative)
+ end)
+
describe("with 'autochdir'", function()
local topdir
local otherbuf