From 538ba97d1e285585a549385f67278ef26ae9699a Mon Sep 17 00:00:00 2001 From: Declan Mullen Date: Sat, 13 Jul 2024 21:08:04 -0700 Subject: [PATCH] fix: use a weak callback for mapping hacks --- lua/cinnamon/config.lua | 1 + lua/cinnamon/init.lua | 12 ++++++------ lua/cinnamon/scroll.lua | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lua/cinnamon/config.lua b/lua/cinnamon/config.lua index c4cda4c..3dd9f0c 100644 --- a/lua/cinnamon/config.lua +++ b/lua/cinnamon/config.lua @@ -11,6 +11,7 @@ local defaults = { ---@class ScrollOptions options = { callback = nil, ---@type function? + _weak_callback = nil, ---@type function? delay = 5, ---@type number step_size = { vertical = 1, ---@type number diff --git a/lua/cinnamon/init.lua b/lua/cinnamon/init.lua index bd29907..37c8d31 100644 --- a/lua/cinnamon/init.lua +++ b/lua/cinnamon/init.lua @@ -42,12 +42,12 @@ M.setup = function(user_config) end) end end - vim.keymap.set("n", "n", function() M.scroll("n", { callback = next_search_cb }) end) - vim.keymap.set("n", "N", function() M.scroll("N", { callback = prev_search_cb }) end) - vim.keymap.set("n", "*", function() M.scroll("*", { callback = next_search_cb }) end) - vim.keymap.set("n", "#", function() M.scroll("#", { callback = prev_search_cb }) end) - vim.keymap.set("n", "g*", function() M.scroll("g*", { callback = next_search_cb }) end) - vim.keymap.set("n", "g#", function() M.scroll("g#", { callback = prev_search_cb }) end) + vim.keymap.set("n", "n", function() M.scroll("n", { _weak_callback = next_search_cb }) end) + vim.keymap.set("n", "N", function() M.scroll("N", { _weak_callback = prev_search_cb }) end) + vim.keymap.set("n", "*", function() M.scroll("*", { _weak_callback = next_search_cb }) end) + vim.keymap.set("n", "#", function() M.scroll("#", { _weak_callback = prev_search_cb }) end) + vim.keymap.set("n", "g*", function() M.scroll("g*", { _weak_callback = next_search_cb }) end) + vim.keymap.set("n", "g#", function() M.scroll("g#", { _weak_callback = prev_search_cb }) end) -- Previous/next cursor location: vim.keymap.set("n", "", function() M.scroll("") end) diff --git a/lua/cinnamon/scroll.lua b/lua/cinnamon/scroll.lua index abbc4f6..b6ef853 100644 --- a/lua/cinnamon/scroll.lua +++ b/lua/cinnamon/scroll.lua @@ -292,8 +292,9 @@ H.scroller = { end, cleanup = function(self) - if self.options.callback ~= nil then - local success, message = pcall(self.options.callback) + local callback = self.options.callback or self.options._weak_callback + if callback ~= nil then + local success, message = pcall(callback) if not success then utils.notify("Error executing callback: " .. message, "warn") end