Files
2025-04-15 16:40:47 +08:00

38 lines
1.0 KiB
Lua

local Utils = require("avante.utils")
local M = {}
---@param selector avante.ui.Selector
function M.show(selector)
-- luacheck: globals MiniPick
---@diagnostic disable-next-line: undefined-field
if not _G.MiniPick then
Utils.error("mini.pick is not set up. Please install and set up mini.pick to use it as a file selector.")
return
end
local items = {}
local title_to_id = {}
for _, item in ipairs(selector.items) do
title_to_id[item.title] = item.id
if not vim.list_contains(selector.selected_item_ids, item.id) then table.insert(items, item) end
end
local function choose(item)
if not item then
selector.on_select(nil)
return
end
local item_ids = {}
---item is not a list
for _, item_ in pairs(item) do
table.insert(item_ids, title_to_id[item_])
end
selector.on_select(item_ids)
end
---@diagnostic disable-next-line: undefined-global
MiniPick.ui_select(items, {
prompt = selector.title,
format_item = function(item) return item.title end,
}, choose)
end
return M