-- Set keymaps vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) local opts = { buffer = ev.buf } vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'r', vim.lsp.buf.rename, opts) vim.keymap.set('n', 'a', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'n', vim.diagnostic.goto_next, opts) vim.keymap.set('n', 'p', vim.diagnostic.goto_prev, opts) end, }) -- Show diagnostics in bordered pop-up vim.diagnostic.config { virtual_text = false, float = { border = 'rounded' } } vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( vim.lsp.handlers.hover, { border = 'rounded' } ) vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with( vim.lsp.handlers.signature_help, { border = 'rounded' } ) vim.o.updatetime = 500 vim.api.nvim_create_autocmd({'CursorHold'}, { pattern = {'*'}, callback = function(ev) vim.diagnostic.open_float(nil, { focus = false }) end, }) -- Set diagnostic signs local signs = { Error = ' ', Warning = ' ', Hint = ' ', Information = ' ' } for type, icon in pairs(signs) do local hl = 'DiagnosticSign' .. type vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end