vim.pack.add({ 'https://github.com/ibhagwan/fzf-lua', }) return { 'ibhagwan/fzf-lua', after = function() local fzf = require('fzf-lua') local has_devicons = pcall(require, 'nvim-web-devicons') local opts = { file_icon_padding = ' ', files = { cmd = vim.env.FZF_CTRL_T_COMMAND, no_header_i = true, }, fzf_args = (vim.env.FZF_DEFAULT_OPTS or ''):gsub( '%-%-color=[^%s]+', '' ), grep = { no_header_i = true, RIPGREP_CONFIG_PATH = vim.env.RIPGREP_CONFIG_PATH, }, lsp = { includeDeclaration = false, jump1 = true, symbols = { symbol_hl_prefix = '@', symbol_style = 3, }, }, winopts = { border = 'single', preview = { hidden = 'hidden', }, }, actions = { files = { default = function(...) require('fzf-lua.actions').file_edit(...) end, ['ctrl-l'] = function(...) local a = require('fzf-lua.actions') a.file_sel_to_ll(...) vim.cmd.lclose() end, ['ctrl-q'] = function(...) local a = require('fzf-lua.actions') a.file_sel_to_qf(...) vim.cmd.cclose() end, ['ctrl-h'] = function(...) require('fzf-lua.actions').toggle_hidden(...) end, ['ctrl-v'] = function(...) require('fzf-lua.actions').file_vsplit(...) end, ['ctrl-x'] = function(...) require('fzf-lua.actions').file_split(...) end, }, }, border = 'single', git = { files = { cmd = 'git ls-files --cached --others --exclude-standard', git_icons = false, }, worktrees = { fzf_args = ( (vim.env.FZF_DEFAULT_OPTS or '') :gsub('%-%-bind=ctrl%-a:select%-all', '') :gsub('--color=[^%s]+', '') ), }, branches = { fzf_args = ( (vim.env.FZF_DEFAULT_OPTS or '') :gsub('%-%-bind=ctrl%-a:select%-all', '') :gsub('--color=[^%s]+', '') ), }, }, } opts.files.file_icons = has_devicons opts.grep.file_icons = has_devicons opts.grep.rg_opts = fzf.defaults.grep.rg_opts:gsub('%-e$', "--glob='!.git/' -e") fzf.setup(opts) vim.api.nvim_create_autocmd('FileType', { pattern = 'fzf', callback = function() vim.opt_local.number = false vim.opt_local.relativenumber = false end, group = vim.api.nvim_create_augroup( 'AFzfHighlights', { clear = true } ), }) local ok, fzf_reload = pcall(require, 'config.fzf_reload') if ok then fzf_reload.setup(opts) fzf_reload.reload() end end, keys = { { '', function() local fzf = require('fzf-lua') local git_dir = vim.fn .system('git rev-parse --git-dir 2>/dev/null') :gsub('\n', '') if vim.v.shell_error == 0 and git_dir ~= '' then fzf.git_files({ cwd_prompt = false }) else fzf.files() end end, }, { '', 'FzfLua live_grep' }, { 'f/', 'FzfLua search_history' }, { 'f:', 'FzfLua command_history' }, { 'fa', 'FzfLua autocmds' }, { 'fB', 'FzfLua buffers' }, { 'fc', 'FzfLua commands' }, { 'fe', 'FzfLua files cwd=~/.config', }, { 'ff', function() require('fzf-lua').files({ cwd = vim.fn.expand('%:h') }) end, }, { 'fg', function() require('fzf-lua').live_grep({ cwd = vim.fn.expand('%:h') }) end, }, { 'fH', 'FzfLua highlights' }, { 'fh', 'FzfLua help_tags' }, { 'fl', 'FzfLua loclist' }, { 'fm', 'FzfLua man_pages' }, { 'fq', 'FzfLua quickfix' }, { 'fr', 'FzfLua resume' }, { 'fs', 'FzfLua files cwd=~/.config/nix/scripts', }, { 'gb', 'FzfLua git_branches' }, { 'gw', 'FzfLua git_worktrees' }, { 'gq', 'FzfLua quickfix' }, { 'gl', 'FzfLua loclist' }, }, }