dots-of-war/files/.config/nvim/fnl/plugins/galaxyline.fnl

110 lines
4.5 KiB
Text
Raw Normal View History

2021-04-03 18:34:15 +00:00
(module plugins.galaxyline
{require {a aniseed.core
fennel aniseed.fennel
nvim aniseed.nvim
utils utils
galaxyline galaxyline
gl-condition galaxyline.condition
gl-fileinfo galaxyline.provider_fileinfo
gl-diagnostic galaxyline.provider_diagnostic
gl-vcs galaxyline.provider_vcs}
require-macros [macros]})
2021-05-02 16:13:37 +00:00
(def- colors utils.colors)
2021-04-03 18:34:15 +00:00
(local modes
2021-05-02 15:15:33 +00:00
{:n {:text "NORMAL" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:i {:text "INSERT" :colors {:bg colors.neutral_yellow :fg colors.dark0}}
:c {:text "CMD" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:ce {:text "NORMEX" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:cv {:text "EX" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:ic {:text "INSCOMP" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:no {:text "OP-PENDING" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:r {:text "HIT-ENTER" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:r? {:text "CONFIRM" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:R {:text "REPLACE" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:Rv {:text "VIRTUAL" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:s {:text "SELECT" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:S {:text "SELECT" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:t {:text "TERM" :colors {:bg colors.neutral_aqua :fg colors.dark0}}
:v {:text "VISUAL" :colors {:bg colors.neutral_blue :fg colors.dark0}}
:V {:text "VISUAL LINE" :colors {:bg colors.neutral_blue :fg colors.dark0}}
"" {:text "VISUAL BLOCK" :colors {:bg colors.neutral_blue :fg colors.dark0}}})
2021-04-03 18:34:15 +00:00
2021-05-01 13:20:02 +00:00
(fn buf-name-empty? []
(a.empty? (nvim.fn.expand "%:t")))
2021-04-03 18:34:15 +00:00
(fn get-current-file-name []
(let [file (nvim.fn.expand "%:t")]
2021-05-02 15:15:33 +00:00
(if (a.empty? file) ""
nvim.bo.readonly (.. "RO " file)
(and nvim.bo.modifiable nvim.bo.modified) (.. file " ")
file)))
2021-04-03 19:21:12 +00:00
(fn get-mode-data []
(or (. modes (nvim.fn.mode))
2021-05-02 15:15:33 +00:00
{:text (nvim.fn.mode)
:colors {:bg colors.neutral_orange :fg colors.dark0}}))
2021-04-03 19:21:12 +00:00
(fn vim-mode-provider []
(let [modedata (get-mode-data)]
(utils.highlight "GalaxyViMode" modedata.colors)
(.. " " modedata.text " ")))
2021-04-03 18:34:15 +00:00
(utils.highlight "StatusLine" {:bg colors.dark1 :fg colors.light0 })
(set galaxyline.short_line_list ["dbui" "diff" "peekaboo" "undotree" "vista" "vista_markdown"])
(set galaxyline.section.left
2021-05-02 15:15:33 +00:00
[{:ViMode {:provider vim-mode-provider}}
{:FileName {:provider get-current-file-name
:highlight [colors.light4 colors.dark1]}}
{:Space {:provider (fn [] "")
:highlight [colors.light0 colors.dark1]}}])
2021-04-03 18:34:15 +00:00
2021-04-03 19:21:12 +00:00
(fn make-lsp-diagnostic-provider [kind]
2021-04-03 18:34:15 +00:00
(fn []
(let [n (vim.lsp.diagnostic.get_count 0 kind)]
2021-04-03 19:21:12 +00:00
(if (= n 0) "" (.. " " n " ")))))
2021-04-03 18:34:15 +00:00
2021-04-03 19:21:12 +00:00
(fn git-branch-provider []
(let [branch (gl-vcs.get_git_branch)]
(if (= "master" branch) "" branch)))
2021-04-03 18:34:15 +00:00
(set galaxyline.section.right
2021-05-02 15:15:33 +00:00
[{:GitBranch {:provider git-branch-provider
:highlight [colors.light4 colors.dark1]}}
{:FileType {:provider (fn [] nvim.bo.filetype)
:highlight [colors.neutral_aqua colors.dark1]}}
2021-04-03 18:34:15 +00:00
2021-05-02 15:15:33 +00:00
{:DiagnosticInfo {:provider (make-lsp-diagnostic-provider "Info")
:highlight [colors.dark1 colors.neutral_blue]}}
{:DiagnosticWarn {:provider (make-lsp-diagnostic-provider "Warning")
:highlight [colors.dark1 colors.neutral_yellow]
:separator ""}}
{:DiagnosticError {:provider (make-lsp-diagnostic-provider "Error")
:highlight [colors.dark1 colors.bright_red]
:separator ""}}
{:LineInfo {:provider (fn [] (.. " " (gl-fileinfo.line_column) " "))
:highlight "GalaxyViMode"
:separator ""}}])
2021-04-03 18:34:15 +00:00
(do
(fn add-segment-defaults [data]
2021-05-02 15:15:33 +00:00
(a.merge {:highlight [colors.light0 colors.dark1]
:separator " "
:separator_highlight "StatusLine"}
data))
2021-04-03 18:34:15 +00:00
(fn map-gl-section [f section]
(icollect [_ elem (ipairs section)]
2021-05-02 15:15:33 +00:00
(collect [k v (pairs elem)]
(values k (f v)))))
2021-04-03 18:34:15 +00:00
(set galaxyline.section.left (map-gl-section add-segment-defaults galaxyline.section.left))
(set galaxyline.section.right (map-gl-section add-segment-defaults galaxyline.section.right)))