{ lib, pkgs, ... }: { plugins.snacks = { enable = true; settings = { bigfile.enabled = true; notifier.enabled = true; quickfile.enabled = true; statuscolumn.enabled = true; words.enabled = true; lazygit.enabled = true; picker.enabled = true; indent.enabled = true; scope.enabled = true; }; }; extraPackages = [ pkgs.ripgrep pkgs.fd pkgs.lazygit ]; keymaps = [ { key = ""; action = lib.nixvim.mkRaw "function() Snacks.picker.smart() end"; options = { desc = "Smart Find Files"; }; } { key = ","; action = lib.nixvim.mkRaw "function() Snacks.picker.buffers() end"; options = { desc = "Buffers"; }; } { key = "/"; action = lib.nixvim.mkRaw "function() Snacks.picker.grep() end"; options = { desc = "Grep"; }; } { key = ":"; action = lib.nixvim.mkRaw "function() Snacks.picker.command_history() end"; options = { desc = "Command History"; }; } { key = "n"; action = lib.nixvim.mkRaw "function() Snacks.picker.notifications() end"; options = { desc = "Notification History"; }; } { key = "e"; action = lib.nixvim.mkRaw "function() Snacks.explorer() end"; options = { desc = "File Explorer"; }; } { key = "fb"; action = lib.nixvim.mkRaw "function() Snacks.picker.buffers() end"; options = { desc = "Buffers"; }; } { key = "fc"; action = lib.nixvim.mkRaw "function() Snacks.picker.files({ cwd = vim.fn.stdpath(\"config\") }) end"; options = { desc = "Find Config File"; }; } { key = "ff"; action = lib.nixvim.mkRaw "function() Snacks.picker.files() end"; options = { desc = "Find Files"; }; } { key = "fg"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_files() end"; options = { desc = "Find Git Files"; }; } { key = "fp"; action = lib.nixvim.mkRaw "function() Snacks.picker.projects() end"; options = { desc = "Projects"; }; } { key = "fr"; action = lib.nixvim.mkRaw "function() Snacks.picker.recent() end"; options = { desc = "Recent"; }; } { key = "gb"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_branches() end"; options = { desc = "Git Branches"; }; } { key = "gl"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_log() end"; options = { desc = "Git Log"; }; } { key = "gL"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_log_line() end"; options = { desc = "Git Log Line"; }; } { key = "gs"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_status() end"; options = { desc = "Git Status"; }; } { key = "gS"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_stash() end"; options = { desc = "Git Stash"; }; } { key = "gd"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_diff() end"; options = { desc = "Git Diff (Hunks)"; }; } { key = "gf"; action = lib.nixvim.mkRaw "function() Snacks.picker.git_log_file() end"; options = { desc = "Git Log File"; }; } { key = "sb"; action = lib.nixvim.mkRaw "function() Snacks.picker.lines() end"; options = { desc = "Buffer Lines"; }; } { key = "sB"; action = lib.nixvim.mkRaw "function() Snacks.picker.grep_buffers() end"; options = { desc = "Grep Open Buffers"; }; } { key = "sg"; action = lib.nixvim.mkRaw "function() Snacks.picker.grep() end"; options = { desc = "Grep"; }; } { key = "sw"; action = lib.nixvim.mkRaw "function() Snacks.picker.grep_word() end"; options = { desc = "Visual selection or word"; }; mode = "n"; } { key = "s\""; action = lib.nixvim.mkRaw "function() Snacks.picker.registers() end"; options = { desc = "Registers"; }; } { key = "s/"; action = lib.nixvim.mkRaw "function() Snacks.picker.search_history() end"; options = { desc = "Search History"; }; } { key = "sa"; action = lib.nixvim.mkRaw "function() Snacks.picker.autocmds() end"; options = { desc = "Autocmds"; }; } { key = "sb"; action = lib.nixvim.mkRaw "function() Snacks.picker.lines() end"; options = { desc = "Buffer Lines"; }; } { key = "sc"; action = lib.nixvim.mkRaw "function() Snacks.picker.command_history() end"; options = { desc = "Command History"; }; } { key = "sC"; action = lib.nixvim.mkRaw "function() Snacks.picker.commands() end"; options = { desc = "Commands"; }; } { key = "sd"; action = lib.nixvim.mkRaw "function() Snacks.picker.diagnostics() end"; options = { desc = "Diagnostics"; }; } { key = "sD"; action = lib.nixvim.mkRaw "function() Snacks.picker.diagnostics_buffer() end"; options = { desc = "Buffer Diagnostics"; }; } { key = "sh"; action = lib.nixvim.mkRaw "function() Snacks.picker.help() end"; options = { desc = "Help Pages"; }; } { key = "sH"; action = lib.nixvim.mkRaw "function() Snacks.picker.highlights() end"; options = { desc = "Highlights"; }; } { key = "si"; action = lib.nixvim.mkRaw "function() Snacks.picker.icons() end"; options = { desc = "Icons"; }; } { key = "sj"; action = lib.nixvim.mkRaw "function() Snacks.picker.jumps() end"; options = { desc = "Jumps"; }; } { key = "sk"; action = lib.nixvim.mkRaw "function() Snacks.picker.keymaps() end"; options = { desc = "Keymaps"; }; } { key = "sl"; action = lib.nixvim.mkRaw "function() Snacks.picker.loclist() end"; options = { desc = "Location List"; }; } { key = "sm"; action = lib.nixvim.mkRaw "function() Snacks.picker.marks() end"; options = { desc = "Marks"; }; } { key = "sM"; action = lib.nixvim.mkRaw "function() Snacks.picker.man() end"; options = { desc = "Man Pages"; }; } { key = "sp"; action = lib.nixvim.mkRaw "function() Snacks.picker.lazy() end"; options = { desc = "Search for Plugin Spec"; }; } { key = "sq"; action = lib.nixvim.mkRaw "function() Snacks.picker.qflist() end"; options = { desc = "Quickfix List"; }; } { key = "sR"; action = lib.nixvim.mkRaw "function() Snacks.picker.resume() end"; options = { desc = "Resume"; }; } { key = "su"; action = lib.nixvim.mkRaw "function() Snacks.picker.undo() end"; options = { desc = "Undo History"; }; } { key = "uC"; action = lib.nixvim.mkRaw "function() Snacks.picker.colorschemes() end"; options = { desc = "Colorschemes"; }; } { key = "gd"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_definitions() end"; options = { desc = "Goto Definition"; }; } { key = "gD"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_declarations() end"; options = { desc = "Goto Declaration"; }; } { key = "gr"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_references() end"; options = { desc = "References"; }; } { key = "gI"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_implementations() end"; options = { desc = "Goto Implementation"; }; } { key = "gy"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_type_definitions() end"; options = { desc = "Goto T[y]pe Definition"; }; } { key = "gai"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_incoming_calls() end"; options = { desc = "C[a]lls Incoming"; }; } { key = "gao"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_outgoing_calls() end"; options = { desc = "C[a]lls Outgoing"; }; } { key = "ss"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_symbols() end"; options = { desc = "LSP Symbols"; }; } { key = "sS"; action = lib.nixvim.mkRaw "function() Snacks.picker.lsp_workspace_symbols() end"; options = { desc = "LSP Workspace Symbols"; }; } { key = "z"; action = lib.nixvim.mkRaw "function() Snacks.zen() end"; options = { desc = "Toggle Zen Mode"; }; } { key = "Z"; action = lib.nixvim.mkRaw "function() Snacks.zen.zoom() end"; options = { desc = "Toggle Zoom"; }; } { key = "."; action = lib.nixvim.mkRaw "function() Snacks.scratch() end"; options = { desc = "Toggle Scratch Buffer"; }; } { key = "S"; action = lib.nixvim.mkRaw "function() Snacks.scratch.select() end"; options = { desc = "Select Scratch Buffer"; }; } { key = "n"; action = lib.nixvim.mkRaw "function() Snacks.notifier.show_history() end"; options = { desc = "Notification History"; }; } { key = "bd"; action = lib.nixvim.mkRaw "function() Snacks.bufdelete() end"; options = { desc = "Delete Buffer"; }; } { key = "cR"; action = lib.nixvim.mkRaw "function() Snacks.rename.rename_file() end"; options = { desc = "Rename File"; }; } { key = "gB"; action = lib.nixvim.mkRaw "function() Snacks.gitbrowse() end"; options = { desc = "Git Browse"; }; mode = "n"; } { key = "gg"; action = lib.nixvim.mkRaw "function() Snacks.lazygit() end"; options = { desc = "Lazygit"; }; } { key = "un"; action = lib.nixvim.mkRaw "function() Snacks.notifier.hide() end"; options = { desc = "Dismiss All Notifications"; }; } { key = ""; action = lib.nixvim.mkRaw "function() Snacks.terminal() end"; options = { desc = "Toggle Terminal"; }; } { key = ""; action = lib.nixvim.mkRaw "function() Snacks.terminal() end"; options = { desc = "which_key_ignore"; }; } { key = "]]"; action = lib.nixvim.mkRaw "function() Snacks.words.jump(vim.v.count1) end"; options = { desc = "Next Reference"; }; mode = "n"; } { key = "[["; action = lib.nixvim.mkRaw "function() Snacks.words.jump(-vim.v.count1) end"; options = { desc = "Prev Reference"; }; mode = "n"; } ]; }