-- 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 { { "folke/snacks.nvim", -- stylua: ignore keys = { -- Snacks Scratch { ".", 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" }, }, opts = { bigfile = { enabled = true }, indent = { enabled = true }, input = { enabled = true }, -- NOTE: seems unecessary quickfile = { enabled = true }, -- TODO: review if needed scope = { enabled = true }, scroll = { enabled = false }, -- fuck this! statuscolumn = { enabled = true }, terminal = { win = { keys = { nav_h = { "", term_nav("W"), desc = "Go to Prev 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("w"), desc = "Go to Next Window", expr = true, mode = "t" }, }, }, }, dashboard = { preset = { -- TODO: replace header header = [[ ██╗ █████╗ ██╗ ██╗███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z ██║ ██╔══██╗██║ ██║╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z ██║ ██║ ██║██║ ██║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z ██║ ██║ ██║██║ ██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z ███████╗╚█████╔╝╚██████╔╝███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║ ╚══════╝ ╚════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ]], -- stylua: ignore ---@type snacks.dashboard.Item[] keys = { { icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" }, { icon = " ", key = "i", desc = "New File", action = ":ene | startinsert" }, { icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" }, { icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" }, { icon = " ", key = "c", desc = "Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" }, { icon = " ", key = "s", desc = "Restore Session", section = "session" }, { icon = " ", key = "x", desc = "Lazy Extras", action = ":LazyExtras" }, { icon = "󰒲 ", key = "l", desc = "Lazy", action = ":Lazy" }, }, }, }, }, }, { "folke/snacks.nvim", opts = { notifier = { enabled = true }, }, -- stylua: ignore keys = { -- TODO: review after picking picker (ha) { "n", function() if Snacks.config.picker and Snacks.config.picker.enabled then Snacks.picker.notifications() else Snacks.notifier.show_history() end end, desc = "Notification History" }, { "un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" }, }, } }