2021-02-23 20:24:10 +01:00
{
"name" : "typst" ,
"patterns" : [
{ "include" : "#markup" }
] ,
"repository" : {
2022-05-14 12:25:19 +02:00
"blockcomment" : {
2021-02-23 20:24:10 +01:00
"patterns" : [
{
"name" : "comment.block.typst" ,
"begin" : "/\\*" ,
"end" : "\\*/" ,
"captures" : { "0" : { "name" : "punctuation.definition.comment.typst" } } ,
2022-05-14 12:25:19 +02:00
"patterns" : [ { "include" : "#blockcomment" } ]
}
]
} ,
"common" : {
"patterns" : [
{ "include" : "#blockcomment" } ,
2021-02-23 20:24:10 +01:00
{
2022-03-11 12:59:55 +01:00
"name" : "meta.block.code.typst" ,
2021-02-23 20:24:10 +01:00
"begin" : "{" ,
"end" : "}" ,
2022-03-11 12:59:55 +01:00
"captures" : { "0" : { "name" : "punctuation.definition.block.code.typst" } } ,
2021-02-23 20:24:10 +01:00
"patterns" : [ { "include" : "#code" } ]
} ,
{
2022-03-11 12:59:55 +01:00
"name" : "meta.block.content.typst" ,
2021-02-23 20:24:10 +01:00
"begin" : "\\[" ,
"end" : "\\]" ,
2022-03-11 12:59:55 +01:00
"captures" : { "0" : { "name" : "punctuation.definition.block.content.typst" } } ,
2021-02-23 20:24:10 +01:00
"patterns" : [ { "include" : "#markup" } ]
}
]
} ,
"markup" : {
"patterns" : [
{ "include" : "#common" } ,
2021-07-08 19:37:38 +02:00
{
"name" : "comment.line.double-slash.typst" ,
"begin" : "(?<!:)//" ,
"end" : "\n" ,
"beginCaptures" : { "0" : { "name" : "punctuation.definition.comment.typst" } }
} ,
2021-02-23 20:24:10 +01:00
{
"name" : "constant.character.escape.content.typst" ,
"match" : "\\\\([\\\\/\\[\\]{}#*_=~`$-.]|u\\{[0-9a-zA-Z]*\\}?)"
} ,
{
"name" : "markup.bold.typst" ,
2022-01-30 12:50:58 +01:00
"begin" : "(^\\*|\\*$|((?<=\\W|_)\\*)|(\\*(?=\\W|_)))" ,
"end" : "(^\\*|\\*$|((?<=\\W|_)\\*)|(\\*(?=\\W|_)))|\n|(?=\\])" ,
2021-02-23 20:24:10 +01:00
"captures" : { "0" : { "name" : "punctuation.definition.bold.typst" } } ,
"patterns" : [ { "include" : "#markup" } ]
} ,
{
"name" : "markup.italic.typst" ,
2022-01-30 12:50:58 +01:00
"begin" : "(^_|_$|((?<=\\W|_)_)|(_(?=\\W|_)))" ,
"end" : "(^_|_$|((?<=\\W|_)_)|(_(?=\\W|_)))|\n|(?=\\])" ,
2021-02-23 20:24:10 +01:00
"captures" : { "0" : { "name" : "punctuation.definition.italic.typst" } } ,
"patterns" : [ { "include" : "#markup" } ]
} ,
{
"name" : "punctuation.definition.linebreak.typst" ,
"match" : "\\\\"
} ,
{
"name" : "punctuation.definition.em-dash.typst" ,
"match" : "---"
} ,
{
"name" : "punctuation.definition.en-dash.typst" ,
"match" : "--"
} ,
{
"name" : "punctuation.definition.nonbreaking-space.typst" ,
"match" : "~"
} ,
{
"name" : "markup.heading.typst" ,
"contentName" : "entity.name.section.typst" ,
2022-04-30 14:12:28 +02:00
"begin" : "^\\s*=+\\s+" ,
2021-02-23 20:24:10 +01:00
"end" : "\n" ,
"beginCaptures" : { "0" : { "name" : "punctuation.definition.heading.typst" } } ,
"patterns" : [ { "include" : "#markup" } ]
} ,
{
"name" : "punctuation.definition.list.unnumbered.typst" ,
2021-06-07 18:06:27 +02:00
"match" : "^\\s*-\\s+"
2021-02-23 20:24:10 +01:00
} ,
{
"name" : "punctuation.definition.list.numbered.typst" ,
2021-06-09 10:45:49 +02:00
"match" : "^\\s*[0-9]*\\.\\s+"
2021-02-23 20:24:10 +01:00
} ,
{
"name" : "markup.raw.block.typst" ,
"begin" : "`{3,}" ,
"end" : "\\0" ,
"captures" : { "0" : { "name" : "punctuation.definition.raw.typst" } }
} ,
{
"name" : "markup.raw.inline.typst" ,
"begin" : "`" ,
"end" : "`" ,
"captures" : { "0" : { "name" : "punctuation.definition.raw.typst" } }
} ,
{
2021-10-25 13:45:54 +02:00
"name" : "string.other.math.block.typst" ,
"begin" : "\\$\\[" ,
"end" : "\\]\\$" ,
"captures" : { "0" : { "name" : "punctuation.defintion.string.math.typst" } }
2021-02-23 20:24:10 +01:00
} ,
{
2021-10-25 13:45:54 +02:00
"name" : "string.other.math.typst" ,
"begin" : "\\$" ,
"end" : "\\$" ,
"captures" : { "0" : { "name" : "punctuation.defintion.string.math.typst" } }
2021-02-23 20:24:10 +01:00
} ,
{
2021-10-25 13:45:54 +02:00
"begin" : "(#)(pub|let|set|show|wrap)\\b" ,
"end" : "\n|(;)|(?=])" ,
2021-02-23 20:24:10 +01:00
"beginCaptures" : {
"0" : { "name" : "keyword.other.typst" } ,
"1" : { "name" : "punctuation.definition.keyword.typst" }
} ,
"endCaptures" : { "1" : { "name" : "punctuation.terminator.statement.typst" } } ,
"patterns" : [ { "include" : "#code" } ]
} ,
2021-10-25 13:45:54 +02:00
{
"name" : "keyword.other.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "(#)(as|in|from)\\b" ,
2021-10-25 13:45:54 +02:00
"captures" : { "1" : { "name" : "punctuation.definition.keyword.typst" } }
} ,
2021-02-23 20:24:10 +01:00
{
2021-09-30 18:28:25 +02:00
"begin" : "((#)if|(?<=(}|])\\s*)else)\\b" ,
2021-02-23 20:24:10 +01:00
"end" : "\n|(?=])|(?<=}|])" ,
"beginCaptures" : {
"0" : { "name" : "keyword.control.conditional.typst" } ,
2021-09-30 18:28:25 +02:00
"2" : { "name" : "punctuation.definition.keyword.typst" }
2021-02-23 20:24:10 +01:00
} ,
"patterns" : [ { "include" : "#code" } ]
} ,
{
2021-03-17 14:47:11 +01:00
"begin" : "(#)(for|while)\\b" ,
2021-02-23 20:24:10 +01:00
"end" : "\n|(?=])|(?<=}|])" ,
"beginCaptures" : {
2021-10-25 13:45:54 +02:00
"0" : { "name" : "keyword.control.loop.typst" } ,
2021-02-23 20:24:10 +01:00
"1" : { "name" : "punctuation.definition.keyword.typst" }
} ,
"patterns" : [ { "include" : "#code" } ]
} ,
{
2021-10-25 13:45:54 +02:00
"name" : "keyword.control.loop.typst" ,
"match" : "(#)(break|continue)\\b" ,
"captures" : { "1" : { "name" : "punctuation.definition.keyword.typst" } }
} ,
{
"begin" : "(#)(import|include)\\b" ,
"end" : "\n|(;)|(?=])" ,
2021-02-23 20:24:10 +01:00
"beginCaptures" : {
"0" : { "name" : "keyword.control.import.typst" } ,
"1" : { "name" : "punctuation.definition.keyword.typst" }
} ,
2021-10-25 13:45:54 +02:00
"endCaptures" : { "1" : { "name" : "punctuation.terminator.statement.typst" } } ,
2021-02-23 20:24:10 +01:00
"patterns" : [ { "include" : "#code" } ]
} ,
2021-05-29 12:25:10 +02:00
{
2021-10-25 13:45:54 +02:00
"name" : "keyword.control.flow.typst" ,
"match" : "(#)(return)\\b" ,
"captures" : { "1" : { "name" : "punctuation.definition.keyword.typst" } }
2021-05-29 12:25:10 +02:00
} ,
2021-02-23 20:24:10 +01:00
{
"comment" : "Function name" ,
"name" : "entity.name.function.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "((#)[[:alpha:]_][[:alnum:]_-]*!?)(?=\\[|\\()" ,
2021-02-23 20:24:10 +01:00
"captures" : { "2" : { "name" : "punctuation.definition.function.typst" } }
} ,
{
"comment" : "Function arguments" ,
2022-03-18 23:36:18 +01:00
"begin" : "(?<=#[[:alpha:]_][[:alnum:]_-]*!?)\\(" ,
2021-02-23 20:24:10 +01:00
"end" : "\\)" ,
2021-03-02 15:37:16 +01:00
"captures" : { "0" : { "name" : "punctuation.definition.group.typst" } } ,
2021-02-23 20:24:10 +01:00
"patterns" : [ { "include" : "#arguments" } ]
} ,
{
2022-05-04 22:14:57 +02:00
"name" : "entity.other.interpolated.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "(#)[[:alpha:]_][[:alnum:]_-]*" ,
2021-02-23 20:24:10 +01:00
"captures" : { "1" : { "name" : "punctuation.definition.variable.typst" } }
}
]
} ,
"code" : {
"patterns" : [
{ "include" : "#common" } ,
2021-07-08 19:37:38 +02:00
{
"name" : "comment.line.double-slash.typst" ,
"begin" : "//" ,
"end" : "\n" ,
"beginCaptures" : { "0" : { "name" : "punctuation.definition.comment.typst" } }
} ,
2021-02-23 20:24:10 +01:00
{
"name" : "punctuation.separator.colon.typst" ,
"match" : ":"
} ,
{
"name" : "punctuation.separator.comma.typst" ,
"match" : ","
} ,
{
"name" : "keyword.operator.typst" ,
"match" : "=>|\\.\\."
} ,
{
"name" : "keyword.operator.relational.typst" ,
"match" : "==|!=|<=|<|>=|>"
} ,
{
"name" : "keyword.operator.assignment.typst" ,
"match" : "\\+=|-=|\\*=|/=|="
} ,
{
"name" : "keyword.operator.arithmetic.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "\\+|\\*|/|(?<![[:alpha:]_][[:alnum:]_-]*)-(?![:alnum:]_-]*[[:alpha:]_])"
2021-02-23 20:24:10 +01:00
} ,
{
"name" : "keyword.operator.word.typst" ,
"match" : "\\b(and|or|not)\\b"
} ,
{
2021-10-25 13:45:54 +02:00
"name" : "keyword.other.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "\\b(pub|let|set|show|wrap|as|in|from)\\b"
2021-02-23 20:24:10 +01:00
} ,
{
2021-10-25 13:45:54 +02:00
"name" : "keyword.control.conditional.typst" ,
"match" : "\\b(if|else)\\b"
} ,
{
"name" : "keyword.control.loop.typst" ,
"match" : "\\b(for|while|break|continue)\\b"
} ,
{
"name" : "keyword.control.import.typst" ,
"match" : "\\b(import|include)\\b"
} ,
{
"name" : "keyword.control.flow.typst" ,
"match" : "\\b(return)\\b"
2021-02-23 20:24:10 +01:00
} ,
{ "include" : "#constants" } ,
{
"comment" : "Function name" ,
"name" : "entity.name.function.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "\\b[[:alpha:]_][[:alnum:]_-]*!?(?=\\[|\\()"
2021-02-23 20:24:10 +01:00
} ,
{
"comment" : "Function arguments" ,
2022-03-18 23:36:18 +01:00
"begin" : "(?<=\\b[[:alpha:]_][[:alnum:]_-]*!?)\\(" ,
2021-02-23 20:24:10 +01:00
"end" : "\\)" ,
"captures" : { "0" : { "name" : "punctuation.definition.group.typst" } } ,
"patterns" : [ { "include" : "#arguments" } ]
} ,
{
"name" : "variable.other.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "\\b[[:alpha:]_][[:alnum:]_-]*\\b"
2021-03-02 15:37:16 +01:00
} ,
{
"name" : "meta.group.typst" ,
"begin" : "\\(" ,
"end" : "\\)|(?=;)" ,
"captures" : { "0" : { "name" : "punctuation.definition.group.typst" } } ,
"patterns" : [ { "include" : "#code" } ]
2021-02-23 20:24:10 +01:00
}
]
} ,
"constants" : {
"patterns" : [
{
"name" : "constant.language.none.typst" ,
"match" : "\\bnone\\b"
} ,
2021-06-09 14:05:57 +02:00
{
"name" : "constant.language.auto.typst" ,
"match" : "\\bauto\\b"
} ,
2021-02-23 20:24:10 +01:00
{
"name" : "constant.language.boolean.typst" ,
"match" : "\\b(true|false)\\b"
} ,
{
"name" : "constant.numeric.length.typst" ,
"match" : "\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?(mm|pt|cm|in|em)\\b"
} ,
{
"name" : "constant.numeric.angle.typst" ,
"match" : "\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?(rad|deg)\\b"
} ,
{
"name" : "constant.numeric.percentage.typst" ,
"match" : "\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?%"
} ,
2021-06-01 14:56:02 +02:00
{
"name" : "constant.numeric.fr.typst" ,
"match" : "\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?fr"
} ,
2021-02-23 20:24:10 +01:00
{
"name" : "constant.numeric.integer.typst" ,
"match" : "\\b\\d+\\b"
} ,
{
"name" : "constant.numeric.float.typst" ,
"match" : "\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?\\b"
} ,
{
"name" : "string.quoted.double.typst" ,
"begin" : "\"" ,
"end" : "\"" ,
"captures" : { "0" : { "name" : "punctuation.definition.string.typst" } } ,
"patterns" : [ {
"name" : "constant.character.escape.string.typst" ,
"match" : "\\\\([\\\\\"nrt]|u\\{?[0-9a-zA-Z]*\\}?)"
} ]
}
]
} ,
"arguments" : {
"patterns" : [
{
"name" : "variable.parameter.typst" ,
2022-03-18 23:36:18 +01:00
"match" : "\\b[[:alpha:]_][[:alnum:]_-]*(?=:)"
2021-02-23 20:24:10 +01:00
} ,
{ "include" : "#code" }
]
}
} ,
"scopeName" : "source.typst"
}