-
-
Notifications
You must be signed in to change notification settings - Fork 36
/
makefile.js
39 lines (38 loc) · 1.3 KB
/
makefile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// @ts-nocheck
makefile.displayName = 'makefile'
makefile.aliases = []
/** @type {import('../core.js').Syntax} */
export default function makefile(Prism) {
Prism.languages.makefile = {
comment: {
pattern: /(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,
lookbehind: true
},
string: {
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
greedy: true
},
'builtin-target': {
pattern: /\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,
alias: 'builtin'
},
target: {
pattern: /^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,
alias: 'symbol',
inside: {
variable: /\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/
}
},
variable: /\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,
// Directives
keyword:
/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,
function: {
pattern:
/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,
lookbehind: true
},
operator: /(?:::|[?:+!])?=|[|@]/,
punctuation: /[:;(){}]/
}
}