@@ -0,0 +1,160 @@
4+[(module_name) (module_type_name)] @namespace
9+[(class_name) (class_type_name) (type_constructor)] @type
11+[(constructor_name) (tag)] @constructor
17+ pattern: (value_name) @function
21+ pattern: (value_name) @function
22+ body: [(fun_expression) (function_expression)])
24+(value_specification (value_name) @function)
26+(external (value_name) @function)
33+(value_pattern) @parameter
39+ left: (value_path (value_name) @function)
40+ (infix_operator) @operator
41+ (#eq? @operator "@@"))
44+ (infix_operator) @operator
45+ right: (value_path (value_name) @function)
46+ (#eq? @operator "|>"))
48+(application_expression
49+ function: (value_path (value_name) @function))
54+[(label_name) (field_name) (instance_variable_name)] @property
59+[(boolean) (unit)] @constant
61+[(number) (signed_number)] @number
63+(character) @character
67+(quoted_string "{" @string "}" @string) @string
69+(escape_sequence) @string.escape
72+ (conversion_specification)
73+ (pretty_printing_indication)
74+] @punctuation.special
80+ "and" "as" "assert" "begin" "class" "constraint"
81+ "end" "external" "in"
82+ "inherit" "initializer" "lazy" "let" "match" "method" "module"
83+ "mutable" "new" "nonrec" "object" "of" "private" "rec" "sig" "struct"
84+ "type" "val" "virtual" "when" "with"
87+["fun" "function" "functor"] @keyword.function
89+["if" "then" "else"] @keyword.control.conditional
91+["exception" "try"] @keyword.control.exception
93+["include" "open"] @include
95+["for" "to" "downto" "while" "do" "done"] @keyword.control.loop
100+(attribute ["[@" "]"] @attribute)
101+(item_attribute ["[@@" "]"] @attribute)
102+(floating_attribute ["[@@@" "]"] @attribute)
103+(extension ["[%" "]"] @function.macro)
104+(item_extension ["[%%" "]"] @function.macro)
105+(quoted_extension ["{%" "}"] @function.macro)
106+(quoted_item_extension ["{%%" "}"] @function.macro)
109+["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket
111+(object_type ["<" ">"] @punctuation.bracket)
114+ "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&"
115+ "->" ";;" ":>" "+=" ":=" ".."
116+] @punctuation.delimiter
132+(match_expression (match_operator) @keyword)
134+(value_definition [(let_operator) (and_operator)] @keyword)
136+;; TODO: this is an error now
137+;(prefix_operator "!" @operator)
139+(infix_operator ["&" "+" "-" "=" ">" "|" "%"] @operator)
141+(signed_number ["+" "-"] @operator)
143+["*" "#" "::" "<-"] @operator
148+(attribute_id) @property
153+[(comment) (line_number_directive) (directive) (shebang)] @comment
160+[(value_name) (type_variable)] @variable