feat(file_selector): support customized filepaths resolver (#1294)
This commit is contained in:
18
README.md
18
README.md
@@ -417,6 +417,24 @@ To create a customized file_selector, you can specify a customized function to l
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
|
---below is optional
|
||||||
|
provider_opts = {
|
||||||
|
---@param params avante.file_selector.opts.IGetFilepathsParams
|
||||||
|
get_filepaths = function(params)
|
||||||
|
local cwd = params.cwd ---@type string
|
||||||
|
local selected_filepaths = params.selected_filepaths ---@type string[]
|
||||||
|
local cmd = string.format("fd --base-directory '%s' --hidden", vim.fn.fnameescape(cwd))
|
||||||
|
local output = vim.fn.system(cmd)
|
||||||
|
local filepaths = vim.split(output, "\n", { trimempty = true })
|
||||||
|
return vim
|
||||||
|
.iter(filepaths)
|
||||||
|
:filter(function(filepath)
|
||||||
|
return not vim.tbl_contains(selected_filepaths, filepath)
|
||||||
|
end)
|
||||||
|
:totable()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ local Utils = require("avante.utils")
|
|||||||
---@field public filepaths string[]
|
---@field public filepaths string[]
|
||||||
---@field public handler fun(filepaths: string[]|nil): nil
|
---@field public handler fun(filepaths: string[]|nil): nil
|
||||||
|
|
||||||
|
---@class avante.file_selector.opts.IGetFilepathsParams
|
||||||
|
---@field public cwd string
|
||||||
|
---@field public selected_filepaths string[]
|
||||||
|
|
||||||
---@class avante.CoreConfig: avante.Config
|
---@class avante.CoreConfig: avante.Config
|
||||||
local M = {}
|
local M = {}
|
||||||
---@class avante.Config
|
---@class avante.Config
|
||||||
|
|||||||
@@ -166,6 +166,15 @@ end
|
|||||||
function FileSelector:open() self:show_select_ui() end
|
function FileSelector:open() self:show_select_ui() end
|
||||||
|
|
||||||
function FileSelector:get_filepaths()
|
function FileSelector:get_filepaths()
|
||||||
|
if type(Config.file_selector.provider_opts.get_filepaths) == "function" then
|
||||||
|
---@type avante.file_selector.opts.IGetFilepathsParams
|
||||||
|
local params = {
|
||||||
|
cwd = Utils.get_project_root(),
|
||||||
|
selected_filepaths = self.selected_filepaths,
|
||||||
|
}
|
||||||
|
return Config.file_selector.provider_opts.get_filepaths(params)
|
||||||
|
end
|
||||||
|
|
||||||
local filepaths = get_project_filepaths()
|
local filepaths = get_project_filepaths()
|
||||||
|
|
||||||
table.sort(filepaths, function(a, b)
|
table.sort(filepaths, function(a, b)
|
||||||
|
|||||||
Reference in New Issue
Block a user