fix(api): win_set_config update statuslines after removing splits

Problem: nvim_win_set_config does not update statuslines after removing a split.

Solution: call last_status.

Didn't realize this was missing in the original nvim_win_set_config for splits
PR.

As it can only be done for the current tabpage, do it if win_tp == curtab;
enter_tabpage will eventually call last_status anyway when the user enters
another tabpage.
This commit is contained in:
Sean Dewar 2024-03-09 01:00:33 +00:00
parent e7c262f555
commit 54022a2946
No known key found for this signature in database
GPG Key ID: 08CC2C83AD41B581
2 changed files with 26 additions and 0 deletions

View File

@ -550,6 +550,10 @@ void nvim_win_set_config(Window window, Dict(win_config) *config, Error *err)
}
}
win_remove(win, win_tp == curtab ? NULL : win_tp);
if (win_tp == curtab) {
last_status(false); // may need to remove last status line
win_comp_pos(); // recompute window positions
}
int flags = win_split_flags(fconfig.split, parent == NULL) | WSP_NOENTER;
TRY_WRAP(err, {

View File

@ -2379,6 +2379,28 @@ describe('API/win', function()
)
eq(cur_win, api.nvim_get_current_win())
end)
it('updates statusline when moving bottom split', function()
local screen = Screen.new(10, 10)
screen:set_default_attr_ids({
[0] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
[1] = { bold = true, reverse = true }, -- StatusLine
})
screen:attach()
exec([[
set laststatus=0
belowright split
call nvim_win_set_config(0, #{split: 'above', win: win_getid(winnr('#'))})
]])
screen:expect([[
^ |
{0:~ }|*3
{1:[No Name] }|
|
{0:~ }|*3
|
]])
end)
end)
describe('get_config', function()