return {
{ "neovim/nvim-lspconfig",
- event = "LazyFile",
+ event = { "BufReadPost", "BufNewFile", "BufWritePre" },
dependencies = {
"mason.nvim",
{ "williamboman/mason-lspconfig.nvim", config = function() end }, -- don't configure yet
},
---@param opts PluginLspOpts
config = function(_, opts)
- local lspconfig = require('lspconfig')
for server, config in pairs(opts.servers) do
local capabilities = vim.tbl_deep_extend("force",
vim.lsp.protocol.make_client_capabilities() or {},
config.capabilities or {}
)
config.capabilities = capabilities
- lspconfig[server].setup(config)
+ vim.lsp.config(server, config)
end
-- setup keymaps
-- get all the servers that are available through mason-lspconfig
local mlsp = require("mason-lspconfig")
-- TODO: use mason-lspconfig.get_available_servers()?
- local all_mslp_servers = vim.tbl_keys(require("mason-lspconfig.mappings.server").lspconfig_to_package)
+ local all_mslp_servers = require("mason-lspconfig").get_mappings().lspconfig_to_package
local ensure_installed = {} ---@type string[]
for server, server_opts in pairs(opts.servers) do
if server_opts.enabled ~= false then
-- run manual setup if mason=false or if this is a server that cannot be installed with mason-lspconfig
if server_opts.mason == false or not vim.tbl_contains(all_mslp_servers, server) then
- require("lspconfig")[server].setup(server_opts)
+ vim.lsp.config(server, server_opts)
else
ensure_installed[#ensure_installed + 1] = server
end