filetype: makefile
-detect:
+detect:
filename: "([Mm]akefile|\\.ma?k)$"
header: "^#!.*/(env +)?[bg]?make( |$)"
rules:
- - preproc: "\\b(ifeq|ifdef|ifneq|ifndef|else|endif)\\b"
- - preproc: "^(export|include|override)\\b"
+ - preproc: "\\<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>"
+ - statement: "^(export|include|override)\\>"
- symbol.operator: "^[^:= ]+:"
- - symbol.operator: "[=,%]|\\+=|\\?=|:=|&&|\\|\\|"
+ - symbol.operator: "([=,%]|\\+=|\\?=|:=|&&|\\|\\|)"
- statement: "\\$\\((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: "\\$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]"
- identifier: "^.+:"
- identifier: "[()$]"
- - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"
+ - constant.string:
+ start: "\""
+ end: "\""
+ skip: "\\\\."
+ rules:
+ - constant.specialChar: "\\\\."
+ - constant.string:
+ start: "'"
+ end: "'"
+ skip: "\\\\."
+ rules:
+ - constant.specialChar: "\\\\."
- identifier: "\\$+(\\{[^} ]+\\}|\\([^) ]+\\))"
- identifier: "\\$[@^<*?%|+]|\\$\\([@^<*?%+-][DF]\\)"
- identifier: "\\$\\$|\\\\.?"
- - comment: "(^|[[:space:]])#([^{].*)?$"
- - comment: "^ @#.*"
+ - comment:
+ start: "#"
+ end: "$"
+ rules: []
+