local function mergeTables(t1, t2) for k, v in pairs(t2) do t1[k] = v end return t1 end -- === Initialize LSP Servers === -- For a list of LSP Servers and documentation: -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md local lspconfig = require'lspconfig' local capabilities = require('cmp_nvim_lsp').default_capabilities() local configs = require("config.lsp").lspconfigs local on_attach = require("config.lsp").lsp_onattach capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities.textDocument.foldingRange = { dynamicRegistration = false, lineFoldingOnly = true } -- LSP diagnostics vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { underline = true, signs = true, virtual_text = false, severity_sort = true, }) local signs = { Error = " ", Warning = " ", Hint = " ", Information = " " } for type, icon in pairs(signs) do local hl = "LspDiagnosticsSign" .. type vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end -- LSP diagnostics vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { underline = true, signs = true, virtual_text = true, severity_sort = true, }) for k, v in pairs(configs) do lspconfig[k].setup( mergeTables(v, { on_attach = on_attach, capabilities = capabilities })) end