fix(win): better way of finding a main window when fixbuf is true

This commit is contained in:
Folke Lemaitre 2025-01-23 13:51:03 +01:00
parent 2ff8ce0208
commit 84ee7ddf54
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040

View file

@ -810,17 +810,24 @@ function M:show()
-- another buffer was opened in this window
-- find another window to swap with
local main ---@type number?
for _, win in ipairs(vim.api.nvim_list_wins()) do
if win ~= self.win and vim.bo[vim.api.nvim_win_get_buf(win)].buftype == "" then
vim.schedule(function()
vim.api.nvim_win_set_buf(self.win, self.buf)
vim.api.nvim_win_set_buf(win, buf)
vim.api.nvim_set_current_win(win)
vim.cmd.stopinsert()
end)
return
local is_float = vim.api.nvim_win_get_config(win).relative ~= ""
if not is_float then
main = win
if win ~= self.win and vim.bo[vim.api.nvim_win_get_buf(win)].buftype == "" then
break
end
end
end
if main then
vim.schedule(function()
vim.api.nvim_win_set_buf(self.win, self.buf)
vim.api.nvim_win_set_buf(main, buf)
vim.api.nvim_set_current_win(main)
vim.cmd.stopinsert()
end)
end
end,
})