From ad724ab1a86d89ba36a4e4ea760f3207b0e123ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Ros=C3=A9n?= Date: Tue, 10 Oct 2017 10:23:25 +0200 Subject: [PATCH] Add support for typescript --- rc/extra/typescript.kak | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 rc/extra/typescript.kak diff --git a/rc/extra/typescript.kak b/rc/extra/typescript.kak new file mode 100644 index 00000000..080153dc --- /dev/null +++ b/rc/extra/typescript.kak @@ -0,0 +1,38 @@ + +# requires rc/base/javascript.kak + +# Detection +# ‾‾‾‾‾‾‾‾‾ + +hook global BufCreate .*[.](ts)x? %{ + set buffer filetype typescript +} + +# Highlighters +# ‾‾‾‾‾‾‾‾‾‾‾‾ + +add-highlighter -group / group typescript +add-highlighter -group /typescript ref javascript + +add-highlighter -group /typescript regex \b(array|boolean|date|number|object|regexp|string|symbol)\b 0:type + +# Keywords grabbed from https://github.com/Microsoft/TypeScript/issues/2536 +add-highlighter -group /typescript regex \b(enum|as|implements|interface|package|private|protected|public|static|constructor|declare|get|module|set|type|from|of)\b 0:keyword + +# Initialization +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +hook -group typescript-highlight global WinSetOption filetype=typescript %{ add-highlighter ref typescript } + +hook global WinSetOption filetype=javascript %{ + hook window InsertEnd .* -group typescript-hooks javascript-filter-around-selections + hook window InsertChar .* -group typescript-indent javascript-indent-on-char + hook window InsertChar \n -group typescript-indent javascript-indent-on-new-line +} + +hook -group typescript-highlight global WinSetOption filetype=(?!typescript).* %{ remove-highlighter typescript } + +hook global WinSetOption filetype=(?!typescript).* %{ + remove-hooks window typescript-indent + remove-hooks window typescript-hooks +}