LazyVim.LazyVim/lua/lazyvim/util/pick.lua
Folke Lemaitre 6ab404134d
feat(extras): added fzf-lua (#3555)
New extra with an initial implementation of fzf-lua.

## Todo

- [x] check all places that currently depend on telescope and provide an
alternative or disable
- [x] disable telescope spec completely. (currently only removed its
keymaps)
- [x] trouble integration
- [x] https://github.com/ibhagwan/fzf-lua/issues/1241

---------

Co-authored-by: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com>
2024-06-10 21:58:33 +02:00

72 lines
1.6 KiB
Lua

---@class lazyvim.util.pick
---@overload fun(command:string, opts?:lazyvim.util.pick.Opts): fun()
local M = setmetatable({}, {
__call = function(m, ...)
return m.wrap(...)
end,
})
---@class lazyvim.util.pick.Opts: table<string, any>
---@field root? boolean
---@field cwd? string
---@field buf? number
---@field show_untracked? boolean
---@type table<string, string>
M.commands = {
files = "find_files",
}
---@param command? string
---@param opts? lazyvim.util.pick.Opts
function M.open(command, opts)
command = command or "auto"
opts = opts or {}
opts = vim.deepcopy(opts)
if type(opts.cwd) == "boolean" then
LazyVim.warn("LazyVim.pick: opts.cwd should be a string or nil")
opts.cwd = nil
end
if not opts.cwd and opts.root ~= false then
opts.cwd = LazyVim.root({ buf = opts.buf })
end
local cwd = opts.cwd or vim.uv.cwd()
if command == "auto" then
command = "files"
if
vim.uv.fs_stat(cwd .. "/.git")
and not vim.uv.fs_stat(cwd .. "/.ignore")
and not vim.uv.fs_stat(cwd .. "/.rgignore")
then
command = "git_files"
opts.show_untracked = opts.show_untracked ~= false
end
end
command = M.commands[command] or command
M._open(command, opts)
end
---@param command? string
---@param opts? lazyvim.util.pick.Opts
function M.wrap(command, opts)
opts = opts or {}
return function()
M.open(command, vim.deepcopy(opts))
end
end
---@param command string
---@param opts? lazyvim.util.pick.Opts
function M._open(command, opts)
return LazyVim.telescope.open(command, opts)
end
function M.config_files()
return M.wrap("files", { cwd = vim.fn.stdpath("config") })
end
return M