From 362b412d55547ad666a2b128267396392e3a75ae Mon Sep 17 00:00:00 2001 From: rootiest Date: Fri, 8 Nov 2024 12:33:11 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat(snacks):=20use=20folke's=20sna?= =?UTF-8?q?cks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use folke's snacks.nvim convenience plugin --- lua/data/dash.lua | 2 +- lua/data/keys.lua | 7 -- lua/data/types.lua | 7 ++ lua/plugins/snacks.lua | 169 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 8 deletions(-) create mode 100644 lua/plugins/snacks.lua diff --git a/lua/data/dash.lua b/lua/data/dash.lua index 39de368..a6ed92b 100644 --- a/lua/data/dash.lua +++ b/lua/data/dash.lua @@ -21,7 +21,7 @@ local dashboard_buttons = { { key = "r", icon = " ", desc = " Recent Files", action = function() require("data.func").pick("oldfiles") end }, { key = "g", icon = " ", desc = " Grep Text", action = function() require("data.func").pick("live_grep") end }, { key = "p", icon = "󰙅 ", desc = " Pick Tree", action = function() require("data.func").pick("file_browser", "mini") end }, - { key = "z", icon = " ", desc = " LazyGit", action = function() require("data.func").open_lazygit_popup() end }, + { key = "z", icon = " ", desc = " LazyGit", action = function() Snacks.lazygit() end }, { key = "c", icon = " ", desc = " Config", action = function() require("data.func").pick("config_files") end }, { key = "s", icon = "󰶮 ", desc = " Restore Session", action = function() require("persistence").load() end }, { key = "S", icon = " ", desc = " Remote Session", action = function() require("config.rootiest").load_remote() end }, diff --git a/lua/data/keys.lua b/lua/data/keys.lua index 72b4400..8cf1e31 100644 --- a/lua/data/keys.lua +++ b/lua/data/keys.lua @@ -935,13 +935,6 @@ M.lazygit = { end, desc = "LazyGit", }, - { -- LazyGit - "gg", - function() - require("data.func").open_lazygit_popup() - end, - desc = "LazyGit", - }, } ---@function Helper function to toggle mini.files explorer diff --git a/lua/data/types.lua b/lua/data/types.lua index 05c4810..f49a713 100644 --- a/lua/data/types.lua +++ b/lua/data/types.lua @@ -598,6 +598,13 @@ M.minifiles = { end, }) + vim.api.nvim_create_autocmd("User", { + pattern = "MiniFilesActionRename", + callback = function(event) + Snacks.rename.on_rename_file(event.data.from, event.data.to) + end, + }) + -- include git signs require("config.minifiles") end, diff --git a/lua/plugins/snacks.lua b/lua/plugins/snacks.lua new file mode 100644 index 0000000..10994c0 --- /dev/null +++ b/lua/plugins/snacks.lua @@ -0,0 +1,169 @@ +-- ╭─────────────────────────────────────────────────────────╮ +-- │ 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, + }, +}