---@class FzfLuaOpts: lazyvim.util.pick.Opts ---@field cmd string? LazyVim.pick.commands = { files = "files", } ---@param command string ---@param opts? FzfLuaOpts LazyVim.pick._open = function(command, opts) opts = opts or {} if opts.cmd == nil and command == "git_files" and opts.show_untracked then opts.cmd = "git ls-files --exclude-standard --cached --others" end return require("fzf-lua")[command](opts) end return { { "nvim-telescope/telescope.nvim", enabled = true, keys = function() return {} end, }, { "ibhagwan/fzf-lua", event = "VeryLazy", opts = function() local config = require("fzf-lua.config") local actions = require("fzf-lua.actions") -- Quickfix config.defaults.keymap.fzf["ctrl-q"] = "select-all+accept" -- Trouble config.defaults.actions.files["ctrl-t"] = require("trouble.sources.fzf").actions.open -- Toggle root dir / cwd config.defaults.actions.files["alt-c"] = function(_, ctx) local o = vim.deepcopy(ctx.__call_opts) o.root = o.root == false o.cwd = nil o.buf = ctx.__CTX.bufnr LazyVim.pick.open(ctx.__INFO.cmd, o) end return { [1] = "default-title", fzf_colors = true, files = { actions = { ["alt-i"] = { actions.toggle_ignore }, ["alt-h"] = { actions.toggle_hidden }, }, }, grep = { actions = { ["alt-i"] = { actions.toggle_ignore }, ["alt-h"] = { actions.toggle_hidden }, }, }, } end, keys = { { "", "close", ft = "fzf", mode = "t", nowait = true }, { "", "", ft = "fzf", mode = "t", nowait = true }, { "", "", ft = "fzf", mode = "t", nowait = true }, { ",", "FzfLua buffers sort_mru=true sort_lastused=true", desc = "Switch Buffer", }, { "/", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { ":", "FzfLua command_history", desc = "Command History" }, { "", LazyVim.pick("auto"), desc = "Find Files (Root Dir)" }, -- find { "fb", "FzfLua buffers sort_mru=true sort_lastused=true", desc = "Buffers" }, { "fc", LazyVim.pick.config_files(), desc = "Find Config File" }, { "ff", LazyVim.pick("auto"), desc = "Find Files (Root Dir)" }, { "fF", LazyVim.pick("auto", { root = false }), desc = "Find Files (cwd)" }, { "fg", "FzfLua git_files", desc = "Find Files (git-files)" }, { "fr", "FzfLua oldfiles", desc = "Recent" }, { "fR", LazyVim.pick("oldfiles", { root = false }), desc = "Recent (cwd)" }, -- git { "gc", "FzfLua git_commits", desc = "Commits" }, { "gs", "FzfLua git_status", desc = "Status" }, -- search { 's"', "FzfLua registers", desc = "Registers" }, { "sa", "FzfLua autocmds", desc = "Auto Commands" }, { "sb", "FzfLua grep_curbuf", desc = "Buffer" }, { "sc", "FzfLua command_history", desc = "Command History" }, { "sC", "FzfLua commands", desc = "Commands" }, { "sd", "FzfLua diagnostics_document", desc = "Document Diagnostics" }, { "sD", "FzfLua diagnostics_workspace", desc = "Workspace Diagnostics" }, { "sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { "sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, { "sh", "FzfLua help_tags", desc = "Help Pages" }, { "sH", "FzfLua highlights", desc = "Search Highlight Groups" }, { "sj", "FzfLua jumps", desc = "Jumplist" }, { "sk", "FzfLua keymaps", desc = "Key Maps" }, { "sl", "FzfLua loclist", desc = "Location List" }, { "sM", "FzfLua man_pages", desc = "Man Pages" }, { "sm", "FzfLua marks", desc = "Jump to Mark" }, { "sR", "FzfLua resume", desc = "Resume" }, { "sq", "FzfLua quickfix", desc = "Quickfix List" }, { "sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" }, { "sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" }, { "sw", LazyVim.pick("grep_visual"), mode = "v", desc = "Selection (Root Dir)" }, { "sW", LazyVim.pick("grep_visual", { root = false }), mode = "v", desc = "Selection (cwd)" }, { "uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" }, { "ss", function() require("fzf-lua").lsp_document_symbols({ symbols = require("lazyvim.config").get_kind_filter(), }) end, desc = "Goto Symbol", }, { "sS", function() require("fzf-lua").lsp_dynamic_workspace_symbols({ symbols = require("lazyvim.config").get_kind_filter(), }) end, desc = "Goto Symbol (Workspace)", }, }, }, -- remove when https://github.com/ibhagwan/fzf-lua/pull/1244 gets merged { "ibhagwan/fzf-lua", opts = function(_, opts) local config = require("fzf-lua.config") if opts.fzf_colors ~= true then return end -- My PR that supports native colors if config.defaults.fzf_colorscheme ~= nil then return end -- Fallback to setting colors manually local links = { Normal = "FzfLuaNormal", CursorLine = "FzfLuaCursorLine", Match = "Special", Info = "NonText", Border = "FzfLuaBorder", Gutter = "FzfLuaNormal", Query = "FzfLuaNormal", Prompt = "Special", Pointer = "Special", Marker = "FzfColorsPointer", Spinner = "FzfColorsPointer", Header = "FzfLuaTitle", Scrollbar = "FzfColorsBorder", Separator = "FzfColorsBorder", } for name, link in pairs(links) do name = "FzfColors" .. name vim.api.nvim_set_hl(0, name, { link = link, default = true }) end opts.fzf_colors = { ["fg"] = { "fg", "FzfColorsNormal" }, ["bg"] = { "bg", "FzfColorsNormal" }, ["hl"] = { "fg", "FzfColorsMatch" }, ["fg+"] = { "fg", "FzfColorsCursorLine" }, ["bg+"] = { "bg", "FzfColorsCursorLine" }, ["hl+"] = { "fg", "FzfColorsMatch" }, ["info"] = { "fg", "FzfColorsInfo" }, ["border"] = { "fg", "FzfColorsBorder" }, ["separator"] = { "fg", "FzfColorsSeparator" }, ["scrollbar"] = { "fg", "FzfColorsScrollbar" }, ["gutter"] = { "bg", "FzfColorsGutter" }, ["query"] = { "fg", "FzfColorsQuery", "regular" }, ["prompt"] = { "fg", "FzfColorsPrompt" }, ["pointer"] = { "fg", "FzfColorsPointer" }, ["marker"] = { "fg", "FzfColorsMarker" }, ["spinner"] = { "fg", "FzfColorsSpinner" }, ["header"] = { "fg", "FzfColorsHeader" }, } end, }, { "neovim/nvim-lspconfig", opts = function() local Keys = require("lazyvim.plugins.lsp.keymaps").get() vim.list_extend(Keys, { { "gd", "FzfLua lsp_definitions jump_to_single_result=true", desc = "Goto Definition", has = "definition", }, { "gr", "FzfLua lsp_references jump_to_single_result=true", desc = "References", nowait = true }, { "gI", "FzfLua lsp_implementations jump_to_single_result=true", desc = "Goto Implementation" }, { "gy", "FzfLua lsp_typedefs jump_to_single_result=true", desc = "Goto T[y]pe Definition" }, }) end, }, }