feat(file_selector): support customized file selector method (#1204)
This commit is contained in:
parent
0bfbd39ebc
commit
6d116fac36
lua/avante
@ -5,6 +5,11 @@
|
||||
|
||||
local Utils = require("avante.utils")
|
||||
|
||||
---@class avante.file_selector.IParams
|
||||
---@field public title string
|
||||
---@field public filepaths string[]
|
||||
---@field public handler fun(filepaths: string[]|nil): nil
|
||||
|
||||
---@class avante.CoreConfig: avante.Config
|
||||
local M = {}
|
||||
---@class avante.Config
|
||||
@ -327,7 +332,7 @@ M._defaults = {
|
||||
},
|
||||
--- @class AvanteFileSelectorConfig
|
||||
file_selector = {
|
||||
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "snacks" | "telescope" | string
|
||||
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "snacks" | "telescope" | string | fun(params: avante.file_selector.IParams): nil
|
||||
provider = "native",
|
||||
-- Options override for custom providers
|
||||
provider_opts = {},
|
||||
|
@ -330,6 +330,11 @@ function FileSelector:show_select_ui()
|
||||
self:snacks_picker_ui(handler)
|
||||
elseif Config.file_selector.provider == "telescope" then
|
||||
self:telescope_ui(handler)
|
||||
elseif type(Config.file_selector.provider) == "function" then
|
||||
local title = string.format("%s:", PROMPT_TITLE) ---@type string
|
||||
local filepaths = self:get_filepaths() ---@type string[]
|
||||
local params = { title = title, filepaths = filepaths, handler = handler } ---@type avante.file_selector.IParams
|
||||
Config.file_selector.provider(params)
|
||||
else
|
||||
Utils.error("Unknown file selector provider: " .. Config.file_selector.provider)
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user