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
This commit is contained in:
Morten Olsen
2021-08-24 21:45:59 +02:00
committed by siduck76
parent ca1ad15ad2
commit bfc10e6034
6 changed files with 71 additions and 1 deletions

38
lua/core/hooks.lua Normal file
View File

@@ -0,0 +1,38 @@
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;