{"name":"Makefile","scopeName":"source.makefile","patterns":[{"include":"#comment"},{"include":"#variable-assignment"},{"include":"#recipe"},{"include":"#directives"}],"repository":{"comment":{"begin":"(^[ \\t]+)?(?=#)","end":"(?!\\G)","patterns":[{"name":"comment.line.number-sign.makefile","begin":"#","end":"\\n","patterns":[{"name":"constant.character.escape.continuation.makefile","match":"\\\\\\n"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.makefile"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.makefile"}}},"directives":{"patterns":[{"begin":"^[ ]*([s\\-]?include)\\b","end":"^","patterns":[{"include":"#comment"},{"include":"#variables"},{"name":"constant.other.placeholder.makefile","match":"%"}],"beginCaptures":{"1":{"name":"keyword.control.include.makefile"}}},{"begin":"^[ ]*(vpath)\\b","end":"^","patterns":[{"include":"#comment"},{"include":"#variables"},{"name":"constant.other.placeholder.makefile","match":"%"}],"beginCaptures":{"1":{"name":"keyword.control.vpath.makefile"}}},{"name":"meta.scope.conditional.makefile","begin":"^(?:(override)\\s*)?(define)\\s*([^\\s]+)\\s*(=|\\?=|:=|\\+=)?(?=\\s)","end":"^(endef)\\b","patterns":[{"begin":"\\G(?!\\n)","end":"^","patterns":[{"include":"#comment"}]},{"include":"#variables"},{"include":"#comment"},{"include":"#directives"}],"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"}}},{"begin":"^[ ]*(export)\\b","end":"^","patterns":[{"include":"#comment"},{"include":"#variable-assignment"},{"name":"variable.other.makefile","match":"[^\\s]+"}],"beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}}},{"begin":"^[ ]*(override|private)\\b","end":"^","patterns":[{"include":"#comment"},{"include":"#variable-assignment"}],"beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}}},{"begin":"^[ ]*(unexport|undefine)\\b","end":"^","patterns":[{"include":"#comment"},{"name":"variable.other.makefile","match":"[^\\s]+"}],"beginCaptures":{"1":{"name":"keyword.control.$1.makefile"}}},{"name":"meta.scope.conditional.makefile","begin":"^(ifdef|ifndef)\\s*([^\\s]+)(?=\\s)","end":"^(endif)\\b","patterns":[{"begin":"\\G(?!\\n)","end":"^","patterns":[{"include":"#comment"}]},{"include":"$self"}],"captures":{"1":{"name":"keyword.control.$1.makefile"},"2":{"name":"variable.other.makefile"},"3":{"name":"punctuation.separator.key-value.makefile"}}},{"name":"meta.scope.conditional.makefile","begin":"^(ifeq|ifneq)(?=\\s)","end":"^(endif)\\b","patterns":[{"name":"meta.scope.condition.makefile","begin":"\\G","end":"^","patterns":[{"include":"#variables"},{"include":"#comment"}]},{"begin":"^else(?=\\s)","end":"^","beginCaptures":{"0":{"name":"keyword.control.else.makefile"}}},{"include":"$self"}],"captures":{"1":{"name":"keyword.control.$1.makefile"}}}]},"interpolation":{"name":"meta.embedded.line.shell","begin":"(?=`)","end":"(?!\\G)","patterns":[{"name":"string.interpolated.backtick.makefile","contentName":"source.shell","begin":"`","end":"(`)","patterns":[{"include":"source.shell"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.makefile"}},"endCaptures":{"0":{"name":"punctuation.definition.string.makefile"},"1":{"name":"source.shell"}}}]},"recipe":{"name":"meta.scope.target.makefile","begin":"^(?!\\t)([^:]*)(:)(?!\\=)","end":"^(?!\\t)","patterns":[{"name":"meta.scope.prerequisites.makefile","begin":"\\G","end":"^","patterns":[{"name":"constant.character.escape.continuation.makefile","match":"\\\\\\n"},{"name":"constant.other.placeholder.makefile","match":"%|\\*"},{"include":"#comment"},{"include":"#variables"}]},{"name":"meta.scope.recipe.makefile","begin":"^\\t","while":"^\\t","patterns":[{"match":".+\\n?","captures":{"0":{"patterns":[{"name":"constant.character.escape.continuation.makefile","match":"\\\\\\n"},{"include":"#variables"},{"include":"source.shell"}]}}}]}],"beginCaptures":{"1":{"patterns":[{"match":"^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$","captures":{"1":{"name":"support.function.target.$1.makefile"}}},{"name":"entity.name.function.target.makefile","begin":"(?=\\S)","end":"(?=\\s|$)","patterns":[{"include":"#variables"},{"name":"constant.other.placeholder.makefile","match":"%"}]}]},"2":{"name":"punctuation.separator.key-value.makefile"}}},"variable-assignment":{"begin":"(^[ ]*|\\G\\s*)([^\\s]+)\\s*(=|\\?=|:=|\\+=)","end":"\\n","patterns":[{"name":"constant.character.escape.continuation.makefile","match":"\\\\\\n"},{"include":"#comment"},{"include":"#variables"},{"include":"#interpolation"}],"beginCaptures":{"2":{"name":"variable.other.makefile"},"3":{"name":"punctuation.separator.key-value.makefile"}}},"variables":{"patterns":[{"name":"variable.language.makefile","match":"(\\$?\\$)[@%\u003c?^+*]","captures":{"1":{"name":"punctuation.definition.variable.makefile"}}},{"name":"string.interpolated.makefile","begin":"\\$?\\$\\(","end":"\\)","patterns":[{"include":"#variables"},{"name":"variable.language.makefile","match":"\\G(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*\\))"},{"name":"meta.scope.function-call.makefile","begin":"\\G(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","end":"(?=\\))","patterns":[{"include":"#variables"},{"name":"constant.other.placeholder.makefile","match":"%|\\*"}],"beginCaptures":{"1":{"name":"support.function.$1.makefile"}}},{"name":"meta.scope.function-call.makefile","contentName":"variable.other.makefile","begin":"\\G(origin|flavor)\\s(?=[^\\s)]+\\s*\\))","end":"(?=\\))","patterns":[{"include":"#variables"}]},{"name":"variable.other.makefile","begin":"\\G(?!\\))","end":"(?=\\))","patterns":[{"include":"#variables"}]}],"captures":{"0":{"name":"punctuation.definition.variable.makefile"}}}]}}}