From f5cc3f01fae31acdb35b9c70b739a130b059f05f Mon Sep 17 00:00:00 2001 From: sefidel Date: Sun, 6 Mar 2022 20:51:38 +0900 Subject: feat(ui): combine statusline into one file --- fnl/nvrc/statusline.fnl | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 fnl/nvrc/statusline.fnl (limited to 'fnl/nvrc/statusline.fnl') diff --git a/fnl/nvrc/statusline.fnl b/fnl/nvrc/statusline.fnl new file mode 100644 index 0000000..fbac5a8 --- /dev/null +++ b/fnl/nvrc/statusline.fnl @@ -0,0 +1,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 :hints) 0) + (set hints (.. " %#DiagnosticSignHint#H" (. count :hints)))) + (when (not= (. count :info) 0) + (set info (.. " %#DiagnosticSignInformation#I" (. count :info)))) + (.. errors warnings hints info "%#StatusLine#"))) + +(global statusline {}) +(set statusline.enable (fn [] + (table.concat ["%#StatusLineAccent#" + "▊ " + "%#StatusLine#" + "%#StatusLineAccentBold#" + "%f%m%r " + "%#StatusLine#" + "%l:%c | " + (diagnostics) + "%=" + "%#StatusLineAccentBold#" + "%y *%n "]))) + +(ag! ui-statusline + (au! [WinEnter BufEnter] * #(setl! statusline "%!v:lua.statusline.enable()")) + (au! [WinLeave BufLeave] * #(setl! statusline " "))) -- cgit 1.4.1