From 41bdda7cc86aa1d013b98314b280b480c37091d8 Mon Sep 17 00:00:00 2001 From: demenik Date: Tue, 16 Dec 2025 16:32:33 +0100 Subject: [PATCH] feat(nvim): Add snack.nvim (replacing zen-mode, bufdelete) --- home/editors/nvim/colorschemes.nix | 1 + home/editors/nvim/plugins/editing/default.nix | 1 - home/editors/nvim/plugins/utils/default.nix | 1 + home/editors/nvim/plugins/utils/snacks.nix | 34 +++++++++++++++++++ .../nvim/plugins/utils/which-key/config.lua | 19 ++++------- 5 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 home/editors/nvim/plugins/utils/snacks.nix diff --git a/home/editors/nvim/colorschemes.nix b/home/editors/nvim/colorschemes.nix index eb84709..730c32b 100644 --- a/home/editors/nvim/colorschemes.nix +++ b/home/editors/nvim/colorschemes.nix @@ -28,6 +28,7 @@ which_key = true; neotest = true; dap = true; + snacks.enable = true; }; custom_highlights = # lua diff --git a/home/editors/nvim/plugins/editing/default.nix b/home/editors/nvim/plugins/editing/default.nix index 6d31ce1..c2f6481 100644 --- a/home/editors/nvim/plugins/editing/default.nix +++ b/home/editors/nvim/plugins/editing/default.nix @@ -24,7 +24,6 @@ rainbow-delimiters.enable = true; twilight.enable = true; - zen-mode.enable = true; nvim-tree = { enable = true; diff --git a/home/editors/nvim/plugins/utils/default.nix b/home/editors/nvim/plugins/utils/default.nix index 688b929..d494cc2 100644 --- a/home/editors/nvim/plugins/utils/default.nix +++ b/home/editors/nvim/plugins/utils/default.nix @@ -10,6 +10,7 @@ ./silicon.nix ./todo-comments.nix ./debugging.nix + ./snacks.nix ]; plugins = { diff --git a/home/editors/nvim/plugins/utils/snacks.nix b/home/editors/nvim/plugins/utils/snacks.nix new file mode 100644 index 0000000..3615940 --- /dev/null +++ b/home/editors/nvim/plugins/utils/snacks.nix @@ -0,0 +1,34 @@ +{ + plugins.snacks = { + enable = true; + settings = { + bigfile.enabled = true; + notifier = { + enabled = true; + timeout = 3000; + }; + bufdelete.enabled = true; + image.enabled = true; + quickfile.enabled = true; + rename.enabled = true; + }; + }; + + extraConfigLua = + # lua + '' + local prev = { new_name = "", old_name = "" } -- Prevents duplicate events + vim.api.nvim_create_autocmd("User", { + pattern = "NvimTreeSetup", + callback = function() + local events = require("nvim-tree.api").events + events.subscribe(events.Event.NodeRenamed, function(data) + if prev.new_name ~= data.new_name or prev.old_name ~= data.old_name then + data = data + Snacks.rename.on_rename_file(data.old_name, data.new_name) + end + end) + end, + }) + ''; +} diff --git a/home/editors/nvim/plugins/utils/which-key/config.lua b/home/editors/nvim/plugins/utils/which-key/config.lua index b2999ab..f95c8fd 100644 --- a/home/editors/nvim/plugins/utils/which-key/config.lua +++ b/home/editors/nvim/plugins/utils/which-key/config.lua @@ -13,19 +13,15 @@ local set_key = { end, } -local function smart_buffer_delete() - local current_buf = vim.api.nvim_get_current_buf() - pcall(vim.cmd.bnext) - if current_buf == vim.api.nvim_get_current_buf() then - vim.cmd.enew() - end - pcall(vim.cmd, "bdelete " .. current_buf) -end - wk.add { set_key.cmd("e", require("nvim-tree.api").tree.toggle, "Files"), set_key.cmd("w", "w!", "Write buffer"), - set_key.cmd("d", smart_buffer_delete, "Delete buffer"), + set_key.cmd("d", function() + Snacks.bufdelete() + end, "Delete buffer"), + set_key.cmd("D", function() + Snacks.bufdelete.all() + end, "Delete all buffers"), set_key.cmd("Q", "qa", "Quit all", true), set_key.cmd("q", "quit", "Quit window", true), } @@ -189,8 +185,7 @@ wk.add { set_key.cmd("r", require("grug-far").open, "Replace"), set_key.cmd("z", function() - vim.wo.number = false - require("zen-mode").toggle() + Snacks.zen() end, "Zen Mode"), set_key.cmd("u", "UndotreeToggle", "Undo Tree"), set_key.cmd("H", "HexokinaseToggle", "Hexokinase"),