94 lines
2.6 KiB
Lua
94 lines
2.6 KiB
Lua
-- 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
|