Skip to content

Commit

Permalink
Add typst language and lsp (helix-editor#7474)
Browse files Browse the repository at this point in the history
Co-authored-by: Michael Davis <[email protected]>
  • Loading branch information
2 people authored and dgkf committed Jan 30, 2024
1 parent a6b1af5 commit 663578d
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
| tsx |||| `typescript-language-server` |
| twig || | | |
| typescript |||| `typescript-language-server` |
| typst || | | `typst-lsp` |
| ungrammar || | | |
| unison || | | |
| uxntal || | | |
Expand Down
22 changes: 22 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ wgsl_analyzer = { command = "wgsl_analyzer" }
yaml-language-server = { command = "yaml-language-server", args = ["--stdio"] }
zls = { command = "zls" }
blueprint-compiler = { command = "blueprint-compiler", args = ["lsp"] }
typst-lsp = { command = "typst-lsp" }

[language-server.ansible-language-server]
command = "ansible-language-server"
Expand Down Expand Up @@ -2912,6 +2913,27 @@ roots = []
indent = { tab-width = 2, unit = " " }
grammar = "html"

[[language]]
name = "typst"
scope = "source.typst"
injection-regex = "typst"
file-types = ["typst", "typ"]
roots = []
comment-token = "//"
language-servers = ["typst-lsp"]
indent = { tab-width = 2, unit = " " }

[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'$' = '$'
'"' = '"'

[[grammar]]
name = "typst"
source = { git = "https://github.com/uben0/tree-sitter-typst", rev = "e35aa22395fdde82bbc4b5700c324ce346dfc9e5" }

[[language]]
name = "nunjucks"
scope = "text.html.nunjucks"
Expand Down
77 changes: 77 additions & 0 deletions runtime/queries/typst/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
(call
item: (ident) @function)
(call
item: (field field: (ident) @function.method))
(tagged field: (ident) @tag)
(field field: (ident) @tag)
(comment) @comment

; CONTROL
(let "let" @keyword.storage.type)
(branch ["if" "else"] @keyword.control.conditional)
(while "while" @keyword.control.repeat)
(for ["for" "in"] @keyword.control.repeat)
(import "import" @keyword.control.import)
(as "as" @keyword.operator)
(include "include" @keyword.control.import)
(show "show" @keyword.control)
(set "set" @keyword.control)
(return "return" @keyword.control)
(flow ["break" "continue"] @keyword.control)

; OPERATOR
(in ["in" "not"] @keyword.operator)
(and "and" @keyword.operator)
(or "or" @keyword.operator)
(not "not" @keyword.operator)
(sign ["+" "-"] @operator)
(add "+" @operator)
(sub "-" @operator)
(mul "*" @operator)
(div "/" @operator)
(cmp ["==" "<=" ">=" "!=" "<" ">"] @operator)
(fraction "/" @operator)
(fac "!" @operator)
(attach ["^" "_"] @operator)
(wildcard) @operator

; VALUE
(raw_blck "```" @operator) @markup.raw.block
(raw_span "`" @operator) @markup.raw.block
(raw_blck lang: (ident) @tag)
(label) @tag
(ref) @tag
(number) @constant.numeric
(string) @string
(content ["[" "]"] @operator)
(bool) @constant.builtin.boolean
(builtin) @constant.builtin
(none) @constant.builtin
(auto) @constant.builtin
(ident) @variable
(call
item: (builtin) @function.builtin)

; MARKUP
(item "-" @markup.list)
(term ["/" ":"] @markup.list)
(heading ["=" "==" "===" "====" "====="] @markup.heading.marker) @markup.heading
(url) @tag
(emph) @markup.italic
(strong) @markup.bold
(symbol) @constant.character
(shorthand) @constant.builtin
(quote) @markup.quote
(align) @operator
(letter) @constant.character
(linebreak) @constant.builtin

(math "$" @operator)
"#" @operator
"end" @operator

(escape) @constant.character.escape
["(" ")" "{" "}"] @punctuation.bracket
["," ";" ".." ":" "sep"] @punctuation.delimiter
"assign" @punctuation
(field "." @punctuation)
6 changes: 6 additions & 0 deletions runtime/queries/typst/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
(raw_blck
(blob) @injection.shebang @injection.content)

(raw_blck
lang: (ident) @injection.language
(blob) @injection.content)

0 comments on commit 663578d

Please sign in to comment.