feat: add plugins, formatting, and editor quality-of-life improvements

- Add leap.nvim (<CR> to jump, S for cross-window) with LeapBackdrop dimming
- Add mini.surround with default s-prefix keymaps
- Add conform.nvim with format-on-save and <leader>cf keymap
- Add undotree with <leader>uu toggle and nerd font shapes
- Add nvim-treesitter-context for sticky scope header (max 3 lines)
- Add inc-rename.nvim with Noice input dialog and <leader>cr keymap
- Add lazydev.nvim for proper Neovim Lua type definitions in lua_ls
- Enable Snacks modules: scratch, zen, terminal (<C-/> toggle), and expand picker with flash integration and frecency matcher
- Configure flash to suppress default keymaps (owned by leap/mini.surround)
- Switch gitsigns from numhl to signcolumn for Snacks.statuscolumn rendering
- Set 2-space indentation with expandtab
- Enable persistent undo via undofile
- Auto-restore persistence session on startup when no file args given

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-17 18:24:47 -04:00
parent 444b5739bd
commit 21ec297431
4 changed files with 426 additions and 100 deletions
+28 -2
View File
@@ -100,7 +100,15 @@ vim.keymap.set("n", "gao", function() Snacks.picker.lsp_outgoing_calls() end, {
vim.keymap.set("n", "<leader>ss", function() Snacks.picker.lsp_symbols() end, { desc = "LSP Symbols" })
vim.keymap.set("n", "<leader>sS", function() Snacks.picker.lsp_workspace_symbols() end, { desc = "LSP Workspace Symbols" })
-- Standard LSP
vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Hover Documentation" })
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code Action" })
vim.keymap.set("n", "<leader>cr", function()
return ":" .. require("inc_rename").config.cmd_name .. " " .. vim.fn.expand("<cword>")
end, { expr = true, desc = "Rename Symbol" })
-- Other
vim.keymap.set("n", "<leader>sq", "<cmd>nohlsearch<cr>", { desc = "Clear Search Highlights" })
vim.keymap.set("n", "<leader>z", function() Snacks.zen() end, { desc = "Toggle Zen Mode" })
vim.keymap.set("n", "<leader>Z", function() Snacks.zen.zoom() end, { desc = "Toggle Zoom" })
vim.keymap.set("n", "<leader>.", function() Snacks.scratch() end, { desc = "Toggle Scratch Buffer" })
@@ -111,8 +119,8 @@ vim.keymap.set("n", "<leader>cR", function() Snacks.rename.rename_file() end, {
vim.keymap.set({ "n", "v" }, "<leader>gB", function() Snacks.gitbrowse() end, { desc = "Git Browse" })
vim.keymap.set("n", "<leader>gg", function() Snacks.lazygit() end, { desc = "Lazygit" })
vim.keymap.set("n", "<leader>un", function() Snacks.notifier.hide() end, { desc = "Dismiss All Notifications" })
vim.keymap.set("n", "<c-/>", function() Snacks.terminal() end, { desc = "Toggle Terminal" })
vim.keymap.set("n", "<c-_>", function() Snacks.terminal() end, { desc = "which_key_ignore" })
vim.keymap.set({ "n", "t" }, "<c-/>", function() Snacks.terminal() end, { desc = "Toggle Terminal" })
vim.keymap.set({ "n", "t" }, "<c-_>", function() Snacks.terminal() end, { desc = "which_key_ignore" })
vim.keymap.set({ "n", "t" }, "]]", function() Snacks.words.jump(vim.v.count1) end, { desc = "Next Reference" })
vim.keymap.set({ "n", "t" }, "[[", function() Snacks.words.jump(-vim.v.count1) end, { desc = "Prev Reference" })
vim.keymap.set("n", "<leader>N", function()
@@ -132,6 +140,24 @@ end, { desc = "Neovim News" })
----------------------------------------------------------
-- Leap Keymaps
vim.keymap.set({ 'n', 'x', 'o' }, '<CR>', '<Plug>(leap)')
vim.keymap.set('n', 'S', '<Plug>(leap-from-window)')
----------------------------------------------------------
-- Conform Keymaps
vim.keymap.set({ "n", "v" }, "<leader>cf", function()
require("conform").format({ lsp_format = "fallback" })
end, { desc = "Format Buffer" })
----------------------------------------------------------
-- Undotree Keymaps
vim.keymap.set("n", "<leader>uu", "<cmd>UndotreeToggle<cr>", { desc = "Toggle Undotree" })
----------------------------------------------------------
-- Persistence Keymaps
vim.keymap.set("n", "<leader>qs", function() require("persistence").load() end, { desc = "Restore Session" })
vim.keymap.set("n", "<leader>qS", function() require("persistence").select() end, { desc = "Select Session" })