mirror of
https://github.com/neovim/neovim.git
synced 2026-05-25 22:38:29 +00:00
feat(options): add 'winpinned' to pin a window #39157
Problem: - Unable to "pin" a window to prevent closing without specifically being targeted. - :fclose closes hidden windows (even before visible windows). Solution: - Add 'winpinned' window-local option. When set, window is skipped by :fclose and :only. Pin the ui2 cmdline window (which should always be visible), so that it is not closed by :only/fclose. - Skip over hidden (and pinned) windows with :fclose. Co-authored-by: glepnir <glephunter@gmail.com>
This commit is contained in:
@@ -3861,4 +3861,28 @@ describe('API/win', function()
|
||||
eq(float_win, api.nvim_get_current_win())
|
||||
end)
|
||||
end)
|
||||
|
||||
it(':fclose and :only skip hidden and pinned windows #36123', function()
|
||||
local cfg = { relative = 'editor', row = 0, col = 0, width = 1, height = 1 }
|
||||
local win1 = api.nvim_open_win(0, false, cfg)
|
||||
command('fclose')
|
||||
eq(false, api.nvim_win_is_valid(win1))
|
||||
cfg.hide = true
|
||||
win1 = api.nvim_open_win(0, false, cfg)
|
||||
cfg.hide, cfg.focusable = false, false
|
||||
local win2 = api.nvim_open_win(0, false, cfg)
|
||||
command('fclose')
|
||||
eq(true, api.nvim_win_is_valid(win1))
|
||||
eq(false, api.nvim_win_is_valid(win2))
|
||||
api.nvim_win_set_config(win1, { hide = false })
|
||||
api.nvim_set_option_value('winpinned', true, { win = win1, scope = 'local' })
|
||||
win2 = api.nvim_open_win(0, false, { split = 'right' })
|
||||
api.nvim_set_option_value('winpinned', true, { win = win2, scope = 'local' })
|
||||
command('only')
|
||||
eq(true, api.nvim_win_is_valid(win1))
|
||||
eq(true, api.nvim_win_is_valid(win2))
|
||||
local tab2 = api.nvim_open_tabpage(0, false, {})
|
||||
command('tabclose')
|
||||
eq(tab2, api.nvim_get_current_tabpage())
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user