feat: remove history command (#2063)

* feat: remove history command

* Address code review

Co-authored-by: Michael Bøcker-Larsen <247048+mblarsen@users.noreply.github.com>

---------

Co-authored-by: Michael Bøcker-Larsen <247048+mblarsen@users.noreply.github.com>
This commit is contained in:
Jiyeol Lee
2025-06-09 07:59:43 -04:00
committed by GitHub
parent 0cce955816
commit de8fb58bfa
4 changed files with 89 additions and 10 deletions

View File

@@ -13,6 +13,8 @@ local Utils = require("avante.utils")
---@field provider_opts table | nil
---@field on_select fun(item_ids: string[] | nil)
---@field get_preview_content fun(item_id: string): (string, string) | nil
---@field on_delete_item fun(item_id: string): (nil) | nil
---@field on_action_cancel fun(): (nil) | nil
---@class avante.ui.Selector
---@field provider avante.SelectorProvider
@@ -23,6 +25,8 @@ local Utils = require("avante.utils")
---@field on_select fun(item_ids: string[] | nil)
---@field selected_item_ids string[] | nil
---@field get_preview_content fun(item_id: string): (string, string) | nil
---@field on_delete_item fun(item_id: string): (nil) | nil
---@field on_action_cancel fun(): (nil) | nil
local Selector = {}
Selector.__index = Selector
@@ -45,6 +49,8 @@ function Selector:new(opts)
o.on_select = opts.on_select
o.selected_item_ids = opts.selected_item_ids or {}
o.get_preview_content = opts.get_preview_content
o.on_delete_item = opts.on_delete_item
o.on_action_cancel = opts.on_action_cancel
return o
end

View File

@@ -10,10 +10,39 @@ function M.show(selector)
prompt = selector.title,
format_item = function(item) return item.title end,
}, function(item)
if item then
selector.on_select({ item.id })
else
if not item then
selector.on_select(nil)
return
end
-- If on_delete_item callback is provided, prompt for action
if type(selector.on_delete_item) == "function" then
vim.ui.input(
{ prompt = "Action for '" .. item.title .. "': (o)pen, (d)elete, (c)ancel?", default = "" },
function(input)
if not input then -- User cancelled input
selector.on_select(nil) -- Treat as cancellation of selection
return
end
local choice = input:lower()
if choice == "d" or choice == "delete" then
selector.on_delete_item(item.id)
elseif choice == "" or choice == "o" or choice == "open" then
selector.on_select({ item.id })
elseif choice == "c" or choice == "cancel" then
if type(selector.on_action_cancel) == "function" then
selector.on_action_cancel()
else
selector.on_select(nil) -- Fallback if on_action_cancel is not defined
end
else -- c or any other input, treat as cancel
selector.on_select(nil) -- Fallback if on_action_cancel is not defined
end
end
)
else
-- Default behavior: directly select the item
selector.on_select({ item.id })
end
end)
end