[OCaml] Mobile-friendly clone of cgit.
1
{
2
"information_for_contributors":[
3
"This file has been converted from https://github.com/fadeevab/make.tmbundle/blob/master/Syntaxes/Makefile.plist",
4
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
5
"Once accepted there, we are happy to receive an update request."
6
],
7
"version":"https://github.com/fadeevab/make.tmbundle/commit/1d4c0b541959995db098df751ffc129da39a294b",
8
"name":"Makefile",
9
"scopeName":"source.makefile",
10
"patterns":[
11
{
12
"include":"#comment"
13
},
14
{
15
"include":"#variables"
16
},
17
{
18
"include":"#variable-assignment"
19
},
20
{
21
"include":"#directives"
22
},
23
{
24
"include":"#recipe"
25
},
26
{
27
"include":"#target"
28
}
29
],
30
"repository":{
31
"comma":{
32
"match":",",
33
"name":"punctuation.separator.delimeter.comma.makefile"
34
},
35
"comment":{
36
"begin":"(^[ ]+)?((?<!\\\\)(\\\\\\\\)*)(?=#)",
37
"beginCaptures":{
38
"1":{
39
"name":"punctuation.whitespace.comment.leading.makefile"
40
}
41
},
42
"end":"(?!\\G)",
43
"patterns":[
44
{
45
"begin":"#",
46
"beginCaptures":{
47
"0":{
48
"name":"punctuation.definition.comment.makefile"
49
}
50
},
51
"end":"(?=[^\\\\])$",
52
"name":"comment.line.number-sign.makefile",
53
"patterns":[
54
{
55
"match":"\\\\\\n",
56
"name":"constant.character.escape.continuation.makefile"
57
}
58
]
59
}
60
]
61
},
62
"directives":{
63
"patterns":[
64
{
65
"begin":"^[ ]*([s\\-]?include)\\b",
66
"beginCaptures":{
67
"1":{
68
"name":"keyword.control.include.makefile"
69
}
70
},
71
"end":"^",
72
"patterns":[
73
{
74
"include":"#comment"
75
},
76
{
77
"include":"#variables"
78
},
79
{
80
"match":"%",
81
"name":"constant.other.placeholder.makefile"
82
}
83
]
84
},
85
{
86
"begin":"^[ ]*(vpath)\\b",
87
"beginCaptures":{
88
"1":{
89
"name":"keyword.control.vpath.makefile"
90
}
91
},
92
"end":"^",
93
"patterns":[
94
{
95
"include":"#comment"
96
},
97
{
98
"include":"#variables"
99
},
100
{
101
"match":"%",
102
"name":"constant.other.placeholder.makefile"
103
}
104
]
105
},
106
{
107
"begin":"^\\s*(?:(override)\\s*)?(define)\\s*([^\\s]+)\\s*(=|\\?=|:=|\\+=)?(?=\\s)",
108
"captures":{
109
"1":{
110
"name":"keyword.control.override.makefile"
111
},
112
"2":{
113
"name":"keyword.control.define.makefile"
114
},
115
"3":{
116
"name":"variable.other.makefile"
117
},
118
"4":{
119
"name":"punctuation.separator.key-value.makefile"
120
}
121
},
122
"end":"^\\s*(endef)\\b",
123
"name":"meta.scope.conditional.makefile",
124
"patterns":[
125
{
126
"begin":"\\G(?!\\n)",
127
"end":"^",
128
"patterns":[
129
{
130
"include":"#comment"
131
}
132
]
133
},
134
{
135
"include":"#variables"
136
},
137
{
138
"include":"#directives"
139
}
140
]
141
},
142
{
143
"begin":"^[ ]*(export)\\b",
144
"beginCaptures":{
145
"1":{
146
"name":"keyword.control.$1.makefile"
147
}
148
},
149
"end":"^",
150
"patterns":[
151
{
152
"include":"#comment"
153
},
154
{
155
"include":"#variable-assignment"
156
},
157
{
158
"match":"[^\\s]+",
159
"name":"variable.other.makefile"
160
}
161
]
162
},
163
{
164
"begin":"^[ ]*(override|private)\\b",
165
"beginCaptures":{
166
"1":{
167
"name":"keyword.control.$1.makefile"
168
}
169
},
170
"end":"^",
171
"patterns":[
172
{
173
"include":"#comment"
174
},
175
{
176
"include":"#variable-assignment"
177
}
178
]
179
},
180
{
181
"begin":"^[ ]*(unexport|undefine)\\b",
182
"beginCaptures":{
183
"1":{
184
"name":"keyword.control.$1.makefile"
185
}
186
},
187
"end":"^",
188
"patterns":[
189
{
190
"include":"#comment"
191
},
192
{
193
"match":"[^\\s]+",
194
"name":"variable.other.makefile"
195
}
196
]
197
},
198
{
199
"begin":"^\\s*(ifeq|ifneq|ifdef|ifndef)(?=\\s)",
200
"captures":{
201
"1":{
202
"name":"keyword.control.$1.makefile"
203
}
204
},
205
"end":"^\\s*(endif)\\b",
206
"name":"meta.scope.conditional.makefile",
207
"patterns":[
208
{
209
"begin":"\\G",
210
"end":"^",
211
"name":"meta.scope.condition.makefile",
212
"patterns":[
213
{
214
"include":"#comma"
215
},
216
{
217
"include":"#variables"
218
},
219
{
220
"include":"#comment"
221
}
222
]
223
},
224
{
225
"begin":"^\\s*else(?=\\s)\\s*(ifeq|ifneq|ifdef|ifndef)*(?=\\s)",
226
"beginCaptures":{
227
"0":{
228
"name":"keyword.control.else.makefile"
229
}
230
},
231
"end":"^",
232
"patterns":[
233
{
234
"include":"#comma"
235
},
236
{
237
"include":"#variables"
238
},
239
{
240
"include":"#comment"
241
}
242
]
243
},
244
{
245
"include":"$self"
246
}
247
]
248
}
249
]
250
},
251
"target":{
252
"begin":"^(?!\\t)([^:]*)(:)(?!\\=)",
253
"beginCaptures":{
254
"1":{
255
"patterns":[
256
{
257
"captures":{
258
"1":{
259
"name":"support.function.target.$1.makefile"
260
}
261
},
262
"match":"^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$"
263
},
264
{
265
"begin":"(?=\\S)",
266
"end":"(?=\\s|$)",
267
"name":"entity.name.function.target.makefile",
268
"patterns":[
269
{
270
"include":"#variables"
271
},
272
{
273
"match":"%",
274
"name":"constant.other.placeholder.makefile"
275
}
276
]
277
}
278
]
279
},
280
"2":{
281
"name":"punctuation.separator.key-value.makefile"
282
}
283
},
284
"end":"[^\\\\]$",
285
"name":"meta.scope.target.makefile",
286
"patterns":[
287
{
288
"begin":"\\G",
289
"end":"(?=[^\\\\])$",
290
"name":"meta.scope.prerequisites.makefile",
291
"patterns":[
292
{
293
"match":"\\\\\\n",
294
"name":"constant.character.escape.continuation.makefile"
295
},
296
{
297
"match":"%|\\*",
298
"name":"constant.other.placeholder.makefile"
299
},
300
{
301
"include":"#comment"
302
},
303
{
304
"include":"#variables"
305
}
306
]
307
}
308
]
309
},
310
"recipe":{
311
"begin":"^\\t([+\\-@]*)",
312
"beginCaptures":{
313
"1":{
314
"name":"keyword.control.$1.makefile"
315
}
316
},
317
"end":"[^\\\\]$",
318
"name":"meta.scope.recipe.makefile",
319
"patterns":[
320
{
321
"match":"\\\\\\n",
322
"name":"constant.character.escape.continuation.makefile"
323
},
324
{
325
"include":"#variables"
326
}
327
]
328
},
329
"variable-assignment":{
330
"begin":"(^[ ]*|\\G\\s*)([^\\s:#=]+)\\s*((?<![?:+!])=|\\?=|:=|\\+=|!=)",
331
"beginCaptures":{
332
"2":{
333
"name":"variable.other.makefile",
334
"patterns":[
335
{
336
"include":"#variables"
337
}
338
]
339
},
340
"3":{
341
"name":"punctuation.separator.key-value.makefile"
342
}
343
},
344
"end":"\\n",
345
"patterns":[
346
{
347
"match":"\\\\\\n",
348
"name":"constant.character.escape.continuation.makefile"
349
},
350
{
351
"include":"#comment"
352
},
353
{
354
"include":"#variables"
355
}
356
]
357
},
358
"interpolation":{
359
"patterns":[
360
{
361
"include":"#parentheses-interpolation"
362
},
363
{
364
"include":"#braces-interpolation"
365
}
366
]
367
},
368
"parentheses-interpolation":{
369
"begin":"\\(",
370
"end":"\\)",
371
"patterns":[
372
{
373
"include":"#variables"
374
},
375
{
376
"include":"#interpolation"
377
}
378
]
379
},
380
"braces-interpolation":{
381
"begin":"{",
382
"end":"}",
383
"patterns":[
384
{
385
"include":"#variables"
386
},
387
{
388
"include":"#interpolation"
389
}
390
]
391
},
392
"variables":{
393
"patterns":[
394
{
395
"include":"#simple-variable"
396
},
397
{
398
"include":"#variable-parentheses"
399
},
400
{
401
"include":"#variable-braces"
402
}
403
]
404
},
405
"simple-variable":{
406
"patterns":[
407
{
408
"match":"\\$[^(){}]",
409
"name":"variable.language.makefile"
410
}
411
]
412
},
413
"variable-parentheses":{
414
"patterns":[
415
{
416
"begin":"\\$\\(",
417
"captures":{
418
"0":{
419
"name":"punctuation.definition.variable.makefile"
420
}
421
},
422
"end":"\\)|((?<!\\\\)\\n)",
423
"name":"string.interpolated.makefile",
424
"patterns":[
425
{
426
"include":"#variables"
427
},
428
{
429
"include":"#builtin-variable-parentheses"
430
},
431
{
432
"include":"#function-variable-parentheses"
433
},
434
{
435
"include":"#flavor-variable-parentheses"
436
},
437
{
438
"include":"#another-variable-parentheses"
439
}
440
]
441
}
442
]
443
},
444
"variable-braces":{
445
"patterns":[
446
{
447
"begin":"\\${",
448
"captures":{
449
"0":{
450
"name":"punctuation.definition.variable.makefile"
451
}
452
},
453
"end":"}|((?<!\\\\)\\n)",
454
"name":"string.interpolated.makefile",
455
"patterns":[
456
{
457
"include":"#variables"
458
},
459
{
460
"include":"#builtin-variable-braces"
461
},
462
{
463
"include":"#function-variable-braces"
464
},
465
{
466
"include":"#flavor-variable-braces"
467
},
468
{
469
"include":"#another-variable-braces"
470
}
471
]
472
}
473
]
474
},
475
"builtin-variable-parentheses":{
476
"patterns":[
477
{
478
"match":"(?<=\\()(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*\\))",
479
"name":"variable.language.makefile"
480
}
481
]
482
},
483
"builtin-variable-braces":{
484
"patterns":[
485
{
486
"match":"(?<={)(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*})",
487
"name":"variable.language.makefile"
488
}
489
]
490
},
491
"function-variable-parentheses":{
492
"patterns":[
493
{
494
"begin":"(?<=\\()(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s",
495
"beginCaptures":{
496
"1":{
497
"name":"support.function.$1.makefile"
498
}
499
},
500
"end":"(?=\\)|((?<!\\\\)\\n))",
501
"name":"meta.scope.function-call.makefile",
502
"patterns":[
503
{
504
"include":"#comma"
505
},
506
{
507
"include":"#variables"
508
},
509
{
510
"include":"#interpolation"
511
},
512
{
513
"match":"%|\\*",
514
"name":"constant.other.placeholder.makefile"
515
},
516
{
517
"match":"\\\\\\n",
518
"name":"constant.character.escape.continuation.makefile"
519
}
520
]
521
}
522
]
523
},
524
"function-variable-braces":{
525
"patterns":[
526
{
527
"begin":"(?<={)(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s",
528
"beginCaptures":{
529
"1":{
530
"name":"support.function.$1.makefile"
531
}
532
},
533
"end":"(?=}|((?<!\\\\)\\n))",
534
"name":"meta.scope.function-call.makefile",
535
"patterns":[
536
{
537
"include":"#comma"
538
},
539
{
540
"include":"#variables"
541
},
542
{
543
"include":"#interpolation"
544
},
545
{
546
"match":"%|\\*",
547
"name":"constant.other.placeholder.makefile"
548
},
549
{
550
"match":"\\\\\\n",
551
"name":"constant.character.escape.continuation.makefile"
552
}
553
]
554
}
555
]
556
},
557
"flavor-variable-parentheses":{
558
"patterns":[
559
{
560
"begin":"(?<=\\()(origin|flavor)\\s(?=[^\\s)]+\\s*\\))",
561
"contentName":"variable.other.makefile",
562
"beginCaptures":{
563
"1":{
564
"name":"support.function.$1.makefile"
565
}
566
},
567
"end":"(?=\\))",
568
"name":"meta.scope.function-call.makefile",
569
"patterns":[
570
{
571
"include":"#variables"
572
}
573
]
574
}
575
]
576
},
577
"flavor-variable-braces":{
578
"patterns":[
579
{
580
"begin":"(?<={)(origin|flavor)\\s(?=[^\\s}]+\\s*})",
581
"contentName":"variable.other.makefile",
582
"beginCaptures":{
583
"1":{
584
"name":"support.function.$1.makefile"
585
}
586
},
587
"end":"(?=})",
588
"name":"meta.scope.function-call.makefile",
589
"patterns":[
590
{
591
"include":"#variables"
592
}
593
]
594
}
595
]
596
},
597
"another-variable-parentheses":{
598
"patterns":[
599
{
600
"begin":"(?<=\\()(?!\\))",
601
"end":"(?=\\)|((?<!\\\\)\\n))",
602
"name":"variable.other.makefile",
603
"patterns":[
604
{
605
"include":"#variables"
606
},
607
{
608
"match":"\\\\\\n",
609
"name":"constant.character.escape.continuation.makefile"
610
}
611
]
612
}
613
]
614
},
615
"another-variable-braces":{
616
"patterns":[
617
{
618
"begin":"(?<={)(?!})",
619
"end":"(?=}|((?<!\\\\)\\n))",
620
"name":"variable.other.makefile",
621
"patterns":[
622
{
623
"include":"#variables"
624
},
625
{
626
"match":"\\\\\\n",
627
"name":"constant.character.escape.continuation.makefile"
628
}
629
]
630
}
631
]
632
}
633
}
634
}