diff options
author | Munif Tanjim <hello@muniftanjim.dev> | 2023-04-02 23:01:10 +0600 |
---|---|---|
committer | Munif Tanjim <hello@muniftanjim.dev> | 2023-04-10 16:26:42 +0600 |
commit | da979ae04b7a8c56586ed0233957600ad6af99f0 (patch) | |
tree | cbd4e93374b0161198028d9dd97310e52bcd537b | |
parent | 53f36806f1b5107c0570ffbf57180a8e08f45b2e (diff) | |
download | rneovim-da979ae04b7a8c56586ed0233957600ad6af99f0.tar.gz rneovim-da979ae04b7a8c56586ed0233957600ad6af99f0.tar.bz2 rneovim-da979ae04b7a8c56586ed0233957600ad6af99f0.zip |
fix(api): do not re-apply win_config.style when missing
-rw-r--r-- | runtime/doc/api.txt | 4 | ||||
-rw-r--r-- | src/nvim/api/win_config.c | 12 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 19 |
3 files changed, 28 insertions, 7 deletions
diff --git a/runtime/doc/api.txt b/runtime/doc/api.txt index 3c3e66dd57..1adf0a305f 100644 --- a/runtime/doc/api.txt +++ b/runtime/doc/api.txt @@ -3066,8 +3066,8 @@ nvim_open_win({buffer}, {enter}, {*config}) *nvim_open_win()* In general, values below 100 are recommended, unless there is a good reason to overshadow builtin elements. - • style: Configure the appearance of the window. Currently - only takes one non-empty value: + • style: (optional) Configure the appearance of the window. + Currently only supports one value: • "minimal" Nvim will display the window with many UI options disabled. This is useful when displaying a temporary float where the text should not be edited. diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c index 0ffeac1bff..b2b2b51005 100644 --- a/src/nvim/api/win_config.c +++ b/src/nvim/api/win_config.c @@ -108,8 +108,8 @@ /// The default value for floats are 50. In general, values below 100 are /// recommended, unless there is a good reason to overshadow builtin /// elements. -/// - style: Configure the appearance of the window. Currently only takes -/// one non-empty value: +/// - style: (optional) Configure the appearance of the window. Currently +/// only supports one value: /// - "minimal" Nvim will display the window with many UI options /// disabled. This is useful when displaying a temporary /// float where the text should not be edited. Disables @@ -222,9 +222,11 @@ void nvim_win_set_config(Window window, Dict(float_config) *config, Error *err) win_config_float(win, fconfig); win->w_pos_changed = true; } - if (fconfig.style == kWinStyleMinimal) { - win_set_minimal_style(win); - didset_window_options(win, true); + if (HAS_KEY(config->style)) { + if (fconfig.style == kWinStyleMinimal) { + win_set_minimal_style(win); + didset_window_options(win, true); + } } } diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index 32f28dce26..6d9197e1df 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -432,6 +432,25 @@ describe('float window', function() assert_alive() end) + it("should re-apply 'style' when present", function() + local float_opts = {style = 'minimal', relative = 'editor', row = 1, col = 1, width = 1, height = 1} + local float_win = meths.open_win(0, true, float_opts) + meths.win_set_option(float_win, 'number', true) + float_opts.row = 2 + meths.win_set_config(float_win, float_opts) + eq(false, meths.win_get_option(float_win, 'number')) + end) + + it("should not re-apply 'style' when missing", function() + local float_opts = {style = 'minimal', relative = 'editor', row = 1, col = 1, width = 1, height = 1} + local float_win = meths.open_win(0, true, float_opts) + meths.win_set_option(float_win, 'number', true) + float_opts.row = 2 + float_opts.style = nil + meths.win_set_config(float_win, float_opts) + eq(true, meths.win_get_option(float_win, 'number')) + end) + it("'scroll' is computed correctly when opening float with splitkeep=screen #20684", function() meths.set_option('splitkeep', 'screen') local float_opts = {relative = 'editor', row = 1, col = 1, width = 10, height = 10} |