autoload/lsp/diag.vim | 35 ++++++++++++++++++++--------------- diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim index 4661ca75a945cae179527d5bf536b16e181f91fc..71b63e4b013917180ca757cbac14fb7a66798434 100644 --- a/autoload/lsp/diag.vim +++ b/autoload/lsp/diag.vim @@ -111,22 +111,27 @@ signs->add({id: 0, buffer: bnr, group: 'LSPDiag', lnum: lnum, name: DiagSevToSignName(diag.severity)}) - if opt.lspOptions.highlightDiagInline - prop_add(diag.range.start.line + 1, - util.GetLineByteFromPos(bnr, diag.range.start) + 1, - {end_lnum: diag.range.end.line + 1, - end_col: util.GetLineByteFromPos(bnr, diag.range.end) + 1, - bufnr: bnr, - type: DiagSevToInlineHLName(diag.severity)}) - endif + try + if opt.lspOptions.highlightDiagInline + prop_add(diag.range.start.line + 1, + util.GetLineByteFromPos(bnr, diag.range.start) + 1, + {end_lnum: diag.range.end.line + 1, + end_col: util.GetLineByteFromPos(bnr, diag.range.end) + 1, + bufnr: bnr, + type: DiagSevToInlineHLName(diag.severity)}) + endif - if opt.lspOptions.showDiagWithVirtualText - prop_add(lnum, 0, {bufnr: bnr, - type: 'LspDiagVirtualText', - text: $'┌─ {diag.message}', - text_align: 'above', - text_padding_left: diag.range.start.character}) - endif + if opt.lspOptions.showDiagWithVirtualText + prop_add(lnum, 0, {bufnr: bnr, + type: 'LspDiagVirtualText', + text: $'┌─ {diag.message}', + text_align: 'above', + text_padding_left: diag.range.start.character}) + endif + catch /E966\|E964/ # Invalid lnum | Invalid col + # Diagnostics arrive asynchronous and the document changed while they wore + # send. Ignore this as new once will arrive shortly. + endtry endfor signs->sign_placelist()