diff --git a/lua/cosmic/plugins/mason-lspconfig/init.lua b/lua/cosmic/plugins/mason-lspconfig/init.lua index fcee615..3ad9c6f 100644 --- a/lua/cosmic/plugins/mason-lspconfig/init.lua +++ b/lua/cosmic/plugins/mason-lspconfig/init.lua @@ -1,7 +1,7 @@ -local user_config = require('cosmic.core.user') return { 'williamboman/mason-lspconfig.nvim', config = function() + local user_config = require('cosmic.core.user') require('mason').setup({ ui = { border = user_config.border, @@ -16,59 +16,43 @@ return { local default_config = require('cosmic.lsp.providers.defaults') local lspconfig = require('lspconfig') - -- initial default servers - -- by default tsserver/ts_utils and null_ls are enabled - local requested_servers = {} - - -- get disabled servers from config - local disabled_servers = {} - for config_server, config_opt in pairs(user_config.lsp.servers) do - -- null ls doesn't need to be setup by lspconfig - if not config_server == 'null_ls' then - print(config_server) + local start_server = function(server) + -- null_ls doesn't need/can't to be started via lspconfig + if server == 'null_ls' then + return end - --[[ print(config_server) ]] - if config_opt == false or config_server == 'null_ls' then - table.insert(disabled_servers, config_server) - elseif not vim.tbl_contains(requested_servers, config_server) then - -- add additonally defined servers to be installed - table.insert(requested_servers, config_server) - end - end - - for _, requested_server in pairs(requested_servers) do local opts = default_config - -- disable server if config disabled server list says so - opts.autostart = true - if vim.tbl_contains(disabled_servers, requested_server) then - opts.autostart = false - end - -- set up default cosmic options - if requested_server == 'tsserver' then + if server == 'tsserver' then opts = u.merge(opts, require('cosmic.lsp.providers.tsserver')) - elseif requested_server == 'jsonls' then + elseif server == 'jsonls' then opts = u.merge(opts, require('cosmic.lsp.providers.jsonls')) - elseif requested_server == 'pyright' then + elseif server == 'pyright' then opts = u.merge(opts, require('cosmic.lsp.providers.pyright')) - elseif requested_server == 'sumneko_lua' then + elseif server == 'sumneko_lua' then opts = u.merge(opts, require('cosmic.lsp.providers.sumneko_lua')) end -- override options if user definds them - if type(user_config.lsp.servers[requested_server]) == 'table' then - if user_config.lsp.servers[requested_server].opts ~= nil then - opts = u.merge(opts, user_config.lsp.servers[requested_server].opts) + if type(user_config.lsp.servers[server]) == 'table' then + if user_config.lsp.servers[server].opts ~= nil then + opts = u.merge(opts, user_config.lsp.servers[server].opts) end end - lspconfig[requested_server].setup(opts) + lspconfig[server].setup(opts) + end + + for config_server, config_opt in pairs(user_config.lsp.servers) do + if not config_opt == false then + start_server(config_server) + end end end, dependencies = { 'williamboman/mason.nvim', }, - event = 'VeryLazy', + event = 'BufEnter', }