{ "fileTypes": [ "json" ], "foldingStartMarker": "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", "foldingStopMarker": "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )", "keyEquivalent": "^~J", "name": "JSON", "patterns": [ { "include": "#value" } ], "repository": { "array": { "begin": "\\[", "beginCaptures": { "0": { "name": "punctuation.definition.array.begin.json" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.array.end.json" } }, "name": "meta.structure.array.json", "patterns": [ { "include": "#value" }, { "match": ",", "name": "punctuation.separator.array.json" }, { "match": "[^\\s\\]]", "name": "invalid.illegal.expected-array-separator.json" } ] }, "constant": { "match": "\\b(?:true|false|null)\\b", "name": "constant.language.json" }, "number": { "comment": "handles integer and decimal numbers", "match": "(?x: # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional\n )", "name": "constant.numeric.json" }, "object": { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.dictionary.begin.json" } }, "comment": "a JSON object", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.dictionary.end.json" } }, "name": "meta.structure.dictionary.json", "patterns": [ { "comment": "the JSON object key", "include": "#string" }, { "begin": ":", "beginCaptures": { "0": { "name": "punctuation.separator.dictionary.key-value.json" } }, "end": "(,)|(?=\\})", "endCaptures": { "1": { "name": "punctuation.separator.dictionary.pair.json" } }, "name": "meta.structure.dictionary.value.json", "patterns": [ { "comment": "the JSON object value", "include": "#value" }, { "match": "[^\\s,]", "name": "invalid.illegal.expected-dictionary-separator.json" } ] }, { "match": "[^\\s\\}]", "name": "invalid.illegal.expected-dictionary-separator.json" } ] }, "string": { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.json" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.json" } }, "name": "string.quoted.double.json", "patterns": [ { "match": "(?x: # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4} # and four hex digits\n )\n )", "name": "constant.character.escape.json" }, { "match": "\\\\.", "name": "invalid.illegal.unrecognized-string-escape.json" } ] }, "value": { "comment": "the 'value' diagram at http://json.org", "patterns": [ { "include": "#constant" }, { "include": "#number" }, { "include": "#string" }, { "include": "#array" }, { "include": "#object" } ] } }, "scopeName": "source.json", "uuid": "0C3868E4-F96B-4E55-B204-1DCB5A20748B" }