From 190d0241e2a0cd4ec4bcb520772db835df935530 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 19 Mar 2025 14:17:53 +0800 Subject: [PATCH] fix(options): fix 'winborder' accepting multiple string values (#32978) Problem: 'winborder' accepting multiple string values. Solution: Use the fallback did_set_str_generic() callback instead of did_set_winborder() which calls opt_strings_flags() with incorrect last argument. --- src/nvim/options.lua | 1 - src/nvim/optionstr.c | 9 --------- test/old/testdir/gen_opt_test.vim | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 3cf60513c4..6c71477ba0 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -10190,7 +10190,6 @@ local options = { }, { defaults = { if_true = '' }, - cb = 'did_set_winborder', values = { '', 'double', 'single', 'shadow', 'rounded', 'solid', 'none' }, desc = [=[ Defines the default border style of floating windows. The default value diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c index c3cdd6e804..3a6b4c9936 100644 --- a/src/nvim/optionstr.c +++ b/src/nvim/optionstr.c @@ -2005,15 +2005,6 @@ const char *did_set_winhighlight(optset_T *args) return NULL; } -/// The 'winborder' option is changed. -const char *did_set_winborder(optset_T *args) -{ - if (opt_strings_flags(p_winbd, opt_winborder_values, NULL, true) != OK) { - return e_invarg; - } - return NULL; -} - int expand_set_winhighlight(optexpand_T *args, int *numMatches, char ***matches) { return expand_set_opt_generic(args, get_highlight_name, numMatches, matches); diff --git a/test/old/testdir/gen_opt_test.vim b/test/old/testdir/gen_opt_test.vim index 84a352a158..aa4c5ec6e0 100644 --- a/test/old/testdir/gen_opt_test.vim +++ b/test/old/testdir/gen_opt_test.vim @@ -75,7 +75,7 @@ let test_values = { \ 'shada': [['', '''50', '"30'], ['xxx']], \ 'termpastefilter': [['BS', 'HT', 'FF', 'ESC', 'DEL', 'C0', 'C1', 'C0,C1'], \ ['xxx', 'C0,C1,xxx']], - \ 'winborder': [['rounded', 'none', 'single', 'solid'], ['xxx']], + \ 'winborder': [['rounded', 'none', 'single', 'solid'], ['xxx', 'none,solid']], \ 'winhighlight': [['', 'a:b', 'a:', 'a:b,c:d'], \ ['a', ':', ':b', 'a:b:c', 'a:/', '/:b', ',', 'a:b,,', 'a:b,c']], \