diff --git a/lua/plugins/sidekick.lua b/lua/plugins/sidekick.lua index 49c7741..7c7b65a 100644 --- a/lua/plugins/sidekick.lua +++ b/lua/plugins/sidekick.lua @@ -21,7 +21,35 @@ return { { "", function() - require("sidekick.cli").toggle("pi") + local cli = require("sidekick.cli") + local saved_width + for _, win in ipairs(vim.api.nvim_list_wins()) do + local buf = vim.api.nvim_win_get_buf(win) + if vim.bo[buf].filetype == "sidekick_terminal" then + saved_width = vim.api.nvim_win_get_width(win) + break + end + end + if saved_width then + vim.g.sidekick_last_width = saved_width + end + cli.toggle("pi") + if saved_width then + return + end + vim.defer_fn(function() + local last = vim.g.sidekick_last_width + if not last then + return + end + for _, win in ipairs(vim.api.nvim_list_wins()) do + local buf = vim.api.nvim_win_get_buf(win) + if vim.bo[buf].filetype == "sidekick_terminal" then + vim.api.nvim_win_set_width(win, last) + break + end + end + end, 50) end, desc = "Toggle AI window", mode = { "n", "t", "i", "x" }, @@ -32,13 +60,14 @@ return { local win = vim.api.nvim_get_current_win() local width = vim.api.nvim_win_get_width(win) local total = vim.o.columns + local new_width if width > total * 0.8 then - -- Restore to 40% - vim.api.nvim_win_set_width(win, math.floor(total * 0.4)) + new_width = math.floor(total * 0.4) else - -- Maximize - vim.api.nvim_win_set_width(win, math.floor(total * 0.95)) + new_width = math.floor(total * 0.95) end + vim.api.nvim_win_set_width(win, new_width) + vim.g.sidekick_last_width = new_width end, desc = "Toggle maximize window", mode = { "n", "t", "i", "x" },