fileTypes sublime-build name Sublime Text Build System patterns begin (\{) beginCaptures 1 name punctuation.definition.options.start.sublimebuild contentName meta.options.sublimebuild end (\}) endCaptures 1 name punctuation.definition.options.end.sublimebuild patterns include #cmd include #env include #simpleOptions include #errorRegex include #encoding include #path include #shell include #variant include source.jsongenericobject match (?<!\}|"|\]), name invalid.illegal.separator.sublimebuild match ,{2,} name invalid.illegal.character.sublimebuild match [^,\t\s] name invalid.illegal.character.sublimebuild comment XXX match ,(?>$\s+\]) name invalid.illegal.separator.sublimebuild repository cmd begin "(cmd)"\s*: beginCaptures 1 name keyword.other.sublimebuild end (?<=\]) name meta.definition.command.sublimebuild patterns include source.jsongenericarray captures 1 name support.function.array.generic.key.sublimebuild match "([a-zA-Z0-9_]+)"\s*: encoding captures 1 name keyword.other.encoding.sublimebuild 2 name string.sublimebuild comment No exhaustive list of encodings for Python exist, so we cannot restrict this. match "(encoding)":\s*"(.*?)" env begin "(env)"\s*: beginCaptures 1 name keyword.other.sublimebuild end (?<=\}) name meta.definition.environment.block.sublimebuild patterns captures 1 name string.variable.name.sublimebuild match "([a-zA-Z0-9_]+)"\s*: include #envVarString match \{ envVarString begin " end " patterns captures 1 name constant.character.escape.sublimebuild match (\\(?:"|t|n|r)) captures 1 name support.function.sublimebuild 2 name entity.other.attribute-name.sublimebuild 3 name support.function.sublimebuild match (%)(.*?)(%) name meta.environment.variable.sublimebuild captures 1 name support.function.sublimebuild 2 name entity.other.attribute-name.sublimebuild match (\$)([A-Z]+) name meta.environment.variable.sublimebuild captures 1 name support.function.sublimebuild 2 name entity.other.attribute-name.sublimebuild match (\$){(.*?)} name meta.environment.variable.sublimebuild match ;|:(?!\\) name keyword.other.path.separator.sublimebuild match . name string.sublimebuild errorRegex begin "(file_regex|line_regex)"\s*:\s*(") beginCaptures 1 name keyword.other.error.regex.sublimebuild 2 name punctuation.definition.regex.start.sublimebuild end (?<!\\)" name meta.definition.error.data.sublimebuild patterns include source.escapedregexp match " name punctuation.definition.regex.end.sublimebuild name captures 1 name keyword.other.sublimebuild 2 name string.quoted.double.sublimebuild match "(name)"\s*:\s*"(.+?)" path begin "(path)"\s*: beginCaptures 1 name keyword.other.path.sublimebuild 2 name punctuation.definition.path.start.sublimebuild end (?<=") endCaptures 1 name punctuation.definition.path.end.untitled name meta.definition.path.variable.sublimebuild patterns include #envVarString shell captures 1 name keyword.other.shell.sublimebuild 2 name constant.numeric.boolean.sublimebuild match "(shell)":\s*(true|false) simpleOptions captures 1 name keyword.other.sublimebuild 2 name string.sublimebuild comment Maybe make this a begin-end: paths must contain characters; cling to that. match "(working_dir|selector|target)":\s*"(.*?)" variant begin "(variant)"\s*: beginCaptures 1 name keyword.other.sublimebuild end (?<=\}) name meta.definition.variant.sublimebuild patterns include #cmd include #env include #path include #name match { include source.jsongenericobject match } scopeName source.sublimebuild uuid 855d82a3-8501-467f-ba88-4bf91e02ea6d