-syntax "Makefile" "([Mm]akefile|\.ma?k)$"
+syntax "makefile" "([Mm]akefile|\.ma?k)$"
header "^#!.*/(env +)?[bg]?make( |$)"
-color cyan "\b(ifeq|ifdef|ifneq|ifndef|else|endif)\b"
-color cyan "^(export|include|override)\b"
-color brightmagenta "^[^:= ]+:"
-color red "[=,%]" "\+=|\?=|:=|&&|\|\|"
-color brightblue "\$\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]"
-color brightblue "\$\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]"
-color brightblue "\$\((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]"
-color brightblue "\$\((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]"
-color brightblue "\$\((value|warning|wildcard|word|wordlist|words)[[:space:]]"
-color black "[()$]"
-color yellow ""(\\.|[^"])*"|'(\\.|[^'])*'"
-color brightyellow "\$+(\{[^} ]+\}|\([^) ]+\))"
-color brightyellow "\$[@^<*?%|+]|\$\([@^<*?%+-][DF]\)"
-color magenta "\$\$|\\.?"
-color brightblack "(^|[[:space:]])#([^{].*)?$"
-color brightblack "^ @#.*"
-
-# Show trailing whitespace
-color ,green "[[:space:]]+$"
+color preproc "\<(ifeq|ifdef|ifneq|ifndef|else|endif)\>"
+color statement "^(export|include|override)\>"
+color operator "^[^:= ]+:"
+color operator "[=,%]" "\+=|\?=|:=|&&|\|\|"
+color statement "\$\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]"
+color statement "\$\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]"
+color statement "\$\((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]"
+color statement "\$\((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]"
+color statement "\$\((value|warning|wildcard|word|wordlist|words)[[:space:]]"
+color identifier "^.+:"
+color identifier "[()$]"
+color constant ""(\\.|[^"])*"|'(\\.|[^'])*'"
+color identifier "\$+(\{[^} ]+\}|\([^) ]+\))"
+color identifier "\$[@^<*?%|+]|\$\([@^<*?%+-][DF]\)"
+color identifier "\$\$|\\.?"
+color comment "(^|[[:space:]])#([^{].*)?$"
+color comment "^ @#.*"