2024-01-22 18:48:00 +08:00

59 lines
1.5 KiB
JavaScript

module.exports = function (e) {
var i = {
className: "variable",
variants: [
{
begin: "\\$\\(" + e.UNDERSCORE_IDENT_RE + "\\)",
contains: [e.BACKSLASH_ESCAPE],
},
{ begin: /\$[@%<?\^\+\*]/ },
],
},
n = {
className: "string",
begin: /"/,
end: /"/,
contains: [e.BACKSLASH_ESCAPE, i],
},
a = {
className: "variable",
begin: /\$\([\w-]+\s/,
end: /\)/,
keywords: {
built_in:
"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value",
},
contains: [i],
},
s = {
begin: "^" + e.UNDERSCORE_IDENT_RE + "\\s*[:+?]?=",
illegal: "\\n",
returnBegin: !0,
contains: [
{ begin: "^" + e.UNDERSCORE_IDENT_RE, end: "[:+?]?=", excludeEnd: !0 },
],
},
r = { className: "section", begin: /^[^\s]+:/, end: /$/, contains: [i] };
return {
aliases: ["mk", "mak"],
keywords:
"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",
lexemes: /[\w-]+/,
contains: [
e.HASH_COMMENT_MODE,
i,
n,
a,
s,
{
className: "meta",
begin: /^\.PHONY:/,
end: /$/,
keywords: { "meta-keyword": ".PHONY" },
lexemes: /[\.\w]+/,
},
r,
],
};
};