diff --git a/lua/core/package_manager.lua b/lua/core/package_manager.lua index 7fdf307..b5db7b3 100644 --- a/lua/core/package_manager.lua +++ b/lua/core/package_manager.lua @@ -11,7 +11,7 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) -local plugins = require('util.toolchain').plugins +local plugins = require('toolchain').plugins table.insert(plugins, 1, { import = 'editor' }) require('lazy').setup({ diff --git a/lua/editor/highlighting.lua b/lua/editor/highlighting.lua index 65cf63e..fa2755d 100644 --- a/lua/editor/highlighting.lua +++ b/lua/editor/highlighting.lua @@ -8,7 +8,7 @@ return { auto_install = true, highlight = { enable = true }, indent = { enable = true }, - ensure_installed = require('util.toolchain').highlighters, + ensure_installed = require('toolchain').highlighters, }) end, } diff --git a/lua/editor/language_server.lua b/lua/editor/language_server.lua index 3835f2f..53298fa 100644 --- a/lua/editor/language_server.lua +++ b/lua/editor/language_server.lua @@ -1,4 +1,4 @@ -local TOOLCHAIN = require('util.toolchain') +local TOOLCHAIN = require('toolchain') return { { @@ -26,8 +26,8 @@ return { local capabilities = require('cmp_nvim_lsp').default_capabilities() local lspconfig = require('lspconfig') - for _, setup in ipairs(TOOLCHAIN.lsp_setups) do - setup(lspconfig, capabilities) + for _, lsp in ipairs(TOOLCHAIN.language_servers) do + lsp.setup(lspconfig, capabilities) end -- Keybinding -- @@ -68,7 +68,7 @@ return { local null_ls = require('null-ls') local null_ls_sources = {} - for _, setup_function in ipairs(TOOLCHAIN.null_ls) do + for _, setup_function in ipairs(TOOLCHAIN.diagnostics) do local conf = setup_function(null_ls) if #conf ~= 0 then for _, _conf in pairs(conf) do diff --git a/lua/toolchain/config/init.lua b/lua/toolchain/config/init.lua index dbd366c..106f1de 100644 --- a/lua/toolchain/config/init.lua +++ b/lua/toolchain/config/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.config.actions'), diagnostics = require('toolchain.config.diagnostics'), debuggers = require('toolchain.config.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/database/init.lua b/lua/toolchain/database/init.lua index 5247db4..145cfb8 100644 --- a/lua/toolchain/database/init.lua +++ b/lua/toolchain/database/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.database.actions'), diagnostics = require('toolchain.database.diagnostics'), debuggers = require('toolchain.database.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/frontend/init.lua b/lua/toolchain/frontend/init.lua index 1bf50f3..21fe9b2 100644 --- a/lua/toolchain/frontend/init.lua +++ b/lua/toolchain/frontend/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.frontend.actions'), diagnostics = require('toolchain.frontend.diagnostics'), debuggers = require('toolchain.frontend.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/generic/init.lua b/lua/toolchain/generic/init.lua index 809f47b..a56ab52 100644 --- a/lua/toolchain/generic/init.lua +++ b/lua/toolchain/generic/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.generic.actions'), diagnostics = require('toolchain.generic.diagnostics'), debuggers = require('toolchain.generic.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/git/init.lua b/lua/toolchain/git/init.lua index 9e3f042..c723e01 100644 --- a/lua/toolchain/git/init.lua +++ b/lua/toolchain/git/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.git.actions'), diagnostics = require('toolchain.git.diagnostics'), debuggers = require('toolchain.git.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/go/init.lua b/lua/toolchain/go/init.lua index 0596f4a..3ed41c3 100644 --- a/lua/toolchain/go/init.lua +++ b/lua/toolchain/go/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.go.actions'), diagnostics = require('toolchain.go.diagnostics'), debuggers = require('toolchain.go.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/init.lua b/lua/toolchain/init.lua new file mode 100644 index 0000000..94d6a8b --- /dev/null +++ b/lua/toolchain/init.lua @@ -0,0 +1,106 @@ +local TOOLCHAINS = {} + +local config = require('toolchain.config') +local database = require('toolchain.database') +local frontend = require('toolchain.frontend') +local generic = require('toolchain.generic') +local git = require('toolchain.git') +local go = require('toolchain.go') +local lua = require('toolchain.lua') +local php = require('toolchain.php') +local scripts = require('toolchain.scripts') +local text = require('toolchain.text') +local web = require('toolchain.web') + +TOOLCHAINS.plugins = { + table.unpack(config.requirements.plugins), + table.unpack(database.requirements.plugins), + table.unpack(frontend.requirements.plugins), + table.unpack(generic.requirements.plugins), + table.unpack(git.requirements.plugins), + table.unpack(go.requirements.plugins), + table.unpack(lua.requirements.plugins), + table.unpack(php.requirements.plugins), + table.unpack(scripts.requirements.plugins), + table.unpack(text.requirements.plugins), + table.unpack(web.requirements.plugins), +} + +TOOLCHAINS.highlighters = { + table.unpack(config.requirements.highlighters), + table.unpack(database.requirements.highlighters), + table.unpack(frontend.requirements.highlighters), + table.unpack(generic.requirements.highlighters), + table.unpack(git.requirements.highlighters), + table.unpack(go.requirements.highlighters), + table.unpack(lua.requirements.highlighters), + table.unpack(php.requirements.highlighters), + table.unpack(scripts.requirements.highlighters), + table.unpack(text.requirements.highlighters), + table.unpack(web.requirements.highlighters), +} + +TOOLCHAINS.language_servers = { + table.unpack(config.language_servers), + table.unpack(database.language_servers), + table.unpack(frontend.language_servers), + table.unpack(generic.language_servers), + table.unpack(git.language_servers), + table.unpack(go.language_servers), + table.unpack(lua.language_servers), + table.unpack(php.language_servers), + table.unpack(scripts.language_servers), + table.unpack(text.language_servers), + table.unpack(web.language_servers), +} + +TOOLCHAINS.diagnostics = { + table.unpack(config.diagnostics), + table.unpack(database.diagnostics), + table.unpack(frontend.diagnostics), + table.unpack(generic.diagnostics), + table.unpack(git.diagnostics), + table.unpack(go.diagnostics), + table.unpack(lua.diagnostics), + table.unpack(php.diagnostics), + table.unpack(scripts.diagnostics), + table.unpack(text.diagnostics), + table.unpack(web.diagnostics), +} + +return TOOLCHAINS + +--Type Definitions + +---@class Toolchain +---@field requirements ToolchainRequirements +---@field formatters ToolchainFormatters +---@field language_servers ToolchainLanguageServers +---@field actions ToolchainActions +---@field diagnostics ToolchainDiagnostics +---@field debuggers ToolchainDebuggers + +---@class ToolchainRequirements +---@field plugins LazySpec[] +---@field highlighters table +---@field language_servers table + +---@class ToolchainLanguageServers +---@field requirements string[] +---@field setup fun(lspconfig:any, capabilities: any) + +---@class ToolchainFormatters +---@field plugins LazySpec[] +---@field setup fun(null_ls: any):table + +---@class ToolchainActions +---@field plugins LazySpec[] +---@field setup fun(null_ls: any):table + +---@class ToolchainDiagnostics +---@field plugins LazySpec[] +---@field setup fun(null_ls: any):table + +---@class ToolchainDebuggers +---@field plugins LazySpec[] + diff --git a/lua/toolchain/lua/init.lua b/lua/toolchain/lua/init.lua index 1e4ef21..cdeb958 100644 --- a/lua/toolchain/lua/init.lua +++ b/lua/toolchain/lua/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.lua.actions'), diagnostics = require('toolchain.lua.diagnostics'), debuggers = require('toolchain.lua.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/php/init.lua b/lua/toolchain/php/init.lua index 0768d7f..2edca01 100644 --- a/lua/toolchain/php/init.lua +++ b/lua/toolchain/php/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.php.actions'), diagnostics = require('toolchain.php.diagnostics'), debuggers = require('toolchain.php.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/scripts/init.lua b/lua/toolchain/scripts/init.lua index 37a3395..42b236c 100644 --- a/lua/toolchain/scripts/init.lua +++ b/lua/toolchain/scripts/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.scripts.actions'), diagnostics = require('toolchain.scripts.diagnostics'), debuggers = require('toolchain.scripts.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/text/init.lua b/lua/toolchain/text/init.lua index b7ebc35..a61c922 100644 --- a/lua/toolchain/text/init.lua +++ b/lua/toolchain/text/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.text.actions'), diagnostics = require('toolchain.text.diagnostics'), debuggers = require('toolchain.text.debugger'), - should_init = function() return true end, } diff --git a/lua/toolchain/web/init.lua b/lua/toolchain/web/init.lua index bc202d7..77bd1ac 100644 --- a/lua/toolchain/web/init.lua +++ b/lua/toolchain/web/init.lua @@ -6,5 +6,4 @@ return { actions = require('toolchain.web.actions'), diagnostics = require('toolchain.web.diagnostics'), debuggers = require('toolchain.web.debugger'), - should_init = function() return true end, } diff --git a/lua/util/toolchain.lua b/lua/util/toolchain.lua deleted file mode 100644 index 199856a..0000000 --- a/lua/util/toolchain.lua +++ /dev/null @@ -1,72 +0,0 @@ ----@class Toolchain ----@field should_init fun():boolean ----@field requirements ToolchainRequirements ----@field formatters ToolchainFormatters ----@field language_servers ToolchainLanguageServers ----@field actions ToolchainActions ----@field diagnostics ToolchainDiagnostics ----@field debuggers ToolchainDebuggers - ----@class ToolchainRequirements ----@field plugins LazySpec ----@field highlighters table ----@field language_servers table - ----@class ToolchainLanguageServers ----@field requirements string[] ----@field setup fun(lspconfig:any, capabilities: any) - ----@class ToolchainFormatters ----@field plugins LazySpec[] ----@field setup fun(null_ls: any):table - ----@class ToolchainActions ----@field plugins LazySpec[] ----@field setup fun(null_ls: any):table - ----@class ToolchainDiagnostics ----@field plugins LazySpec[] ----@field setup fun(null_ls: any):table - ----@class ToolchainDebuggers ----@field plugins LazySpec[] - -local TOOLCHAIN = { - ---@type LazySpec[] - plugins = {}, - ---@type string[] - highlighters = {}, - ---@type string[] - lsp_requriemts = {}, - ---@type (fun(lspconfig, capabilities))[] - lsp_setups = {}, - ---@type (fun(null_ls):any)[] - null_ls = {}, -} - -local path = vim.fn.stdpath('config') .. '/lua/toolchain' - -for _, moduleName in ipairs(vim.fn.readdir(path)) do - local submodulePath = 'toolchain' .. '.' .. moduleName - - ---@type Toolchain - local module = require(submodulePath) - - if module.should_init() then - for _, plugin in pairs(module.requirements.plugins) do - table.insert(TOOLCHAIN.plugins, plugin) - end - for _, hl in pairs(module.requirements.highlighters) do - table.insert(TOOLCHAIN.highlighters, hl) - end - for _, lsp in pairs(module.requirements.language_servers) do - table.insert(TOOLCHAIN.lsp_requriemts, lsp) - end - table.insert(TOOLCHAIN.lsp_setups, module.language_servers.setup) - table.insert(TOOLCHAIN.null_ls, module.formatters.setup) - table.insert(TOOLCHAIN.null_ls, module.actions.setup) - table.insert(TOOLCHAIN.null_ls, module.diagnostics.setup) - end -end - -return TOOLCHAIN