UNPKG

tm-grammars

Version:
573 lines (572 loc) 14.5 kB
{ "displayName": "Typst", "name": "typst", "patterns": [ { "include": "#markup" } ], "repository": { "arguments": { "patterns": [ { "match": "\\b[_[:alpha:]][-_[:alnum:]]*(?=:)", "name": "variable.parameter.typst" }, { "include": "#code" } ] }, "code": { "patterns": [ { "include": "#common" }, { "begin": "\\{", "captures": { "0": { "name": "punctuation.definition.block.code.typst" } }, "end": "}", "name": "meta.block.code.typst", "patterns": [ { "include": "#code" } ] }, { "begin": "\\[", "captures": { "0": { "name": "punctuation.definition.block.content.typst" } }, "end": "]", "name": "meta.block.content.typst", "patterns": [ { "include": "#markup" } ] }, { "begin": "//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.typst" } }, "end": "\\n", "name": "comment.line.double-slash.typst" }, { "match": ":", "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": "[*+/]|(?<![_[:alpha:]][-_[:alnum:]]*)-(?![:almnu]_-]*[_[:alpha:]])", "name": "keyword.operator.arithmetic.typst" }, { "match": "\\b(and|or|not)\\b", "name": "keyword.operator.word.typst" }, { "match": "\\b(let|as|in|set|show)\\b", "name": "keyword.other.typst" }, { "match": "\\b(if|else)\\b", "name": "keyword.control.conditional.typst" }, { "match": "\\b(for|while|break|continue)\\b", "name": "keyword.control.loop.typst" }, { "match": "\\b(import|include|export)\\b", "name": "keyword.control.import.typst" }, { "match": "\\b(return)\\b", "name": "keyword.control.flow.typst" }, { "include": "#constants" }, { "match": "\\b[_[:alpha:]][-_[:alnum:]]*!?(?=[(\\[])", "name": "entity.name.function.typst" }, { "match": "(?<=\\bshow\\s*)\\b[_[:alpha:]][-_[:alnum:]]*(?=\\s*[.:])", "name": "entity.name.function.typst" }, { "begin": "(?<=\\b[_[:alpha:]][-_[:alnum:]]*!?)\\(", "captures": { "0": { "name": "punctuation.definition.group.typst" } }, "end": "\\)", "patterns": [ { "include": "#arguments" } ] }, { "match": "\\b[_[:alpha:]][-_[:alnum:]]*\\b", "name": "variable.other.typst" }, { "begin": "\\(", "captures": { "0": { "name": "punctuation.definition.group.typst" } }, "end": "\\)|(?=;)", "name": "meta.group.typst", "patterns": [ { "include": "#code" } ] } ] }, "comments": { "patterns": [ { "begin": "/\\*", "captures": { "0": { "name": "punctuation.definition.comment.typst" } }, "end": "\\*/", "name": "comment.block.typst", "patterns": [ { "include": "#comments" } ] }, { "begin": "(?<!:)//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.typst" } }, "end": "\\n", "name": "comment.line.double-slash.typst", "patterns": [ { "include": "#comments" } ] } ] }, "common": { "patterns": [ { "include": "#comments" } ] }, "constants": { "patterns": [ { "match": "\\bnone\\b", "name": "constant.language.none.typst" }, { "match": "\\bauto\\b", "name": "constant.language.auto.typst" }, { "match": "\\b(true|false)\\b", "name": "constant.language.boolean.typst" }, { "match": "\\b(\\d*)?\\.?\\d+([Ee][-+]?\\d+)?(mm|pt|cm|in|em)\\b", "name": "constant.numeric.length.typst" }, { "match": "\\b(\\d*)?\\.?\\d+([Ee][-+]?\\d+)?(rad|deg)\\b", "name": "constant.numeric.angle.typst" }, { "match": "\\b(\\d*)?\\.?\\d+([Ee][-+]?\\d+)?%", "name": "constant.numeric.percentage.typst" }, { "match": "\\b(\\d*)?\\.?\\d+([Ee][-+]?\\d+)?fr", "name": "constant.numeric.fr.typst" }, { "match": "\\b\\d+\\b", "name": "constant.numeric.integer.typst" }, { "match": "\\b(\\d*)?\\.?\\d+([Ee][-+]?\\d+)?\\b", "name": "constant.numeric.float.typst" }, { "begin": "\"", "captures": { "0": { "name": "punctuation.definition.string.typst" } }, "end": "\"", "name": "string.quoted.double.typst", "patterns": [ { "match": "\\\\([\"\\\\nrt]|u\\{?[0-9A-Za-z]*}?)", "name": "constant.character.escape.string.typst" } ] }, { "begin": "\\$", "captures": { "0": { "name": "punctuation.definition.string.math.typst" } }, "end": "\\$", "name": "string.other.math.typst" } ] }, "markup": { "patterns": [ { "include": "#common" }, { "match": "\\\\([]#-/=\\[\\\\_`{}~]|u\\{[0-9A-Za-z]*}?)", "name": "constant.character.escape.content.typst" }, { "match": "\\\\", "name": "punctuation.definition.linebreak.typst" }, { "match": "~", "name": "punctuation.definition.nonbreaking-space.typst" }, { "match": "-\\?", "name": "punctuation.definition.shy.typst" }, { "match": "---", "name": "punctuation.definition.em-dash.typst" }, { "match": "--", "name": "punctuation.definition.en-dash.typst" }, { "match": "\\.\\.\\.", "name": "punctuation.definition.ellipsis.typst" }, { "match": ":([0-9A-Za-z]+:)+", "name": "constant.symbol.typst" }, { "begin": "(^\\*|\\*$|((?<=[_\\W])\\*)|(\\*(?=[_\\W])))", "captures": { "0": { "name": "punctuation.definition.bold.typst" } }, "end": "(^\\*|\\*$|((?<=[_\\W])\\*)|(\\*(?=[_\\W])))|\\n|(?=])", "name": "markup.bold.typst", "patterns": [ { "include": "#markup" } ] }, { "begin": "(^_|_$|((?<=[_\\W])_)|(_(?=[_\\W])))", "captures": { "0": { "name": "punctuation.definition.italic.typst" } }, "end": "(^_|_$|((?<=[_\\W])_)|(_(?=[_\\W])))|\\n|(?=])", "name": "markup.italic.typst", "patterns": [ { "include": "#markup" } ] }, { "match": "https?://[#%\\&'+,.-9;=?A-Za-z~]*", "name": "markup.underline.link.typst" }, { "begin": "`{3,}", "captures": { "0": { "name": "punctuation.definition.raw.typst" } }, "end": "\\x00", "name": "markup.raw.block.typst" }, { "begin": "`", "captures": { "0": { "name": "punctuation.definition.raw.typst" } }, "end": "`", "name": "markup.raw.inline.typst" }, { "begin": "\\$", "captures": { "0": { "name": "punctuation.definition.string.math.typst" } }, "end": "\\$", "name": "string.other.math.typst" }, { "begin": "^\\s*=+\\s+", "beginCaptures": { "0": { "name": "punctuation.definition.heading.typst" } }, "contentName": "entity.name.section.typst", "end": "\\n|(?=<)", "name": "markup.heading.typst", "patterns": [ { "include": "#markup" } ] }, { "match": "^\\s*-\\s+", "name": "punctuation.definition.list.unnumbered.typst" }, { "match": "^\\s*([0-9]*\\.|\\+)\\s+", "name": "punctuation.definition.list.numbered.typst" }, { "captures": { "1": { "name": "punctuation.definition.list.description.typst" }, "2": { "name": "markup.list.term.typst" } }, "match": "^\\s*(/)\\s+([^:]*:)" }, { "captures": { "1": { "name": "punctuation.definition.label.typst" } }, "match": "<[_[:alpha:]][-_[:alnum:]]*>", "name": "entity.other.label.typst" }, { "captures": { "1": { "name": "punctuation.definition.reference.typst" } }, "match": "(@)[_[:alpha:]][-_[:alnum:]]*", "name": "entity.other.reference.typst" }, { "begin": "(#)(let|set|show)\\b", "beginCaptures": { "0": { "name": "keyword.other.typst" }, "1": { "name": "punctuation.definition.keyword.typst" } }, "end": "\\n|(;)|(?=])", "endCaptures": { "1": { "name": "punctuation.terminator.statement.typst" } }, "patterns": [ { "include": "#code" } ] }, { "captures": { "1": { "name": "punctuation.definition.keyword.typst" } }, "match": "(#)(as|in)\\b", "name": "keyword.other.typst" }, { "begin": "((#)if|(?<=([]}])\\s*)else)\\b", "beginCaptures": { "0": { "name": "keyword.control.conditional.typst" }, "2": { "name": "punctuation.definition.keyword.typst" } }, "end": "\\n|(?=])|(?<=[]}])", "patterns": [ { "include": "#code" } ] }, { "begin": "(#)(for|while)\\b", "beginCaptures": { "0": { "name": "keyword.control.loop.typst" }, "1": { "name": "punctuation.definition.keyword.typst" } }, "end": "\\n|(?=])|(?<=[]}])", "patterns": [ { "include": "#code" } ] }, { "captures": { "1": { "name": "punctuation.definition.keyword.typst" } }, "match": "(#)(break|continue)\\b", "name": "keyword.control.loop.typst" }, { "begin": "(#)(import|include|export)\\b", "beginCaptures": { "0": { "name": "keyword.control.import.typst" }, "1": { "name": "punctuation.definition.keyword.typst" } }, "end": "\\n|(;)|(?=])", "endCaptures": { "1": { "name": "punctuation.terminator.statement.typst" } }, "patterns": [ { "include": "#code" } ] }, { "captures": { "1": { "name": "punctuation.definition.keyword.typst" } }, "match": "(#)(return)\\b", "name": "keyword.control.flow.typst" }, { "captures": { "2": { "name": "punctuation.definition.function.typst" } }, "match": "((#)[_[:alpha:]][-_[:alnum:]]*!?)(?=[(\\[])", "name": "entity.name.function.typst" }, { "begin": "(?<=#[_[:alpha:]][-_[:alnum:]]*!?)\\(", "captures": { "0": { "name": "punctuation.definition.group.typst" } }, "end": "\\)", "patterns": [ { "include": "#arguments" } ] }, { "captures": { "1": { "name": "punctuation.definition.variable.typst" } }, "match": "(#)[_[:alpha:]][-._[:alnum:]]*", "name": "entity.other.interpolated.typst" }, { "begin": "#", "end": "\\s", "name": "meta.block.content.typst", "patterns": [ { "include": "#code" } ] } ] } }, "scopeName": "source.typst" }