[html] Please provide a built-in HTML.tmLanguage file #543

This commit is contained in:
Martin Aeschlimann 2015-12-02 17:41:14 +01:00
parent 7075821a2b
commit 1b72099996
3 changed files with 883 additions and 1 deletions

View file

@ -0,0 +1,22 @@
// ATTENTION - THIS DIRECTORY CONTAINS THIRD PARTY OPEN SOURCE MATERIALS:
[{
"name": "textmate/html.tmbundle",
"version": "0.0.0",
"license": "TextMate Bundle License",
"repositoryURL": "https://github.com/textmate/html.tmbundle",
"licenseDetail": [
"Copyright (c) textmate-html.tmbundle project authors",
"",
"If not otherwise specified (see below), files in this repository fall under the following license:",
"",
"Permission to copy, use, modify, sell and distribute this",
"software is granted. This software is provided \"as is\" without",
"express or implied warranty, and with no claim as to its",
"suitability for any purpose.",
"",
"An exception is made for files in readable text which contain their own license information,",
"or files where an accompanying file exists (in the same directory) with a \"-license\" suffix added",
"to the base-name name of the original file, and an extension of txt, html, or similar. For example",
"\"tidy\" is accompanied by \"tidy-license.txt\"."
]
}]

View file

@ -2,5 +2,10 @@
"name": "html",
"version": "0.1.0",
"publisher": "vscode",
"engines": { "vscode": "*" }
"engines": { "vscode": "*" },
"grammars": [{
// not used yet
"scopeName": "text.html.basic",
"path": "./syntaxes/LESS.tmLanguage"
}]
}

View file

