about summary refs log tree commit diff
path: root/fnl/nvrc/ui/modules/diagnostics.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'fnl/nvrc/ui/modules/diagnostics.fnl')
-rw-r--r--fnl/nvrc/ui/modules/diagnostics.fnl21
1 files changed, 21 insertions, 0 deletions
diff --git a/fnl/nvrc/ui/modules/diagnostics.fnl b/fnl/nvrc/ui/modules/diagnostics.fnl
new file mode 100644
index 0000000..a1e2530
--- /dev/null
+++ b/fnl/nvrc/ui/modules/diagnostics.fnl
@@ -0,0 +1,21 @@
+(fn diagnostics []
+  (let [count {}
+        levels {:errors :Error :warnings :Warn :info :Info :hints :Hint}]
+    (each [k level (pairs levels)]
+      (tset count k (vim.tbl_count (vim.diagnostic.get 0 {:severity level}))))
+    (var errors "")
+    (var warnings "")
+    (var hints "")
+    (var info "")
+    (when (not= (. count :errors) 0)
+      (set errors (.. "%#DiagnosticSignError#E" (. count :errors))))
+    (when (not= (. count :warnings) 0)
+      (set warnings
+           (.. " %#DiagnosticSignWarning#W" (. count :warnings))))
+    (when (not= (. count :hints) 0)
+      (set hints (.. " %#DiagnosticSignHint#H" (. count :hints))))
+    (when (not= (. count :info) 0)
+      (set info (.. " %#DiagnosticSignInformation#I" (. count :info))))
+    (.. errors warnings hints info "%#StatusLine#")))
+
+{: diagnostics}