mirror of https://github.com/folke/neoconf.nvim
37 lines
738 B
Lua
37 lines
738 B
Lua
local M = {}
|
|
|
|
---@class SettingsPlugin
|
|
---@field name string
|
|
---@field setup fun()|nil
|
|
---@field on_update fun(event)|nil
|
|
---@field on_schema fun(schema: Schema)
|
|
|
|
---@type SettingsPlugin[]
|
|
M.plugins = {}
|
|
|
|
local function fire(plugin, method, ...)
|
|
if type(plugin[method]) == "function" then
|
|
plugin[method](...)
|
|
end
|
|
end
|
|
|
|
function M.fire(method, ...)
|
|
for _, plugin in pairs(M.plugins) do
|
|
fire(plugin, method, ...)
|
|
end
|
|
end
|
|
|
|
---@param plugin SettingsPlugin
|
|
function M.register(plugin)
|
|
table.insert(M.plugins, plugin)
|
|
fire(plugin, "setup")
|
|
end
|
|
|
|
function M.setup()
|
|
M.register(require("neoconf.plugins.lspconfig"))
|
|
M.register(require("neoconf.plugins.jsonls"))
|
|
M.register(require("neoconf.plugins.lua_ls"))
|
|
end
|
|
|
|
return M
|