Files
2025-10-15 12:10:56 +02:00

359 lines
7.6 KiB
JSON

{
"name": "WL",
"scopeName": "source.wl",
"fileTypes": ["wl"],
"patterns": [
{
"include": "#comments"
},
{
"include": "#html-tags"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#operators"
},
{
"include": "#system-variables"
},
{
"include": "#functions"
},
{
"include": "#constants"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.block.html.wl",
"begin": "<!--",
"end": "-->",
"patterns": []
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.wl",
"match": "\\b(if|else|while|for|in)\\b"
},
{
"name": "keyword.other.wl",
"match": "\\b(procedure|let|include)\\b"
},
{
"name": "keyword.operator.wl",
"match": "\\b(len|escape)\\b"
}
]
},
"constants": {
"patterns": [
{
"name": "constant.language.wl",
"match": "\\b(none|true|false)\\b"
}
]
},
"strings": {
"patterns": [
{
"name": "string.quoted.double.wl",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.wl",
"match": "\\\\(n|t|r|\"|'|\\\\|x[0-9A-Fa-f]{2})"
}
]
},
{
"name": "string.quoted.single.wl",
"begin": "'",
"end": "'",
"patterns": [
{
"name": "constant.character.escape.wl",
"match": "\\\\(n|t|r|\"|'|\\\\|x[0-9A-Fa-f]{2})"
}
]
}
]
},
"numbers": {
"patterns": [
{
"name": "constant.numeric.float.wl",
"match": "\\b[0-9]+\\.[0-9]+\\b"
},
{
"name": "constant.numeric.integer.wl",
"match": "\\b[0-9]+\\b"
}
]
},
"operators": {
"patterns": [
{
"name": "keyword.operator.append.wl",
"match": "<<"
},
{
"name": "keyword.operator.comparison.wl",
"match": "(==|!=|<=|>=)"
},
{
"name": "keyword.operator.relational.wl",
"match": "(<|>)"
},
{
"name": "keyword.operator.assignment.wl",
"match": "="
},
{
"name": "keyword.operator.arithmetic.wl",
"match": "(\\+|-|\\*|/|%)"
}
]
},
"system-variables": {
"patterns": [
{
"name": "variable.other.system.wl",
"match": "\\$[a-zA-Z_][a-zA-Z0-9_]*"
}
]
},
"functions": {
"patterns": [
{
"name": "entity.name.function.wl",
"match": "\\b[a-zA-Z_][a-zA-Z0-9_]*(?=\\s*\\()"
}
]
},
"html-tags": {
"patterns": [
{
"name": "meta.tag.html.wl",
"begin": "(<)([a-zA-Z][a-zA-Z0-9]*)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.wl"
},
"2": {
"name": "entity.name.tag.wl"
}
},
"end": "(/>)|(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.self-closing.wl"
},
"2": {
"name": "punctuation.definition.tag.end.wl"
}
},
"patterns": [
{
"name": "string.quoted.double.html.wl",
"begin": "\"",
"end": "\"",
"patterns": [
{
"include": "#embedded-expression"
}
]
},
{
"name": "string.quoted.single.html.wl",
"begin": "'",
"end": "'",
"patterns": [
{
"include": "#embedded-expression"
}
]
},
{
"include": "#embedded-expression"
}
]
},
{
"name": "meta.tag.closing.html.wl",
"match": "(</)([a-zA-Z][a-zA-Z0-9]*)(>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.begin.wl"
},
"2": {
"name": "entity.name.tag.wl"
},
"3": {
"name": "punctuation.definition.tag.end.wl"
}
}
}
]
},
"embedded-expression": {
"patterns": [
{
"name": "meta.embedded.block.wl",
"begin": "\\\\\\{",
"end": "\\}",
"patterns": [
{
"include": "#expression-contents"
}
]
},
{
"name": "meta.embedded.wl",
"begin": "\\\\",
"end": "(?=[\\s\"'/>])",
"patterns": [
{
"include": "#expression-contents"
}
]
}
]
},
"expression-contents": {
"patterns": [
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#operators"
},
{
"include": "#system-variables"
},
{
"include": "#functions"
},
{
"include": "#constants"
},
{
"include": "#brackets"
}
]
},
"brackets": {
"patterns": [
{
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#operators"
},
{
"include": "#system-variables"
},
{
"include": "#functions"
},
{
"include": "#constants"
},
{
"include": "#brackets"
}
]
},
{
"begin": "\\{",
"end": "\\}",
"patterns": [
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#operators"
},
{
"include": "#system-variables"
},
{
"include": "#functions"
},
{
"include": "#constants"
},
{
"include": "#brackets"
}
]
},
{
"begin": "\\(",
"end": "\\)",
"patterns": [
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#operators"
},
{
"include": "#system-variables"
},
{
"include": "#functions"
},
{
"include": "#constants"
},
{
"include": "#brackets"
}
]
}
]
}
}
}