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, + }, +}