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.scm | 259 |
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)) |