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:
38
lua/core/hooks.lua
Normal file
38
lua/core/hooks.lua
Normal 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;
|
||||
Reference in New Issue
Block a user