--- name: Language Grammar fileTypes: - textmate firstLineMatch: ^\{\s*scopeName = .*$ scopeName: source.plist.tm-grammar repository: invalid-keyword: patterns: - name: invalid.illegal.constant.misplaced-keyword.tm-grammar match: \b(fileTypes|foldingStartMarker|foldingStopMarker|patterns|match|begin|end|include|scopeName|captures|beginCaptures|endCaptures|firstLineMatch|comment|repository|disabled|contentName|applyEndPatternLast)\b(?=\s*=) - name: invalid.deprecated.constant.tm-grammar match: \b(swallow|mode)\b(?=\s*=) - name: invalid.illegal.constant.outdated.tm-grammar match: \b(foregroundColor|backgroundColor|fontStyle|elementForegroundColor|elementBackgroundColor|elementFontStyle|highlightPairs|smartTypingPairs|increaseIndentPattern)\b(?=\s*=) - name: invalid.illegal.constant.unknown-keyword.tm-grammar match: "[-a-zA-Z_.]+(?=\\s*=)" any: patterns: - include: "#comment" - include: "#string" - include: "#array" - include: "#dictionary" - include: "#catch-all" scope: patterns: - name: string.quoted.single.scope.tm-grammar captures: "1": name: punctuation.definition.string.begin.tm-grammar "2": name: constant.other.scope.tm-grammar "3": name: constant.other.scope.tm-grammar "4": name: invalid.deprecated.scope_not_allowed.tm-grammar "5": name: punctuation.definition.string.end.tm-grammar match: "(?x)\n\ \t\t\t\t\t\t(')\t\t\t\t\t\t\t\t# Open String\n\ \t\t\t\t\t\t\t(\t\t\t\t\t\t\t# Optionally match the valid\n\ \t\t\t\t\t\t\t\t\t\t\t\t\t\t# scopes, and the following\n\ \t\t\t\t\t\t\t\t\t\t\t\t\t\t# part of the scope, meaning\n\ \t\t\t\t\t\t\t\t\t\t\t\t\t\t# anything else is invalid\n\ \t\t\t\t\t\t\t\tcomment(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:line|block)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | constant(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:numeric|character|language|other)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | entity(?:\n\ \t\t\t\t\t\t\t\t\t\\.name(?:\n\ \t\t\t\t\t\t\t\t\t\t\\.(?:function|type|tag|section)\n\ \t\t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t\t | \\.other(?:\n\ \t\t\t\t\t\t\t\t\t\t\\.(?:inherited-class|attribute-name)\n\ \t\t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | invalid(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:illegal|deprecated)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | keyword(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:control|operator|other)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | markup(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:underline|bold|heading|italic|list|quote|raw|other)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | meta\n\ \t\t\t\t\t\t\t | punctuation(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:definition|section|separator|terminator|whitespace)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | source\n\ \t\t\t\t\t\t\t | storage(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:type|modifier)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | string(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:\n\ \t\t\t\t\t\t\t\t\t\tquoted(?:\n\ \t\t\t\t\t\t\t\t\t\t\t\\.(?:single|double|triple|other)\n\ \t\t\t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t\t\t | (?:unquoted|interpolated|regexp|other)\n\ \t\t\t\t\t\t\t\t\t)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | support(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:function|class|type|constant|variable|other)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t | text\n\ \t\t\t\t\t\t\t | variable(?:\n\ \t\t\t\t\t\t\t\t\t\\.(?:parameter|language|other)\n\ \t\t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t)?\n\ \t\t\t\t\t\t\t((?*?=^;]*(?*?=^;]*(?