local m = require("mason-lspconfig") -- Servers that should always be installed local servers = m.get_installed_servers(); local settings = { ui = { border = "none", }, log_level = vim.log.levels.INFO, max_concurrent_installers = 4, } require("mason").setup(settings) require("mason-lspconfig").setup({ ensure_installed = servers, automatic_installation = false, }) local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") if not lspconfig_status_ok then return end local opts = {} -- Register a handler that will be called for all installed servers. -- Alternatively, you may also register handlers on specific server instances instead (see example below). for _, server in pairs(servers) do opts = { on_attach = require("user.lsp.handlers").on_attach, capabilities = require("user.lsp.handlers").capabilities, } server = vim.split(server, "@")[1] local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) if require_ok then opts = vim.tbl_deep_extend("force", conf_opts, opts) end -- This setup() function is exactly the same as lspconfig's setup function. -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md lspconfig[server].setup(opts) end