[{"displayName":"Makefile","name":"make","patterns":[{"include":"#comment"},{"include":"#variables"},{"include":"#variable-assignment"},{"include":"#directives"},{"include":"#recipe"},{"include":"#target"}],"repository":{"another-variable-braces":{"patterns":[{"begin":"(?<=\\{)(?!})","end":"(?=}|((?<!\\\\)\\n))","name":"variable.other.makefile","patterns":[{"include":"#variables"},{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"}]}]},"another-variable-parentheses":{"patterns":[{"begin":"(?<=\\()(?!\\))","end":"(?=\\)|((?<!\\\\)\\n))","name":"variable.other.makefile","patterns":[{"include":"#variables"},{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"}]}]},"braces-interpolation":{"begin":"\\{","end":"}","patterns":[{"include":"#variables"},{"include":"#interpolation"}]},"builtin-variable-braces":{"patterns":[{"match":"(?<=\\{)(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*})","name":"variable.language.makefile"}]},"builtin-variable-parentheses":{"patterns":[{"match":"(?<=\\()(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*\\))","name":"variable.language.makefile"}]},"comma":{"match":",","name":"punctuation.separator.delimeter.comma.makefile"},"comment":{"begin":"(^ +)?((?<!\\\\)(\\\\\\\\)*)(?=#)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.makefile"}},"end":"(?!\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.makefile"}},"end":"(?=[^\\\\])$","name":"comment.line.number-sign.makefile","patterns":[{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"}]}]},"directives":{"patterns":[{"begin":"^ *([-s]?include)\\b","beginCaptures":{"1":{"name":"keyword.control.include.makefile"}},"end":"^","patterns":[{"include":"#comment"},{"include":"#variables"},{"match":"%","name":"constant.other.placeholder.makefile"}]},{"begin":"^ *(vpath)\\b","beginCaptures":{"1":{"name":"keyword.control.vpath.makefile"}},"end":"^","patterns":[{"include":"#comment"},{"include":"#variables"},{"match":"%","name":"constant.other.placeholder.makefile"}]},{"begin":"^\\s*(?:(override)\\s*)?(define)\\s*(\\S+)\\s*([+:?]??=)?(?=\\s)","captures":{"1":{"name":"keyword.control.override.makefile"},"2":{"name":"keyword.control.define.makefile"},"3":{"name":"variable.other.makefile"},"4":{"name":"punctuation.separator.key-value.makefile"}},"end":"^\\s*(endef)\\b","name":"meta.scope.conditional.makefile","patterns":[{"begin":"\\G(?!\\n)","end":"^","patterns":[{"include":"#comment"}]},{"include":"#variables"},{"include":"#directives"}]},{"begin":"^ *(export)\\b","beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}},"end":"^","patterns":[{"include":"#comment"},{"include":"#variable-assignment"},{"match":"\\S+","name":"variable.other.makefile"}]},{"begin":"^ *(override|private)\\b","beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}},"end":"^","patterns":[{"include":"#comment"},{"include":"#variable-assignment"}]},{"begin":"^ *(un(?:export|define))\\b","beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}},"end":"^","patterns":[{"include":"#comment"},{"match":"\\S+","name":"variable.other.makefile"}]},{"begin":"^\\s*(ifn??(?:eq|def))(?=\\s)","captures":{"1":{"name":"keyword.control.$1.makefile"}},"end":"^\\s*(endif)\\b","name":"meta.scope.conditional.makefile","patterns":[{"begin":"\\G","end":"^","name":"meta.scope.condition.makefile","patterns":[{"include":"#comma"},{"include":"#variables"},{"include":"#comment"}]},{"begin":"^\\s*else(?=\\s)\\s*(ifn??(?:eq|def))*(?=\\s)","beginCaptures":{"0":{"name":"keyword.control.else.makefile"}},"end":"^","patterns":[{"include":"#comma"},{"include":"#variables"},{"include":"#comment"}]},{"include":"$self"}]}]},"flavor-variable-braces":{"patterns":[{"begin":"(?<=\\{)(origin|flavor)\\s(?=[^}\\s]+\\s*})","beginCaptures":{"1":{"name":"support.function.$1.makefile"}},"contentName":"variable.other.makefile","end":"(?=})","name":"meta.scope.function-call.makefile","patterns":[{"include":"#variables"}]}]},"flavor-variable-parentheses":{"patterns":[{"begin":"(?<=\\()(origin|flavor)\\s(?=[^)\\s]+\\s*\\))","beginCaptures":{"1":{"name":"support.function.$1.makefile"}},"contentName":"variable.other.makefile","end":"(?=\\))","name":"meta.scope.function-call.makefile","patterns":[{"include":"#variables"}]}]},"function-variable-braces":{"patterns":[{"begin":"(?<=\\{)(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s","beginCaptures":{"1":{"name":"support.function.$1.makefile"}},"end":"(?=}|((?<!\\\\)\\n))","name":"meta.scope.function-call.makefile","patterns":[{"include":"#comma"},{"include":"#variables"},{"include":"#interpolation"},{"match":"[%*]","name":"constant.other.placeholder.makefile"},{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"}]}]},"function-variable-parentheses":{"patterns":[{"begin":"(?<=\\()(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s","beginCaptures":{"1":{"name":"support.function.$1.makefile"}},"end":"(?=\\)|((?<!\\\\)\\n))","name":"meta.scope.function-call.makefile","patterns":[{"include":"#comma"},{"include":"#variables"},{"include":"#interpolation"},{"match":"[%*]","name":"constant.other.placeholder.makefile"},{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"}]}]},"interpolation":{"patterns":[{"include":"#parentheses-interpolation"},{"include":"#braces-interpolation"}]},"parentheses-interpolation":{"begin":"\\(","end":"\\)","patterns":[{"include":"#variables"},{"include":"#interpolation"}]},"recipe":{"begin":"^\\t([-+@]*)","beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}},"end":"[^\\\\]$","name":"meta.scope.recipe.makefile","patterns":[{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"},{"include":"#variables"}]},"simple-variable":{"patterns":[{"match":"\\$[^(){}]","name":"variable.language.makefile"}]},"target":{"begin":"^(?!\\t)([^:]*)(:)(?!=)","beginCaptures":{"1":{"patterns":[{"captures":{"1":{"name":"support.function.target.$1.makefile"}},"match":"^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$"},{"begin":"(?=\\S)","end":"(?=\\s|$)","name":"entity.name.function.target.makefile","patterns":[{"include":"#variables"},{"match":"%","name":"constant.other.placeholder.makefile"}]}]},"2":{"name":"punctuation.separator.key-value.makefile"}},"end":"[^\\\\]$","name":"meta.scope.target.makefile","patterns":[{"begin":"\\G","end":"(?=[^\\\\])$","name":"meta.scope.prerequisites.makefile","patterns":[{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"},{"match":"[%*]","name":"constant.other.placeholder.makefile"},{"include":"#comment"},{"include":"#variables"}]}]},"variable-assignment":{"begin":"(^ *|\\G\\s*)([^#:=\\s]+)\\s*((?:(?<![!+:?])|[!+:?])=)","beginCaptures":{"2":{"name":"variable.other.makefile","patterns":[{"include":"#variables"}]},"3":{"name":"punctuation.separator.key-value.makefile"}},"end":"\\n","patterns":[{"match":"\\\\\\n","name":"constant.character.escape.continuation.makefile"},{"include":"#comment"},{"include":"#variables"}]},"variable-braces":{"patterns":[{"begin":"\\$\\{","captures":{"0":{"name":"punctuation.definition.variable.makefile"}},"end":"}|((?<!\\\\)\\n)","name":"string.interpolated.makefile","patterns":[{"include":"#variables"},{"include":"#builtin-variable-braces"},{"include":"#function-variable-braces"},{"include":"#flavor-variable-braces"},{"include":"#another-variable-braces"}]}]},"variable-parentheses":{"patterns":[{"begin":"\\$\\(","captures":{"0":{"name":"punctuation.definition.variable.makefile"}},"end":"\\)|((?<!\\\\)\\n)","name":"string.interpolated.makefile","patterns":[{"include":"#variables"},{"include":"#builtin-variable-parentheses"},{"include":"#function-variable-parentheses"},{"include":"#flavor-variable-parentheses"},{"include":"#another-variable-parentheses"}]}]},"variables":{"patterns":[{"include":"#simple-variable"},{"include":"#variable-parentheses"},{"include":"#variable-braces"}]}},"scopeName":"source.makefile"}]