nvim-snappy/lua/plugins/search/fzf-lua.lua

170 lines
2.7 KiB
Lua

-- fzf-lua.nvim
--- Configurable fuzzy finder w/UI.
--- See <https://github.com/ibhagwan/fzf-lua> for commands.
-- REQ[sys]: fd-find
-- REQ[sys]: ripgrep
-- REQ[sys]: bat
-- REQ[sys]: git-delta
return {
'ibhagwan/fzf-lua',
commit = 'e3fefd97875827e47dc4bbf1074ee464b2d8e6a8',
lazy = true,
cmd = {
'Telescope',
},
keys = {
-- Accessibility
{
'<leader>s?',
function()
require('fzf-lua').builtin()
end,
'n',
desc = '[S]earch Search-Commands',
},
{
'<leader>sh',
function()
require('fzf-lua').helptags()
end,
'n',
desc = '[S]earch [H]elp Tags',
},
{
'<leader>sk',
function()
require('fzf-lua').keymaps()
end,
'n',
desc = '[S]earch [K]eymaps',
},
{
'<leader>sc',
function()
require('fzf-lua').commands()
end,
'n',
desc = '[S]earch [C]ommands',
},
{
'<leader>sm',
function()
require('fzf-lua').manpages()
end,
'n',
desc = '[S]earch [M]anpages',
},
-- Grep
{
'<leader>sg',
function()
require('fzf-lua').live_grep()
end,
'n',
desc = '[S]earch w/[G]rep',
},
-- Buffer / File Search
{
'<leader>sb',
function()
require('fzf-lua').buffers()
end,
'n',
desc = '[S]earch [B]uffers',
},
{
'<leader>sf',
function()
require('fzf-lua').files()
end,
'n',
desc = '[S]earch [F]iles',
},
-- Git: "VCS" -> "v"
{
'<leader>sgc',
function()
require('fzf-lua').git_commits()
end,
'n',
desc = '[S]earch Git [C]ommits',
},
{
'<leader>sgs',
function()
require('fzf-lua').git_status()
end,
'n',
desc = '[S]earch Git [S]tatus',
},
-- Debug
{
'<leader>sd',
function()
require('fzf-lua').diagnostics_document()
end,
'n',
desc = '[S]earch [D]iagnostics',
},
-- Vim
{
"<leader>s'",
function()
require('fzf-lua').registers()
end,
'n',
desc = '[S]earch Vim Registers',
},
},
opts = {
fzf_bin = 'sk',
keymap = {
builtin = {
['<c-b>'] = 'preview-page-up',
['<c-f>'] = 'preview-page-down',
},
fzf = {
['ctrl-u'] = 'half-page-up',
['ctrl-d'] = 'half-page-down',
['ctrl-b'] = 'preview-page-up',
['ctrl-f'] = 'preview-page-down',
},
},
previewers = {
builtin = {
extensions = {
['png'] = { 'chafa', '{file}' },
['jpg'] = { 'chafa', '{file}' },
['jpeg'] = { 'chafa', '{file}' },
['gif'] = { 'chafa', '{file}' },
['svg'] = { 'chafa', '{file}' },
['webp'] = { 'chafa', '{file}' },
},
},
},
winopts = {
width = 0.8,
height = 0.8,
row = 0.5,
col = 0.5,
preview = {
scrollchars = { '', '' },
},
},
fzf_colors = true,
fzf_opts = {
['--no-scrollbar'] = true,
},
},
}