local M = {} function M.setup() -- Signs local signs = { Error = "", Warn = "", Hint = "", Info = "" } for type, icon in pairs(signs) do local hl = "DiagnosticSign" .. type vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end -- Floating window borders local border = { { "╭", "FloatBorder" }, { "─", "FloatBorder" }, { "╮", "FloatBorder" }, { "│", "FloatBorder" }, { "╯", "FloatBorder" }, { "─", "FloatBorder" }, { "╰", "FloatBorder" }, { "│", "FloatBorder" }, } local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) opts = opts or {} opts.border = opts.border or border return orig_util_open_floating_preview(contents, syntax, opts, ...) end end function M.on_attach(client, bufnr) -- Highlight references if client.server_capabilities.documentHighlightProvider then vim.api.nvim_create_augroup("lsp_document_highlight", { clear = false, }) vim.api.nvim_clear_autocmds({ group = "lsp_document_highlight", buffer = bufnr, }) vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { group = "lsp_document_highlight", buffer = bufnr, callback = vim.lsp.buf.document_highlight, }) vim.api.nvim_create_autocmd("CursorMoved", { group = "lsp_document_highlight", buffer = bufnr, callback = vim.lsp.buf.clear_references, }) end end return M