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,16 +810,23 @@ function M:show()
-- another buffer was opened in this window -- another buffer was opened in this window
-- find another window to swap with -- find another window to swap with
local main ---@type number?
for _, win in ipairs(vim.api.nvim_list_wins()) do for _, win in ipairs(vim.api.nvim_list_wins()) do
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 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.schedule(function()
vim.api.nvim_win_set_buf(self.win, self.buf) vim.api.nvim_win_set_buf(self.win, self.buf)
vim.api.nvim_win_set_buf(win, buf) vim.api.nvim_win_set_buf(main, buf)
vim.api.nvim_set_current_win(win) vim.api.nvim_set_current_win(main)
vim.cmd.stopinsert() vim.cmd.stopinsert()
end) end)
return
end
end end
end, end,
}) })