home/rc/extra/typescript.kak
2017-10-10 10:23:25 +02:00

39 lines
1.4 KiB
Plaintext

# 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
}