From: Indelog Date: Wed, 10 Nov 2021 15:14:27 +0000 (+0100) Subject: Add add function to get error count for the current buffer X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=e9a72c3deeeeb31255331f0058e9f8a39eb94d07;p=vim-lsp.git Add add function to get error count for the current buffer Can be used to display error count in status bar. --- diff --git a/autoload/lsp.vim b/autoload/lsp.vim index 25c3ef7..b12ea78 100644 --- a/autoload/lsp.vim +++ b/autoload/lsp.vim @@ -502,6 +502,42 @@ def lsp#showCurrentDiag() endif enddef +# get the count of error in the current buffer +def lsp#errorCount():dict + var res = {'E': 0, 'W': 0, 'I': 0, 'H': 0} + var ftype = &filetype + if ftype == '' + return res + endif + + var lspserver: dict = s:lspGetServer(ftype) + if lspserver->empty() + return res + endif + if !lspserver.running + return res + endif + + var bnr: number = bufnr() + if lspserver.diagsMap->has_key(bnr) + for item in lspserver.diagsMap[bnr]->values() + if item->has_key('severity') + if item.severity == 1 + res.E = res.E + 1 + elseif item.severity == 2 + res.W = res.W + 1 + elseif item.severity == 3 + res.I = res.I + 1 + elseif item.severity == 4 + res.H = res.H + 1 + endif + endif + endfor + endif + + return res +enddef + # sort the diaganostics messages for a buffer by line number def s:getSortedDiagLines(lspserver: dict, bnr: number): list # create a list of line numbers from the diag map keys