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