feat(api): add switch sidebar focus (#709)

This commit is contained in:
Jakkapat Paijit
2024-10-15 10:24:48 +07:00
committed by GitHub
parent 964715be64
commit 86ba5a468b
4 changed files with 79 additions and 44 deletions

View File

@@ -175,6 +175,32 @@ M.refresh = function(opts)
sidebar:render(opts)
end
---@param opts? AskOptions
M.focus = function(opts)
opts = opts or {}
local sidebar = require("avante").get()
if not sidebar then return end
local curbuf = vim.api.nvim_get_current_buf()
local curwin = vim.api.nvim_get_current_win()
if sidebar:is_open() then
if curbuf == sidebar.input.bufnr then
if sidebar.code.winid and sidebar.code.winid ~= curwin then vim.api.nvim_set_current_win(sidebar.code.winid) end
elseif curbuf == sidebar.result.bufnr then
if sidebar.code.winid and sidebar.code.winid ~= curwin then vim.api.nvim_set_current_win(sidebar.code.winid) end
else
if sidebar.input.winid and sidebar.input.winid ~= curwin then
vim.api.nvim_set_current_win(sidebar.input.winid)
end
end
else
if sidebar.code.winid then vim.api.nvim_set_current_win(sidebar.code.winid) end
sidebar:open(opts)
if sidebar.input.winid then vim.api.nvim_set_current_win(sidebar.input.winid) end
end
end
return setmetatable(M, {
__index = function(t, k)
local module = require("avante")