vim.pack.add({ "https://github.com/folke/snacks.nvim" }) local ok, snacks = pcall(require, "snacks") if ok then snacks.setup({ picker = { enabled = false }, }) else print("plugin snacks missing") end local set = vim.keymap.set set("n", "ea", function() Snacks.explorer() end, { desc = "File Explorer" }) set("n", "gl", function() Snacks.picker.git_log_line() end, { desc = "Git Log Line" }) set({ "n", "v" }, "gx", function() Snacks.gitbrowse() end, { desc = "Git Browse" }) set("n", "xR", function() Snacks.picker.resume() end, { desc = "Resume" }) set("n", "n", function() Snacks.notifier.show_history() end, { desc = "Notification History" }) set("n", "N", function() Snacks.picker.notifications() end, { desc = "Notifications" }) set("n", "$", function() Snacks.rename.rename_file() end, { desc = "Rename File" }) set("n", "z", function() Snacks.zen.zoom() end, { desc = "Toggle Zoom" }) set("n", ".", function() Snacks.scratch() end, { desc = "Toggle Scratch Buffer" }) set("n", "x.", function() Snacks.scratch.select() end, { desc = "Select Scratch Buffer" }) -- Terminal set({ "n", "t" }, "", function() Snacks.terminal() end, { desc = "Toggle Terminal" }) set({ "n", "t" }, "", function() Snacks.terminal() end, { desc = "which_key_ignore" }) vim.api.nvim_create_autocmd("VimEnter", { callback = function() -- Setup some globals for debugging (lazy-loaded) _G.dd = function(...) Snacks.debug.inspect(...) end _G.bt = function() Snacks.debug.backtrace() end -- Override print to use snacks for `:=` command if vim.fn.has("nvim-0.11") == 1 then vim._print = function(_, ...) dd(...) end else vim.print = _G.dd end -- Create some toggle mappings Snacks.toggle.option("spell", { name = "Spelling" }):map("us") Snacks.toggle.option("wrap", { name = "Wrap" }):map("uw") Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("uL") Snacks.toggle.diagnostics():map("ud") Snacks.toggle.line_number():map("ul") Snacks.toggle .option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }) :map("uc") Snacks.toggle.treesitter():map("uT") Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("ub") Snacks.toggle.inlay_hints():map("uh") Snacks.toggle.indent():map("ug") Snacks.toggle.dim():map("uD") end, })