nvchad/lua/core/hooks.lua
Morten Olsen bfc10e6034 feat: Add custom scripts and hook based setup
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
2021-09-24 19:11:55 +05:30

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;