nvim: Switch from telescope to fzf-lua for fuzzy picker

This commit is contained in:
Marty Oehme 2025-02-07 20:57:27 +01:00
parent 5952e32bce
commit d724d75bf7
3 changed files with 179 additions and 90 deletions

View file

@ -17,6 +17,7 @@
"flash.nvim": { "branch": "main", "commit": "ec0bf2842189f65f60fd40bf3557cac1029cc932" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
"fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" },
"fzf-lua": { "branch": "main", "commit": "1176d512b1390f992c775f08dcb155d4e0ba01cf" },
"git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" },
"gitsigns.nvim": { "branch": "main", "commit": "c23bbd3ed2c7a3fdc3399e97e24f9e158f57612f" },
"glance.nvim": { "branch": "master", "commit": "1a08824835d7582457b67acbe23ca33487912a5e" },
@ -62,14 +63,11 @@
"otter.nvim": { "branch": "main", "commit": "0e42fa795c35c7190935e3beda3791189c41bb72" },
"peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" },
"plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"quarto-nvim": { "branch": "main", "commit": "abc417c7e7422033f1090c0da5f30ef3ecb0c7ca" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "dc788723f717bdd3041838b8db34cce53c9aa920" },
"render-markdown": { "branch": "main", "commit": "f2bdf9f866671456f7a6119cc94501048d9d172c" },
"smartcolumn.nvim": { "branch": "main", "commit": "d01b99355c7fab13233f48d0f28dc097e68a03f7" },
"stickybuf.nvim": { "branch": "master", "commit": "2160fcd536d81f5fa43f7167dba6634e814e3154" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"texpresso.vim": { "branch": "main", "commit": "907838c08bbf99ad6bed3c908f1d0551a92ab4e0" },
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
"trouble.nvim": { "branch": "main", "commit": "bac1d9a9f51eecf4424b6ca8675db5a170fe572b" },

View file

@ -1,4 +1,4 @@
return {
return { -- file/item pickers and managers
{
"vifm/vifm.vim",
config = function()
@ -8,10 +8,7 @@ return {
vim.g.vifm_exec_args = '-c "set vifminfo=" -c "set statusline=" -c "only"'
end,
cmd = "Vifm",
keys = {
{ "<leader>E", "<cmd>Vifm<cr>", desc = "buffer file browser" },
{ "<leader>vc", ":Vifm " .. vim.fn.stdpath("config") .. "<cr>", desc = "open config" },
},
keys = { { "<leader>E", "<cmd>Vifm<cr>", desc = "buffer file browser" } },
event = { "BufEnter" },
}, -- integrate file manager
{
@ -49,160 +46,255 @@ return {
},
},
{ "MagicDuck/grug-far.nvim", opts = {}, cmd = "GrugFar" },
-- fuzzy matching picker
{
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/popup.nvim",
"nvim-lua/plenary.nvim",
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
},
cmd = "Telescope",
config = function()
"ibhagwan/fzf-lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
init = function()
if require("core.util").is_available("which-key") then
require("which-key").add({ "<leader>v", group = "vim" })
require("which-key").add({ "<leader>f", group = "find" })
end
-- Setup up telescope fuzzy finding settings
--
-- Makes use of optionally installed external programs to work fully:
-- rg (ripgrep) for in-text searches
-- fd for quicker directory structure searches
-- lsp for a variety of lsp queries
local trouble_mappings = {}
if require("core.util").is_available("trouble") then
trouble_mappings = {
i = { ["<c-t>"] = require("trouble.sources.telescope").open },
n = { ["<c-t>"] = require("trouble.sources.telescope").open },
}
end
require("telescope").setup({
defaults = {
vimgrep_arguments = {
"rg",
"--ignore-vcs",
"--hidden",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
},
generic_sorter = require("mini.fuzzy").get_telescope_sorter,
-- Appearance
prompt_prefix = "󰍉 ",
selection_caret = "󰳟 ",
color_devicons = true,
mappings = trouble_mappings or {},
},
pickers = {
buffers = { theme = "ivy" },
oldfiles = { theme = "ivy" },
find_files = {
theme = "dropdown",
-- nice minimal picker design
borderchars = {
{ "", "", "", "", "", "", "", "" },
prompt = { "", "", " ", "", "", "", "", "" },
results = { "", "", "", "", "", "", "", "" },
preview = { "", "", "", "", "", "", "", "" },
},
width = 0.8,
previewer = false,
prompt_title = false,
},
},
})
require("telescope").load_extension("fzf")
end,
opts = {
fzf_opts = { ["--select-1"] = false },
keymap = {
builtin = {
true,
["<c-d>"] = "preview-page-down",
["<c-u>"] = "preview-page-up",
},
fzf = {
true,
["ctrl-q"] = "select-all+accept",
},
},
previewers = {
builtin = {
extensions = {
["png"] = { "viu" },
["svg"] = { "chafa", "--format=symbols", "{file}" },
},
},
},
}, -- FIXME: Does not seem to work with single result and still closes instantly?
config = function(_, opts)
opts.actions = opts.actions or { true }
opts.actions["ctrl-q"] = require("fzf-lua").actions.file_sel_to_qf
require("fzf-lua").setup(opts)
end,
cmd = "FzfLua",
keys = {
{
"<leader>vh",
function()
require("telescope.builtin").help_tags()
require("fzf-lua").helptags()
end,
desc = "help tags",
},
{
"<leader>vH",
function()
require("telescope.builtin").man_pages()
require("fzf-lua").manpages()
end,
desc = "man pages",
},
{
"<leader>vt",
function()
require("fzf-lua").filetypes()
end,
desc = "filetype",
},
{
"<leader>vk",
function()
require("fzf-lua").keymaps()
end,
desc = "keymaps",
},
{
"<leader>vy",
function()
require("fzf-lua").search_history()
end,
desc = "search history",
},
{
"<leader>vc",
function()
require("fzf-lua").command_history()
end,
desc = "command history",
},
{
"<leader>vC",
function()
require("telescope.builtin").colorscheme(require("telescope.themes").get_ivy())
require("fzf-lua").colorschemes()
end,
desc = "colorschemes",
},
{ -- exclude hidden files with <alt-h> in the search
"<leader>ff",
function()
require("fzf-lua").files()
end,
desc = "files",
},
{
"<leader>fb",
function()
require("telescope.builtin").buffers(require("telescope.themes").get_ivy())
require("fzf-lua").buffers()
end,
desc = "list buffers",
desc = "buffers",
},
{
"<leader>fo",
function()
require("telescope.builtin").oldfiles(require("telescope.themes").get_ivy())
require("fzf-lua").oldfiles()
end,
desc = "list old files",
desc = "old files",
},
{
"<leader>ff",
"<leader>fp",
function()
require("telescope.builtin").find_files()
require("fzf-lua").complete_path()
end,
desc = "find files",
desc = "path complete",
},
{ -- TODO: Does it work reliably in various circumstances?
"<c-m>",
function()
require("fzf-lua").complete_path()
end,
mode = "i",
desc = "path complete",
},
{
"<leader>fh",
"<leader>fP",
function()
require("telescope.builtin").find_files({ hidden = true })
require("fzf-lua").complete_file()
end,
desc = "find hidden files",
desc = "filepath complete",
},
{
"<leader>fw",
function()
require("telescope.builtin").live_grep()
require("fzf-lua").live_grep_native()
end,
desc = "grep search",
desc = "grep",
},
{
"<leader>fW",
function()
require("fzf-lua").live_grep_resume()
end,
desc = "grep resume",
},
{
"<leader>fw",
function()
require("fzf-lua").grep_cword()
end,
mode = "v",
desc = "grep word",
},
{
"<leader>fW",
function()
require("fzf-lua").grep_cWORD()
end,
mode = "v",
desc = "grep WORD",
},
{
"<leader>fg",
function()
require("telescope.builtin").git_status()
require("fzf-lua").git_status()
end,
desc = "git status",
},
{
"<leader>fc",
function()
require("telescope.builtin").git_bcommits()
require("fzf-lua").git_bcommits()
end,
desc = "git buffer commits",
},
{
"<leader>fl",
function()
require("telescope.builtin").git_commits()
require("fzf-lua").git_commits()
end,
desc = "git commit log",
desc = "git log",
},
{
"<leader>fr",
function()
require("fzf-lua").registers()
end,
desc = "registers",
},
{
"<leader>fr",
function()
require("fzf-lua").jumps()
end,
desc = "jumps",
},
{
"<leader>fq",
function()
require("fzf-lua").quickfix()
end,
desc = "quickfix",
},
{
"<leader>fi",
function()
require("fzf-lua").loclist()
end,
desc = "loclist",
},
{
"z=",
function()
require("telescope.builtin").spell_suggest(require("telescope.themes").get_ivy())
require("fzf-lua").spell_suggest()
end,
desc = "spell suggest",
},
{
"<leader>fR",
function()
require("fzf-lua").resume()
end,
desc = "resume last query",
},
{
"<leader>fs",
function()
require("fzf-lua").lsp_finder()
end,
desc = "lsp symbol",
},
{
"<leader>fd",
function()
require("fzf-lua").diagnostics_workspace()
end,
desc = "diagnostics workspace",
},
{
"<leader>fD",
function()
require("fzf-lua").diagnostics_document()
end,
desc = "diagnostics document",
},
},
},
-- fuzzy matching picker
{
"jiaoshijie/undotree",
dependencies = {

View file

@ -94,7 +94,6 @@ return {
},
{
"OXY2DEV/helpview.nvim",
-- lazy = false, -- Recommended by dev?
ft = "help",
dependencies = {
"nvim-treesitter/nvim-treesitter",