411 lines
8.3 KiB
Lua
411 lines
8.3 KiB
Lua
return {
|
|
'folke/snacks.nvim',
|
|
priority = 1000,
|
|
version = false,
|
|
lazy = false,
|
|
---@type snacks.Config
|
|
opts = {
|
|
-- your configuration comes here
|
|
-- or leave it empty to use the default settings
|
|
-- refer to the configuration section below
|
|
bigfile = { enabled = true },
|
|
notifier = { enabled = false },
|
|
quickfile = { enabled = true },
|
|
statuscolumn = { enabled = true },
|
|
words = { enabled = true },
|
|
indent = {
|
|
indent = {
|
|
hl = 'CmpItemKindNull',
|
|
only_scope = false,
|
|
only_current = false,
|
|
},
|
|
enabled = true,
|
|
animate = {
|
|
enabled = false,
|
|
},
|
|
scope = {
|
|
enabled = false,
|
|
},
|
|
chunk = {
|
|
enabled = false,
|
|
hl = 'Debug',
|
|
},
|
|
},
|
|
dashboard = {
|
|
sections = {
|
|
{ section = 'header' },
|
|
{ icon = ' ', title = 'Keymaps', section = 'keys', indent = 2, padding = 1 },
|
|
{ icon = ' ', title = 'Recent Files', section = 'recent_files', indent = 2, padding = 1 },
|
|
{ icon = ' ', title = 'Projects', section = 'projects', indent = 2, padding = 1 },
|
|
{ section = 'startup' },
|
|
},
|
|
},
|
|
picker = {
|
|
matcher = {
|
|
frecency = true,
|
|
cwd_bonus = true,
|
|
filename_bonus = true,
|
|
history_bonus = true,
|
|
},
|
|
win = {
|
|
input = {
|
|
keys = {
|
|
['<c-t>'] = { 'edit_tab', mode = { 'n', 'i' } },
|
|
},
|
|
},
|
|
},
|
|
formatters = {
|
|
file = {
|
|
truncate = 100,
|
|
filename_first = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
keys = {
|
|
{
|
|
'<space>g',
|
|
function()
|
|
Snacks.lazygit()
|
|
end,
|
|
desc = 'Lazygit',
|
|
},
|
|
{
|
|
'<space>gf',
|
|
function()
|
|
Snacks.lazygit.log_file()
|
|
end,
|
|
desc = 'Lazygit Current File History',
|
|
},
|
|
{
|
|
'<space>gl',
|
|
function()
|
|
Snacks.lazygit.log()
|
|
end,
|
|
desc = 'Lazygit Log (cwd)',
|
|
},
|
|
{
|
|
'm',
|
|
function()
|
|
Snacks.words.jump(vim.v.count1)
|
|
end,
|
|
desc = 'Next Reference',
|
|
mode = { 'n' },
|
|
},
|
|
{
|
|
'<S-m>',
|
|
function()
|
|
Snacks.words.jump(-vim.v.count1)
|
|
end,
|
|
desc = 'Prev Reference',
|
|
mode = { 'n' },
|
|
},
|
|
-- Top Pickers & Explorer
|
|
{
|
|
'<leader><space>',
|
|
function()
|
|
Snacks.picker.smart()
|
|
end,
|
|
desc = 'Smart Find Files',
|
|
},
|
|
{
|
|
'<leader>b',
|
|
function()
|
|
Snacks.picker.buffers()
|
|
end,
|
|
desc = 'Buffers',
|
|
},
|
|
{
|
|
'<leader>l',
|
|
function()
|
|
Snacks.picker.grep()
|
|
end,
|
|
desc = 'Grep',
|
|
},
|
|
{
|
|
'<leader>:',
|
|
function()
|
|
Snacks.picker.command_history()
|
|
end,
|
|
desc = 'Command History',
|
|
},
|
|
{
|
|
'<leader>n',
|
|
function()
|
|
Snacks.picker.notifications()
|
|
end,
|
|
desc = 'Notification History',
|
|
},
|
|
{
|
|
'<leader>e',
|
|
function()
|
|
Snacks.explorer()
|
|
end,
|
|
desc = 'File Explorer',
|
|
},
|
|
-- find
|
|
-- { "<leader>fb", function() Snacks.picker.buffers() end, desc = "Buffers" },
|
|
-- { "<leader>f", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" },
|
|
{
|
|
'<leader>f',
|
|
function()
|
|
Snacks.picker.files()
|
|
end,
|
|
desc = 'Find Files',
|
|
},
|
|
{
|
|
'<leader>g',
|
|
function()
|
|
Snacks.picker.git_files()
|
|
end,
|
|
desc = 'Find Git Files',
|
|
},
|
|
{
|
|
'<space>p',
|
|
function()
|
|
Snacks.picker.projects()
|
|
end,
|
|
desc = 'Projects',
|
|
},
|
|
{
|
|
'<leader>o',
|
|
function()
|
|
Snacks.picker.recent()
|
|
end,
|
|
desc = 'Recent',
|
|
},
|
|
{
|
|
'<leader>i',
|
|
function()
|
|
Snacks.picker.recent({ filter = { cwd = true } })
|
|
end,
|
|
desc = 'Recent in cwd',
|
|
},
|
|
-- git
|
|
{
|
|
'<leader>nb',
|
|
function()
|
|
Snacks.picker.git_branches()
|
|
end,
|
|
desc = 'Git Branches',
|
|
},
|
|
{
|
|
'<leader>nl',
|
|
function()
|
|
Snacks.picker.git_log()
|
|
end,
|
|
desc = 'Git Log',
|
|
},
|
|
{
|
|
'<leader>nL',
|
|
function()
|
|
Snacks.picker.git_log_line()
|
|
end,
|
|
desc = 'Git Log Line',
|
|
},
|
|
{
|
|
'<leader>ns',
|
|
function()
|
|
Snacks.picker.git_status()
|
|
end,
|
|
desc = 'Git Status',
|
|
},
|
|
{
|
|
'<leader>nS',
|
|
function()
|
|
Snacks.picker.git_stash()
|
|
end,
|
|
desc = 'Git Stash',
|
|
},
|
|
{
|
|
'<leader>nd',
|
|
function()
|
|
Snacks.picker.git_diff()
|
|
end,
|
|
desc = 'Git Diff (Hunks)',
|
|
},
|
|
{
|
|
'<leader>nf',
|
|
function()
|
|
Snacks.picker.git_log_file()
|
|
end,
|
|
desc = 'Git Log File',
|
|
},
|
|
-- Grep
|
|
{
|
|
'<leader>sb',
|
|
function()
|
|
Snacks.picker.lines()
|
|
end,
|
|
desc = 'Buffer Lines',
|
|
},
|
|
{
|
|
'<leader>sB',
|
|
function()
|
|
Snacks.picker.grep_buffers()
|
|
end,
|
|
desc = 'Grep Open Buffers',
|
|
},
|
|
-- { "<leader>sg", function() Snacks.picker.grep() end, desc = "Grep" },
|
|
{
|
|
'<leader>d',
|
|
function()
|
|
Snacks.picker.grep_word()
|
|
end,
|
|
desc = 'Visual selection or word',
|
|
mode = { 'n', 'x' },
|
|
},
|
|
-- search
|
|
-- { '<leader>s"', function() Snacks.picker.registers() end, desc = "Registers" },
|
|
-- { '<leader>s/', function() Snacks.picker.search_history() end, desc = "Search History" },
|
|
-- { "<leader>sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" },
|
|
-- { "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
|
|
-- { "<leader>sc", function() Snacks.picker.command_history() end, desc = "Command History" },
|
|
-- { "<leader>sC", function() Snacks.picker.commands() end, desc = "Commands" },
|
|
-- { "<leader>v", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" },
|
|
{
|
|
'<space>V',
|
|
function()
|
|
Snacks.picker.diagnostics_buffer()
|
|
end,
|
|
desc = 'Buffer Diagnostics',
|
|
},
|
|
{
|
|
'<leader>sh',
|
|
function()
|
|
Snacks.picker.help()
|
|
end,
|
|
desc = 'Help Pages',
|
|
},
|
|
{
|
|
'<leader>sH',
|
|
function()
|
|
Snacks.picker.highlights()
|
|
end,
|
|
desc = 'Highlights',
|
|
},
|
|
{
|
|
'<leader>si',
|
|
function()
|
|
Snacks.picker.icons()
|
|
end,
|
|
desc = 'Icons',
|
|
},
|
|
{
|
|
'<leader>j',
|
|
function()
|
|
Snacks.picker.jumps()
|
|
end,
|
|
desc = 'Jumps',
|
|
},
|
|
{
|
|
'<leader>sk',
|
|
function()
|
|
Snacks.picker.keymaps()
|
|
end,
|
|
desc = 'Keymaps',
|
|
},
|
|
{
|
|
'<leader>sl',
|
|
function()
|
|
Snacks.picker.loclist()
|
|
end,
|
|
desc = 'Location List',
|
|
},
|
|
{
|
|
'<leader>sm',
|
|
function()
|
|
Snacks.picker.marks()
|
|
end,
|
|
desc = 'Marks',
|
|
},
|
|
{
|
|
'<leader>sM',
|
|
function()
|
|
Snacks.picker.man()
|
|
end,
|
|
desc = 'Man Pages',
|
|
},
|
|
{
|
|
'<leader>sp',
|
|
function()
|
|
Snacks.picker.lazy()
|
|
end,
|
|
desc = 'Search for Plugin Spec',
|
|
},
|
|
{
|
|
'<leader>sq',
|
|
function()
|
|
Snacks.picker.qflist()
|
|
end,
|
|
desc = 'Quickfix List',
|
|
},
|
|
{
|
|
'<leader>sR',
|
|
function()
|
|
Snacks.picker.resume()
|
|
end,
|
|
desc = 'Resume',
|
|
},
|
|
{
|
|
'<leader>su',
|
|
function()
|
|
Snacks.picker.undo()
|
|
end,
|
|
desc = 'Undo History',
|
|
},
|
|
-- { "<leader>uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" },
|
|
-- LSP
|
|
{
|
|
'<space>d',
|
|
function()
|
|
Snacks.picker.lsp_definitions()
|
|
end,
|
|
desc = 'Goto Definition',
|
|
},
|
|
{
|
|
'<space>D',
|
|
function()
|
|
Snacks.picker.lsp_declarations()
|
|
end,
|
|
desc = 'Goto Declaration',
|
|
},
|
|
{
|
|
'<space>r',
|
|
function()
|
|
Snacks.picker.lsp_references()
|
|
end,
|
|
nowait = true,
|
|
desc = 'References',
|
|
},
|
|
{
|
|
'<space>I',
|
|
function()
|
|
Snacks.picker.lsp_implementations()
|
|
end,
|
|
desc = 'Goto Implementation',
|
|
},
|
|
{
|
|
'<space>e',
|
|
function()
|
|
Snacks.picker.lsp_type_definitions()
|
|
end,
|
|
desc = 'Goto T[y]pe Definition',
|
|
},
|
|
{
|
|
'<A-m>',
|
|
function()
|
|
Snacks.picker.lsp_symbols()
|
|
end,
|
|
desc = 'LSP Symbols',
|
|
},
|
|
{
|
|
'<leader>sS',
|
|
function()
|
|
Snacks.picker.lsp_workspace_symbols()
|
|
end,
|
|
desc = 'LSP Workspace Symbols',
|
|
},
|
|
},
|
|
}
|