]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Add add function to get error count for the current buffer
authorIndelog <maxime@indelog.fr>
Wed, 10 Nov 2021 15:14:27 +0000 (16:14 +0100)
committerIndelog <maxime@indelog.fr>
Thu, 11 Nov 2021 14:15:54 +0000 (15:15 +0100)
Can be used to display error count in status bar.

autoload/lsp.vim

index 25c3ef71af9dea42a42ed9d9c30b533aa50bf862..b12ea78cb2351b705ee2d9067465e35de4c0c90d 100644 (file)
@@ -502,6 +502,42 @@ def lsp#showCurrentDiag()
   endif
 enddef
 
+# get the count of error in the current buffer
+def lsp#errorCount():dict<number>
+  var res = {'E': 0, 'W': 0, 'I': 0, 'H': 0}
+  var ftype = &filetype
+  if ftype == ''
+    return res
+  endif
+
+  var lspserver: dict<any> = 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<any>, bnr: number): list<number>
   # create a list of line numbers from the diag map keys