You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
546 lines
9.0 KiB
546 lines
9.0 KiB
return { |
|
"folke/snacks.nvim", |
|
priority = 1000, |
|
lazy = false, |
|
opts = { |
|
bigfile = { enabled = true }, |
|
dashboard = { enabled = true }, |
|
explorer = { enabled = false }, |
|
indent = { enabled = true }, |
|
input = { enabled = true }, |
|
notifier = { |
|
enabled = true, |
|
timeout = 3000, |
|
}, |
|
picker = { enabled = true }, |
|
quickfile = { enabled = true }, |
|
scope = { enabled = true }, |
|
scroll = { enabled = false }, |
|
statuscolumn = { enabled = false }, |
|
words = { enabled = false }, |
|
styles = { |
|
notification = { |
|
-- wo = { wrap = true } -- Wrap notifications |
|
}, |
|
}, |
|
}, |
|
keys = { |
|
-- Top Pickers & Explorer |
|
{ |
|
"<leader><space>", |
|
function() |
|
Snacks.picker.smart() |
|
end, |
|
desc = "Smart Find Files", |
|
}, |
|
{ |
|
"<leader>,", |
|
function() |
|
Snacks.picker.buffers() |
|
end, |
|
desc = "Buffers", |
|
}, |
|
{ |
|
"<leader>/", |
|
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>fc", |
|
function() |
|
Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) |
|
end, |
|
desc = "Find Config File", |
|
}, |
|
{ |
|
"<leader>ff", |
|
function() |
|
Snacks.picker.files() |
|
end, |
|
desc = "Find Files", |
|
}, |
|
{ |
|
"<leader>fg", |
|
function() |
|
Snacks.picker.git_files() |
|
end, |
|
desc = "Find Git Files", |
|
}, |
|
{ |
|
"<leader>fp", |
|
function() |
|
Snacks.picker.projects() |
|
end, |
|
desc = "Projects", |
|
}, |
|
{ |
|
"<leader>fr", |
|
function() |
|
Snacks.picker.recent() |
|
end, |
|
desc = "Recent", |
|
}, |
|
-- git |
|
{ |
|
"<leader>gb", |
|
function() |
|
Snacks.picker.git_branches() |
|
end, |
|
desc = "Git Branches", |
|
}, |
|
{ |
|
"<leader>gl", |
|
function() |
|
Snacks.picker.git_log() |
|
end, |
|
desc = "Git Log", |
|
}, |
|
{ |
|
"<leader>gL", |
|
function() |
|
Snacks.picker.git_log_line() |
|
end, |
|
desc = "Git Log Line", |
|
}, |
|
{ |
|
"<leader>gs", |
|
function() |
|
Snacks.picker.git_status() |
|
end, |
|
desc = "Git Status", |
|
}, |
|
{ |
|
"<leader>gS", |
|
function() |
|
Snacks.picker.git_stash() |
|
end, |
|
desc = "Git Stash", |
|
}, |
|
{ |
|
"<leader>gd", |
|
function() |
|
Snacks.picker.git_diff() |
|
end, |
|
desc = "Git Diff (Hunks)", |
|
}, |
|
{ |
|
"<leader>gf", |
|
function() |
|
Snacks.picker.git_log_file() |
|
end, |
|
desc = "Git Log File", |
|
}, |
|
-- Grep |
|
{ |
|
"<leader>fl", |
|
function() |
|
Snacks.picker.lines() |
|
end, |
|
desc = "Buffer Lines", |
|
}, |
|
{ |
|
"<leader>fL", |
|
function() |
|
Snacks.picker.grep_buffers() |
|
end, |
|
desc = "Grep Open Buffers", |
|
}, |
|
{ |
|
"<leader>ft", |
|
function() |
|
Snacks.picker.grep() |
|
end, |
|
desc = "Grep", |
|
}, |
|
{ |
|
"<leader>fw", |
|
function() |
|
Snacks.picker.grep_word() |
|
end, |
|
desc = "Visual selection or word", |
|
mode = { "n", "x" }, |
|
}, |
|
-- search |
|
{ |
|
'<leader>f"', |
|
function() |
|
Snacks.picker.registers() |
|
end, |
|
desc = "Registers", |
|
}, |
|
{ |
|
"<leader>f/", |
|
function() |
|
Snacks.picker.search_history() |
|
end, |
|
desc = "Search History", |
|
}, |
|
{ |
|
"<leader>fa", |
|
function() |
|
Snacks.picker.autocmds() |
|
end, |
|
desc = "Autocmds", |
|
}, |
|
-- { |
|
-- "<leader>fb", |
|
-- function() |
|
-- Snacks.picker.lines() |
|
-- end, |
|
-- desc = "Buffer Lines", |
|
-- }, |
|
-- { |
|
-- "<leader>fc", |
|
-- function() |
|
-- Snacks.picker.command_history() |
|
-- end, |
|
-- desc = "Command History", |
|
-- }, |
|
-- { |
|
-- "<leader>sC", |
|
-- function() |
|
-- Snacks.picker.commands() |
|
-- end, |
|
-- desc = "Commands", |
|
-- }, |
|
{ |
|
"<leader>fD", |
|
function() |
|
Snacks.picker.diagnostics() |
|
end, |
|
desc = "Diagnostics", |
|
}, |
|
{ |
|
"<leader>fd", |
|
function() |
|
Snacks.picker.diagnostics_buffer() |
|
end, |
|
desc = "Buffer Diagnostics", |
|
}, |
|
{ |
|
"<leader>fh", |
|
function() |
|
Snacks.picker.help() |
|
end, |
|
desc = "Help Pages", |
|
}, |
|
{ |
|
"<leader>fH", |
|
function() |
|
Snacks.picker.highlights() |
|
end, |
|
desc = "Highlights", |
|
}, |
|
{ |
|
"<leader>fi", |
|
function() |
|
Snacks.picker.icons() |
|
end, |
|
desc = "Icons", |
|
}, |
|
{ |
|
"<leader>fj", |
|
function() |
|
Snacks.picker.jumps() |
|
end, |
|
desc = "Jumps", |
|
}, |
|
{ |
|
"<leader>fk", |
|
function() |
|
Snacks.picker.keymaps() |
|
end, |
|
desc = "Keymaps", |
|
}, |
|
-- { |
|
-- "<leader>sl", |
|
-- function() |
|
-- Snacks.picker.loclist() |
|
-- end, |
|
-- desc = "Location List", |
|
-- }, |
|
-- { |
|
-- "<leader>fm", |
|
-- function() |
|
-- Snacks.picker.marks() |
|
-- end, |
|
-- desc = "Marks", |
|
-- }, |
|
{ |
|
"<leader>fM", |
|
function() |
|
Snacks.picker.man() |
|
end, |
|
desc = "Man Pages", |
|
}, |
|
{ |
|
"<leader>fp", |
|
function() |
|
Snacks.picker.lazy() |
|
end, |
|
desc = "Search for Plugin Spec", |
|
}, |
|
{ |
|
"<leader>fq", |
|
function() |
|
Snacks.picker.qflist() |
|
end, |
|
desc = "Quickfix List", |
|
}, |
|
{ |
|
"<leader>fR", |
|
function() |
|
Snacks.picker.resume() |
|
end, |
|
desc = "Resume", |
|
}, |
|
{ |
|
"<leader>fu", |
|
function() |
|
Snacks.picker.undo() |
|
end, |
|
desc = "Undo History", |
|
}, |
|
{ |
|
"<leader>uC", |
|
function() |
|
Snacks.picker.colorschemes() |
|
end, |
|
desc = "Colorschemes", |
|
}, |
|
-- LSP |
|
{ |
|
"gd", |
|
function() |
|
Snacks.picker.lsp_definitions() |
|
end, |
|
desc = "Goto Definition", |
|
}, |
|
{ |
|
"gD", |
|
function() |
|
Snacks.picker.lsp_declarations() |
|
end, |
|
desc = "Goto Declaration", |
|
}, |
|
{ |
|
"gr", |
|
function() |
|
Snacks.picker.lsp_references() |
|
end, |
|
nowait = true, |
|
desc = "References", |
|
}, |
|
{ |
|
"gI", |
|
function() |
|
Snacks.picker.lsp_implementations() |
|
end, |
|
desc = "Goto Implementation", |
|
}, |
|
{ |
|
"gy", |
|
function() |
|
Snacks.picker.lsp_type_definitions() |
|
end, |
|
desc = "Goto T[y]pe Definition", |
|
}, |
|
{ |
|
"<leader>ss", |
|
function() |
|
Snacks.picker.lsp_symbols() |
|
end, |
|
desc = "LSP Symbols", |
|
}, |
|
{ |
|
"<leader>sS", |
|
function() |
|
Snacks.picker.lsp_workspace_symbols() |
|
end, |
|
desc = "LSP Workspace Symbols", |
|
}, |
|
-- Other |
|
{ |
|
"<leader>z", |
|
function() |
|
Snacks.zen() |
|
end, |
|
desc = "Toggle Zen Mode", |
|
}, |
|
{ |
|
"<leader>Z", |
|
function() |
|
Snacks.zen.zoom() |
|
end, |
|
desc = "Toggle Zoom", |
|
}, |
|
{ |
|
"<leader>.", |
|
function() |
|
Snacks.scratch() |
|
end, |
|
desc = "Toggle Scratch Buffer", |
|
}, |
|
{ |
|
"<leader>S", |
|
function() |
|
Snacks.scratch.select() |
|
end, |
|
desc = "Select Scratch Buffer", |
|
}, |
|
{ |
|
"<leader>n", |
|
function() |
|
Snacks.notifier.show_history() |
|
end, |
|
desc = "Notification History", |
|
}, |
|
{ |
|
"<leader>bd", |
|
function() |
|
Snacks.bufdelete() |
|
end, |
|
desc = "Delete Buffer", |
|
}, |
|
{ |
|
"<leader>cR", |
|
function() |
|
Snacks.rename.rename_file() |
|
end, |
|
desc = "Rename File", |
|
}, |
|
{ |
|
"<leader>gB", |
|
function() |
|
Snacks.gitbrowse() |
|
end, |
|
desc = "Git Browse", |
|
mode = { "n", "v" }, |
|
}, |
|
{ |
|
"<leader>gg", |
|
function() |
|
Snacks.lazygit() |
|
end, |
|
desc = "Lazygit", |
|
}, |
|
{ |
|
"<leader>un", |
|
function() |
|
Snacks.notifier.hide() |
|
end, |
|
desc = "Dismiss All Notifications", |
|
}, |
|
{ |
|
"<c-/>", |
|
function() |
|
Snacks.terminal() |
|
end, |
|
desc = "Toggle Terminal", |
|
}, |
|
{ |
|
"<c-_>", |
|
function() |
|
Snacks.terminal() |
|
end, |
|
desc = "which_key_ignore", |
|
}, |
|
{ |
|
"]]", |
|
function() |
|
Snacks.words.jump(vim.v.count1) |
|
end, |
|
desc = "Next Reference", |
|
mode = { "n", "t" }, |
|
}, |
|
{ |
|
"[[", |
|
function() |
|
Snacks.words.jump(-vim.v.count1) |
|
end, |
|
desc = "Prev Reference", |
|
mode = { "n", "t" }, |
|
}, |
|
{ |
|
"<leader>N", |
|
desc = "Neovim News", |
|
function() |
|
Snacks.win({ |
|
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1], |
|
width = 0.6, |
|
height = 0.6, |
|
wo = { |
|
spell = false, |
|
wrap = false, |
|
signcolumn = "yes", |
|
statuscolumn = " ", |
|
conceallevel = 3, |
|
}, |
|
}) |
|
end, |
|
}, |
|
}, |
|
init = function() |
|
vim.api.nvim_create_autocmd("User", { |
|
pattern = "VeryLazy", |
|
callback = function() |
|
-- Setup some globals for debugging (lazy-loaded) |
|
_G.dd = function(...) |
|
Snacks.debug.inspect(...) |
|
end |
|
_G.bt = function() |
|
Snacks.debug.backtrace() |
|
end |
|
vim.print = _G.dd -- Override print to use snacks for `:=` command |
|
|
|
-- Create some toggle mappings |
|
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us") |
|
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw") |
|
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL") |
|
Snacks.toggle.diagnostics():map("<leader>ud") |
|
Snacks.toggle.line_number():map("<leader>ul") |
|
Snacks.toggle |
|
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }) |
|
:map("<leader>uc") |
|
Snacks.toggle.treesitter():map("<leader>uT") |
|
Snacks.toggle |
|
.option("background", { off = "light", on = "dark", name = "Dark Background" }) |
|
:map("<leader>ub") |
|
Snacks.toggle.inlay_hints():map("<leader>uh") |
|
Snacks.toggle.indent():map("<leader>ug") |
|
Snacks.toggle.dim():map("<leader>uD") |
|
end, |
|
}) |
|
end, |
|
}
|
|
|