1237 lines
32 KiB
JSON
1237 lines
32 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
|
"name": "vue",
|
|
"scopeName": "source.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "text.html.basic#comment"
|
|
},
|
|
{
|
|
"include": "#self-closing-tag"
|
|
},
|
|
{
|
|
"begin": "(<)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
}
|
|
},
|
|
"end": "(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)md\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "text.html.markdown",
|
|
"patterns": [
|
|
{
|
|
"include": "text.html.markdown"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)html\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "text.html.derivative",
|
|
"patterns": [
|
|
{
|
|
"include": "#html-stuff"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)pug\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "text.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "text.pug"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)stylus\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.stylus",
|
|
"patterns": [
|
|
{
|
|
"include": "source.stylus"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)postcss\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.postcss",
|
|
"patterns": [
|
|
{
|
|
"include": "source.postcss"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)sass\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.sass",
|
|
"patterns": [
|
|
{
|
|
"include": "source.sass"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)css\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.css",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)scss\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.css.scss",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css.scss"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)less\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.css.less",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css.less"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)js\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.js",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)ts\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.ts",
|
|
"patterns": [
|
|
{
|
|
"include": "source.ts"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsx\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.js.jsx",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js.jsx"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)tsx\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.tsx",
|
|
"patterns": [
|
|
{
|
|
"include": "source.tsx"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.json",
|
|
"patterns": [
|
|
{
|
|
"include": "source.json"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsonc\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.json.comments",
|
|
"patterns": [
|
|
{
|
|
"include": "source.json.comments"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json5\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.json5",
|
|
"patterns": [
|
|
{
|
|
"include": "source.json5"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)yaml\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.yaml",
|
|
"patterns": [
|
|
{
|
|
"include": "source.yaml"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)toml\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.toml",
|
|
"patterns": [
|
|
{
|
|
"include": "source.toml"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)(gql|graphql)\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.graphql",
|
|
"patterns": [
|
|
{
|
|
"include": "source.graphql"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)vue\\b\\2)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "source.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "source.vue"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(template)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/template\\b)",
|
|
"name": "text.html.derivative",
|
|
"patterns": [
|
|
{
|
|
"include": "#html-stuff"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(script)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/script\\b)",
|
|
"name": "source.js",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(style)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/style\\b)",
|
|
"name": "source.css",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9:-]+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.tag.$1.html.vue"
|
|
}
|
|
},
|
|
"end": "(</)(\\1)\\s*(?=>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"begin": "(?<=>)",
|
|
"end": "(?=<\\/)",
|
|
"name": "text"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"repository": {
|
|
"self-closing-tag": {
|
|
"begin": "(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"end": "(/>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"name": "self-closing-tag",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
}
|
|
]
|
|
},
|
|
"template-tag": {
|
|
"patterns": [
|
|
{
|
|
"include": "#template-tag-1"
|
|
},
|
|
{
|
|
"include": "#template-tag-2"
|
|
}
|
|
]
|
|
},
|
|
"template-tag-1": {
|
|
"begin": "(<)(template)\\b(>)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"end": "(/?>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.template-tag.start",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G",
|
|
"end": "(?=/>)|((</)(template)\\b)",
|
|
"endCaptures": {
|
|
"2": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.tag.$3.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.template-tag.end",
|
|
"patterns": [
|
|
{
|
|
"include": "#html-stuff"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"template-tag-2": {
|
|
"begin": "(<)(template)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.tag.$2.html.vue"
|
|
}
|
|
},
|
|
"end": "(/?>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.template-tag.start",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G",
|
|
"end": "(?=/>)|((</)(template)\\b)",
|
|
"endCaptures": {
|
|
"2": {
|
|
"name": "punctuation.definition.tag.begin.html.vue"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.tag.$3.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.template-tag.end",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-stuff"
|
|
},
|
|
{
|
|
"include": "#html-stuff"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"html-stuff": {
|
|
"patterns": [
|
|
{
|
|
"include": "#template-tag"
|
|
},
|
|
{
|
|
"include": "text.html.derivative"
|
|
},
|
|
{
|
|
"include": "text.html.basic"
|
|
}
|
|
]
|
|
},
|
|
"tag-stuff": {
|
|
"begin": "\\G",
|
|
"end": "(?=/>)|(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.tag-stuff",
|
|
"patterns": [
|
|
{
|
|
"include": "#vue-directives"
|
|
},
|
|
{
|
|
"include": "text.html.basic#attribute"
|
|
}
|
|
]
|
|
},
|
|
"vue-directives": {
|
|
"patterns": [
|
|
{
|
|
"include": "#vue-directives-control"
|
|
},
|
|
{
|
|
"include": "#vue-directives-style-attr"
|
|
},
|
|
{
|
|
"include": "#vue-directives-original"
|
|
},
|
|
{
|
|
"include": "#vue-directives-generic-attr"
|
|
}
|
|
]
|
|
},
|
|
"vue-directives-original": {
|
|
"begin": "(?:\\b(v-)|(:)|(@)|(#))(\\[?)([\\w\\-]*)(\\]?)(?:\\.([\\w\\-]*))*",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.other.attribute-name.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.attribute-shorthand.bind.html.vue"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.attribute-shorthand.event.html.vue"
|
|
},
|
|
"4": {
|
|
"name": "punctuation.attribute-shorthand.slot.html.vue"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
},
|
|
"6": {
|
|
"name": "entity.other.attribute-name.html.vue"
|
|
},
|
|
"7": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
},
|
|
"8": {
|
|
"name": "entity.other.attribute-name.html.vue"
|
|
},
|
|
"9": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
}
|
|
},
|
|
"end": "(?=\\s*+[^=\\s])",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.end.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.attribute.directive.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "#vue-directives-expression"
|
|
}
|
|
]
|
|
},
|
|
"vue-directives-control": {
|
|
"begin": "(v-for)|(v-if|v-else-if|v-else)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.loop.vue"
|
|
},
|
|
"2": {
|
|
"name": "keyword.control.conditional.vue"
|
|
}
|
|
},
|
|
"end": "(?=\\s*+[^=\\s])",
|
|
"name": "meta.attribute.directive.control.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "#vue-directives-expression"
|
|
}
|
|
]
|
|
},
|
|
"vue-directives-expression": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(=)\\s*('|\"|`)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.string.begin.html.vue"
|
|
}
|
|
},
|
|
"end": "(\\2)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.end.html.vue"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"begin": "(?<=('|\"|`))",
|
|
"end": "(?=\\1)",
|
|
"name": "source.ts.embedded.html.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "source.ts"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(=)\\s*(?=[^'\"`])",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
}
|
|
},
|
|
"end": "(?=(\\s|>|\\/>))",
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=[^'\"`])",
|
|
"end": "(?=(\\s|>|\\/>))",
|
|
"name": "source.ts.embedded.html.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "source.ts"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"vue-directives-style-attr": {
|
|
"begin": "\\b(style)\\s*(=)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.other.attribute-name.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
}
|
|
},
|
|
"end": "(?<='|\")",
|
|
"name": "meta.attribute.style.vue",
|
|
"patterns": [
|
|
{
|
|
"comment": "Copy from source.css#rule-list-innards",
|
|
"begin": "('|\")",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.begin.html.vue"
|
|
}
|
|
},
|
|
"end": "(\\1)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.end.html.vue"
|
|
}
|
|
},
|
|
"name": "source.css.embedded.html.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css#comment-block"
|
|
},
|
|
{
|
|
"include": "source.css#escapes"
|
|
},
|
|
{
|
|
"include": "source.css#font-features"
|
|
},
|
|
{
|
|
"match": "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
|
|
"name": "variable.css"
|
|
},
|
|
{
|
|
"begin": "(?<![-a-zA-Z])(?=[-a-zA-Z])",
|
|
"end": "$|(?![-a-zA-Z])",
|
|
"name": "meta.property-name.css",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css#property-names"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"comment": "Modify end to fix #199. TODO: handle ' character.",
|
|
"begin": "(:)\\s*",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.key-value.css"
|
|
}
|
|
},
|
|
"end": "\\s*(;)|\\s*(?='|\")",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.terminator.rule.css"
|
|
}
|
|
},
|
|
"contentName": "meta.property-value.css",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css#comment-block"
|
|
},
|
|
{
|
|
"include": "source.css#property-values"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": ";",
|
|
"name": "punctuation.terminator.rule.css"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"vue-directives-generic-attr": {
|
|
"begin": "\\b(generic)\\s*(=)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.other.attribute-name.html.vue"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.separator.key-value.html.vue"
|
|
}
|
|
},
|
|
"end": "(?<='|\")",
|
|
"name": "meta.attribute.generic.vue",
|
|
"patterns": [
|
|
{
|
|
"begin": "('|\")",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.begin.html.vue"
|
|
}
|
|
},
|
|
"end": "(\\1)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.end.html.vue"
|
|
}
|
|
},
|
|
"name": "meta.type.parameters.vue",
|
|
"comment": "https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",
|
|
"patterns": [
|
|
{
|
|
"include": "source.ts#comment"
|
|
},
|
|
{
|
|
"name": "storage.modifier.ts",
|
|
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
|
|
},
|
|
{
|
|
"include": "source.ts#type"
|
|
},
|
|
{
|
|
"include": "source.ts#punctuation-comma"
|
|
},
|
|
{
|
|
"name": "keyword.operator.assignment.ts",
|
|
"match": "(=)(?!>)"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"vue-interpolations": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(\\{\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.interpolation.begin.html.vue"
|
|
}
|
|
},
|
|
"end": "(\\}\\})",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.interpolation.end.html.vue"
|
|
}
|
|
},
|
|
"name": "expression.embedded.vue",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G",
|
|
"end": "(?=\\}\\})",
|
|
"name": "source.ts.embedded.html.vue",
|
|
"patterns": [
|
|
{
|
|
"include": "source.ts"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|