Revert "feat: Allow Chat Sidebar to Replace the Main Window (No Split) (#1638)" (#1648)

This reverts commit 31041f6d65.
This commit is contained in:
yetone
2025-03-20 03:25:08 +08:00
committed by GitHub
parent 31041f6d65
commit 8c9cd1a7b2
2 changed files with 19 additions and 34 deletions

View File

@@ -101,7 +101,6 @@ end
---@field floating? boolean whether to open a floating input to enter the question ---@field floating? boolean whether to open a floating input to enter the question
---@field new_chat? boolean whether to open a new chat ---@field new_chat? boolean whether to open a new chat
---@field without_selection? boolean whether to open a new chat without selection ---@field without_selection? boolean whether to open a new chat without selection
---@field no_split? boolean whether to open a new chat without split side bar
---@param opts? AskOptions ---@param opts? AskOptions
function M.ask(opts) function M.ask(opts)

View File

@@ -140,18 +140,12 @@ end
function Sidebar:close(opts) function Sidebar:close(opts)
opts = vim.tbl_extend("force", { goto_code_win = true }, opts or {}) opts = vim.tbl_extend("force", { goto_code_win = true }, opts or {})
self:delete_autocmds() self:delete_autocmds()
if opts.goto_code_win and self.code then
if self.code.winid and api.nvim_win_is_valid(self.code.winid) then
fn.win_gotoid(self.code.winid)
else
vim.cmd("vert sb" .. self.code.bufnr)
end
end
for _, comp in pairs(self) do for _, comp in pairs(self) do
if comp and type(comp) == "table" and comp.unmount then comp:unmount() end if comp and type(comp) == "table" and comp.unmount then comp:unmount() end
end end
if opts.goto_code_win and self.code and self.code.winid and api.nvim_win_is_valid(self.code.winid) then
fn.win_gotoid(self.code.winid)
end
vim.cmd("wincmd =") vim.cmd("wincmd =")
end end
@@ -3000,6 +2994,8 @@ function Sidebar:create_input_container(opts)
if ev.data and ev.data.request then handle_submit(ev.data.request) end if ev.data and ev.data.request then handle_submit(ev.data.request) end
end, end,
}) })
self:refresh_winids()
end end
function Sidebar:get_selected_code_size() function Sidebar:get_selected_code_size()
@@ -3044,13 +3040,11 @@ function Sidebar:get_result_container_width()
end end
function Sidebar:adjust_result_container_layout() function Sidebar:adjust_result_container_layout()
if self.code.winid ~= nil and api.nvim_win_is_valid(self.code.winid) then local width = self:get_result_container_width()
local width = self:get_result_container_width() local height = self:get_result_container_height()
local height = self:get_result_container_height()
api.nvim_win_set_width(self.result_container.winid, width) api.nvim_win_set_width(self.result_container.winid, width)
api.nvim_win_set_height(self.result_container.winid, height) api.nvim_win_set_height(self.result_container.winid, height)
end
end end
---@param opts AskOptions ---@param opts AskOptions
@@ -3095,27 +3089,19 @@ function Sidebar:render(opts)
self:update_content_with_history() self:update_content_with_history()
if opts.no_split == true then -- reset states when buffer is closed
vim.cmd(fn.win_getid(self.code.winid) .. "wincmd q") api.nvim_buf_attach(self.code.bufnr, false, {
self.code.winid = nil on_detach = function(_, _)
fn.win_gotoid(self.input_container.winid) vim.schedule(function()
else local bufnr = api.nvim_win_get_buf(self.code.winid)
-- reset states when buffer is closed self.code.bufnr = bufnr
api.nvim_buf_attach(self.code.bufnr, false, { self:reload_chat_history()
on_detach = function(_, _) end)
vim.schedule(function() end,
local bufnr = api.nvim_win_get_buf(self.code.winid) })
self.code.bufnr = bufnr
self:reload_chat_history()
end)
end,
})
end
self:create_selected_code_container() self:create_selected_code_container()
self:refresh_winids()
self:on_mount(opts) self:on_mount(opts)
return self return self