local TOOLCHAINS = {} ------------ -- Plugins - ------------ local plugins = {} --- @param ... LazySpec TOOLCHAINS.add_plugins = function(...) for _, spec in ipairs({...}) do table.insert(plugins, spec) end end TOOLCHAINS.get_plugins = function() return plugins end --------- -- LSPs - --------- local lsp_autoinstalls = {} local lsp_setups = {} --- @param ... string TOOLCHAINS.add_lsp_autoinstalls = function(...) for _, lsp in ipairs({...}) do table.insert(lsp_autoinstalls, lsp) end end TOOLCHAINS.get_lsp_autoinstalls = function() return lsp_autoinstalls end --- @param setup SetupLSPs TOOLCHAINS.add_lsps = function(setup) table.insert(lsp_setups, setup) end --- @param lspconfig any --- @param capabilities any TOOLCHAINS.setup_lsps = function(lspconfig, capabilities) for _, setup in ipairs(lsp_setups) do setup(lspconfig, capabilities) end end ------------ -- Null ls - ------------ local null_ls_setups = {} --- @param setup SetupNullLsModule TOOLCHAINS.add_null_ls_module = function(setup) table.insert(null_ls_setups, setup) end TOOLCHAINS.get_null_ls_source = function(null_ls) local null_ls_sources = {} for _, setup_function in ipairs(null_ls_setups) do local conf = setup_function(null_ls) if #conf ~= 0 then for _, _conf in pairs(conf) do table.insert(null_ls_sources, _conf) end end end return null_ls_sources end ---------------- -- Highlighter - ---------------- local highlighter_autoinstalls = {} --- @param ... string TOOLCHAINS.add_highlighter_autoinstalls = function(...) for _, highlighter in ipairs({...}) do table.insert(highlighter_autoinstalls, highlighter) end end TOOLCHAINS.get_highlighter_autoinstalls = function() return highlighter_autoinstalls end ---------------- -- Init - ---------------- TOOLCHAINS.init = function() require('toolchain.config').setup() require('toolchain.database').setup() require('toolchain.frontend').setup() require('toolchain.generic').setup() require('toolchain.git').setup() require('toolchain.go').setup() require('toolchain.lua').setup() require('toolchain.php').setup() require('toolchain.scripts').setup() require('toolchain.text').setup() require('toolchain.web').setup() end return TOOLCHAINS --------------------- -- Type Definitions - --------------------- ---@alias SetupLSPs fun(lspconfig:any, capabilities: any) ---@alias SetupNullLsModule fun(null_ls: any):table