{ "fileTypes": [ "plist", "dict", "scriptSuite", "scriptTerminology", "savedSearch", "wflow" ], "firstLineMatch": "\\s*<\\?xml .*\\n\\s*))", "patterns": [ { "begin": "(?<=)\\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": "((>))(?!", "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": "(())", "patterns": [ { "begin": "" } ] }, { "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": "(())", "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": "(())", "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": "(())", "patterns": [ { "include": "#xml_innertag" }, { "begin": "", "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": "(())", "patterns": [ { "begin": "()", "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": "(())", "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": "(())", "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": "(())", "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" }