62 lines
1.5 KiB
Lua
62 lines
1.5 KiB
Lua
-- Get all LSP servers to configure
|
|
local function get_all_servers()
|
|
local servers = {}
|
|
|
|
-- Use only servers from commons - single source of truth
|
|
for _, server in pairs(require("commons").servers) do
|
|
servers[server] = true
|
|
end
|
|
|
|
return servers
|
|
end
|
|
|
|
-- Configure a single LSP server
|
|
local function configure_server(server, lspconfig, capabilities)
|
|
local ok, settings = pcall(require, "lsp." .. server)
|
|
if ok then
|
|
if lspconfig then
|
|
settings.capabilities = capabilities
|
|
lspconfig[server].setup(settings)
|
|
else
|
|
vim.lsp.config(server, settings)
|
|
vim.lsp.enable(server)
|
|
end
|
|
else
|
|
if lspconfig then
|
|
lspconfig[server].setup({ capabilities = capabilities })
|
|
else
|
|
vim.lsp.config(server, {})
|
|
vim.lsp.enable(server)
|
|
end
|
|
end
|
|
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" },
|
|
})
|
|
|
|
-- Configure all servers
|
|
for server in pairs(get_all_servers()) do
|
|
configure_server(server)
|
|
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()
|
|
|
|
-- Configure all servers
|
|
for server in pairs(get_all_servers()) do
|
|
configure_server(server, lspconfig, capabilities)
|
|
end
|
|
end
|