-- ╭─────────────────────────────────────────────────────────╮ -- │ Snacks │ -- ╰─────────────────────────────────────────────────────────╯ return { { 'folke/snacks.nvim', priority = 1010, lazy = false, opts = { bigfile = { enabled = true }, notifier = { enabled = true, timeout = 3000, }, quickfile = { enabled = true }, statuscolumn = { enabled = true }, words = { enabled = true }, styles = { notification = { wo = { wrap = true }, -- Wrap notifications }, }, }, keys = { { 'un', function() Snacks.notifier.hide() end, desc = 'Dismiss All Notifications', }, { 'bd', function() Snacks.bufdelete() end, desc = 'Delete Buffer', }, { 'gg', function() Snacks.lazygit() end, desc = 'Lazygit', }, { 'gb', function() Snacks.git.blame_line() end, desc = 'Git Blame Line', }, { 'gB', function() Snacks.gitbrowse() end, desc = 'Git Browse', }, { 'gf', function() Snacks.lazygit.log_file() end, desc = 'Lazygit Current File History', }, { 'gl', function() Snacks.lazygit.log() end, desc = 'Lazygit Log (cwd)', }, { 'cR', function() Snacks.rename() end, desc = 'Rename File', }, { '', function() Snacks.terminal() end, desc = 'Toggle Terminal', }, { '', function() Snacks.terminal() end, desc = 'which_key_ignore', }, { ']]', function() Snacks.words.jump(vim.v.count1) end, desc = 'Next Reference', }, { '[[', function() Snacks.words.jump(-vim.v.count1) end, desc = 'Prev Reference', }, { 'N', desc = 'Neovim News', function() Snacks.win({ file = vim.api.nvim_get_runtime_file('doc/news.txt', false)[1], width = 0.6, height = 0.6, wo = { spell = false, wrap = false, signcolumn = 'yes', statuscolumn = ' ', conceallevel = 3, }, }) end, }, }, init = function() Snacks = Snacks -- Define the global so it will shutup vim.api.nvim_create_autocmd('User', { pattern = 'VeryLazy', callback = function() -- Setup some globals for debugging (lazy-loaded) _G.dd = function(...) Snacks.debug.inspect(...) end _G.bt = function() Snacks.debug.backtrace() end vim.print = _G.dd -- Override print to use snacks for `:=` command -- 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') end, }) end, }, }