提交 7744fff0 编写于 作者: M Martin Aeschlimann

[jade] convert to json: davidrios/jade-tmbundle@7c1304a (2016-04-29)

上级 b770c963
......@@ -4,6 +4,7 @@
"version": "0.0.0",
"license": "MIT",
"repositoryURL": "https://github.com/davidrios/jade-tmbundle",
"description": "The file syntaxes/Jade.json was derived from Jade.tmLanguage in https://github.com/davidrios/jade-tmbundle.",
"licenseDetail": [
"The MIT License (MIT)",
"",
......
......@@ -3,6 +3,9 @@
"version": "0.1.0",
"publisher": "vscode",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js davidrios/jade-tmbundle Syntaxes/Jade.tmLanguage ./syntaxes/Jade.json"
},
"contributes": {
"languages": [{
"id": "jade",
......@@ -13,7 +16,7 @@
"grammars": [{
"language": "jade",
"scopeName": "text.jade",
"path": "./syntaxes/Jade.tmLanguage"
"path": "./syntaxes/Jade.json"
}]
}
}
\ No newline at end of file
{
"fileTypes": [
"jade"
],
"name": "Jade",
"patterns": [
{
"comment": "Doctype declaration.",
"match": "^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",
"name": "meta.tag.sgml.doctype.html"
},
{
"begin": "^(\\s*)//-",
"comment": "Unbuffered (jade-only) comments.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "comment.unbuffered.block.jade"
},
{
"begin": "^(\\s*)//",
"comment": "Buffered (html) comments.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "string.comment.buffered.block.jade",
"patterns": [
{
"captures": {
"1": {
"name": "invalid.illegal.comment.comment.block.jade"
}
},
"comment": "Buffered comments inside buffered comments will generate invalid html.",
"match": "^\\s*(//)(?!-)",
"name": "string.comment.buffered.block.jade"
}
]
},
{
"begin": "^(\\s*)-$",
"comment": "Unbuffered code block.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.js",
"patterns": [
{
"include": "source.js"
}
]
},
{
"begin": "^(\\s*)(script)(?=[.#(\\s])((?![^\\n]*type=)|(?=[^\\n]*(text|application)/javascript))",
"beginCaptures": {
"2": {
"name": "entity.name.tag.script.jade"
}
},
"comment": "Script tag with JavaScript code.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "meta.tag.other",
"patterns": [
{
"begin": "\\G(?=\\()",
"end": "$",
"name": "stuff.tag.script.jade",
"patterns": [
{
"include": "#tag_attributes"
}
]
},
{
"begin": "\\G(?=[.#])",
"end": "$",
"name": "stuff.tag.script.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
},
{
"include": "source.js"
}
]
},
{
"begin": "^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",
"beginCaptures": {
"2": {
"name": "entity.name.tag.script.jade"
}
},
"comment": "Style tag with CSS code.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "meta.tag.other",
"patterns": [
{
"begin": "\\G(?=\\()",
"end": "$",
"name": "stuff.tag.style.jade",
"patterns": [
{
"include": "#tag_attributes"
}
]
},
{
"begin": "\\G(?=[.#])",
"end": "$",
"name": "stuff.tag.style.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
},
{
"include": "source.css"
}
]
},
{
"begin": "^(\\s*):(sass)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.sass.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.sass.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.sass"
}
]
},
{
"begin": "^(\\s*):(less)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.less.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.less.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.less"
}
]
},
{
"begin": "^(\\s*):(stylus)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.stylus.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.stylus"
}
]
},
{
"begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.coffeescript.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.coffeescript.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.coffee"
}
]
},
{
"begin": "^(\\s*)((:(?=.))|(:$))",
"beginCaptures": {
"4": {
"name": "invalid.illegal.empty.generic.filter.jade"
}
},
"comment": "Generic Jade filter.",
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"begin": "\\G(?<=:)(?=.)",
"end": "$",
"name": "name.generic.filter.jade",
"patterns": [
{
"match": "\\G\\(",
"name": "invalid.illegal.name.generic.filter.jade"
},
{
"match": "[\\w-]",
"name": "constant.language.name.generic.filter.jade"
},
{
"include": "#tag_attributes"
},
{
"match": "\\W",
"name": "invalid.illegal.name.generic.filter.jade"
}
]
}
]
},
{
"begin": "^(\\s*)(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))",
"beginCaptures": {
"2": {
"name": "constant.id.tag.jade"
},
"3": {
"name": "constant.language.js"
},
"4": {
"name": "meta.tag.other entity.name.tag.jade"
}
},
"comment": "Generated from dot_block_tag.py",
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "#complete_tag"
},
{
"begin": "^(?=.)",
"end": "$",
"name": "text.block.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
}
]
},
{
"begin": "^\\s+",
"comment": "All constructs that generally span a single line starting with any number of white-spaces.",
"end": "$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#blocks_and_includes"
},
{
"include": "#unbuffered_code"
},
{
"include": "#mixin_definition"
},
{
"include": "#mixin_call"
},
{
"include": "#flow_control"
},
{
"include": "#case_conds"
},
{
"begin": "\\|",
"comment": "Tag pipe text line.",
"end": "$",
"name": "text.block.pipe.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#printed_expression"
},
{
"begin": "\\G(?=(#[^\\{\\w-])|[^\\w.#])",
"comment": "Line starting with characters incompatible with tag name/id/class is standalone text.",
"end": "$",
"patterns": [
{
"begin": "</?(?=[!#])",
"end": ">|$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#complete_tag"
}
]
}
],
"repository": {
"blocks_and_includes": {
"captures": {
"1": {
"name": "storage.type.import.include.jade"
},
"4": {
"name": "variable.control.import.include.jade"
}
},
"comment": "Template blocks and includes.",
"match": "(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",
"name": "meta.first-class.jade"
},
"case_conds": {
"begin": "(default|when)((\\s+|(?=:))|$)",
"captures": {
"1": {
"name": "storage.type.function.jade"
}
},
"comment": "Jade case conditionals.",
"end": "$",
"name": "meta.control.flow.jade",
"patterns": [
{
"begin": "\\G(?!:)",
"end": "(?=:\\s+)|$",
"name": "js.embedded.control.flow.jade",
"patterns": [
{
"include": "#case_when_paren"
},
{
"include": "source.js"
}
]
},
{
"begin": ":\\s+",
"end": "$",
"name": "tag.case.control.flow.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
}
]
},
"case_when_paren": {
"begin": "\\(",
"end": "\\)",
"name": "js.when.control.flow.jade",
"patterns": [
{
"include": "#case_when_paren"
},
{
"match": ":",
"name": "invalid.illegal.name.tag.jade"
},
{
"include": "source.js"
}
]
},
"complete_tag": {
"begin": "(?=[\\w.#])|(:\\s*)",
"end": "(\\.?$)|(?=:.)",
"patterns": [
{
"include": "#blocks_and_includes"
},
{
"include": "#unbuffered_code"
},
{
"include": "#mixin_call"
},
{
"include": "#flow_control"
},
{
"match": "(?<=:)\\w.*$",
"name": "invalid.illegal.name.tag.jade"
},
{
"include": "#tag_name"
},
{
"include": "#tag_id"
},
{
"include": "#tag_classes"
},
{
"include": "#tag_attributes"
},
{
"include": "#tag_mixin_attributes"
},
{
"captures": {
"2": {
"name": "invalid.illegal.end.tag.jade"
},
"4": {
"name": "invalid.illegal.end.tag.jade"
}
},
"match": "((\\.)\\s+$)|((:)\\s*$)"
},
{
"include": "#printed_expression"
},
{
"include": "#tag_text"
}
]
},
"embedded_html": {
"begin": "(?=<[^>]*>)",
"end": "$|(?=>)",
"name": "html",
"patterns": [
{
"include": "text.html.basic"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"flow_control": {
"begin": "(for|if|else if|else|each|until|while|unless|case)(\\s+|$)",
"captures": {
"1": {
"name": "storage.type.function.jade"
}
},
"comment": "Jade control flow.",
"end": "$",
"name": "meta.control.flow.jade",
"patterns": [
{
"begin": "",
"end": "$",
"name": "js.embedded.control.flow.jade",
"patterns": [
{
"include": "source.js"
}
]
}
]
},
"html_entity": {
"patterns": [
{
"match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
"name": "constant.character.entity.html.text.jade"
},
{
"match": "[<>&]",
"name": "invalid.illegal.html_entity.text.jade"
}
]
},
"inline_jade": {
"begin": "(?<!\\\\)(#\\[)",
"captures": {
"1": {
"name": "entity.name.function.jade"
},
"2": {
"name": "entity.name.function.jade"
}
},
"end": "(\\])",
"name": "inline.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#mixin_call"
},
{
"begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
"end": "(?=\\]|(:.)|=|\\s)",
"name": "tag.inline.jade",
"patterns": [
{
"include": "#tag_name"
},
{
"include": "#tag_id"
},
{
"include": "#tag_classes"
},
{
"include": "#tag_attributes"
},
{
"include": "#tag_mixin_attributes"
},
{
"include": "#inline_jade"
},
{
"match": "\\[",
"name": "invalid.illegal.tag.jade"
}
]
},
{
"include": "#unbuffered_code"
},
{
"include": "#printed_expression"
},
{
"match": "\\[",
"name": "invalid.illegal.tag.jade"
},
{
"include": "#inline_jade_text"
}
]
},
"inline_jade_text": {
"begin": "",
"end": "(?=\\])",
"patterns": [
{
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#inline_jade_text"
}
]
},
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"interpolated_error": {
"match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
"name": "invalid.illegal.tag.jade"
},
"interpolated_value": {
"begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
"end": "\\}",
"name": "string.interpolated.jade",
"patterns": [
{
"match": "{",
"name": "invalid.illegal.tag.jade"
},
{
"include": "source.js"
}
]
},
"js_braces": {
"begin": "\\{",
"end": "\\}",
"patterns": [
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
},
"js_brackets": {
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
},
"js_parens": {
"begin": "\\(",
"end": "\\)",
"patterns": [
{
"include": "#js_parens"
},
{
"include": "source.js"
}
]
},
"mixin_call": {
"begin": "((?:mixin\\s+)|\\+)([\\w-]+)",
"beginCaptures": {
"1": {
"name": "storage.type.function.jade"
},
"2": {
"name": "meta.tag.other entity.name.function.jade"
}
},
"end": "(?!\\()|$",
"patterns": [
{
"begin": "(?<!\\))\\(",
"end": "\\)",
"name": "args.mixin.jade",
"patterns": [
{
"include": "#js_parens"
},
{
"include": "#string"
},
{
"captures": {
"1": {
"name": "meta.tag.other entity.other.attribute-name.tag.jade"
}
},
"match": "([^\\s(),=/]+)\\s*=\\s*"
},
{
"include": "source.js"
}
]
},
{
"include": "#tag_attributes"
}
]
},
"mixin_definition": {
"captures": {
"1": {
"name": "storage.type.function.jade"
},
"2": {
"name": "meta.tag.other entity.name.function.jade"
},
"3": {
"name": "punctuation.definition.parameters.begin.js"
},
"4": {
"name": "variable.parameter.function.js"
},
"5": {
"name": "punctuation.definition.parameters.begin.js"
}
},
"match": "(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$"
},
"printed_expression": {
"begin": "(!?\\=)\\s*",
"captures": {
"1": {
"name": "constant"
}
},
"end": "(?=\\])|$",
"name": "source.js",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
},
"string": {
"begin": "(['\"])",
"end": "(?<!\\\\)\\1",
"name": "string.quoted.jade",
"patterns": [
{
"match": "\\\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)",
"name": "constant.character.quoted.jade"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"tag_attribute_name": {
"captures": {
"1": {
"name": "entity.other.attribute-name.tag.jade"
}
},
"match": "([^\\s(),=/!]+)\\s*"
},
"tag_attribute_name_paren": {
"begin": "\\(\\s*",
"end": "\\)",
"name": "entity.other.attribute-name.tag.jade",
"patterns": [
{
"include": "#tag_attribute_name_paren"
},
{
"include": "#tag_attribute_name"
}
]
},
"tag_attributes": {
"begin": "(\\(\\s*)",
"captures": {
"1": {
"name": "constant.name.attribute.tag.jade"
}
},
"end": "(\\))",
"name": "meta.tag.other",
"patterns": [
{
"include": "#tag_attribute_name_paren"
},
{
"include": "#tag_attribute_name"
},
{
"match": "!(?!=)",
"name": "invalid.illegal.tag.jade"
},
{
"begin": "=\\s*",
"end": "$|(?=,|(?:\\s+[^!%&*-+~|<>:?/])|\\))",
"name": "attribute_value",
"patterns": [
{
"include": "#string"
},
{
"include": "#js_parens"
},
{
"include": "#js_brackets"
},
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
},
{
"begin": "(?<=[%&*-+~|<>:?/])\\s+",
"end": "$|(?=,|(?:\\s+[^!%&*-+~|<>:?/])|\\))",
"name": "attribute_value2",
"patterns": [
{
"include": "#string"
},
{
"include": "#js_parens"
},
{
"include": "#js_brackets"
},
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
}
]
},
"tag_classes": {
"captures": {
"1": {
"name": "invalid.illegal.tag.jade"
}
},
"match": "\\.([^\\w-])?[\\w-]*",
"name": "constant.language.js"
},
"tag_id": {
"match": "#[\\w-]+",
"name": "constant.id.tag.jade"
},
"tag_mixin_attributes": {
"begin": "(&attributes\\()",
"captures": {
"1": {
"name": "entity.name.function.jade"
}
},
"end": "(\\))",
"name": "meta.tag.other",
"patterns": [
{
"match": "attributes(?=\\))",
"name": "storage.type.keyword.jade"
},
{
"include": "source.js"
}
]
},
"tag_name": {
"begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
"end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
"name": "meta.tag.other entity.name.tag.jade",
"patterns": [
{
"begin": "\\G(?<=\\{)",
"end": "(?=\\})",
"name": "meta.tag.other entity.name.tag.jade",
"patterns": [
{
"match": "{",
"name": "invalid.illegal.tag.jade"
},
{
"include": "source.js"
}
]
}
]
},
"tag_text": {
"begin": "(?=.)",
"end": "$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"unbuffered_code": {
"begin": "(-|(([a-zA-Z0-9_]+)\\s+=))",
"beginCaptures": {
"3": {
"name": "variable.parameter.javascript.embedded.jade"
}
},
"comment": "name = function() {}",
"end": "(?=\\])|$",
"name": "source.js",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
}
},
"scopeName": "text.jade",
"uuid": "eee6ba25-6ac2-4f7e-9c70-cddf2bd3448b",
"version": "https://github.com/davidrios/jade-tmbundle/commit/7c1304aa5a0d916a93fd296d3dd994219ecdc90f"
}
\ No newline at end of file
<?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>jade</string>
</array>
<key>name</key>
<string>Jade</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Doctype declaration.</string>
<key>match</key>
<string>^(!!!|doctype)(\s*[a-zA-Z0-9-_]+)?</string>
<key>name</key>
<string>meta.tag.sgml.doctype.html</string>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)//-</string>
<key>comment</key>
<string>Unbuffered (jade-only) comments.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>comment.unbuffered.block.jade</string>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)//</string>
<key>comment</key>
<string>Buffered (html) comments.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>string.comment.buffered.block.jade</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.comment.comment.block.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Buffered comments inside buffered comments will generate invalid html.</string>
<key>match</key>
<string>^\s*(//)(?!-)</string>
<key>name</key>
<string>string.comment.buffered.block.jade</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)-$</string>
<key>comment</key>
<string>Unbuffered code block.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>source.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)(script)(?=[.#(\s])((?![^\n]*type=)|(?=[^\n]*(text|application)/javascript))</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Script tag with JavaScript code.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>meta.tag.other</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G(?=\()</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>stuff.tag.script.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\G(?=[.#])</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>stuff.tag.script.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#complete_tag</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)(style)((\.$)|(?=[.#(].*\.$))</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Style tag with CSS code.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>meta.tag.other</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G(?=\()</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>stuff.tag.style.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\G(?=[.#])</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>stuff.tag.style.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#complete_tag</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>source.css</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*):(sass)(?=\(|$)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.name.sass.filter.jade</string>
</dict>
</dict>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>source.sass.filter.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>source.sass</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*):(less)(?=\(|$)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.name.less.filter.jade</string>
</dict>
</dict>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>source.less.filter.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>source.less</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*):(stylus)(?=\(|$)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.name.stylus.filter.jade</string>
</dict>
</dict>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>source.stylus</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*):(coffee(-?script)?)(?=\(|$)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.name.coffeescript.filter.jade</string>
</dict>
</dict>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>name</key>
<string>source.coffeescript.filter.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>source.coffee</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)((:(?=.))|(:$))</string>
<key>beginCaptures</key>
<dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.empty.generic.filter.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Generic Jade filter.</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G(?&lt;=:)(?=.)</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>name.generic.filter.jade</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\G\(</string>
<key>name</key>
<string>invalid.illegal.name.generic.filter.jade</string>
</dict>
<dict>
<key>match</key>
<string>[\w-]</string>
<key>name</key>
<string>constant.language.name.generic.filter.jade</string>
</dict>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>match</key>
<string>\W</string>
<key>name</key>
<string>invalid.illegal.name.generic.filter.jade</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(\s*)(?=[\w.#].*?\.$)(?=(?:(?:(?:(?:(?:#[\w-]+)|(?:\.[\w-]+))|(?:(?:[#!]\{[^}]*\})|(?:\w(?:(?:[\w:-]+[\w-])|(?:[\w-]*)))))(?:(?:#[\w-]+)|(?:\.[\w-]+)|(?:\((?:[^()\'\"]*(?:(?:\'(?:[^\']|(?:(?&lt;!\\)\\\'))*\')|(?:\"(?:[^\"]|(?:(?&lt;!\\)\\\"))*\")))*[^()]*\))*)*)(?:(?:(?::\s+)|(?&lt;=\)))(?:(?:(?:(?:#[\w-]+)|(?:\.[\w-]+))|(?:(?:[#!]\{[^}]*\})|(?:\w(?:(?:[\w:-]+[\w-])|(?:[\w-]*)))))(?:(?:#[\w-]+)|(?:\.[\w-]+)|(?:\((?:[^()\'\"]*(?:(?:\'(?:[^\']|(?:(?&lt;!\\)\\\'))*\')|(?:\"(?:[^\"]|(?:(?&lt;!\\)\\\"))*\")))*[^()]*\))*)*))*)\.$)(?:(?:(#[\w-]+)|(\.[\w-]+))|((?:[#!]\{[^}]*\})|(?:\w(?:(?:[\w:-]+[\w-])|(?:[\w-]*)))))</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.id.tag.jade</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.language.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>meta.tag.other entity.name.tag.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Generated from dot_block_tag.py</string>
<key>end</key>
<string>^(?!(\1\s)|\s*$)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>#complete_tag</string>
</dict>
<dict>
<key>begin</key>
<string>^(?=.)</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>text.block.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#embedded_html</string>
</dict>
<dict>
<key>include</key>
<string>#html_entity</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^\s*</string>
<key>comment</key>
<string>All constructs that generally span a single line starting with any number of white-spaces.</string>
<key>end</key>
<string>$</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#blocks_and_includes</string>
</dict>
<dict>
<key>include</key>
<string>#unbuffered_code</string>
</dict>
<dict>
<key>include</key>
<string>#mixin_definition</string>
</dict>
<dict>
<key>include</key>
<string>#mixin_call</string>
</dict>
<dict>
<key>include</key>
<string>#flow_control</string>
</dict>
<dict>
<key>include</key>
<string>#case_conds</string>
</dict>
<dict>
<key>begin</key>
<string>\|</string>
<key>comment</key>
<string>Tag pipe text line.</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>text.block.pipe.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#embedded_html</string>
</dict>
<dict>
<key>include</key>
<string>#html_entity</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#printed_expression</string>
</dict>
<dict>
<key>begin</key>
<string>\G(?=(#[^\{\w-])|[^\w.#])</string>
<key>comment</key>
<string>Line starting with characters incompatible with tag name/id/class is standalone text.</string>
<key>end</key>
<string>$</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>&lt;/?(?=[!#])</string>
<key>end</key>
<string>&gt;|$</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#embedded_html</string>
</dict>
<dict>
<key>include</key>
<string>#html_entity</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#complete_tag</string>
</dict>
</array>
</dict>
</array>
<key>repository</key>
<dict>
<key>blocks_and_includes</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.import.include.jade</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.control.import.include.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Template blocks and includes.</string>
<key>match</key>
<string>(extends|include|yield|append|prepend|block( (append|prepend))?)\s+(.*)$</string>
<key>name</key>
<string>meta.first-class.jade</string>
</dict>
<key>case_conds</key>
<dict>
<key>begin</key>
<string>(default|when)((\s+|(?=:))|$)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Jade case conditionals.</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G(?!:)</string>
<key>end</key>
<string>(?=:\s+)|$</string>
<key>name</key>
<string>js.embedded.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#case_when_paren</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>:\s+</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>tag.case.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#complete_tag</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>case_when_paren</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>js.when.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#case_when_paren</string>
</dict>
<dict>
<key>match</key>
<string>:</string>
<key>name</key>
<string>invalid.illegal.name.tag.jade</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>complete_tag</key>
<dict>
<key>begin</key>
<string>(?=[\w.#])|(:\s*)</string>
<key>end</key>
<string>(\.?$)|(?=:.)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#blocks_and_includes</string>
</dict>
<dict>
<key>include</key>
<string>#unbuffered_code</string>
</dict>
<dict>
<key>include</key>
<string>#mixin_call</string>
</dict>
<dict>
<key>include</key>
<string>#flow_control</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=:)\w.*$</string>
<key>name</key>
<string>invalid.illegal.name.tag.jade</string>
</dict>
<dict>
<key>include</key>
<string>#tag_name</string>
</dict>
<dict>
<key>include</key>
<string>#tag_id</string>
</dict>
<dict>
<key>include</key>
<string>#tag_classes</string>
</dict>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>#tag_mixin_attributes</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.end.tag.jade</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.end.tag.jade</string>
</dict>
</dict>
<key>match</key>
<string>((\.)\s+$)|((:)\s*$)</string>
</dict>
<dict>
<key>include</key>
<string>#printed_expression</string>
</dict>
<dict>
<key>include</key>
<string>#tag_text</string>
</dict>
</array>
</dict>
<key>embedded_html</key>
<dict>
<key>begin</key>
<string>(?=&lt;[^&gt;]*&gt;)</string>
<key>end</key>
<string>$|(?=&gt;)</string>
<key>name</key>
<string>html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>text.html.basic</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<key>flow_control</key>
<dict>
<key>begin</key>
<string>(for|if|else if|else|each|until|while|unless|case)(\s+|$)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.jade</string>
</dict>
</dict>
<key>comment</key>
<string>Jade control flow.</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string></string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>js.embedded.control.flow.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>html_entity</key>
<dict>
<key>patterns</key>
<array>
<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.text.jade</string>
</dict>
<dict>
<key>match</key>
<string>[&lt;&gt;&amp;]</string>
<key>name</key>
<string>invalid.illegal.html_entity.text.jade</string>
</dict>
</array>
</dict>
<key>inline_jade</key>
<dict>
<key>begin</key>
<string>(?&lt;!\\)(#\[)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.jade</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.jade</string>
</dict>
</dict>
<key>end</key>
<string>(\])</string>
<key>name</key>
<string>inline.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#mixin_call</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!\])(?=[\w.#])|(:\s*)</string>
<key>end</key>
<string>(?=\]|(:.)|=|\s)</string>
<key>name</key>
<string>tag.inline.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_name</string>
</dict>
<dict>
<key>include</key>
<string>#tag_id</string>
</dict>
<dict>
<key>include</key>
<string>#tag_classes</string>
</dict>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
<dict>
<key>include</key>
<string>#tag_mixin_attributes</string>
</dict>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>match</key>
<string>\[</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#unbuffered_code</string>
</dict>
<dict>
<key>include</key>
<string>#printed_expression</string>
</dict>
<dict>
<key>match</key>
<string>\[</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
<dict>
<key>include</key>
<string>#inline_jade_text</string>
</dict>
</array>
</dict>
<key>inline_jade_text</key>
<dict>
<key>begin</key>
<string></string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade_text</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#embedded_html</string>
</dict>
<dict>
<key>include</key>
<string>#html_entity</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<key>interpolated_error</key>
<dict>
<key>match</key>
<string>(?&lt;!\\)[#!]\{(?=[^}]*$)</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
<key>interpolated_value</key>
<dict>
<key>begin</key>
<string>(?&lt;!\\)[#!]\{(?=.*?\})</string>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>string.interpolated.jade</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>{</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>js_braces</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_braces</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>js_brackets</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_brackets</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>js_parens</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_parens</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>mixin_call</key>
<dict>
<key>begin</key>
<string>((?:mixin\s+)|\+)([\w-]+)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.jade</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.tag.other entity.name.function.jade</string>
</dict>
</dict>
<key>end</key>
<string>(?!\()|$</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;!\))\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>args.mixin.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_parens</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.tag.other entity.other.attribute-name.tag.jade</string>
</dict>
</dict>
<key>match</key>
<string>([^\s(),=/]+)\s*=\s*</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#tag_attributes</string>
</dict>
</array>
</dict>
<key>mixin_definition</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.jade</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.tag.other entity.name.function.jade</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.parameter.function.js</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.js</string>
</dict>
</dict>
<key>match</key>
<string>(mixin\s+)([\w-]+)(?:(\()\s*((?:[a-zA-Z_]\w*\s*)(?:,\s*[a-zA-Z_]\w*\s*)*)(\)))?$</string>
</dict>
<key>printed_expression</key>
<dict>
<key>begin</key>
<string>(!?\=)\s*</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant</string>
</dict>
</dict>
<key>end</key>
<string>(?=\])|$</string>
<key>name</key>
<string>source.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_brackets</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>string</key>
<dict>
<key>begin</key>
<string>(['"])</string>
<key>end</key>
<string>(?&lt;!\\)\1</string>
<key>name</key>
<string>string.quoted.jade</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)</string>
<key>name</key>
<string>constant.character.quoted.jade</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<key>tag_attribute_name</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.tag.jade</string>
</dict>
</dict>
<key>match</key>
<string>([^\s(),=/!]+)\s*</string>
</dict>
<key>tag_attribute_name_paren</key>
<dict>
<key>begin</key>
<string>\(\s*</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>entity.other.attribute-name.tag.jade</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attribute_name_paren</string>
</dict>
<dict>
<key>include</key>
<string>#tag_attribute_name</string>
</dict>
</array>
</dict>
<key>tag_attributes</key>
<dict>
<key>begin</key>
<string>(\(\s*)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.name.attribute.tag.jade</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>name</key>
<string>meta.tag.other</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag_attribute_name_paren</string>
</dict>
<dict>
<key>include</key>
<string>#tag_attribute_name</string>
</dict>
<dict>
<key>match</key>
<string>!(?!=)</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
<dict>
<key>begin</key>
<string>=\s*</string>
<key>end</key>
<string>$|(?=,|(?:\s+[^!%&amp;*-+~|&lt;&gt;:?/])|\))</string>
<key>name</key>
<string>attribute_value</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#js_parens</string>
</dict>
<dict>
<key>include</key>
<string>#js_brackets</string>
</dict>
<dict>
<key>include</key>
<string>#js_braces</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=[%&amp;*-+~|&lt;&gt;:?/])\s+</string>
<key>end</key>
<string>$|(?=,|(?:\s+[^!%&amp;*-+~|&lt;&gt;:?/])|\))</string>
<key>name</key>
<string>attribute_value2</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#js_parens</string>
</dict>
<dict>
<key>include</key>
<string>#js_brackets</string>
</dict>
<dict>
<key>include</key>
<string>#js_braces</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>tag_classes</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
</dict>
<key>match</key>
<string>\.([^\w-])?[\w-]*</string>
<key>name</key>
<string>constant.language.js</string>
</dict>
<key>tag_id</key>
<dict>
<key>match</key>
<string>#[\w-]+</string>
<key>name</key>
<string>constant.id.tag.jade</string>
</dict>
<key>tag_mixin_attributes</key>
<dict>
<key>begin</key>
<string>(&amp;attributes\()</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.jade</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>name</key>
<string>meta.tag.other</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>attributes(?=\))</string>
<key>name</key>
<string>storage.type.keyword.jade</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<key>tag_name</key>
<dict>
<key>begin</key>
<string>([#!]\{(?=.*?\}))|(\w(([\w:-]+[\w-])|([\w-]*)))</string>
<key>end</key>
<string>(\G(?&lt;!\5[^\w-]))|\}|$</string>
<key>name</key>
<string>meta.tag.other entity.name.tag.jade</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>name</key>
<string>meta.tag.other entity.name.tag.jade</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>{</string>
<key>name</key>
<string>invalid.illegal.tag.jade</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>tag_text</key>
<dict>
<key>begin</key>
<string>(?=.)</string>
<key>end</key>
<string>$</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inline_jade</string>
</dict>
<dict>
<key>include</key>
<string>#embedded_html</string>
</dict>
<dict>
<key>include</key>
<string>#html_entity</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_value</string>
</dict>
<dict>
<key>include</key>
<string>#interpolated_error</string>
</dict>
</array>
</dict>
<key>unbuffered_code</key>
<dict>
<key>begin</key>
<string>(-|(([a-zA-Z0-9_]+)\s+=))</string>
<key>beginCaptures</key>
<dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.parameter.javascript.embedded.jade</string>
</dict>
</dict>
<key>comment</key>
<string>name = function() {}</string>
<key>end</key>
<string>(?=\])|$</string>
<key>name</key>
<string>source.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#js_brackets</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>text.jade</string>
<key>uuid</key>
<string>eee6ba25-6ac2-4f7e-9c70-cddf2bd3448b</string>
</dict>
</plist>
\ No newline at end of file
.ssdsd
// asdsdas
\ No newline at end of file
[
{
"c": ".ssdsd",
"t": "",
"r": {
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
"dark_vs": ".vs-dark .token rgb(212, 212, 212)",
"light_vs": ".vs .token rgb(0, 0, 0)",
"hc_black": ".hc-black .token rgb(255, 255, 255)"
}
},
{
"c": " // ",
"t": "",
"r": {
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
"dark_vs": ".vs-dark .token rgb(212, 212, 212)",
"light_vs": ".vs .token rgb(0, 0, 0)",
"hc_black": ".hc-black .token rgb(255, 255, 255)"
}
},
{
"c": "asdsdas",
"t": "jade.meta.name.other entity.tag",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.entity.name.tag rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.entity.name.tag rgb(128, 0, 0)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.entity.name.tag rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.entity.name.tag rgb(128, 0, 0)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.entity.name.tag rgb(86, 156, 214)"
}
}
]
\ No newline at end of file
......@@ -34,13 +34,13 @@
},
{
"c": "table",
"t": "jade.meta.name.other entity.tag",
"t": "",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.entity.name.tag rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.entity.name.tag rgb(128, 0, 0)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.entity.name.tag rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.entity.name.tag rgb(128, 0, 0)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.entity.name.tag rgb(86, 156, 214)"
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
"dark_vs": ".vs-dark .token rgb(212, 212, 212)",
"light_vs": ".vs .token rgb(0, 0, 0)",
"hc_black": ".hc-black .token rgb(255, 255, 255)"
}
},
{
......@@ -704,19 +704,8 @@
}
},
{
"c": "if",
"t": "control.flow.function.jade.meta.storage.type",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.storage.type rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.storage.type rgb(0, 0, 255)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.storage.type rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.storage.type rgb(0, 0, 255)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.storage.type rgb(86, 156, 214)"
}
},
{
"c": " user",
"t": "control.flow.jade.meta",
"c": "if user",
"t": "",
"r": {
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
......@@ -826,18 +815,18 @@
},
{
"c": "else",
"t": "control.flow.function.jade.meta.storage.type",
"t": "",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.storage.type rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.storage.type rgb(0, 0, 255)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.storage.type rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.storage.type rgb(0, 0, 255)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.storage.type rgb(86, 156, 214)"
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
"dark_vs": ".vs-dark .token rgb(212, 212, 212)",
"light_vs": ".vs .token rgb(0, 0, 0)",
"hc_black": ".hc-black .token rgb(255, 255, 255)"
}
},
{
"c": " div.loginbox",
"t": "control.flow.jade.meta",
"c": " ",
"t": "",
"r": {
"dark_plus": ".vs-dark .token rgb(212, 212, 212)",
"light_plus": ".vs .token rgb(0, 0, 0)",
......@@ -846,6 +835,28 @@
"hc_black": ".hc-black .token rgb(255, 255, 255)"
}
},
{
"c": "div",
"t": "jade.meta.name.other entity.tag",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.entity.name.tag rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.entity.name.tag rgb(128, 0, 0)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.entity.name.tag rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.entity.name.tag rgb(128, 0, 0)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.entity.name.tag rgb(86, 156, 214)"
}
},
{
"c": ".loginbox",
"t": "constant.js.language",
"r": {
"dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.constant.language rgb(86, 156, 214)",
"light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.constant.language rgb(0, 0, 255)",
"dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.constant.language rgb(86, 156, 214)",
"light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.constant.language rgb(0, 0, 255)",
"hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.constant.language rgb(86, 156, 214)"
}
},
{
"c": " ",
"t": "",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册