From 72f45f91879e3e4795b1e3deef739a60c5c69a88 Mon Sep 17 00:00:00 2001 From: Iron-E Date: Mon, 20 Feb 2023 14:52:03 -0500 Subject: [PATCH] fix(Layer): checks for if layer is active The `existing_keymaps_by_mode` table is _always_ initialized, so that was a red herring. --- lua/libmodal/src/Layer.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lua/libmodal/src/Layer.lua b/lua/libmodal/src/Layer.lua index f72689d..0a035ef 100644 --- a/lua/libmodal/src/Layer.lua +++ b/lua/libmodal/src/Layer.lua @@ -71,14 +71,14 @@ function Layer:enter() return end + self.active = true + for mode, new_keymaps in pairs(self.layer_keymaps_by_mode) do for lhs, options in pairs(new_keymaps) do local rhs, unpacked = unpack_keymap_rhs(options) self:map(mode, lhs, rhs, unpacked) end end - - self.active = true end --- exit the layer, restoring all previous keymaps. @@ -116,7 +116,8 @@ end function Layer:map(mode, lhs, rhs, options) lhs = utils.api.replace_termcodes(lhs) options.buffer = normalize_buffer(options.buffer) - if self.existing_keymaps_by_mode then -- the layer has been activated + + if self.active then -- the layer has been activated if not self.existing_keymaps_by_mode[mode] then -- this is the first time that a keymap with this mode is being set self.existing_keymaps_by_mode[mode] = {} end @@ -159,7 +160,8 @@ end --- @see vim.api.nvim_del_keymap function Layer:unmap(buffer, mode, lhs) lhs = utils.api.replace_termcodes(lhs) - if self.existing_keymaps_by_mode then + + if self.active then if self.existing_keymaps_by_mode[mode][lhs] then -- there is an older keymap to go back to; restore it local rhs, options = unpack_keymap_rhs(self.existing_keymaps_by_mode[mode][lhs]) -- WARN: nvim can fail to restore the original keybinding here unless schedule