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 | 311 |
1 files changed, 122 insertions, 189 deletions
diff --git a/runtime/queries/ecma/highlights.scm b/runtime/queries/ecma/highlights.scm index 4ba74a4b..212bb875 100644 --- a/runtime/queries/ecma/highlights.scm +++ b/runtime/queries/ecma/highlights.scm @@ -1,9 +1,108 @@ +; 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 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) ; ?. + "?." "." "," ] @punctuation.delimiter @@ -67,222 +166,56 @@ "}" ] @punctuation.bracket -(template_substitution - "${" @punctuation.special - "}" @punctuation.special) @embedded - [ + "as" "async" "debugger" + "delete" "extends" "from" + "function" "get" + "in" + "instanceof" "new" + "of" "set" + "static" "target" - "with" -] @keyword - -[ - "of" - "as" - "in" - "delete" + "try" "typeof" - "instanceof" "void" -] @keyword.operator - -[ - "function" -] @keyword.function + "with" +] @keyword [ "class" "let" + "const" "var" ] @keyword.storage.type [ - "const" - "static" -] @keyword.storage.modifier - -[ + "switch" + "case" "default" + "if" + "else" "yield" + "throw" "finally" + "return" + "catch" + "continue" + "while" + "break" + "for" "do" "await" ] @keyword.control [ - "if" - "else" - "switch" - "case" - "while" -] @keyword.control.conditional - -[ - "for" -] @keyword.control.repeat - -[ "import" "export" ] @keyword.control.import -[ - "return" - "break" - "continue" -] @keyword.control.return - -[ - "throw" - "try" - "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)) |