253 lines
9 KiB
YAML
253 lines
9 KiB
YAML
# [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:-]*)(?=[^>]*></\2>)
|
|
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:-]*)(?=[^>]*></\2>)
|
|
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: <!--
|
|
end: -->
|
|
captures:
|
|
'0': { name: punctuation.definition.comment.html }
|
|
- name: meta.tag.sgml.html
|
|
begin: <!
|
|
end: '>'
|
|
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: (</?)([A-Z][a-zA-Z0-9:-]*\b)
|
|
beginCaptures:
|
|
'1': { name: punctuation.definition.tag.begin.html }
|
|
'2': { name: support.class.component.html }
|
|
end: (>)
|
|
endCaptures:
|
|
'1': { name: punctuation.definition.tag.end.html }
|
|
patterns:
|
|
- include: '#tag-stuff'
|
|
- name: meta.tag.block.any.html
|
|
begin: (</?)([a-z][a-zA-Z0-9:-]*\b)
|
|
beginCaptures:
|
|
'1': { name: punctuation.definition.tag.begin.html }
|
|
'2': { name: entity.name.tag.block.any.html }
|
|
end: (>)
|
|
endCaptures:
|
|
'1': { name: punctuation.definition.tag.end.html }
|
|
patterns:
|
|
- include: '#tag-stuff'
|
|
- name: meta.tag.structure.any.html
|
|
begin: (</?)((?i:body|head|html)\b)
|
|
end: (>)
|
|
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: (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\b)
|
|
beginCaptures:
|
|
'1': { name: punctuation.definition.tag.begin.html }
|
|
'2': { name: entity.name.tag.block.any.html }
|
|
end: (>)
|
|
endCaptures:
|
|
'1': { name: punctuation.definition.tag.end.html }
|
|
patterns:
|
|
- include: '#tag-stuff'
|
|
- name: meta.tag.inline.any.html
|
|
begin: (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\b)
|
|
beginCaptures:
|
|
'1': { name: punctuation.definition.tag.begin.html }
|
|
'2': { name: entity.name.tag.inline.any.html }
|
|
end: (/?>)
|
|
endCaptures:
|
|
'1': { name: punctuation.definition.tag.end.html }
|
|
patterns:
|
|
- include: '#tag-stuff'
|
|
- name: meta.tag.other.html
|
|
begin: (</?)([a-zA-Z0-9:-]+)
|
|
beginCaptures:
|
|
'1': { name: punctuation.definition.tag.begin.html }
|
|
'2': { name: entity.name.tag.other.html }
|
|
end: (/?>)
|
|
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
|