# [PackageDev] target_format: plist, ext: tmLanguage name: Vue scopeName: source.vue fileTypes: [vue] uuid: 5512c10d-4cc5-434c-b8fc-53b912f55ab3 patterns: # comment - name: comment.block.html begin: captures: '0': { name: punctuation.definition.comment.html } # template - single line # ) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) # jade / pug - begin: (<)(template)\b(?=[^>]*lang=('jade'|"jade"|'pug'|"pug"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.pug begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: text.pug # haml - begin: (<)(template)\b(?=[^>]*lang=('haml'|"haml"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.haml begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: text.haml # slim - begin: (<)(template)\b(?=[^>]*lang=('slim'|"slim"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.slim begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: text.slim # slm - begin: (<)(template)\b(?=[^>]*lang=('slm'|"slm"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.jade.slm begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: text.jade.slm # liquid - begin: (<)(template)\b(?=[^>]*lang=('liquid'|"liquid"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.html.liquid begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: text.html.liquid # html - begin: (<)(template)(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } end: ^() endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.template.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: text.html.vue-html begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=^) patterns: - include: text.html.vue-html # style - single line # - begin: (<)(style)(?=[^>]*>[^/>]*) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) # sass / scss - begin: (<)(style)\b(?=[^>]*lang=('sass'|"sass"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.sass begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.sass - begin: (<)(style)\b(?=[^>]*lang=('scss'|"scss"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.css.scss begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.css.scss # less - begin: (<)(style)\b(?=[^>]*lang=('less'|"less"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.css.less begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.css.less # stylus - begin: (<)(style)\b(?=[^>]*lang=('stylus'|"stylus"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.stylus begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.stylus # postcss - begin: (<)(style)\b(?=[^>]*lang=('postcss'|"postcss"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.css.postcss begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.css.postcss # sugarss - begin: (<)(style)\b(?=[^>]*lang=(['"]sss['"]))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.css.sugarss begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.css.sugarss # css - begin: (<)(style)(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.style.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.css begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.css # script - single line # - begin: (<)(script)(?=[^>]*>[^/>]*) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) # ts - begin: (<)(script)\b(?=[^>]*lang=('ts'|"ts"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.ts begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.ts # coffee - begin: (<)(script)\b(?=[^>]*lang=('coffee'|"coffee"))(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.coffee begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.coffee # js - begin: (<)(script)(?![^/>]*/>\s*$) beginCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } end: () endCaptures: '1': { name: punctuation.definition.tag.begin.html } '2': { name: entity.name.tag.script.html } '3': { name: punctuation.definition.tag.end.html } patterns: - include: '#tag-stuff' - contentName: source.js begin: (>) beginCaptures: '1': { name: punctuation.definition.tag.end.html } end: (?=) patterns: - include: source.js # Repository 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: '#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: '#vue-interpolations' - include: '#entities' tag-generic-attribute: name: entity.other.attribute-name.html match: \b([a-zA-Z\-:_]+) tag-id-attribute: name: meta.attribute-with-value.id.html begin: \b(id)\b\s*(=) end: (?<='|") 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: '#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: '#vue-interpolations' - include: '#entities' tag-stuff: patterns: - include: '#vue-directives' - include: '#tag-id-attribute' - include: '#tag-generic-attribute' - include: '#string-double-quoted' - include: '#string-single-quoted' 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 vue-interpolations: patterns: - name: expression.embedded.vue begin: \{\{\{? beginCaptures: '0': { name: punctuation.definition.generic.begin.html } end: \}\}\}? endCaptures: '0': { name: punctuation.definition.generic.end.html } patterns: - include: source.js#expression