feat(file_selector): add snacks picker as a file selector

This commit is contained in:
Seong Yong-ju 2025-01-23 23:29:16 +09:00 committed by yetone
parent d6b371e75f
commit c5d7d542f3
3 changed files with 16 additions and 2 deletions

View File

@ -337,7 +337,7 @@ This is achieved but emulating nvim-cmp using blink.compat
```lua
file_selector = {
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "telescope" | string
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "snacks" | "telescope" | string
provider = "fzf",
-- Options override for custom providers
provider_opts = {},

View File

@ -248,7 +248,7 @@ M._defaults = {
},
--- @class AvanteFileSelectorConfig
file_selector = {
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "telescope" | string
--- @alias FileSelectorProvider "native" | "fzf" | "mini.pick" | "snacks" | "telescope" | string
provider = "native",
-- Options override for custom providers
provider_opts = {},

View File

@ -167,6 +167,18 @@ function FileSelector:mini_pick_ui(handler)
handler(mini_pick.builtin.files())
end
function FileSelector:snacks_picker_ui(handler)
Snacks.picker.files({
exclude = self.selected_filepaths,
confirm = function(picker)
picker:close()
local items = picker:selected({ fallback = true })
local files = vim.tbl_map(function(item) return item.file end, items)
handler(files)
end,
})
end
function FileSelector:telescope_ui(handler)
local success, _ = pcall(require, "telescope")
if not success then
@ -256,6 +268,8 @@ function FileSelector:show_select_ui()
self:fzf_ui(handler)
elseif Config.file_selector.provider == "mini.pick" then
self:mini_pick_ui(handler)
elseif Config.file_selector.provider == "snacks" then
self:snacks_picker_ui(handler)
elseif Config.file_selector.provider == "telescope" then
self:telescope_ui(handler)
else