aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/ninja/highlights.scm
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