aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/ocaml_interface
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/ocaml_interface')
-rw-r--r--runtime/queries/ocaml_interface/folds.scm1
-rw-r--r--runtime/queries/ocaml_interface/highlights.scm327
-rw-r--r--runtime/queries/ocaml_interface/indents.scm1
-rw-r--r--runtime/queries/ocaml_interface/injections.scm1
-rw-r--r--runtime/queries/ocaml_interface/locals.scm1
5 files changed, 331 insertions, 0 deletions
diff --git a/runtime/queries/ocaml_interface/folds.scm b/runtime/queries/ocaml_interface/folds.scm
new file mode 100644
index 000000000..6d3dfbcf2
--- /dev/null
+++ b/runtime/queries/ocaml_interface/folds.scm
@@ -0,0 +1 @@
+; inherits: ocaml
diff --git a/runtime/queries/ocaml_interface/highlights.scm b/runtime/queries/ocaml_interface/highlights.scm
new file mode 100644
index 000000000..b623e432b
--- /dev/null
+++ b/runtime/queries/ocaml_interface/highlights.scm
@@ -0,0 +1,327 @@
+; Modules
+;--------
+[
+ (module_name)
+ (module_type_name)
+] @module
+
+; Types
+;------
+((type_constructor) @type.builtin
+ (#any-of? @type.builtin
+ "int" "char" "bytes" "string" "float" "bool" "unit" "exn" "array" "list" "option" "int32"
+ "int64" "nativeint" "format6" "lazy_t"))
+
+[
+ (class_name)
+ (class_type_name)
+ (type_constructor)
+] @type
+
+[
+ (constructor_name)
+ (tag)
+] @constructor
+
+; Variables
+;----------
+[
+ (value_name)
+ (type_variable)
+] @variable
+
+(value_pattern) @variable.parameter
+
+((value_pattern) @character.special
+ (#eq? @character.special "_"))
+
+; Functions
+;----------
+(let_binding
+ pattern: (value_name) @function
+ (parameter))
+
+(let_binding
+ pattern: (value_name) @function
+ body: [
+ (fun_expression)
+ (function_expression)
+ ])
+
+(value_specification
+ (value_name) @function)
+
+(external
+ (value_name) @function)
+
+(method_name) @function.method
+
+; Application
+;------------
+(infix_expression
+ left: (value_path
+ (value_name) @function.call)
+ operator: (concat_operator) @_operator
+ (#eq? @_operator "@@"))
+
+(infix_expression
+ operator: (rel_operator) @_operator
+ right: (value_path
+ (value_name) @function.call)
+ (#eq? @_operator "|>"))
+
+(application_expression
+ function: (value_path
+ (value_name) @function.call))
+
+((value_name) @function.builtin
+ (#any-of? @function.builtin "raise" "raise_notrace" "failwith" "invalid_arg"))
+
+; Fields
+;-------
+[
+ (field_name)
+ (instance_variable_name)
+] @variable.member
+
+; Labels
+; ------
+(label_name) @label
+
+; Constants
+;----------
+; Don't let normal parens take priority over this
+((unit) @constant.builtin
+ (#set! priority 105))
+
+(boolean) @boolean
+
+[
+ (number)
+ (signed_number)
+] @number
+
+(character) @character
+
+(string) @string
+
+(quoted_string
+ "{" @string
+ "}" @string) @string
+
+(escape_sequence) @string.escape
+
+[
+ (conversion_specification)
+ (pretty_printing_indication)
+] @string.special
+
+; Keywords
+;---------
+[
+ "and"
+ "as"
+ "assert"
+ "begin"
+ "constraint"
+ "end"
+ "external"
+ "in"
+ "inherit"
+ "initializer"
+ "let"
+ "match"
+ "method"
+ "module"
+ "new"
+ "of"
+ "sig"
+ "val"
+ "when"
+ "with"
+] @keyword
+
+[
+ "object"
+ "class"
+ "struct"
+ "type"
+] @keyword.type
+
+[
+ "lazy"
+ "mutable"
+ "nonrec"
+ "rec"
+ "private"
+ "virtual"
+] @keyword.modifier
+
+[
+ "fun"
+ "function"
+ "functor"
+] @keyword.function
+
+[
+ "if"
+ "then"
+ "else"
+] @keyword.conditional
+
+[
+ "exception"
+ "try"
+] @keyword.exception
+
+[
+ "include"
+ "open"
+] @keyword.import
+
+[
+ "for"
+ "to"
+ "downto"
+ "while"
+ "do"
+ "done"
+] @keyword.repeat
+
+; Punctuation
+;------------
+(attribute
+ [
+ "[@"
+ "]"
+ ] @punctuation.special)
+
+(item_attribute
+ [
+ "[@@"
+ "]"
+ ] @punctuation.special)
+
+(floating_attribute
+ [
+ "[@@@"
+ "]"
+ ] @punctuation.special)
+
+(extension
+ [
+ "[%"
+ "]"
+ ] @punctuation.special)
+
+(item_extension
+ [
+ "[%%"
+ "]"
+ ] @punctuation.special)
+
+(quoted_extension
+ [
+ "{%"
+ "}"
+ ] @punctuation.special)
+
+(quoted_item_extension
+ [
+ "{%%"
+ "}"
+ ] @punctuation.special)
+
+"%" @punctuation.special
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+ "[|"
+ "|]"
+ "[<"
+ "[>"
+] @punctuation.bracket
+
+(object_type
+ [
+ "<"
+ ">"
+ ] @punctuation.bracket)
+
+[
+ ","
+ "."
+ ";"
+ ":"
+ "="
+ "|"
+ "~"
+ "?"
+ "+"
+ "-"
+ "!"
+ ">"
+ "&"
+ "->"
+ ";;"
+ ":>"
+ "+="
+ ":="
+ ".."
+] @punctuation.delimiter
+
+(range_pattern
+ ".." @character.special)
+
+; Operators
+;----------
+[
+ (prefix_operator)
+ (sign_operator)
+ (pow_operator)
+ (mult_operator)
+ (add_operator)
+ (concat_operator)
+ (rel_operator)
+ (and_operator)
+ (or_operator)
+ (assign_operator)
+ (hash_operator)
+ (indexing_operator)
+ (let_operator)
+ (and_operator)
+ (match_operator)
+] @operator
+
+(match_expression
+ (match_operator) @keyword)
+
+(value_definition
+ [
+ (let_operator)
+ (let_and_operator)
+ ] @keyword)
+
+[
+ "*"
+ "#"
+ "::"
+ "<-"
+] @operator
+
+; Attributes
+;-----------
+(attribute_id) @attribute
+
+; Comments
+;---------
+[
+ (comment)
+ (line_number_directive)
+ (directive)
+] @comment @spell
diff --git a/runtime/queries/ocaml_interface/indents.scm b/runtime/queries/ocaml_interface/indents.scm
new file mode 100644
index 000000000..6d3dfbcf2
--- /dev/null
+++ b/runtime/queries/ocaml_interface/indents.scm
@@ -0,0 +1 @@
+; inherits: ocaml
diff --git a/runtime/queries/ocaml_interface/injections.scm b/runtime/queries/ocaml_interface/injections.scm
new file mode 100644
index 000000000..6d3dfbcf2
--- /dev/null
+++ b/runtime/queries/ocaml_interface/injections.scm
@@ -0,0 +1 @@
+; inherits: ocaml
diff --git a/runtime/queries/ocaml_interface/locals.scm b/runtime/queries/ocaml_interface/locals.scm
new file mode 100644
index 000000000..6d3dfbcf2
--- /dev/null
+++ b/runtime/queries/ocaml_interface/locals.scm
@@ -0,0 +1 @@
+; inherits: ocaml