diff options
author | sefidel <contact@sefidel.net> | 2022-02-27 23:57:08 +0900 |
---|---|---|
committer | sefidel <contact@sefidel.net> | 2022-02-27 23:58:05 +0900 |
commit | a15747ea28b1011d96aea09bc9779cb5f11ca7a9 (patch) | |
tree | 75ba23a8850a4eb57669a4980721b9f02d558884 /fnl/nvrc/ui/modules | |
parent | 56bf0ffd4304c610021268c675a59a4470fb29c6 (diff) | |
download | nvimrc-a15747ea28b1011d96aea09bc9779cb5f11ca7a9.tar.gz nvimrc-a15747ea28b1011d96aea09bc9779cb5f11ca7a9.zip |
feat(ui): feline -> homebrew statusline
Diffstat (limited to 'fnl/nvrc/ui/modules')
-rw-r--r-- | fnl/nvrc/ui/modules/diagnostics.fnl | 21 | ||||
-rw-r--r-- | fnl/nvrc/ui/modules/misc.fnl | 14 | ||||
-rw-r--r-- | fnl/nvrc/ui/modules/vi_mode.fnl | 40 |
3 files changed, 75 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} diff --git a/fnl/nvrc/ui/modules/misc.fnl b/fnl/nvrc/ui/modules/misc.fnl new file mode 100644 index 0000000..24d84f9 --- /dev/null +++ b/fnl/nvrc/ui/modules/misc.fnl @@ -0,0 +1,14 @@ +(fn file-size [] + "feline.nvim's file size calculation module." + (let [suffix [:b :k :M :G :T :P :E]] + (var index 1) + (var fsize (vim.fn.getfsize (vim.api.nvim_buf_get_name 0))) + (when (< fsize 0) + (set fsize 0)) + (while (and (> fsize 1024) (< index 7)) + (set fsize (/ fsize 1024)) + (set index (+ index 1))) + (string.format (or (and (= index 1) "%g%s | ") "%.2f%s | ") fsize + (. suffix index)))) + +{: file-size} diff --git a/fnl/nvrc/ui/modules/vi_mode.fnl b/fnl/nvrc/ui/modules/vi_mode.fnl new file mode 100644 index 0000000..1b9f1a1 --- /dev/null +++ b/fnl/nvrc/ui/modules/vi_mode.fnl @@ -0,0 +1,40 @@ +(local modes {:n :NORMAL + :no :NORMAL + :v :VISUAL + :V "V-LINE" + "\022" "V-BLOCK" + :s :SELECT + :S "L-SELECT" + "\019" "B-SELECT" + :i :INSERT + :ic :INSERT + :R :REPLACE + :Rv "V-REPLACE" + :c :COMMAND + :cv "VIM-EX" + :ce :EX + :r :PROMPT + :rm :MOAR + :r? :CONFIRM + :! :SHELL + :t :TERMINAL}) + +(fn mode [] + (let [current-mode (. (vim.api.nvim_get_mode) :mode)] + (: (string.format "%s " (. modes current-mode)) :upper))) + +(fn update-mode-colors [] + (let [current-mode (. (vim.api.nvim_get_mode) :mode)] + (var mode-color "%#StatuslineAccent#") + (if (= current-mode :n) (set mode-color "%#StatuslineAccent#") + (or (= current-mode :i) (= current-mode :ic)) + (set mode-color "%#StatuslineInsertAccent#") + (or (or (= current-mode :v) (= current-mode :V)) + (= current-mode "\022")) + (set mode-color "%#StatusLineVisualAccent#") (= current-mode :R) + (set mode-color "%#StatusLineReplaceAccent#") (= current-mode :c) + (set mode-color "%#StatusLineCmdLineAccent#") (= current-mode :t) + (set mode-color "%#StatusLineTerminalAccent#")) + mode-color)) + +{: mode : update-mode-colors} |