diff --git a/config/.config/kak/al/rc/typst.kak b/config/.config/kak/al/rc/typst.kak new file mode 100644 index 0000000..5353ea6 --- /dev/null +++ b/config/.config/kak/al/rc/typst.kak @@ -0,0 +1,69 @@ +# Detection +# ‾‾‾‾‾‾‾‾‾ + +hook global BufCreate .*[.](typ) %{ + set-option buffer filetype typst +} + +# Initialization +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +hook -group typst-highlight global WinSetOption filetype=typst %{ + require-module typst + + add-highlighter window/typst ref typst + hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/typst } + hook window InsertChar \n -group typst typst-on-new-line +} + +provide-module typst %§ + +# Highlighters +# ‾‾‾‾‾‾‾‾‾‾‾‾ + +add-highlighter shared/typst group + +# Comments +add-highlighter shared/typst/ regex ^//(?:[^\n/][^\n]*|)$ 0:comment + +# Strings +add-highlighter shared/typst/ regex '"[^"]*"' 0:string + +# Headings +add-highlighter shared/typst/ regex ^=+\h+[^\n]+$ 0:header + +# Code blocks +# Raw with optional syntax highlighting +add-highlighter shared/typst/ regex '^```[^(```)]*```' 0:mono +# Multiline monospace +add-highlighter shared/typst/ regex '^`[^(`)]*`' 0:mono + +# Monospace text +add-highlighter shared/typst/ regex \B(`[^\n]+?`)\B 0:mono +add-highlighter shared/typst/ regex \B(```[^\n]+?```)\B 0:mono + +# Bold text +add-highlighter shared/typst/ regex \s\*[^\*]+\*\B 0:+b + +# Italic text +add-highlighter shared/typst/ regex \b_.*?_\b 0:+i + +# Code expressions: functions, variables +add-highlighter shared/typst/ regex (^|\h)#(\w|\.|-)+ 0:meta + +# Bold terms in term lists +add-highlighter shared/typst/ regex ^/\h[^:]*: 0:+b + +§ + +# Commands +# ‾‾‾‾‾‾‾‾ + +define-command -hidden typst-on-new-line %< + evaluate-commands -draft -itersel %< + # Preserve previous line indent + try %{ execute-keys -draft K } + # Cleanup trailing whitespaces from previous line + try %{ execute-keys -draft k x s \h+$ d } + > +>