bfc10e6034
This commit introduces a hook system that allows the user to add custom modules which can use these hooks to invoke function af specific NvChad events to allow for extending og functionality
39 lines
629 B
Lua
39 lines
629 B
Lua
local hooks, M = {}, {};
|
|
local allowed_hooks = {
|
|
"install_plugins",
|
|
"setup_mappings",
|
|
"ready",
|
|
}
|
|
|
|
local function has_value (tab, val)
|
|
for _, value in ipairs(tab) do
|
|
if value == val then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
M.add = function(name, fn)
|
|
if not(has_value(allowed_hooks, name)) then
|
|
error("Custom lua uses unallowed hook " .. name)
|
|
end
|
|
if hooks[name] == nil then
|
|
hooks[name] = {}
|
|
end
|
|
table.insert(hooks[name], fn);
|
|
end
|
|
|
|
M.run = function(name, args)
|
|
if hooks[name] == nil then
|
|
return;
|
|
end
|
|
|
|
for _, hook in pairs(hooks[name]) do
|
|
hook(args)
|
|
end
|
|
end
|
|
|
|
return M;
|