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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| module.exports = function(hljs) {
| /* Variables: simple (eg $(var)) and special (eg $@) */
| var VARIABLE = {
| className: 'variable',
| variants: [
| {
| begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)',
| contains: [hljs.BACKSLASH_ESCAPE],
| },
| {
| begin: /\$[@%<?\^\+\*]/
| },
| ]
| };
| /* Quoted string with variables inside */
| var QUOTE_STRING = {
| className: 'string',
| begin: /"/, end: /"/,
| contains: [
| hljs.BACKSLASH_ESCAPE,
| VARIABLE,
| ]
| };
| /* Function: $(func arg,...) */
| var FUNC = {
| 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: [
| VARIABLE,
| ]
| };
| /* Variable assignment */
| var ASSIGNMENT = {
| begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\s*(?=[:+?]?=)'
| };
| /* Meta targets (.PHONY) */
| var META = {
| className: 'meta',
| begin: /^\.PHONY:/, end: /$/,
| keywords: {'meta-keyword': '.PHONY'},
| lexemes: /[\.\w]+/
| };
| /* Targets */
| var TARGET = {
| className: 'section',
| begin: /^[^\s]+:/, end: /$/,
| contains: [VARIABLE,]
| };
| 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: [
| hljs.HASH_COMMENT_MODE,
| VARIABLE,
| QUOTE_STRING,
| FUNC,
| ASSIGNMENT,
| META,
| TARGET,
| ]
| };
| };
|
|