mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +00:00
feat(api): add nvim_tabpage_set_win (#27222)
Allows setting the current window of a non-current tabpage without switching tabpages.
This commit is contained in:
@@ -32,6 +32,62 @@ describe('api/tabpage', function()
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('set_win', function()
|
||||
it('works', function()
|
||||
command('tabnew')
|
||||
command('vsplit')
|
||||
local tab1, tab2 = unpack(api.nvim_list_tabpages())
|
||||
local win1, win2, win3 = unpack(api.nvim_list_wins())
|
||||
eq({ win1 }, api.nvim_tabpage_list_wins(tab1))
|
||||
eq({ win2, win3 }, api.nvim_tabpage_list_wins(tab2))
|
||||
eq(win2, api.nvim_tabpage_get_win(tab2))
|
||||
api.nvim_tabpage_set_win(tab2, win3)
|
||||
eq(win3, api.nvim_tabpage_get_win(tab2))
|
||||
end)
|
||||
|
||||
it('works in non-current tabpages', function()
|
||||
command('tabnew')
|
||||
command('vsplit')
|
||||
local tab1, tab2 = unpack(api.nvim_list_tabpages())
|
||||
local win1, win2, win3 = unpack(api.nvim_list_wins())
|
||||
eq({ win1 }, api.nvim_tabpage_list_wins(tab1))
|
||||
eq({ win2, win3 }, api.nvim_tabpage_list_wins(tab2))
|
||||
eq(win2, api.nvim_tabpage_get_win(tab2))
|
||||
eq(win2, api.nvim_get_current_win())
|
||||
|
||||
command('tabprev')
|
||||
|
||||
eq(tab1, api.nvim_get_current_tabpage())
|
||||
|
||||
eq(win2, api.nvim_tabpage_get_win(tab2))
|
||||
api.nvim_tabpage_set_win(tab2, win3)
|
||||
eq(win3, api.nvim_tabpage_get_win(tab2))
|
||||
|
||||
command('tabnext')
|
||||
eq(win3, api.nvim_get_current_win())
|
||||
end)
|
||||
|
||||
it('throws an error when the window does not belong to the tabpage', function()
|
||||
command('tabnew')
|
||||
command('vsplit')
|
||||
local tab1, tab2 = unpack(api.nvim_list_tabpages())
|
||||
local win1, win2, win3 = unpack(api.nvim_list_wins())
|
||||
eq({ win1 }, api.nvim_tabpage_list_wins(tab1))
|
||||
eq({ win2, win3 }, api.nvim_tabpage_list_wins(tab2))
|
||||
eq(win2, api.nvim_get_current_win())
|
||||
|
||||
eq(
|
||||
string.format('Window does not belong to tabpage %d', tab2),
|
||||
pcall_err(api.nvim_tabpage_set_win, tab2, win1)
|
||||
)
|
||||
|
||||
eq(
|
||||
string.format('Window does not belong to tabpage %d', tab1),
|
||||
pcall_err(api.nvim_tabpage_set_win, tab1, win3)
|
||||
)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('{get,set,del}_var', function()
|
||||
it('works', function()
|
||||
api.nvim_tabpage_set_var(0, 'lua', { 1, 2, { ['3'] = 1 } })
|
||||
|
||||
Reference in New Issue
Block a user