122 lines
2.6 KiB
Lua
122 lines
2.6 KiB
Lua
local status_ok, mason = pcall(require, "mason")
|
|
if not status_ok then
|
|
return
|
|
end
|
|
|
|
local status_ok_1, mason_lspconfig = pcall(require, "mason-lspconfig")
|
|
if not status_ok_1 then
|
|
return
|
|
end
|
|
|
|
local servers = {
|
|
"cssls",
|
|
"cssmodules_ls",
|
|
"emmet_ls",
|
|
"html",
|
|
"sumneko_lua",
|
|
"omnisharp",
|
|
"tflint",
|
|
"denols",
|
|
"tsserver",
|
|
"pyright",
|
|
"yamlls",
|
|
"texlab",
|
|
"bashls",
|
|
"clangd",
|
|
"rust_analyzer",
|
|
"taplo",
|
|
"lemminx",
|
|
"clangd",
|
|
}
|
|
|
|
local settings = {
|
|
ui = {
|
|
border = "rounded",
|
|
icons = {
|
|
package_installed = "i",
|
|
package_pending = "p",
|
|
package_uninstalled = "u",
|
|
},
|
|
},
|
|
log_level = vim.log.levels.INFO,
|
|
max_concurrent_installers = 4,
|
|
}
|
|
|
|
mason.setup(settings)
|
|
mason_lspconfig.setup({
|
|
ensure_installed = servers,
|
|
automatic_installation = true,
|
|
})
|
|
|
|
-- New way of setting up neodev, formally lua-dev by folke
|
|
local l_status_ok, neodev = pcall(require, "neodev")
|
|
if not l_status_ok then
|
|
return
|
|
end
|
|
|
|
neodev.setup({})
|
|
|
|
local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig")
|
|
if not lspconfig_status_ok then
|
|
print("lspconfig error!")
|
|
return
|
|
end
|
|
|
|
local opts = {}
|
|
|
|
for _, server in pairs(servers) do
|
|
opts = {
|
|
on_attach = require("user.lsp.handlers").on_attach,
|
|
capabilities = require("user.lsp.handlers").capabilities,
|
|
}
|
|
|
|
server = vim.split(server, "@", {})[1]
|
|
|
|
if server == "yamlls" then
|
|
local yamlls_opts = require("user.lsp.settings.yamlls")
|
|
opts = vim.tbl_deep_extend("force", yamlls_opts, opts)
|
|
end
|
|
|
|
if server == "sumneko_lua" then
|
|
lspconfig.sumneko_lua.setup({
|
|
on_attach = require("user.lsp.handlers").on_attach,
|
|
})
|
|
goto continue
|
|
end
|
|
|
|
if server == "tsserver" then
|
|
local tsserver_opts = require("user.lsp.settings.tsserver")
|
|
opts = vim.tbl_deep_extend("force", tsserver_opts, opts)
|
|
end
|
|
|
|
if server == "clangd" then
|
|
local clangd_opts = require("user.lsp.settings.clangd")
|
|
opts = vim.tbl_deep_extend("force", clangd_opts, opts)
|
|
end
|
|
|
|
if server == "emmet_ls" then
|
|
local emmet_ls_opts = require("user.lsp.settings.emmet_ls")
|
|
opts = vim.tbl_deep_extend("force", emmet_ls_opts, opts)
|
|
end
|
|
|
|
if server == "rust_analyzer" then
|
|
local rust_opts = require("user.lsp.settings.rust")
|
|
-- opts = vim.tbl_deep_extend("force", rust_opts, opts)
|
|
local rust_tools_status_ok, rust_tools = pcall(require, "rust-tools")
|
|
if not rust_tools_status_ok then
|
|
return
|
|
end
|
|
|
|
rust_tools.setup(rust_opts)
|
|
goto continue
|
|
end
|
|
|
|
if server == "omnisharp" then
|
|
local omnisharp_opts = require("user.lsp.settings.omnisharp")
|
|
opts = vim.tbl_deep_extend("force", omnisharp_opts, opts)
|
|
end
|
|
|
|
lspconfig[server].setup(opts)
|
|
::continue::
|
|
end
|