neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 963308439a5dff5a55b837c74d0a50c2c069ae23
parent 86835b3db3249fa6743e48b6d1aedd3d50a4ed97
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Mon,  2 Jun 2025 14:59:19 +0200

fix(api): reconfiguring float "relative" does not clear "win" (#34271)

Problem:  Unable to change the "relative" of a flag after its target
          "win" no longer exists.
Solution: Unset target window if it is not present in config and
          reconfigured "relative" no longer expects a target window.
Diffstat:
Msrc/nvim/api/win_config.c | 2++
Mtest/functional/ui/float_spec.lua | 15+++++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c @@ -1206,6 +1206,8 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco "non-float with 'win' requires at least 'split' or 'vertical'"); goto fail; } + } else { + fconfig->window = 0; } if (HAS_KEY_X(config, external)) { diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua @@ -369,6 +369,21 @@ describe('float window', function() ) end) + it('no error message when reconfig relative field on closed win', function() + command('split') + local winid = api.nvim_open_win(0, false, { + relative = 'win', + width = 1, + height = 1, + col = 1, + row = 1, + }) + eq(1001, api.nvim_win_get_config(winid).win) + command('close') + api.nvim_win_set_config(winid, { relative = 'editor', row = 1, col = 1 }) + eq(nil, api.nvim_win_get_config(winid).win) + end) + it('is not operated on by windo when non-focusable #15374', function() command([[ let winids = []