ref(Layer): use `:map` for `:enter`

`:map` can now handle buffer-locals, so we should just use that.
pull/17/head
Iron-E 2 years ago
parent ff804a3e34
commit 117e31eccd
No known key found for this signature in database
GPG Key ID: 19B71B7B7B021D22

@ -45,29 +45,10 @@ function Layer:enter()
-- add local aliases.
self.existing_keymaps_by_mode = {}
--[[ iterate over the new keymaps to both:
1. Populate a list of keymaps which will be overwritten to `existing_keymap`
2. Apply the layer's keymappings. ]]
for mode, new_keymaps in pairs(self.layer_keymaps_by_mode) do
-- if `mode` key has not yet been made for `existing_keymap`.
if not self.existing_keymaps_by_mode[mode] then
self.existing_keymaps_by_mode[mode] = {}
end
-- store the previously mapped keys
for _, existing_keymap in ipairs(vim.api.nvim_get_keymap(mode)) do
-- if the new keymaps would overwrite this one
if new_keymaps[existing_keymap.lhs] then
-- remove values so that it is in line with `nvim_set_keymap`.
local lhs, keymap = unpack_keymap_lhs(existing_keymap)
self.existing_keymaps_by_mode[mode][lhs] = keymap
end
end
-- add the new keymaps
for lhs, new_keymap in pairs(new_keymaps) do
local rhs, options = unpack_keymap_rhs(new_keymap)
vim.keymap.set(mode, lhs, rhs, options)
for lhs, options in pairs(new_keymaps) do
local rhs, unpacked = unpack_keymap_rhs(options)
self:map(mode, lhs, rhs, unpacked)
end
end
end

Loading…
Cancel
Save