blob: 6d3a110b66be28db99553c26435ec28afd0e3462 (
plain) (
blame)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
[
"default"
"pool"
"rule"
"build"
] @keyword
[
"include"
"subninja"
] @keyword.import
":" @punctuation.delimiter
[
"="
"|"
"||"
"|@"
] @operator
[
"$"
"{"
"}"
] @punctuation.special
;
; Names
; =====
(pool
name: (identifier) @type)
(rule
name: (identifier) @function)
(let
name: (identifier) @constant)
(expansion
(identifier) @constant)
(build
rule: (identifier) @function)
;
; Paths and Text
; ==============
(path) @string.special.path
(text) @string
;
; Builtins
; ========
(pool
name: (identifier) @type.builtin
(#eq? @type.builtin "console"))
(build
rule: (identifier) @function.builtin
(#any-of? @function.builtin "phony" "dyndep"))
; Top level bindings
; ------------------
(manifest
(let
name: ((identifier) @constant.builtin
(#any-of? @constant.builtin "builddir" "ninja_required_version"))))
; Rules bindings
; -----------------
(rule
(body
(let
name: (identifier) @constant.builtin
(#not-any-of? @constant.builtin
"command" "depfile" "deps" "msvc_deps_prefix" "description" "dyndep" "generator" "in"
"in_newline" "out" "restat" "rspfile" "rspfile_content" "pool"))))
;
; Expansion
; ---------
(expansion
(identifier) @constant.macro
(#any-of? @constant.macro "in" "out"))
;
; Escape sequences
; ================
(quote) @string.escape
;
; Others
; ======
[
(split)
(comment)
] @comment
(comment) @spell
|