Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/ecma/highlights.scm')
-rw-r--r--runtime/queries/ecma/highlights.scm259
1 files changed, 110 insertions, 149 deletions
diff --git a/runtime/queries/ecma/highlights.scm b/runtime/queries/ecma/highlights.scm
index 4ba74a4b..07f7dfed 100644
--- a/runtime/queries/ecma/highlights.scm
+++ b/runtime/queries/ecma/highlights.scm
@@ -1,6 +1,112 @@
+; Special identifiers
+;--------------------
+
+([
+ (identifier)
+ (shorthand_property_identifier)
+ (shorthand_property_identifier_pattern)
+ ] @constant
+ (#match? @constant "^[A-Z_][A-Z\\d_]+$"))
+
+
+((identifier) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+((identifier) @variable.builtin
+ (#match? @variable.builtin "^(arguments|module|console|window|document)$")
+ (#is-not? local))
+
+((identifier) @function.builtin
+ (#eq? @function.builtin "require")
+ (#is-not? local))
+
+; Function and method definitions
+;--------------------------------
+
+(function
+ name: (identifier) @function)
+(function_declaration
+ name: (identifier) @function)
+(method_definition
+ name: (property_identifier) @function.method)
+
+(pair
+ key: (property_identifier) @function.method
+ value: [(function) (arrow_function)])
+
+(assignment_expression
+ left: (member_expression
+ property: (property_identifier) @function.method)
+ right: [(function) (arrow_function)])
+
+(variable_declarator
+ name: (identifier) @function
+ value: [(function) (arrow_function)])
+
+(assignment_expression
+ left: (identifier) @function
+ right: [(function) (arrow_function)])
+
+; Function and method parameters
+;-------------------------------
+
+; Arrow function parameters in the form `p => ...` are supported by both
+; javascript and typescript grammars without conflicts.
+(arrow_function
+ parameter: (identifier) @variable.parameter)
+
+; Function and method calls
+;--------------------------
+
+(call_expression
+ function: (identifier) @function)
+
+(call_expression
+ function: (member_expression
+ property: (property_identifier) @function.method))
+
+; Variables
+;----------
+
+(identifier) @variable
+
+; Properties
+;-----------
+
+(property_identifier) @variable.other.member
+(shorthand_property_identifier) @variable.other.member
+(shorthand_property_identifier_pattern) @variable.other.member
+
+; Literals
+;---------
+
+(this) @variable.builtin
+(super) @variable.builtin
+
+[
+ (true)
+ (false)
+ (null)
+ (undefined)
+] @constant.builtin
+
+(comment) @comment
+
+[
+ (string)
+ (template_string)
+] @string
+
+(regex) @string.regexp
+(number) @constant.numeric.integer
+
; Tokens
;-------
+(template_substitution
+ "${" @punctuation.special
+ "}" @punctuation.special) @embedded
+
[
";"
(optional_chain) ; ?.
@@ -67,19 +173,19 @@
"}"
] @punctuation.bracket
-(template_substitution
- "${" @punctuation.special
- "}" @punctuation.special) @embedded
-
[
"async"
"debugger"
+ "delete"
"extends"
"from"
"get"
"new"
"set"
"target"
+ "typeof"
+ "instanceof"
+ "void"
"with"
] @keyword
@@ -87,10 +193,6 @@
"of"
"as"
"in"
- "delete"
- "typeof"
- "instanceof"
- "void"
] @keyword.operator
[
@@ -145,144 +247,3 @@
"catch"
] @keyword.control.exception
-; Variables
-;----------
-
-(identifier) @variable
-
-; Properties
-;-----------
-
-(property_identifier) @variable.other.member
-(private_property_identifier) @variable.other.member.private
-(shorthand_property_identifier) @variable.other.member
-(shorthand_property_identifier_pattern) @variable.other.member
-
-; Function and method definitions
-;--------------------------------
-
-(function_expression
- name: (identifier) @function)
-(function_declaration
- name: (identifier) @function)
-(method_definition
- name: (property_identifier) @function.method)
-(method_definition
- name: (private_property_identifier) @function.method.private)
-
-(pair
- key: (property_identifier) @function.method
- value: [(function_expression) (arrow_function)])
-(pair
- key: (private_property_identifier) @function.method.private
- value: [(function_expression) (arrow_function)])
-
-(assignment_expression
- left: (member_expression
- property: (property_identifier) @function.method)
- right: [(function_expression) (arrow_function)])
-(assignment_expression
- left: (member_expression
- property: (private_property_identifier) @function.method.private)
- right: [(function_expression) (arrow_function)])
-
-(variable_declarator
- name: (identifier) @function
- value: [(function_expression) (arrow_function)])
-
-(assignment_expression
- left: (identifier) @function
- right: [(function_expression) (arrow_function)])
-
-; Function and method parameters
-;-------------------------------
-
-; Arrow function parameters in the form `p => ...` are supported by both
-; javascript and typescript grammars without conflicts.
-(arrow_function
- parameter: (identifier) @variable.parameter)
-
-; Function and method calls
-;--------------------------
-
-(call_expression
- function: (identifier) @function)
-
-(call_expression
- function: (member_expression
- property: (property_identifier) @function.method))
-(call_expression
- function: (member_expression
- property: (private_property_identifier) @function.method.private))
-
-; Literals
-;---------
-
-(this) @variable.builtin
-(super) @variable.builtin
-
-[
- (null)
- (undefined)
-] @constant.builtin
-
-[
- (true)
- (false)
-] @constant.builtin.boolean
-
-(comment) @comment
-
-[
- (string)
- (template_string)
-] @string
-
-(escape_sequence) @constant.character.escape
-
-(regex) @string.regexp
-(number) @constant.numeric.integer
-
-; Special identifiers
-;--------------------
-
-((identifier) @constructor
- (#match? @constructor "^[A-Z]"))
-
-([
- (identifier)
- (shorthand_property_identifier)
- (shorthand_property_identifier_pattern)
- ] @constant
- (#match? @constant "^[A-Z_][A-Z\\d_]+$"))
-
-((identifier) @variable.builtin
- (#match? @variable.builtin "^(arguments|module|console|window|document)$")
- (#is-not? local))
-
-(call_expression
- (identifier) @function.builtin
- (#any-of? @function.builtin
- "eval"
- "fetch"
- "isFinite"
- "isNaN"
- "parseFloat"
- "parseInt"
- "decodeURI"
- "decodeURIComponent"
- "encodeURI"
- "encodeURIComponent"
- "require"
- "alert"
- "prompt"
- "btoa"
- "atob"
- "confirm"
- "structuredClone"
- "setTimeout"
- "clearTimeout"
- "setInterval"
- "clearInterval"
- "queueMicrotask")
- (#is-not? local))