+-- Terminal Mappings
+local function term_nav(dir)
+ ---@param self snacks.terminal
+ return function(self)
+ return self:is_floating() and "<c-" .. dir .. ">" or vim.schedule(function()
+ vim.cmd.wincmd(dir)
+ end)
+ end
+end
+
return {
{ "folke/snacks.nvim",
- opts = {},
- config = function(_, opts)
- local notify = vim.notify
- require("snacks").setup(opts)
- -- HACK: restore vim.notify after snacks setup and let noice.nvim take over
- -- this is needed to have early notifications show up in noice history
- if LazyVim.has("noice.nvim") then
- vim.notify = notify
- end
- end,
+ -- stylua: ignore
+ keys = {
+ -- Snacks Scratch
+ { "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
+ { "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
+ { "<leader>dps", function() Snacks.profiler.scratch() end, desc = "Profiler Scratch Buffer" },
+ },
+ opts = {
+ bigfile = { enabled = true },
+ quickfile = { enabled = true },
+ terminal = {
+ win = {
+ keys = {
+ nav_h = { "<C-h>", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" },
+ nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
+ nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
+ nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
+ },
+ },
+ },
+ },
}
}