nvim1/lua/functions/lsp.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