aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/hack
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/hack')
-rw-r--r--runtime/queries/hack/highlights.scm366
-rw-r--r--runtime/queries/hack/injections.scm5
2 files changed, 371 insertions, 0 deletions
diff --git a/runtime/queries/hack/highlights.scm b/runtime/queries/hack/highlights.scm
new file mode 100644
index 000000000..bb9d2a55c
--- /dev/null
+++ b/runtime/queries/hack/highlights.scm
@@ -0,0 +1,366 @@
+(variable) @variable
+
+(identifier) @variable
+
+((variable) @variable.builtin
+ (#eq? @variable.builtin "$this"))
+
+(braced_expression) @none
+
+(scoped_identifier
+ (qualified_identifier
+ (identifier) @type))
+
+[
+ (comment)
+ (heredoc)
+] @comment @spell
+
+((comment) @comment.documentation
+ (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$"))
+
+"function" @keyword.function
+
+[
+ "implements"
+ "using"
+ "attribute"
+ "const"
+ "extends"
+ "insteadof"
+] @keyword
+
+[
+ "class"
+ "type"
+ "interface"
+ "namespace"
+] @keyword.type
+
+[
+ "async"
+ "await"
+] @keyword.coroutine
+
+[
+ "use"
+ "include"
+ "include_once"
+ "require"
+ "require_once"
+] @keyword.import
+
+[
+ "new"
+ "print"
+ "echo"
+ "newtype"
+ "clone"
+ "as"
+] @keyword.operator
+
+"return" @keyword.return
+
+[
+ (abstract_modifier)
+ (final_modifier)
+ (static_modifier)
+ (visibility_modifier)
+ (xhp_modifier)
+] @keyword.modifier
+
+[
+ "shape"
+ "tuple"
+ (array_type)
+ "bool"
+ "float"
+ "int"
+ "string"
+ "arraykey"
+ "void"
+ "nonnull"
+ "mixed"
+ "dynamic"
+ "noreturn"
+] @type.builtin
+
+(null) @constant.builtin
+
+[
+ (true)
+ (false)
+] @boolean
+
+(type_specifier) @type
+
+(new_expression
+ (_) @type)
+
+(alias_declaration
+ "newtype"
+ .
+ (_) @type)
+
+(alias_declaration
+ "type"
+ .
+ (_) @type)
+
+(class_declaration
+ name: (identifier) @type)
+
+(type_parameter
+ name: (identifier) @type)
+
+(collection
+ (qualified_identifier
+ (identifier) @type .))
+
+[
+ "@required"
+ "@lateinit"
+ (attribute_modifier)
+] @attribute
+
+[
+ "="
+ "??="
+ ".="
+ "|="
+ "^="
+ "&="
+ "<<="
+ ">>="
+ "+="
+ "-="
+ "*="
+ "/="
+ "%="
+ "**="
+ "==>"
+ "|>"
+ "??"
+ "||"
+ "&&"
+ "|"
+ "^"
+ "&"
+ "=="
+ "!="
+ "==="
+ "!=="
+ "<"
+ ">"
+ "<="
+ ">="
+ "<=>"
+ "<<"
+ ">>"
+ "->"
+ "+"
+ "-"
+ "."
+ "*"
+ "/"
+ "%"
+ "**"
+ "++"
+ "--"
+ "!"
+ "?:"
+ "="
+ "??="
+ ".="
+ "|="
+ "^="
+ "&="
+ "<<="
+ ">>="
+ "+="
+ "-="
+ "*="
+ "/="
+ "%="
+ "**="
+ "=>"
+ ; type modifiers
+ "@"
+ "?"
+ "~"
+] @operator
+
+(integer) @number
+
+(float) @number.float
+
+(parameter
+ (variable) @variable.parameter)
+
+(call_expression
+ function: (qualified_identifier
+ (identifier) @function.call .))
+
+(call_expression
+ function: (scoped_identifier
+ (identifier) @function.call .))
+
+(call_expression
+ function: (selection_expression
+ (qualified_identifier
+ (identifier) @function.method.call .)))
+
+(qualified_identifier
+ (_) @module
+ .
+ (_))
+
+(use_statement
+ (qualified_identifier
+ (_) @module .)
+ (use_clause))
+
+(use_statement
+ (use_type
+ "namespace")
+ (use_clause
+ (qualified_identifier
+ (identifier) @module .)
+ alias: (identifier)? @module))
+
+(use_statement
+ (use_type
+ "const")
+ (use_clause
+ (qualified_identifier
+ (identifier) @constant .)
+ alias: (identifier)? @constant))
+
+(use_statement
+ (use_type
+ "function")
+ (use_clause
+ (qualified_identifier
+ (identifier) @function .)
+ alias: (identifier)? @function))
+
+(use_statement
+ (use_type
+ "type")
+ (use_clause
+ (qualified_identifier
+ (identifier) @type .)
+ alias: (identifier)? @type))
+
+(use_clause
+ (use_type
+ "namespace")
+ (qualified_identifier
+ (_) @module .)
+ alias: (identifier)? @module)
+
+(use_clause
+ (use_type
+ "function")
+ (qualified_identifier
+ (_) @function .)
+ alias: (identifier)? @function)
+
+(use_clause
+ (use_type
+ "const")
+ (qualified_identifier
+ (_) @constant .)
+ alias: (identifier)? @constant)
+
+(use_clause
+ (use_type
+ "type")
+ (qualified_identifier
+ (_) @type .)
+ alias: (identifier)? @type)
+
+(function_declaration
+ name: (identifier) @function)
+
+(method_declaration
+ name: (identifier) @function.method)
+
+(type_arguments
+ [
+ "<"
+ ">"
+ ] @punctuation.bracket)
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+ "<<"
+ ">>"
+] @punctuation.bracket
+
+(xhp_open
+ [
+ "<"
+ ">"
+ ] @tag.delimiter)
+
+(xhp_close
+ [
+ "</"
+ ">"
+ ] @tag.delimiter)
+
+[
+ "."
+ ";"
+ "::"
+ ":"
+ ","
+] @punctuation.delimiter
+
+(qualified_identifier
+ "\\" @punctuation.delimiter)
+
+(ternary_expression
+ [
+ "?"
+ ":"
+ ] @keyword.conditional.ternary)
+
+[
+ "if"
+ "else"
+ "elseif"
+ "switch"
+ "case"
+] @keyword.conditional
+
+[
+ "try"
+ "catch"
+ "finally"
+] @keyword.exception
+
+[
+ "for"
+ "while"
+ "foreach"
+ "do"
+ "continue"
+ "break"
+] @keyword.repeat
+
+[
+ (string)
+ (xhp_string)
+] @string
+
+[
+ (xhp_open)
+ (xhp_close)
+] @tag
diff --git a/runtime/queries/hack/injections.scm b/runtime/queries/hack/injections.scm
new file mode 100644
index 000000000..655c29ec5
--- /dev/null
+++ b/runtime/queries/hack/injections.scm
@@ -0,0 +1,5 @@
+([
+ (comment)
+ (heredoc)
+] @injection.content
+ (#set! injection.language "comment"))