From 94d72c4bad528285956ab7f0cdb9b9db18ae0410 Mon Sep 17 00:00:00 2001 From: Lee Machin Date: Fri, 16 Dec 2016 19:20:26 +0200 Subject: [PATCH] Add basic PHP syntax highlighting based on the highlighting for JS --- rc/extra/php.kak | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 rc/extra/php.kak diff --git a/rc/extra/php.kak b/rc/extra/php.kak new file mode 100644 index 00000000..6f522698 --- /dev/null +++ b/rc/extra/php.kak @@ -0,0 +1,75 @@ +# Detection +# ‾‾‾‾‾‾‾‾‾ + +hook global BufCreate .*[.](php) %{ + set buffer filetype php +} + +# Highlighters +# ‾‾‾‾‾‾‾‾‾‾‾‾ + +addhl -group / regions -default code php \ + double_string '"' (? s \h+$ d } +} + +def -hidden _php_indent_on_char %< + eval -draft -itersel %< + # align closer token to its opener when alone on a line + try %/ exec -draft ^\h+[]}]$ m s \`|.\' 1 / + > +> + +def -hidden _php_indent_on_new_line %< + eval -draft -itersel %< + # preserve previous line indent + try %{ exec -draft K } + # filter previous line + try %{ exec -draft k : _php_filter_around_selections } + # copy // comments prefix and following white spaces + try %{ exec -draft k x s ^\h*\K#\h* y j p } + # indent after lines beginning / ending with opener token + try %_ exec -draft k x ^\h*[[{]|[[{]$ j _ + > +> + +# Initialization +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +hook -group php-highlight global WinSetOption filetype=php %{ addhl ref php } + +hook global WinSetOption filetype=php %{ + hook window InsertEnd .* -group php-hooks _php_filter_around_selections + hook window InsertChar .* -group php-indent _php_indent_on_char + hook window InsertChar \n -group php-indent _php_indent_on_new_line +} + +hook -group php-highlight global WinSetOption filetype=(?!php).* %{ rmhl php } + +hook global WinSetOption filetype=(?!php).* %{ + rmhooks window php-indent + rmhooks window php-hooks +}