TextMate-style syntax highlighting in PHP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

691 lines
20 KiB

{
"fileTypes": [
"plist",
"dict",
"scriptSuite",
"scriptTerminology",
"savedSearch",
"wflow"
],
"firstLineMatch": "\\s*<\\?xml .*\\n\\s*<!DOCTYPE\\s*(?i:plist)\\s",
"name": "Property List (XML)",
"patterns": [
{
"include": "#xml"
}
],
"repository": {
"xml": {
"patterns": [
{
"begin": "((<)((plist\\b)))",
"captures": {
"1": {
"name": "meta.tag.plist.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"end": "((/)((plist))(>))",
"patterns": [
{
"begin": "(?<=<plist)(?!>)\\s*(?:(version)(=)(?:((\").*?(\"))|((').*?('))))?",
"beginCaptures": {
"1": {
"name": "entity.other.attribute-name.version.xml.plist"
},
"2": {
"name": "punctuation.separator.key-value.xml.plist"
},
"3": {
"name": "string.quoted.double.xml.plist"
},
"4": {
"name": "punctuation.definition.string.begin.xml.plist"
},
"5": {
"name": "punctuation.definition.string.end.xml.plist"
},
"6": {
"name": "string.quoted.single.xml.plist"
},
"7": {
"name": "punctuation.definition.string.begin.xml.plist"
},
"8": {
"name": "punctuation.definition.string.end.xml.plist"
}
},
"end": "(?=>)",
"name": "meta.tag.plist.xml.plist"
},
{
"captures": {
"1": {
"name": "meta.tag.plist.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "meta.scope.between-tag-pair.xml.plist"
}
},
"comment": "Tag with no content",
"match": "((>(<)))(?=/plist)"
},
{
"begin": "((>))(?!</plist)",
"beginCaptures": {
"1": {
"name": "meta.tag.plist.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"end": "(<)(?=/plist)",
"endCaptures": {
"0": {
"name": "meta.tag.plist.xml.plist"
},
"1": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"patterns": [
{
"include": "#xml_tags"
}
]
}
]
},
{
"include": "#xml_invalid"
},
{
"include": "#xml_comment"
},
{
"include": "text.xml"
},
{
"include": "#xml_stray-char"
}
]
},
"xml_comment": {
"begin": "<!--",
"captures": {
"0": {
"name": "punctuation.definition.comment.xml.plist"
}
},
"end": "(?<!-)-->",
"name": "comment.block.xml.plist",
"patterns": [
{
"match": "-(?=-->)|--",
"name": "invalid.illegal.double-dash-not-allowed.xml.plist"
}
]
},
"xml_innertag": {
"patterns": [
{
"match": "&([a-zA-Z0-9_-]+|#[0-9]+|#x[0-9a-fA-F]+);",
"name": "constant.character.entity.xml.plist"
},
{
"match": "&",
"name": "invalid.illegal.bad-ampersand.xml.plist"
}
]
},
"xml_invalid": {
"captures": {
"1": {
"name": "meta.tag.boolean.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "invalid.illegal.tag-not-recognized.xml.plist"
},
"4": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Invalid tag",
"match": "((<)/?(\\w+).*?(>))"
},
"xml_stray-char": {
"match": "\\S",
"name": "invalid.illegal.character-data-not-allowed-here.xml.plist"
},
"xml_tags": {
"patterns": [
{
"captures": {
"1": {
"name": "meta.tag.dict.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
},
"6": {
"name": "meta.tag.dict.xml.plist"
},
"7": {
"name": "punctuation.definition.tag.xml.plist"
},
"8": {
"name": "meta.scope.between-tag-pair.xml.plist"
},
"9": {
"name": "entity.name.tag.xml.plist"
},
"10": {
"name": "entity.name.tag.localname.xml.plist"
},
"11": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Empty tag: Dictionary",
"match": "((<)((dict))(>))(((<)/)((dict))(>))"
},
{
"captures": {
"1": {
"name": "meta.tag.array.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
},
"6": {
"name": "meta.tag.array.xml.plist"
},
"7": {
"name": "punctuation.definition.tag.xml.plist"
},
"8": {
"name": "meta.scope.between-tag-pair.xml.plist"
},
"9": {
"name": "entity.name.tag.xml.plist"
},
"10": {
"name": "entity.name.tag.localname.xml.plist"
},
"11": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Empty tag: Array",
"match": "((<)((array))(>))(((<)/)((array))(>))"
},
{
"captures": {
"1": {
"name": "meta.tag.string.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
},
"6": {
"name": "meta.tag.string.xml.plist"
},
"7": {
"name": "punctuation.definition.tag.xml.plist"
},
"8": {
"name": "meta.scope.between-tag-pair.xml.plist"
},
"9": {
"name": "entity.name.tag.xml.plist"
},
"10": {
"name": "entity.name.tag.localname.xml.plist"
},
"11": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Empty tag: String",
"match": "((<)((string))(>))(((<)/)((string))(>))"
},
{
"begin": "((<)((key))(>))",
"captures": {
"1": {
"name": "meta.tag.key.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "the extra captures are required to duplicate the effect of the namespace parsing in the XML syntax",
"contentName": "constant.other.name.xml.plist",
"end": "((</)((key))(>))",
"patterns": [
{
"begin": "<!\\[CDATA\\[",
"captures": {
"0": {
"name": "punctuation.definition.constant.xml"
}
},
"end": "]]>"
}
]
},
{
"captures": {
"1": {
"name": "meta.tag.dict.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Self-closing Dictionary",
"match": "((<)((dict))\\s*?/(>))"
},
{
"captures": {
"1": {
"name": "meta.tag.array.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Self-closing Array",
"match": "((<)((array))\\s*?/(>))"
},
{
"captures": {
"1": {
"name": "meta.tag.string.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Self-closing String",
"match": "((<)((string))\\s*?/(>))"
},
{
"captures": {
"1": {
"name": "meta.tag.key.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Self-closing Key",
"match": "((<)((key))\\s*?/(>))"
},
{
"begin": "((<)((dict))(>))",
"captures": {
"1": {
"name": "meta.tag.dict.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Dictionary",
"end": "((</)((dict))(>))",
"patterns": [
{
"include": "#xml_tags"
}
]
},
{
"begin": "((<)((array))(>))",
"captures": {
"1": {
"name": "meta.tag.array.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Array",
"end": "((</)((array))(>))",
"patterns": [
{
"include": "#xml_tags"
}
]
},
{
"begin": "((<)((string))(>))",
"captures": {
"1": {
"name": "meta.tag.string.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Strings",
"contentName": "string.quoted.other.xml.plist",
"end": "((</)((string))(>))",
"patterns": [
{
"include": "#xml_innertag"
},
{
"begin": "<!\\[CDATA\\[",
"captures": {
"0": {
"name": "punctuation.definition.string.xml"
}
},
"end": "]]>",
"name": "string.unquoted.cdata.xml"
}
]
},
{
"begin": "((<)((real))(>))",
"captures": {
"1": {
"name": "meta.tag.real.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Numeric",
"end": "((</)((real))(>))",
"patterns": [
{
"begin": "(<!\\[CDATA\\[)",
"captures": {
"0": {
"name": "punctuation.definition.constant.xml"
},
"1": {
"name": "constant.numeric.real.xml.plist"
}
},
"end": "(]]>)",
"patterns": [
{
"match": "[-+]?\\d+(\\.\\d*)?(E[-+]\\d+)?",
"name": "constant.numeric.real.xml.plist"
},
{
"match": ".",
"name": "invalid.illegal.not-a-number.xml.plist"
}
]
},
{
"match": "[-+]?\\d+(\\.\\d*)?(E[-+]\\d+)?",
"name": "constant.numeric.real.xml.plist"
},
{
"match": ".",
"name": "invalid.illegal.not-a-number.xml.plist"
}
]
},
{
"begin": "((<)((integer))(>))",
"captures": {
"1": {
"name": "meta.tag.integer.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Integer",
"end": "((</)((integer))(>))",
"patterns": [
{
"match": "[-+]?\\d+",
"name": "constant.numeric.integer.xml.plist"
},
{
"match": ".",
"name": "invalid.illegal.not-a-number.xml.plist"
}
]
},
{
"captures": {
"1": {
"name": "meta.tag.boolean.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Boolean",
"match": "((<)((true|false))\\s*?(/>))"
},
{
"begin": "((<)((data))(>))",
"captures": {
"1": {
"name": "meta.tag.data.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Data",
"end": "((</)((data))(>))",
"patterns": [
{
"match": "[A-Za-z0-9+/]",
"name": "constant.numeric.base64.xml.plist"
},
{
"match": "=",
"name": "constant.numeric.base64.xml.plist"
},
{
"match": "[^ \\n\\t]",
"name": "invalid.illegal.invalid-character.xml.plist"
}
]
},
{
"begin": "((<)((date))(>))",
"captures": {
"1": {
"name": "meta.tag.date.xml.plist"
},
"2": {
"name": "punctuation.definition.tag.xml.plist"
},
"3": {
"name": "entity.name.tag.xml.plist"
},
"4": {
"name": "entity.name.tag.localname.xml.plist"
},
"5": {
"name": "punctuation.definition.tag.xml.plist"
}
},
"comment": "Date",
"end": "((</)((date))(>))",
"patterns": [
{
"match": "(?x)\n\t\t\t\t\t\t\t\t\t\t[0-9]{4}\t\t\t\t\t\t# Year\n\t\t\t\t\t\t\t\t\t\t-\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(0[1-9]|1[012])\t\t\t\t\t# Month\n\t\t\t\t\t\t\t\t\t\t-\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(?!00|3[2-9])[0-3][0-9]\t\t\t# Day\n\t\t\t\t\t\t\t\t\t\tT\t\t\t\t\t\t\t\t# Separator\n\t\t\t\t\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\t\t\t# Hour\n\t\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t[0-5][0-9]\t\t\t\t\t\t# Minute\n\t\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t# Divider\n\t\t\t\t\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\t\t\t# Second\n\t\t\t\t\t\t\t\t\t\tZ\t\t\t\t\t\t\t\t# Zulu\n\t\t\t\t\t\t\t\t\t",
"name": "constant.other.date.xml.plist"
}
]
},
{
"include": "#xml_invalid"
},
{
"include": "#xml_comment"
},
{
"include": "#xml_stray-char"
}
]
}
},
"scopeName": "text.xml.plist"
}