-- Mason package name to LSP server name mapping local mason_to_lsp = { ["lua-language-server"] = "lua_ls", ["typescript-language-server"] = "ts_ls", ["rust-analyzer"] = "rust_analyzer", ["gopls"] = "gopls", ["pyright"] = "pyright", ["clangd"] = "clangd", ["bash-language-server"] = "bashls", ["yaml-language-server"] = "yamlls", } -- Get installed LSP servers from Mason local function get_mason_installed_servers() local mason_registry = require("mason-registry") local installed_servers = {} for _, pkg in ipairs(mason_registry.get_installed_packages()) do local lsp_name = mason_to_lsp[pkg.name] if lsp_name then table.insert(installed_servers, lsp_name) end end return installed_servers end if require("commons").tools.is_version_gte_0_11() then -- Neovim 0.11+ native LSP configuration vim.lsp.config("*", { capabilities = require("blink.cmp").get_lsp_capabilities(), root_markers = { ".git" }, }) -- Get installed servers from Mason local installed_servers = get_mason_installed_servers() -- Configure and enable installed servers for _, server in ipairs(installed_servers) do local ok, settings = pcall(require, "lsp." .. server) if ok then vim.lsp.config(server, settings) else -- Basic configuration for servers without custom config vim.lsp.config(server, {}) end vim.lsp.enable(server) end -- Also configure servers from commons.servers that have custom configs for _, server in pairs(require("commons").servers) do local ok, settings = pcall(require, "lsp." .. server) if ok then vim.lsp.config(server, settings) vim.lsp.enable(server) end end vim.diagnostic.config({ update_in_insert = true, severity_sort = true, float = { source = true }, virtual_text = true, }) else -- Legacy nvim-lspconfig setup for Neovim < 0.11 local lspconfig = require("lspconfig") local capabilities = require("blink.cmp").get_lsp_capabilities() -- Get installed servers from Mason local installed_servers = get_mason_installed_servers() -- Configure installed servers for _, server in ipairs(installed_servers) do local ok, settings = pcall(require, "lsp." .. server) if ok then settings.capabilities = capabilities lspconfig[server].setup(settings) else -- Basic configuration for servers without custom config lspconfig[server].setup({ capabilities = capabilities }) end end -- Also configure servers from commons.servers for _, server in pairs(require("commons").servers) do local ok, settings = pcall(require, "lsp." .. server) if ok then settings.capabilities = capabilities lspconfig[server].setup(settings) end end end