{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "Vue", "scopeName": "text.html.vue", "patterns": [ { "include": "#vue-comments" }, { "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": "()", "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": "(?!template(?![A-Za-z0-9:-]))([A-Za-z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)html\\b\\2)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "contentName": "text.html.derivative", "patterns": [ { "include": "#tag-stuff" }, { "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)(?=[^\\n]*<\\/script[\\s>])", "end": "(?=<\\/script[\\s>])", "name": "source.ts", "patterns": [ { "include": "source.ts" } ] }, { "begin": "(?<=>)", "while": "^(?!\\s*<\\/script[\\s>])", "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": "()", "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": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)(?=[^\\n]*<\\/script[\\s>])", "end": "(?=<\\/script[\\s>])", "name": "source.tsx", "patterns": [ { "include": "source.tsx" } ] }, { "begin": "(?<=>)", "while": "^(?!\\s*<\\/script[\\s>])", "name": "source.tsx", "patterns": [ { "include": "source.tsx" } ] } ] }, { "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)coffee\\b\\2)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "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.coffee", "patterns": [ { "include": "source.coffee" } ] } ] }, { "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json\\b\\2)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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": "()", "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.vue", "patterns": [ { "include": "text.html.vue" } ] } ] }, { "begin": "(template)(?=\\s|\\/?>)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/template[\\s>])", "name": "text.html.derivative", "patterns": [ { "include": "#html-stuff" } ] } ] }, { "begin": "(script)(?=\\s|\\/?>)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "patterns": [ { "include": "#multi-line-script-tag-stuff" } ] }, { "begin": "(style)(?=\\s|\\/?>)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.$2.html.vue" } }, "patterns": [ { "include": "#multi-line-style-tag-stuff" } ] }, { "begin": "([a-zA-Z0-9:-]+)", "beginCaptures": { "1": { "name": "entity.name.tag.$1.html.vue" } }, "end": "()", "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": { "multi-line-script-tag-stuff": { "begin": "\\G", "end": "(?=<\\/script[\\s>])", "patterns": [ { "begin": "\\G(?!\\blang\\s*=\\s*(?:['\"]?)(?:ts|tsx|jsx|coffee)\\b)", "end": "(?=\\blang\\s*=\\s*(?:['\"]?)(?:ts|tsx|jsx|coffee)\\b)|(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.html.vue" } }, "name": "meta.tag-stuff", "patterns": [ { "include": "#vue-directives" }, { "include": "text.html.basic#attribute" } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)ts\\b)", "end": "(?=<\\/script[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)(?=[^\\n]*<\\/script[\\s>])", "end": "(?=<\\/script[\\s>])", "name": "source.ts", "patterns": [ { "include": "source.ts" } ] }, { "begin": "(?<=>)", "while": "^(?!\\s*<\\/script[\\s>])", "name": "source.ts", "patterns": [ { "include": "source.ts" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)tsx\\b)", "end": "(?=<\\/script[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)(?=[^\\n]*<\\/script[\\s>])", "end": "(?=<\\/script[\\s>])", "name": "source.tsx", "patterns": [ { "include": "source.tsx" } ] }, { "begin": "(?<=>)", "while": "^(?!\\s*<\\/script[\\s>])", "name": "source.tsx", "patterns": [ { "include": "source.tsx" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)jsx\\b)", "end": "(?=<\\/script[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/script[\\s>])", "name": "source.js.jsx", "patterns": [ { "include": "source.js.jsx" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)coffee\\b)", "end": "(?=<\\/script[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/script[\\s>])", "name": "source.coffee", "patterns": [ { "include": "source.coffee" } ] } ] }, { "begin": "(?<=>)", "end": "(?=<\\/script[\\s>])", "name": "source.js", "patterns": [ { "include": "source.js" } ] } ] }, "multi-line-style-tag-stuff": { "begin": "\\G", "end": "(?=<\\/style[\\s>])", "patterns": [ { "begin": "\\G(?!\\blang\\s*=\\s*(?:['\"]?)(?:scss|stylus|less|postcss)\\b)", "end": "(?=\\blang\\s*=\\s*(?:['\"]?)(?:scss|stylus|less|postcss)\\b)|(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.html.vue" } }, "name": "meta.tag-stuff", "patterns": [ { "include": "#vue-directives" }, { "include": "text.html.basic#attribute" } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)scss\\b)", "end": "(?=<\\/style[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/style[\\s>])", "name": "source.css.scss", "patterns": [ { "include": "source.css.scss" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)stylus\\b)", "end": "(?=<\\/style[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/style[\\s>])", "name": "source.stylus", "patterns": [ { "include": "source.stylus" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)less\\b)", "end": "(?=<\\/style[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/style[\\s>])", "name": "source.css.less", "patterns": [ { "include": "source.css.less" } ] } ] }, { "begin": "(?=\\blang\\s*=\\s*(?:['\"]?)postcss\\b)", "end": "(?=<\\/style[\\s>])", "patterns": [ { "include": "#tag-stuff" }, { "begin": "(?<=>)", "end": "(?=<\\/style[\\s>])", "name": "source.postcss", "patterns": [ { "include": "source.postcss" } ] } ] }, { "begin": "(?<=>)", "end": "(?=<\\/style[\\s>])", "name": "source.css", "patterns": [ { "include": "source.css" } ] } ] }, "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" } ] }, "capitalized-tag": { "begin": "(<)([A-Z][a-zA-Z0-9:-]*)(?=\\s|/?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.html.vue" }, "2": { "name": "entity.name.tag.html.vue" } }, "end": "/?>", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.html.vue" } }, "name": "meta.tag.structure.$2.start.html.vue", "patterns": [ { "begin": "\\G", "end": "(?=/?>)", "patterns": [ { "include": "#vue-directives" }, { "include": "text.html.basic#attribute" } ] } ] }, "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": "(?=/>)|((]))", "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)(?=\\s|\\/?>)", "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": "(?=/>)|((]))", "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": "#capitalized-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-generic-attr" }, { "include": "#vue-directives-style-attr" }, { "include": "#vue-directives-original" } ] }, "vue-directives-original": { "begin": "(?:(?:(v-[\\w-]+)(:)?)|([:\\.])|(@)|(#))(?:(?:(\\[)([^\\]]*)(\\]))|([\\w-]+))?", "beginCaptures": { "1": { "name": "entity.other.attribute-name.html.vue" }, "2": { "name": "punctuation.separator.key-value.html.vue" }, "3": { "name": "punctuation.attribute-shorthand.bind.html.vue" }, "4": { "name": "punctuation.attribute-shorthand.event.html.vue" }, "5": { "name": "punctuation.attribute-shorthand.slot.html.vue" }, "6": { "name": "punctuation.separator.key-value.html.vue" }, "7": { "name": "source.ts.embedded.html.vue", "patterns": [ { "include": "source.ts#expression" } ] }, "8": { "name": "punctuation.separator.key-value.html.vue" }, "9": { "name": "entity.other.attribute-name.html.vue" } }, "end": "(?=\\s*[^=\\s])", "name": "meta.attribute.directive.vue", "patterns": [ { "match": "(\\.)([\\w-]*)", "1": { "name": "punctuation.separator.key-value.html.vue" }, "2": { "name": "entity.other.attribute-name.html.vue" } }, { "include": "#vue-directives-expression" } ] }, "vue-directives-control": { "begin": "(?:(v-for)|(v-if|v-else-if|v-else))(?=[=/>)\\s])", "beginCaptures": { "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#expression" } ] } ] }, { "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#expression" } ] } ] } ] }, "vue-directives-style-attr": { "begin": "\\b(style)\\s*(=)", "beginCaptures": { "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) (?)" } ] } ] }, "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#expression" } ] } ] } ] }, "vue-comments": { "patterns": [ { "include": "#vue-comments-key-value" }, { "begin": "", "name": "comment.block.vue" } ] }, "vue-comments-key-value": { "begin": "()", "endCaptures": { "1": { "name": "punctuation.definition.comment.vue" } }, "name": "comment.block.vue", "patterns": [ { "include": "source.json#value" } ] } } }