blob: c202fd5743ed1b819390de837166858bc795e597 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
(import-macros {: vlua} :nvrc.macro.toolkit)
(import-macros {: setl!} :nvrc.macro.set)
(import-macros {: ag!
: au!} :nvrc.macro.event)
(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
(.. "%#DiagnosticSignWarn#W" (. count :warnings) " ")))
(when (not= (. count :info) 0)
(set info (.. "%#DiagnosticSignInformation#I" (. count :info) " ")))
(when (not= (. count :hints) 0)
(set hints (.. "%#DiagnosticSignHint#H" (. count :hints))))
(.. errors warnings info hints "%#StatusLine#")))
(global statusline {})
(set statusline.enable (fn []
(table.concat ["%#StatusLinePad#"
"▊ "
"%#StatusLine#"
"%#StatusLineAccentBold#"
"%<%f%m%r "
"%#StatusLine#"
"%l:%c | "
(diagnostics)
"%="
"%#StatusLineAccentBold#"
"%y "])))
(ag! ui-statusline
(au! [WinEnter BufEnter] * #(setl! statusline (.. "%!" (vlua statusline.enable))))
(au! [WinLeave BufLeave] * #(setl! statusline " ")))
|