# [PackageDev] target_format: plist, ext: tmLanguage name: Vue HTML scopeName: text.html.vue-html fileTypes: [] uuid: ca2e4260-5d62-45bf-8cf1-d8b5cc19c8f8 patterns: - include: source.vue#vue-interpolations - name: meta.tag.any.html begin: (<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*>) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: support.class.component.html } end: (>)(<)(/)(\2)(>) endCaptures: '1': { name: punctuation.definition.tag.end.html } '2': { name: punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html } '3': { name: punctuation.definition.tag.begin.html } '4': { name: support.class.component.html } '5': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.any.html begin: (<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*>) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.html } end: (>)(<)(/)(\2)(>) endCaptures: '1': { name: punctuation.definition.tag.end.html } '2': { name: punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html } '3': { name: punctuation.definition.tag.begin.html } '4': { name: entity.name.tag.html } '5': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.preprocessor.xml.html begin: (<\?)(xml) end: (\?>) captures: '1': { name: punctuation.definition.tag.html } '2': { name: entity.name.tag.xml.html } patterns: - include: '#tag-generic-attribute' - include: '#string-double-quoted' - include: '#string-single-quoted' - name: comment.block.html begin: captures: '0': { name: punctuation.definition.comment.html } - name: meta.tag.sgml.html begin: ' captures: '0': { name: punctuation.definition.tag.html } patterns: - name: meta.tag.sgml.doctype.html begin: (?i:DOCTYPE) end: (?=>) captures: '1': { name: entity.name.tag.doctype.html } patterns: - name: string.quoted.double.doctype.identifiers-and-DTDs.html match: '"[^">]*"' - name: constant.other.inline-data.html begin: \[CDATA\[ end: ']](?=>)' - name: invalid.illegal.bad-comments-or-CDATA.html match: (\s*)(?!--|>)\S(\s*) - name: meta.tag.block.any.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.block.any.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.structure.any.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } captures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.structure.any.html } patterns: - include: '#tag-stuff' - name: meta.tag.block.any.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.inline.any.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - name: meta.tag.other.html begin: () endCaptures: '1': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - include: '#entities' - name: invalid.illegal.incomplete.html match: <> - name: invalid.illegal.bad-angle-bracket.html match: < repository: entities: patterns: - name: constant.character.entity.html match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) captures: '1': { name: punctuation.definition.entity.html } '3': { name: punctuation.definition.entity.html } - name: invalid.illegal.bad-ampersand.html match: '&' string-double-quoted: name: string.quoted.double.html begin: '"' beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: '"' endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.vue#vue-interpolations - include: '#entities' string-single-quoted: name: string.quoted.single.html begin: "'" beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: "'" endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.vue#vue-interpolations - include: '#entities' tag-generic-attribute: name: entity.other.attribute-name.html match: (?<=[^=])\b([a-zA-Z0-9:\-_]+) tag-id-attribute: name: meta.attribute-with-value.id.html begin: \b(id)\b\s*(=) end: (?!\G)(?<='|"|[^\s<>/]) captures: '1': { name: entity.other.attribute-name.id.html } '2': { name: punctuation.separator.key-value.html } patterns: - name: string.quoted.double.html contentName: meta.toc-list.id.html begin: '"' beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: '"' endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.vue#vue-interpolations - include: '#entities' - name: string.quoted.single.html contentName: meta.toc-list.id.html begin: "'" beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: "'" endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.vue#vue-interpolations - include: '#entities' - name: string.unquoted.html match: (?<==)(?:[^\s<>/'"]|/(?!>))+ captures: '0': { name: meta.toc-list.id.html } tag-stuff: patterns: - include: '#vue-directives' - include: '#tag-id-attribute' - include: '#tag-generic-attribute' - include: '#string-double-quoted' - include: '#string-single-quoted' - include: '#unquoted-attribute' unquoted-attribute: name: string.unquoted.html match: (?<==)(?:[^\s<>/'"]|/(?!>))+ vue-directives: name: meta.directive.vue begin: (?:\b(v-)|(:|@|#))([a-zA-Z0-9\-_]+)(?:\:([a-zA-Z\-_]+))?(?:\.([a-zA-Z\-_]+))*\s*(=) end: (?<='|")|(?=[\s<>`]) captures: '1': { name: entity.other.attribute-name.html } '2': { name: punctuation.separator.key-value.html } '3': { name: entity.other.attribute-name.html } '4': { name: entity.other.attribute-name.html } '5': { name: entity.other.attribute-name.html } '6': { name: punctuation.separator.key-value.html } patterns: - name: source.directive.vue begin: '`' beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: '`' endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.js#expression - name: source.directive.vue begin: '"' beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: '"' endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.js#expression - name: source.directive.vue begin: "'" beginCaptures: '0': { name: punctuation.definition.string.begin.html } end: "'" endCaptures: '0': { name: punctuation.definition.string.end.html } patterns: - include: source.js#expression