dippin-dotfiles/.config/kak/syntaxes/rainbow_csv.kak
2025-02-04 21:06:01 -07:00

32 lines
935 B
Text

# Opinionated rainbow csv implementation
hook global BufCreate .*[.](csv) %{
set-option buffer filetype csv
}
hook global WinSetOption filetype=csv %{
try %{
remove-highlighter window/csv
}
lua %{
rgx = "(^[^\n,]*[,$])?"
-- These colors are designed to match the Everforest Dark colorscheme.
colors = {"blue", "green", "magenta", "rgb:e69875"}
faces = {}
for idx, color in pairs(colors) do
if idx > 1 then
rgx = rgx .. "([^\n,]*[,$])?"
end
faces[idx] = idx .. ":" .. color
end
kak.add_highlighter("window/csv", "regions")
kak.add_highlighter("window/csv/comment", "region", "^", "\n", "group")
kak.add_highlighter("window/csv/comment/", "regex", rgx, table.unpack(faces))
}
}
hook global WinSetOption filetype=(?!csv).* %{
try %{
remove-highlighter window/csv
}
}