local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { underline = true, signs = true, update_in_insert = true, virtual_text = { true, spacing = 6, --severity_limit='Error' -- Only show virtual text on error }, } ) local function config(_config) return vim.tbl_deep_extend("force", { capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()), on_attach = function() Nnoremap("gd", ":lua vim.lsp.buf.definition()") Nnoremap("K", ":lua vim.lsp.buf.hover()") Nnoremap("vws", ":lua vim.lsp.buf.workspace_symbol()") Nnoremap("vd", ":lua vim.diagnostic.open_float()") Nnoremap("[d", ":lua vim.lsp.diagnostic.goto_next()") Nnoremap("]d", ":lua vim.lsp.diagnostic.goto_prev()") Nnoremap("vca", ":lua vim.lsp.buf.code_action()") Nnoremap("vrr", ":lua vim.lsp.buf.references()") Nnoremap("vrn", ":lua vim.lsp.buf.rename()") Inoremap("", "lua vim.lsp.buf.signature_help()") end, }, _config or {}) end require("lspconfig").tsserver.setup(config()) require("lspconfig").ccls.setup(config()) require("lspconfig").jedi_language_server.setup(config()) require("lspconfig").svelte.setup(config()) require("lspconfig").solang.setup(config()) require("lspconfig").cssls.setup(config()) require("lspconfig").gopls.setup(config({ cmd = { "gopls", "serve" }, settings = { gopls = { analyses = { unusedparams = true, }, staticcheck = true, }, }, })) local rustopts = { tools = { autoSetHints = true, hover_with_actions = true, runnables = { use_telescope = true }, inlay_hints = { show_parameter_hints = false, parameter_hints_prefix = "", other_hints_prefix = "", }, }, server = { settings = { ["rust-analyzer"] = { checkOnSave = { command = "clippy" }, } } }, } require("rust-tools").setup(rustopts) local opts = { -- whether to highlight the currently hovered symbol -- disable if your cpu usage is higher than you want it -- or you just hate the highlight -- default: true highlight_hovered_item = true, -- whether to show outline guides -- default: true show_guides = true, } require("symbols-outline").setup(opts)