(comment) @comment @spell (conditional (_ [ "ifeq" "else" "ifneq" "ifdef" "ifndef" ] @conditional) "endif" @conditional) (rule (targets (word) @function.builtin (#any-of? @function.builtin ".DEFAULT" ".SUFFIXES" ".DELETE_ON_ERROR" ".EXPORT_ALL_VARIABLES" ".IGNORE" ".INTERMEDIATE" ".LOW_RESOLUTION_TIME" ".NOTPARALLEL" ".ONESHELL" ".PHONY" ".POSIX" ".PRECIOUS" ".SECONDARY" ".SECONDEXPANSION" ".SILENT" ".SUFFIXES"))) (rule ["&:" ":" "::"] @operator) (export_directive "export" @keyword) (override_directive "override" @keyword) (include_directive ["include" "-include"] @include) (variable_assignment name: (word) @symbol [ "?=" ":=" "::=" ; ":::=" "+=" "=" ] @operator) (shell_assignment name: (word) @symbol "!=" @operator) (define_directive "define" @keyword name: (word) @symbol [ "=" ":=" "::=" ; ":::=" "?=" "!=" ]? @operator "endef" @keyword) (variable_assignment (word) @variable.builtin (#any-of? @variable.builtin ".DEFAULT_GOAL" ".EXTRA_PREREQS" ".FEATURES" ".INCLUDE_DIRS" ".RECIPEPREFIX" ".SHELLFLAGS" ".VARIABLES" "MAKEARGS" "MAKEFILE_LIST" "MAKEFLAGS" "MAKE_RESTARTS" "MAKE_TERMERR" "MAKE_TERMOUT" "SHELL" )) ; Use string to match bash (variable_reference (word) @string) @operator (shell_function ["$" "(" ")"] @operator "shell" @function.builtin) (function_call ["$" "(" ")"] @operator) (substitution_reference ["$" "(" ")"] @operator) (function_call [ "subst" "patsubst" "strip" "findstring" "filter" "filter-out" "sort" "word" "words" "wordlist" "firstword" "lastword" "dir" "notdir" "suffix" "basename" "addsuffix" "addprefix" "join" "wildcard" "realpath" "abspath" "error" "warning" "info" "origin" "flavor" "foreach" "if" "or" "and" "call" "eval" "file" "value" ] @function.builtin)