tm-grammars
Version:
Collecton of TextMate grammars in JSON
822 lines (821 loc) • 19.9 kB
JSON
{
"displayName": "Hjson",
"fileTypes": [
"hjson"
],
"foldingStartMarker": "^\\s*[\\[{](?!.*[]}],?\\s*$)|[\\[{]\\s*$",
"foldingStopMarker": "^\\s*[]}]",
"name": "hjson",
"patterns": [
{
"include": "#comments"
},
{
"include": "#value"
},
{
"match": "\\S",
"name": "invalid.illegal.excess-characters.hjson"
}
],
"repository": {
"array": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.array.begin.hjson"
}
},
"end": "(])(?:\\s*([^,\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.array.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.array.hjson",
"patterns": [
{
"include": "#arrayContent"
}
]
},
"arrayArray": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.array.begin.hjson"
}
},
"end": "(])(?:\\s*([^],\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.array.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.array.hjson",
"patterns": [
{
"include": "#arrayContent"
}
]
},
"arrayConstant": {
"captures": {
"1": {
"name": "constant.language.hjson"
},
"2": {
"name": "punctuation.separator.array.after-const.hjson"
}
},
"match": "\\b(true|false|null)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|]))"
},
"arrayContent": {
"name": "meta.structure.array.hjson",
"patterns": [
{
"include": "#comments"
},
{
"include": "#arrayValue"
},
{
"begin": "(?<=\\[)|,",
"beginCaptures": {
"1": {
"name": "punctuation.separator.dictionary.pair.hjson"
}
},
"end": "(?=[^#,/\\s])|(?=/[^*/])",
"patterns": [
{
"include": "#comments"
},
{
"match": ",",
"name": "invalid.illegal.extra-comma.hjson"
}
]
},
{
"match": ",",
"name": "punctuation.separator.array.hjson"
},
{
"match": "[^]\\s]",
"name": "invalid.illegal.expected-array-separator.hjson"
}
]
},
"arrayJstring": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(\")(?:\\s*((?:[^]#,/\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.double.hjson",
"patterns": [
{
"include": "#jstringDoubleContent"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(')(?:\\s*((?:[^]#,/\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.single.hjson",
"patterns": [
{
"include": "#jstringSingleContent"
}
]
}
]
},
"arrayMstring": {
"begin": "'''",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(''')(?:\\s*((?:[^]#,/\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.multiline.hjson"
},
"arrayNumber": {
"captures": {
"1": {
"name": "constant.numeric.hjson"
},
"2": {
"name": "punctuation.separator.array.after-num.hjson"
}
},
"match": "(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[Ee][-+]?\\d+)?)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|]))"
},
"arrayObject": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.dictionary.begin.hjson"
}
},
"end": "(}|(?<=}))(?:\\s*([^],\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.dictionary.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.dictionary.hjson",
"patterns": [
{
"include": "#objectContent"
}
]
},
"arrayString": {
"patterns": [
{
"include": "#arrayMstring"
},
{
"include": "#arrayJstring"
},
{
"include": "#ustring"
}
]
},
"arrayValue": {
"patterns": [
{
"include": "#arrayNumber"
},
{
"include": "#arrayConstant"
},
{
"include": "#arrayString"
},
{
"include": "#arrayObject"
},
{
"include": "#arrayArray"
}
]
},
"comments": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "^\\s*(#).*\\n?",
"name": "comment.line.hash"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "^\\s*(//).*\\n?",
"name": "comment.line.double-slash"
},
{
"begin": "^\\s*/\\*",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"end": "\\*/(?:\\s*\\n)?",
"endCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"name": "comment.block.double-slash"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "(#)[^\\n]*",
"name": "comment.line.hash"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "(//)[^\\n]*",
"name": "comment.line.double-slash"
},
{
"begin": "/\\*",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"end": "\\*/",
"endCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"name": "comment.block.double-slash"
}
]
},
"commentsNewline": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "(#).*\\n",
"name": "comment.line.hash"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"match": "(//).*\\n",
"name": "comment.line.double-slash"
},
{
"begin": "/\\*",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"end": "\\*/(\\s*\\n)?",
"endCaptures": {
"1": {
"name": "punctuation.definition.comment.hjson"
}
},
"name": "comment.block.double-slash"
}
]
},
"constant": {
"captures": {
"1": {
"name": "constant.language.hjson"
}
},
"match": "\\b(true|false|null)[\\t ]*(?=$|#|/\\*|//|])"
},
"jstring": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(\")(?:\\s*((?:[^#/\\s]|/[^*/]).*)$)?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.double.hjson",
"patterns": [
{
"include": "#jstringDoubleContent"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(')(?:\\s*((?:[^#/\\s]|/[^*/]).*)$)?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.single.hjson",
"patterns": [
{
"include": "#jstringSingleContent"
}
]
}
]
},
"jstringDoubleContent": {
"patterns": [
{
"match": "\\\\(?:[\"'/\\\\bfnrt]|u\\h{4})",
"name": "constant.character.escape.hjson"
},
{
"match": "\\\\.",
"name": "invalid.illegal.unrecognized-string-escape.hjson"
},
{
"match": "[^\"]*[^\\n\\r\"\\\\]$",
"name": "invalid.illegal.string.hjson"
}
]
},
"jstringSingleContent": {
"patterns": [
{
"match": "\\\\(?:[\"'/\\\\bfnrt]|u\\h{4})",
"name": "constant.character.escape.hjson"
},
{
"match": "\\\\.",
"name": "invalid.illegal.unrecognized-string-escape.hjson"
},
{
"match": "[^']*[^\\n\\r'\\\\]$",
"name": "invalid.illegal.string.hjson"
}
]
},
"key": {
"begin": "([^]\"',:\\[{}\\s][^],:\\[{}\\s]*|'(?:[^'\\\\]|(\\\\(?:[\"'/\\\\bfnrt]|u\\h{4}))|(\\\\.))*'|\"(?:[^\"\\\\]|(\\\\(?:[\"'/\\\\bfnrt]|u\\h{4}))|(\\\\.))*\")\\s*(?!\\n)([],\\[{}]*)",
"beginCaptures": {
"0": {
"name": "meta.structure.key-value.begin.hjson"
},
"1": {
"name": "support.type.property-name.hjson"
},
"2": {
"name": "constant.character.escape.hjson"
},
"3": {
"name": "invalid.illegal.unrecognized-string-escape.hjson"
},
"4": {
"name": "constant.character.escape.hjson"
},
"5": {
"name": "invalid.illegal.unrecognized-string-escape.hjson"
},
"6": {
"name": "invalid.illegal.separator.hjson"
},
"7": {
"name": "invalid.illegal.property-name.hjson"
}
},
"end": "(?<!^|:)\\s*\\n|(?=})|(,)",
"endCaptures": {
"1": {
"name": "punctuation.separator.dictionary.pair.hjson"
}
},
"patterns": [
{
"include": "#commentsNewline"
},
{
"include": "#keyValue"
},
{
"match": "\\S",
"name": "invalid.illegal.object-property.hjson"
}
]
},
"keyValue": {
"begin": "\\s*(:)\\s*([],}]*)",
"beginCaptures": {
"1": {
"name": "punctuation.separator.dictionary.key-value.hjson"
},
"2": {
"name": "invalid.illegal.object-property.hjson"
}
},
"end": "(?<!^)\\s*(?=\\n)|(?=[,}])",
"name": "meta.structure.key-value.hjson",
"patterns": [
{
"include": "#comments"
},
{
"match": "^\\s+"
},
{
"include": "#objectValue"
},
{
"captures": {
"1": {
"name": "invalid.illegal.object-property.closing-bracket.hjson"
}
},
"match": "^\\s*(})"
},
{
"match": "\\S",
"name": "invalid.illegal.object-property.hjson"
}
]
},
"mstring": {
"begin": "'''",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(''')(?:\\s*((?:[^#/\\s]|/[^*/]).*)$)?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.multiline.hjson"
},
"number": {
"captures": {
"1": {
"name": "constant.numeric.hjson"
}
},
"match": "(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[Ee][-+]?\\d+)?)[\\t ]*(?=$|#|/\\*|//|])"
},
"object": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.dictionary.begin.hjson"
}
},
"end": "(}|(?<=}))(?:\\s*([^,\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.dictionary.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.dictionary.hjson",
"patterns": [
{
"include": "#objectContent"
}
]
},
"objectArray": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.array.begin.hjson"
}
},
"end": "(])(?:\\s*([^,}\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.array.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.array.hjson",
"patterns": [
{
"include": "#arrayContent"
}
]
},
"objectConstant": {
"captures": {
"1": {
"name": "constant.language.hjson"
},
"2": {
"name": "punctuation.separator.dictionary.pair.after-const.hjson"
}
},
"match": "\\b(true|false|null)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|}))"
},
"objectContent": {
"patterns": [
{
"include": "#comments"
},
{
"include": "#key"
},
{
"match": ":[.|\\s]",
"name": "invalid.illegal.object-property.hjson"
},
{
"begin": "(?<=[,{])|,",
"beginCaptures": {
"1": {
"name": "punctuation.separator.dictionary.pair.hjson"
}
},
"end": "(?=[^#,/\\s])|(?=/[^*/])",
"patterns": [
{
"include": "#comments"
},
{
"match": ",",
"name": "invalid.illegal.extra-comma.hjson"
}
]
},
{
"match": "\\S",
"name": "invalid.illegal.object-property.hjson"
}
]
},
"objectJstring": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(\")(?:\\s*((?:[^#,/}\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.double.hjson",
"patterns": [
{
"include": "#jstringDoubleContent"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(')(?:\\s*((?:[^#,/}\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.single.hjson",
"patterns": [
{
"include": "#jstringSingleContent"
}
]
}
]
},
"objectMstring": {
"begin": "'''",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.hjson"
}
},
"end": "(''')(?:\\s*((?:[^#,/}\\s]|/[^*/])+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "string.quoted.multiline.hjson"
},
"objectNumber": {
"captures": {
"1": {
"name": "constant.numeric.hjson"
},
"2": {
"name": "punctuation.separator.dictionary.pair.after-num.hjson"
}
},
"match": "(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[Ee][-+]?\\d+)?)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|}))"
},
"objectObject": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.dictionary.begin.hjson"
}
},
"end": "(}|(?<=})}?)(?:\\s*([^,}\\s]+))?",
"endCaptures": {
"1": {
"name": "punctuation.definition.dictionary.end.hjson"
},
"2": {
"name": "invalid.illegal.value.hjson"
}
},
"name": "meta.structure.dictionary.hjson",
"patterns": [
{
"include": "#objectContent"
}
]
},
"objectString": {
"patterns": [
{
"include": "#objectMstring"
},
{
"include": "#objectJstring"
},
{
"include": "#ustring"
}
]
},
"objectValue": {
"patterns": [
{
"include": "#objectNumber"
},
{
"include": "#objectConstant"
},
{
"include": "#objectString"
},
{
"include": "#objectObject"
},
{
"include": "#objectArray"
}
]
},
"string": {
"patterns": [
{
"include": "#mstring"
},
{
"include": "#jstring"
},
{
"include": "#ustring"
}
]
},
"ustring": {
"match": "([^],:\\[{}\\s].*)$",
"name": "string.quoted.none.hjson"
},
"value": {
"patterns": [
{
"include": "#number"
},
{
"include": "#constant"
},
{
"include": "#string"
},
{
"include": "#object"
},
{
"include": "#array"
}
]
}
},
"scopeName": "source.hjson"
}