70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # 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 <semicolon> K <a-&> }
 | |
|         # Cleanup trailing whitespaces from previous line
 | |
|         try %{ execute-keys -draft k x s \h+$ <ret> d }
 | |
|     >
 | |
| >
 | 
