diff --git a/rc/css.kak b/rc/css.kak new file mode 100644 index 00000000..a68ee5cd --- /dev/null +++ b/rc/css.kak @@ -0,0 +1,84 @@ +# http://w3.org/Style/CSS +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +# Detection +# ‾‾‾‾‾‾‾‾‾ + +hook global BufSetOption mimetype=text/x-css %{ + set buffer filetype css +} + +hook global BufCreate .*[.](css) %{ + set buffer filetype css +} + +# Highlighters +# ‾‾‾‾‾‾‾‾‾‾‾‾ + +addhl -group / regions -default selector css \ + declaration [{] [}] '' \ + comment /[*] [*]/ '' + +addhl -group /css/comment fill comment + +addhl -group /css/declaration regions content \ + string '"' (? + # remove trailing white spaces + try %{ exec -draft s \h+$ d } + } +} + +def -hidden _css_indent_on_new_line %[ + eval -draft -itersel %[ + # preserve previous line indent + try %[ exec -draft K ] + # filter previous line + try %[ exec -draft k : _css_filter_around_selections ] + # indent after lines ending with with { + try %[ exec -draft k x \{$ j ] + ] +] + +def -hidden _css_indent_on_closing_curly_brace %[ + eval -draft -itersel %[ + # align to opening curly brace when alone on a line + try %[ exec -draft ^\h+\}$ m s \`|.\' 1 ] + ] +] + +# Initialization +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +hook global WinSetOption filetype=css %[ + addhl ref css + + hook window InsertEnd .* -group css-hooks _css_filter_around_selections + hook window InsertChar \n -group css-indent _css_indent_on_new_line + hook window InsertChar \} -group css-indent _css_indent_on_closing_curly_brace +] + +hook global WinSetOption filetype=(?!css).* %{ + rmhl css + rmhooks window css-indent + rmhooks window css-hooks +}