@ -0,0 +1,855 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>html</string>
<string>htm</string>
<string>shtml</string>
<string>xhtml</string>
<string>inc</string>
<string>tmpl</string>
<string>tpl</string>
</array>
<key>firstLineMatch</key>
<string>&lt;(?i:(!DOCTYPE\s*)?html)</string>
<key>injections</key>
<dict>
<key>R:text.html - comment.block</key>
<dict>
<key>comment</key>
<string>Use R: to ensure this matches after any other injections.</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>&lt;</string>
<key>name</key>
<string>invalid.illegal.bad-angle-bracket.html</string>
</dict>
</array>
</dict>
</dict>
<key>keyEquivalent</key>
<string>^~H</string>
<key>name</key>
<string>HTML</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.html</string>
</dict>
</dict>
<key>end</key>
<string>(&gt;(&lt;)/)(\2)(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.scope.between-tag-pair.html</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.html</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>name</key>
<string>meta.tag.any.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;\?)(xml)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.xml.html</string>
</dict>
</dict>
<key>end</key>
<string>(\?&gt;)</string>
<key>name</key>
<string>meta.tag.preprocessor.xml.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-generic-attribute</string>
</dict>
<dict>
<key>include</key>
<string>#string-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#string-single-quoted</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>&lt;!--</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.html</string>
</dict>
</dict>
<key>end</key>
<string>--\s*&gt;</string>
<key>name</key>
<string>comment.block.html</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>--</string>
<key>name</key>
<string>invalid.illegal.bad-comments-or-CDATA.html</string>
</dict>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>&lt;!</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>end</key>
<string>&gt;</string>
<key>name</key>
<string>meta.tag.sgml.html</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?i:DOCTYPE)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.tag.doctype.html</string>
</dict>
</dict>
<key>end</key>
<string>(?=&gt;)</string>
<key>name</key>
<string>meta.tag.sgml.doctype.html</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>"[^"&gt;]*"</string>
<key>name</key>
<string>string.quoted.double.doctype.identifiers-and-DTDs.html</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\[CDATA\[</string>
<key>end</key>
<string>]](?=&gt;)</string>
<key>name</key>
<string>constant.other.inline-data.html</string>
</dict>
<dict>
<key>match</key>
<string>(\s*)(?!--|&gt;)\S(\s*)</string>
<key>name</key>
<string>invalid.illegal.bad-comments-or-CDATA.html</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>begin</key>
<string>(?:^\s+)?(&lt;)((?i:style))\b(?![^&gt;]*/&gt;)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.style.html</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>end</key>
<string>(&lt;/)((?i:style))(&gt;)(?:\s*\n)?</string>
<key>name</key>
<string>source.css.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
<dict>
<key>begin</key>
<string>(&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>end</key>
<string>(?=&lt;/(?i:style))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>source.css</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?![^&gt;]*(?i:type.?=.?text/((?!javascript).*)))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.html</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;=&lt;/(script|SCRIPT))(&gt;)(?:\s*\n)?</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>name</key>
<string>source.js.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.html</string>
</dict>
</dict>
<key>end</key>
<string>(&lt;/)((?i:script))</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.js</string>
</dict>
</dict>
<key>match</key>
<string>(//).*?((?=&lt;/script)|$\n?)</string>
<key>name</key>
<string>comment.line.double-slash.js</string>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.js</string>
</dict>
</dict>
<key>end</key>
<string>\*/|(?=&lt;/script)</string>
<key>name</key>
<string>comment.block.js</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;/?)((?i:body|head|html)\b)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.structure.any.html</string>
</dict>
</dict>
<key>end</key>
<string>(&gt;)</string>
<key>name</key>
<string>meta.tag.structure.any.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;/?)((?i:address|blockquote|dd|div|section|article|aside|header|footer|nav|menu|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|pre)\b)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.block.any.html</string>
</dict>
</dict>
<key>end</key>
<string>(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.html</string>
</dict>
</dict>
<key>name</key>
<string>meta.tag.block.any.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;/?)((?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)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.inline.any.html</string>
</dict>
</dict>
<key>end</key>
<string>((?: ?/)?&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.html</string>
</dict>
</dict>
<key>name</key>
<string>meta.tag.inline.any.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;/?)([a-zA-Z0-9:]+)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.other.html</string>
</dict>
</dict>
<key>end</key>
<string>(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.html</string>
</dict>
</dict>
<key>name</key>
<string>meta.tag.other.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#entities</string>
</dict>
<dict>
<key>match</key>
<string>&lt;&gt;</string>
<key>name</key>
<string>invalid.illegal.incomplete.html</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>embedded-code</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#smarty</string>
</dict>
<dict>
<key>include</key>
<string>#python</string>
</dict>
</array>
</dict>
<key>entities</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.html</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.html</string>
</dict>
</dict>
<key>match</key>
<string>(&amp;)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)</string>
<key>name</key>
<string>constant.character.entity.html</string>
</dict>
<dict>
<key>match</key>
<string>&amp;</string>
<key>name</key>
<string>invalid.illegal.bad-ampersand.html</string>
</dict>
</array>
</dict>
<key>python</key>
<dict>
<key>begin</key>
<string>(?:^\s*)&lt;\?python(?!.*\?&gt;)</string>
<key>end</key>
<string>\?&gt;(?:\s*$\n)?</string>
<key>name</key>
<string>source.python.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.python</string>
</dict>
</array>
</dict>
<key>smarty</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(\{(literal)\})</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>source.smarty.embedded.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.function.built-in.smarty</string>
</dict>
</dict>
<key>end</key>
<string>(\{/(literal)\})</string>
</dict>
<dict>
<key>begin</key>
<string>{{|{</string>
<key>disabled</key>
<integer>1</integer>
<key>end</key>
<string>}}|}</string>
<key>name</key>
<string>source.smarty.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.smarty</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>string-double-quoted</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.html</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.html</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>#entities</string>
</dict>
</array>
</dict>
<key>string-single-quoted</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.html</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.html</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>#entities</string>
</dict>
</array>
</dict>
<key>tag-generic-attribute</key>
<dict>
<key>match</key>
<string>(?&lt;=[^=])\b([a-zA-Z0-9:-]+)</string>
<key>name</key>
<string>entity.other.attribute-name.html</string>
</dict>
<key>tag-id-attribute</key>
<dict>
<key>begin</key>
<string>\b(id)\b\s*(=)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.id.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.key-value.html</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)(?&lt;='|"|[^\s&lt;&gt;/])</string>
<key>name</key>
<string>meta.attribute-with-value.id.html</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.html</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.toc-list.id.html</string>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.html</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>#entities</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.html</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.toc-list.id.html</string>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.html</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>#entities</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.toc-list.id.html</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;==)(?:[^\s&lt;&gt;/'"]|/(?!&gt;))+</string>
<key>name</key>
<string>string.unquoted.html</string>
</dict>
</array>
</dict>
<key>tag-stuff</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-id-attribute</string>
</dict>
<dict>
<key>include</key>
<string>#tag-generic-attribute</string>
</dict>
<dict>
<key>include</key>
<string>#string-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#string-single-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#embedded-code</string>
</dict>
<dict>
<key>include</key>
<string>#unquoted-attribute</string>
</dict>
</array>
</dict>
<key>unquoted-attribute</key>
<dict>
<key>match</key>
<string>(?&lt;==)(?:[^\s&lt;&gt;/'"]|/(?!&gt;))+</string>
<key>name</key>
<string>string.unquoted.html</string>
</dict>
</dict>
<key>scopeName</key>
<string>text.html.basic</string>
<key>uuid</key>
<string>17994EC8-6B1D-11D9-AC3A-000D93589AF6</string>
</dict>
</plist>