-- Terminal Mappings local function term_nav(dir) ---@param self snacks.terminal return function(self) return self:is_floating() and "" or vim.schedule(function() vim.cmd.wincmd(dir) end) end end return { -- Snacks utils { "snacks.nvim", opts = { bigfile = { enabled = true }, quickfile = { enabled = true }, terminal = { win = { keys = { nav_h = { "", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" }, nav_j = { "", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" }, nav_k = { "", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" }, nav_l = { "", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" }, }, }, }, }, -- stylua: ignore keys = { { ".", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" }, { "S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" }, { "dps", function() Snacks.profiler.scratch() end, desc = "Profiler Scratch Buffer" }, }, }, -- Session management. This saves your session in the background, -- keeping track of open buffers, window arrangement, and more. -- You can restore sessions when returning through the dashboard. { "folke/persistence.nvim", event = "BufReadPre", opts = {}, -- stylua: ignore keys = { { "qs", function() require("persistence").load() end, desc = "Restore Session" }, { "qS", function() require("persistence").select() end,desc = "Select Session" }, { "ql", function() require("persistence").load({ last = true }) end, desc = "Restore Last Session" }, { "qd", function() require("persistence").stop() end, desc = "Don't Save Current Session" }, }, }, -- library used by other plugins { "nvim-lua/plenary.nvim", lazy = true }, }