diff options
author | sefidel <contact@sefidel.net> | 2022-03-06 20:51:38 +0900 |
---|---|---|
committer | sefidel <contact@sefidel.net> | 2022-03-06 20:51:38 +0900 |
commit | f5cc3f01fae31acdb35b9c70b739a130b059f05f (patch) | |
tree | 452acff8b6c247bf8459e1a6c81767cea116a89e /fnl/nvrc/statusline.fnl | |
parent | 3c1989af2f178711055f75639ac5208c166cec68 (diff) | |
download | nvimrc-f5cc3f01fae31acdb35b9c70b739a130b059f05f.tar.gz nvimrc-f5cc3f01fae31acdb35b9c70b739a130b059f05f.zip |
feat(ui): combine statusline into one file
Diffstat (limited to 'fnl/nvrc/statusline.fnl')
-rw-r--r-- | fnl/nvrc/statusline.fnl | 41 |
1 files changed, 41 insertions, 0 deletions
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 " "))) |