aboutsummaryrefslogtreecommitdiffstats
path: root/queries/ocaml/highlights.scm
blob: 69c28a3ebcc55f6fba7361ac1ee0b2d4be5cee1c (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
(module_name) @structure

[
  (module_type_name)
  (type_constructor)
  (type_variable)
  (constructor_name)
  (tag)
] @type
(type_binding (type_constructor) @type)

(exception_definition (constructor_declaration (constructor_name) @exception))
(application_expression (value_path (value_name) @_raise)
                        (#eq? @_raise "raise")
                        (constructor_path) @exception)
(application_expression (value_path (value_name) @_raise)
                        (#eq? @_raise "raise")
                        (parenthesized_expression
                        (application_expression (constructor_path) @exception)))
(infix_expression (value_path (value_name) @_raise)
                  (#eq? @_raise "raise")
                  (application_expression (constructor_path) @exception))

(attribute_id) @property
(field_name) @field

(let_binding
  (value_name) @function
  (parameter))
(let_binding
  (value_name) @function
  (function_expression))

(application_expression . (value_path (value_name) @function))
(application_expression . (value_path (value_path (value_name) @function)))
(application_expression . (value_path (value_path (value_path (value_name) @function))))
(value_specification (value_name) @function (function_type))
(infix_expression (value_path (value_name) @function)
                  (infix_operator) @operator
                  (#eq? @operator "@@"))
(infix_expression (value_path (value_path (value_name) @function))
                  (infix_operator) @operator
                  (#eq? @operator "@@"))
(infix_expression (value_path (value_path (value_path (value_name) @function)))
                  (infix_operator) @operator
                  (#eq? @operator "@@"))
(infix_expression (infix_operator) @operator
                  (#eq? @operator "|>")
                  (value_path (value_name) @function))
(infix_expression (infix_operator) @operator
                  (#eq? @operator "|>")
                  (value_path (value_path (value_name) @function)))
(infix_expression (infix_operator) @operator
                  (#eq? @operator "|>")
                  (value_path (value_path (value_path (value_name) @function))))


(let_binding (parameter (label (label_name) @parameter)))
(let_binding (parameter (label_name) @parameter))
(let_binding (parameter (value_name) @parameter))
(let_binding (parameter (typed_pattern (value_name) @parameter)))
(function_type (typed_label (label_name) @parameter))

;; Literals
(unit) @constant
(boolean) @boolean
(number) @number
(character) @character

(comment) @comment

[(string) (quoted_string) (conversion_specification)] @string
(escape_sequence) @string.escape

(infix_operator) @operator

[
  (let_operator)
  (and_operator)
  "let"
  "rec"
  "nonrec"
  "of"
  "in"
  "type"
  "val"
  "and"
  "struct"
  "sig"
  "functor"
  "external"
  "module"
  "match"
  "with"
  "when"
  "begin"
  "end"
  "fun"
  "function"
  "assert"
  "lazy"
  "as"
  "method"
  "new"
  "object"
  "inherit"
  "mutable"
  "virtual"
  "private"
  "constraint"
  "initializer"
  "class"
] @keyword

["exception" "try"] @exception

["open" "include"] @include

["if" "then" "else"] @conditional

["for" "to" "downto" "while" "do" "done"] @repeat

["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket

[
 ","
 "."
 ";"
 "#"
 ":"
 "="
 "|"
 "->"
 "::"
 "~"
 "?"
 "|"
 "+"
 "-"
 "*"
 "'"
 ";;"
 ":>"
] @punctuation.delimiter

(ERROR) @error