blob: 76efd4560d160e50b48476624aa23b1c389e4f7a (
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
|
(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 "%!v:lua.statusline.enable()"))
(au! [WinLeave BufLeave] * #(setl! statusline " ")))
|