{ "name": "Property List (Old-Style)", "scopeName": "source.plist", "patterns": [ { "begin": "(?=\\(|\\{)", "end": "(?=not)possible", "patterns": [ { "include": "#dictionary" }, { "include": "#array" }, { "include": "#comment" }, { "include": "#stray" } ] }, { "include": "#comment" }, { "include": "#stray" } ], "repository": { "array": { "name": "meta.scope.array.plist", "begin": "\\G\\(", "end": "\\)", "patterns": [ { "include": "#array_item" }, { "include": "#comment" }, { "include": "#stray" } ], "beginCaptures": { "0": { "name": "punctuation.definition.array.begin.plist" } }, "endCaptures": { "0": { "name": "punctuation.definition.array.end.plist" } } }, "array_item": { "name": "meta.scope.array-item.plist", "begin": "(?=\u003c|\\(|\\{|\"|'|[-a-zA-Z0-9_.])", "end": ",|(?=\\))", "patterns": [ { "include": "#dictionary" }, { "include": "#array" }, { "include": "#string" }, { "include": "#binary" }, { "include": "#comment" }, { "include": "#stray" } ], "endCaptures": { "0": { "name": "punctuation.separator.array.plist" } } }, "binary": { "name": "meta.binary-data.plist", "contentName": "constant.numeric.base64.plist", "begin": "\\G\u003c", "end": "(=?)\\s*(\u003e)", "patterns": [ { "name": "invalid.illegal.invalid-character.plist", "match": "[^A-Za-z0-9+/ \\n]" } ], "beginCaptures": { "1": { "name": "punctuation.definition.data.plist" } }, "endCaptures": { "1": { "name": "punctuation.terminator.data.plist" }, "2": { "name": "punctuation.definition.data.plist" } } }, "comment": { "patterns": [ { "name": "comment.block.plist", "begin": "/\\*", "end": "\\*/", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.plist" } }, "endCaptures": { "0": { "name": "punctuation.definition.comment.begin.plist" } } }, { "begin": "(^[ \\t]+)?(?=//)", "end": "(?!\\G)", "patterns": [ { "name": "comment.line.double-slash.plist", "begin": "//", "end": "\\n", "beginCaptures": { "0": { "name": "punctuation.definition.comment.plist" } } } ], "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.plist" } } } ] }, "dictionary": { "name": "meta.scope.dictionary.plist", "begin": "\\G\\{", "end": "\\}", "patterns": [ { "include": "#dictionary_item" }, { "include": "#comment" }, { "include": "#stray" } ], "beginCaptures": { "0": { "name": "punctuation.definition.dictionary.begin.plist" } }, "endCaptures": { "0": { "name": "punctuation.definition.dictionary.end.plist" } } }, "dictionary_item": { "name": "meta.scope.dictionary-item.${3/[[\\s\\x20-\\x7F]\u0026\u0026[:^alnum:]]//g}${7/[[\\s\\x20-\\x7F]\u0026\u0026[:^alnum:]]//g}${9/[[\\s\\x20-\\x7F]\u0026\u0026[:^alnum:]]//g}.plist", "begin": "(?\u003e((\")((?:[^\"\\\\]|\\\\.)*)(\"))|((')((?:[^'\\\\]|\\\\.)*)('))|([-a-zA-Z0-9_.]+))", "end": ";|(?=\\})", "patterns": [ { "include": "#dictionary_item_contents" } ], "beginCaptures": { "1": { "name": "string.quoted.double.plist" }, "2": { "name": "punctuation.definition.string.begin.plist" }, "3": { "name": "constant.other.key.plist", "patterns": [ { "include": "#string-contents" } ] }, "4": { "name": "punctuation.definition.string.end.plist" }, "5": { "name": "string.quoted.single.plist" }, "6": { "name": "punctuation.definition.string.begin.plist" }, "7": { "name": "constant.other.key.plist", "patterns": [ { "include": "#string-contents" } ] }, "8": { "name": "punctuation.definition.string.end.plist" }, "9": { "name": "constant.other.key.plist" } }, "endCaptures": { "0": { "name": "punctuation.separator.dictionary.plist" } } }, "dictionary_item_contents": { "patterns": [ { "begin": "=", "end": "(?=;|\\})", "patterns": [ { "begin": "(?=\u003c|\\(|\\{|\"|'|[-a-zA-Z0-9_.])", "end": "(?=;|\\})", "patterns": [ { "include": "#dictionary" }, { "include": "#array" }, { "include": "#string" }, { "include": "#binary" }, { "include": "#stray" } ] }, { "include": "#stray_alpha" } ] }, { "include": "#stray" } ] }, "stray": { "name": "invalid.illegal.character-not-allowed-here.plist", "begin": "\\S", "end": "(?=\\{|\\(|/\\*|//|\"|'|\u003c|,|;|\\)|\\}|=)" }, "stray_alpha": { "name": "invalid.illegal.character-not-allowed-here.plist", "begin": "\\S", "end": "(?=\\{|\\(|/\\*|//|\"|'|\u003c|,|;|\\)|\\}|=|\\b[a-zA-Z0-9]|[-_.])" }, "string": { "patterns": [ { "name": "string.quoted.single.plist", "begin": "\\G'", "end": "'(?!')", "patterns": [ { "include": "#string-contents" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.plist" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.plist" } } }, { "name": "string.quoted.double.plist", "begin": "\\G\"", "end": "\"", "patterns": [ { "include": "#string-contents" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.plist" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.plist" } } }, { "name": "constant.numeric.plist", "match": "\\G[-+]?\\d+(\\.\\d*)?(E[-+]\\d+)?(?!\\w)" }, { "name": "string.unquoted.plist", "match": "\\G[-a-zA-Z0-9_.]+" } ] }, "string-contents": { "name": "constant.character.escape.plist", "match": "\\\\([uU]([[:xdigit:]]{4}|[[:xdigit:]]{2})|\\d{1,3}|.)" } } }