aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries')
-rw-r--r--runtime/queries/lua/highlights.scm166
-rw-r--r--runtime/queries/lua/indents.toml24
-rw-r--r--runtime/queries/ocaml-interface/highlights.scm1
-rw-r--r--runtime/queries/ocaml/highlights.scm160
-rw-r--r--runtime/queries/ocaml/indents.toml13
-rw-r--r--runtime/queries/ocaml/locals.scm24
-rw-r--r--runtime/queries/yaml/highlights.scm33
-rw-r--r--runtime/queries/yaml/indents.toml3
8 files changed, 424 insertions, 0 deletions
diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm
new file mode 100644
index 00000000..8e27a39a
--- /dev/null
+++ b/runtime/queries/lua/highlights.scm
@@ -0,0 +1,166 @@
+;;; Highlighting for lua
+
+;;; Builtins
+(self) @variable.builtin
+
+;; Keywords
+
+(if_statement
+[
+ "if"
+ "then"
+ "end"
+] @keyword.control.conditional)
+
+[
+ "else"
+ "elseif"
+ "then"
+] @keyword.control.conditional
+
+(for_statement
+[
+ "for"
+ "do"
+ "end"
+] @keyword.control.loop)
+
+(for_in_statement
+[
+ "for"
+ "do"
+ "end"
+] @keyword.control.loop)
+
+(while_statement
+[
+ "while"
+ "do"
+ "end"
+] @keyword.control.loop)
+
+(repeat_statement
+[
+ "repeat"
+ "until"
+] @keyword.control.loop)
+
+(do_statement
+[
+ "do"
+ "end"
+] @keyword)
+
+[
+ "in"
+ "local"
+ (break_statement)
+ "goto"
+ "return"
+] @keyword
+
+;; Operators
+
+[
+ "not"
+ "and"
+ "or"
+] @keyword.operator
+
+[
+"="
+"~="
+"=="
+"<="
+">="
+"<"
+">"
+"+"
+"-"
+"%"
+"/"
+"//"
+"*"
+"^"
+"&"
+"~"
+"|"
+">>"
+"<<"
+".."
+"#"
+ ] @operator
+
+;; Punctuation
+["," "." ":" ";"] @punctuation.delimiter
+
+;; Brackets
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+] @punctuation.bracket
+
+; ;; Constants
+[
+(false)
+(true)
+] @boolean
+(nil) @constant.builtin
+(spread) @constant ;; "..."
+((identifier) @constant
+ (#match? @constant "^[A-Z][A-Z_0-9]*$"))
+
+;; Parameters
+(parameters
+ (identifier) @parameter)
+
+; ;; Functions
+(function [(function_name) (identifier)] @function)
+(function ["function" "end"] @keyword.function)
+
+(function
+ (function_name
+ (function_name_field
+ (property_identifier) @function .)))
+
+(local_function (identifier) @function)
+(local_function ["function" "end"] @keyword.function)
+
+(variable_declaration
+ (variable_declarator (identifier) @function) (function_definition))
+(local_variable_declaration
+ (variable_declarator (identifier) @function) (function_definition))
+
+(function_definition ["function" "end"] @keyword.function)
+
+(function_call
+ [
+ ((identifier) @variable (method) @method)
+ ((_) (method) @method)
+ (identifier) @function
+ (field_expression (property_identifier) @function)
+ ]
+ . (arguments))
+
+;; Nodes
+(table ["{" "}"] @constructor)
+(comment) @comment
+(string) @string
+(number) @number
+(label_statement) @label
+; A bit of a tricky one, this will only match field names
+(field . (identifier) @property (_))
+(shebang) @comment
+
+;; Property
+(property_identifier) @property
+
+;; Variable
+(identifier) @variable
+
+;; Error
+(ERROR) @error
diff --git a/runtime/queries/lua/indents.toml b/runtime/queries/lua/indents.toml
new file mode 100644
index 00000000..df1a9752
--- /dev/null
+++ b/runtime/queries/lua/indents.toml
@@ -0,0 +1,24 @@
+indent = [
+ "function_definition",
+ "variable_declaration",
+ "local_variable_declaration",
+ "field",
+ "local_function",
+ "function",
+ "if_statement",
+ "for_statement",
+ "for_in_statement",
+ "repeat_statement",
+ "return_statement",
+ "while_statement",
+ "table",
+ "arguments",
+ "do_statement",
+]
+
+oudent = [
+ "end",
+ "until",
+ "}",
+ ")",
+]
diff --git a/runtime/queries/ocaml-interface/highlights.scm b/runtime/queries/ocaml-interface/highlights.scm
new file mode 100644
index 00000000..6d3dfbcf
--- /dev/null
+++ b/runtime/queries/ocaml-interface/highlights.scm
@@ -0,0 +1 @@
+; inherits: ocaml
diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm
new file mode 100644
index 00000000..093b3cce
--- /dev/null
+++ b/runtime/queries/ocaml/highlights.scm
@@ -0,0 +1,160 @@
+; Modules
+;--------
+
+[(module_name) (module_type_name)] @namespace
+
+; Types
+;------
+
+[(class_name) (class_type_name) (type_constructor)] @type
+
+[(constructor_name) (tag)] @constructor
+
+; 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) @method
+
+; Variables
+;----------
+
+(value_pattern) @parameter
+
+; Application
+;------------
+
+(infix_expression
+ left: (value_path (value_name) @function)
+ (infix_operator) @operator
+ (#eq? @operator "@@"))
+
+(infix_expression
+ (infix_operator) @operator
+ right: (value_path (value_name) @function)
+ (#eq? @operator "|>"))
+
+(application_expression
+ function: (value_path (value_name) @function))
+
+; Properties
+;-----------
+
+[(label_name) (field_name) (instance_variable_name)] @property
+
+; Constants
+;----------
+
+[(boolean) (unit)] @constant
+
+[(number) (signed_number)] @number
+
+(character) @character
+
+(string) @string
+
+(quoted_string "{" @string "}" @string) @string
+
+(escape_sequence) @string.escape
+
+[
+ (conversion_specification)
+ (pretty_printing_indication)
+] @punctuation.special
+
+; Keywords
+;---------
+
+[
+ "and" "as" "assert" "begin" "class" "constraint"
+ "end" "external" "in"
+ "inherit" "initializer" "lazy" "let" "match" "method" "module"
+ "mutable" "new" "nonrec" "object" "of" "private" "rec" "sig" "struct"
+ "type" "val" "virtual" "when" "with"
+] @keyword
+
+["fun" "function" "functor"] @keyword.function
+
+["if" "then" "else"] @keyword.control.conditional
+
+["exception" "try"] @keyword.control.exception
+
+["include" "open"] @include
+
+["for" "to" "downto" "while" "do" "done"] @keyword.control.loop
+
+; Macros
+;-------
+
+(attribute ["[@" "]"] @attribute)
+(item_attribute ["[@@" "]"] @attribute)
+(floating_attribute ["[@@@" "]"] @attribute)
+(extension ["[%" "]"] @function.macro)
+(item_extension ["[%%" "]"] @function.macro)
+(quoted_extension ["{%" "}"] @function.macro)
+(quoted_item_extension ["{%%" "}"] @function.macro)
+"%" @function.macro
+
+["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket
+
+(object_type ["<" ">"] @punctuation.bracket)
+
+[
+ "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&"
+ "->" ";;" ":>" "+=" ":=" ".."
+] @punctuation.delimiter
+
+; Operators
+;----------
+
+[
+ (prefix_operator)
+ (sign_operator)
+ (infix_operator)
+ (hash_operator)
+ (indexing_operator)
+ (let_operator)
+ (and_operator)
+ (match_operator)
+] @operator
+
+(match_expression (match_operator) @keyword)
+
+(value_definition [(let_operator) (and_operator)] @keyword)
+
+;; TODO: this is an error now
+;(prefix_operator "!" @operator)
+
+(infix_operator ["&" "+" "-" "=" ">" "|" "%"] @operator)
+
+(signed_number ["+" "-"] @operator)
+
+["*" "#" "::" "<-"] @operator
+
+; Attributes
+;-----------
+
+(attribute_id) @property
+
+; Comments
+;---------
+
+[(comment) (line_number_directive) (directive) (shebang)] @comment
+
+(ERROR) @error
+
+; Blanket highlights
+; ------------------
+
+[(value_name) (type_variable)] @variable
diff --git a/runtime/queries/ocaml/indents.toml b/runtime/queries/ocaml/indents.toml
new file mode 100644
index 00000000..9b6462d8
--- /dev/null
+++ b/runtime/queries/ocaml/indents.toml
@@ -0,0 +1,13 @@
+indent = [
+ "let_binding",
+ "type_binding",
+ "structure",
+ "signature",
+ "record_declaration",
+ "function_expression",
+ "match_case",
+]
+
+oudent = [
+ "}",
+]
diff --git a/runtime/queries/ocaml/locals.scm b/runtime/queries/ocaml/locals.scm
new file mode 100644
index 00000000..8f3f3fdf
--- /dev/null
+++ b/runtime/queries/ocaml/locals.scm
@@ -0,0 +1,24 @@
+; Scopes
+;-------
+
+[
+ (let_binding)
+ (class_binding)
+ (class_function)
+ (method_definition)
+ (fun_expression)
+ (object_expression)
+ (for_expression)
+ (match_case)
+ (attribute_payload)
+] @local.scope
+
+; Definitions
+;------------
+
+(value_pattern) @local.definition
+
+; References
+;-----------
+
+(value_path . (value_name) @local.reference)
diff --git a/runtime/queries/yaml/highlights.scm b/runtime/queries/yaml/highlights.scm
new file mode 100644
index 00000000..4ebb4440
--- /dev/null
+++ b/runtime/queries/yaml/highlights.scm
@@ -0,0 +1,33 @@
+(block_mapping_pair key: (_) @property)
+(flow_mapping (_ key: (_) @property))
+(boolean_scalar) @boolean
+(null_scalar) @constant.builtin
+(double_quote_scalar) @string
+(single_quote_scalar) @string
+(escape_sequence) @string.escape
+(integer_scalar) @number
+(float_scalar) @number
+(comment) @comment
+(anchor_name) @type
+(alias_name) @type
+(tag) @type
+(yaml_directive) @keyword
+(ERROR) @error
+
+[
+","
+"-"
+":"
+">"
+"?"
+"|"
+] @punctuation.delimiter
+
+[
+"["
+"]"
+"{"
+"}"
+] @punctuation.bracket
+
+["*" "&"] @punctuation.special
diff --git a/runtime/queries/yaml/indents.toml b/runtime/queries/yaml/indents.toml
new file mode 100644
index 00000000..ddc3578b
--- /dev/null
+++ b/runtime/queries/yaml/indents.toml
@@ -0,0 +1,3 @@
+indent = [
+ "block_mapping_pair",
+]