local default = { capabilities = require('cmp_nvim_lsp').default_capabilities() } local servers = { java_language_server = { cmd = { "java-language-server" } }, ocamllsp = {}, pyright = {}, basedpyright = {}, lua_ls = {}, clangd = { capabilities = { documentFormattingProvider = false, documentRangeFormattingProvider = false, textDocument = { formatting = { dynamicRegistration = false } } }, }, ccls = { init_options = { highlight = { rainbow = 10, }, }, }, -- jedi_language_server = {}, nixd = {}, nil_ls = {}, ltex = { filetypes = { "latex", "typst", "typ", "bib", "markdown", "plaintex", "tex" }, settings = { ltex = { language = "fr", enabled = { "latex", "typst", "typ", "bib", "markdown", "plaintex", "tex" }, }, }, }, elixirls = { cmd = { "elixir-ls" }, }, rust_analyzer = {}, glslls = { cmd = { "glslls", "--target-env", "opengl", "--stdin" }, }, qmlls = {}, tinymist = {}, } local enabled = {} for server, config in pairs(servers) do local lsp = require("lspconfig")[server] local config_merged = vim.tbl_deep_extend("keep", config, default, lsp.document_config.default_config) if config_merged.cmd ~= nil then if vim.fn.executable(config_merged.cmd[1]) == 1 then enabled[server] = config_merged end end end for server, config in pairs(enabled) do vim.lsp.enable(server, config) end vim.diagnostic.config({ virtual_text = false, -- signs = true, underline = true, -- update_in_insert = false, -- severity_sort = false, })