mirror of https://github.com/folke/lazy.nvim.git
fix(keys): key handlers were not working after reload
This commit is contained in:
parent
b5d6afc4fa
commit
3f60f2dc13
|
@ -67,25 +67,32 @@ function M:_add(value) end
|
||||||
---@protected
|
---@protected
|
||||||
function M:_del(value) end
|
function M:_del(value) end
|
||||||
|
|
||||||
|
---@return string
|
||||||
|
function M:key(value)
|
||||||
|
return value
|
||||||
|
end
|
||||||
|
|
||||||
---@param plugin LazyPlugin
|
---@param plugin LazyPlugin
|
||||||
function M:add(plugin)
|
function M:add(plugin)
|
||||||
for _, value in ipairs(plugin[self.type] or {}) do
|
for _, value in ipairs(plugin[self.type] or {}) do
|
||||||
if not self.active[value] then
|
local key = self:key(value)
|
||||||
self.active[value] = {}
|
if not self.active[key] then
|
||||||
|
self.active[key] = {}
|
||||||
self:_add(value)
|
self:_add(value)
|
||||||
end
|
end
|
||||||
self.active[value][plugin.name] = plugin.name
|
self.active[key][plugin.name] = plugin.name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param plugin LazyPlugin
|
---@param plugin LazyPlugin
|
||||||
function M:del(plugin)
|
function M:del(plugin)
|
||||||
for _, value in ipairs(plugin[self.type] or {}) do
|
for _, value in ipairs(plugin[self.type] or {}) do
|
||||||
if self.active[value] and self.active[value][plugin.name] then
|
local key = self:key(value)
|
||||||
self.active[value][plugin.name] = nil
|
if self.active[key] and self.active[key][plugin.name] then
|
||||||
if vim.tbl_isempty(self.active[value]) then
|
self.active[key][plugin.name] = nil
|
||||||
|
if vim.tbl_isempty(self.active[key]) then
|
||||||
self:_del(value)
|
self:_del(value)
|
||||||
self.active[value] = nil
|
self.active[key] = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,7 +29,7 @@ end
|
||||||
---@param value string|LazyKeys
|
---@param value string|LazyKeys
|
||||||
function M.parse(value)
|
function M.parse(value)
|
||||||
local ret = vim.deepcopy(value)
|
local ret = vim.deepcopy(value)
|
||||||
ret = (type(ret) == "string" and { ret } or ret) --[[@as LazyKeys]]
|
ret = type(ret) == "string" and { ret } or ret --[[@as LazyKeys]]
|
||||||
ret.mode = ret.mode or "n"
|
ret.mode = ret.mode or "n"
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
@ -44,14 +44,33 @@ function M.opts(keys)
|
||||||
return opts
|
return opts
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return string
|
||||||
|
function M:key(value)
|
||||||
|
if type(value) == "string" then
|
||||||
|
return value
|
||||||
|
end
|
||||||
|
local mode = value.mode or { "n" }
|
||||||
|
if type(mode) == "string" then
|
||||||
|
mode = { mode }
|
||||||
|
end
|
||||||
|
---@type string
|
||||||
|
local ret = value[1]
|
||||||
|
if #mode > 0 then
|
||||||
|
ret = table.concat(mode, ",") .. ": " .. ret
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
---@param value string|LazyKeys
|
---@param value string|LazyKeys
|
||||||
function M:_add(value)
|
function M:_add(value)
|
||||||
local keys = M.parse(value)
|
local keys = M.parse(value)
|
||||||
local lhs = keys[1]
|
local lhs = keys[1]
|
||||||
local opts = M.opts(keys)
|
local opts = M.opts(keys)
|
||||||
|
opts.noremap = true
|
||||||
vim.keymap.set(keys.mode, lhs, function()
|
vim.keymap.set(keys.mode, lhs, function()
|
||||||
|
pcall(vim.keymap.del, keys.mode, lhs)
|
||||||
Util.track({ keys = lhs })
|
Util.track({ keys = lhs })
|
||||||
Loader.load(self.active[value], { keys = lhs })
|
Loader.load(self.active[self:key(value)], { keys = lhs })
|
||||||
M.retrigger(lhs)
|
M.retrigger(lhs)
|
||||||
Util.track()
|
Util.track()
|
||||||
end, opts)
|
end, opts)
|
||||||
|
|
Loading…
Reference in New Issue