From 08b442f4cc962fd83a41754aba41f742acd1e8dc Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Wed, 3 Aug 2022 00:09:44 -0500 Subject: Inherit javascript/typescript from common 'ecma' queries (#3301) JavaScript queries now contain a few lines that prevent them from being used whole-sale in typescript with `; inherits: javascript`. Here we follow nvim-treesitter's way of using a fake 'ecma' language as a common base for JavaScript and TypeScript to share as much as we can.--- runtime/queries/javascript/highlights.scm | 221 +---------------------------- runtime/queries/javascript/indents.scm | 23 +-- runtime/queries/javascript/injections.scm | 37 +---- runtime/queries/javascript/locals.scm | 30 +--- runtime/queries/javascript/textobjects.scm | 37 +---- 5 files changed, 5 insertions(+), 343 deletions(-) (limited to 'runtime/queries/javascript') diff --git a/runtime/queries/javascript/highlights.scm b/runtime/queries/javascript/highlights.scm index 9e30d0e7..58843479 100644 --- a/runtime/queries/javascript/highlights.scm +++ b/runtime/queries/javascript/highlights.scm @@ -1,52 +1,3 @@ -; 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 ;------------------------------- @@ -84,174 +35,4 @@ (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 - -[ - ";" - "?." - "." - "," -] @punctuation.delimiter - -[ - "-" - "--" - "-=" - "+" - "++" - "+=" - "*" - "*=" - "**" - "**=" - "/" - "/=" - "%" - "%=" - "<" - "<=" - "<<" - "<<=" - "=" - "==" - "===" - "!" - "!=" - "!==" - "=>" - ">" - ">=" - ">>" - ">>=" - ">>>" - ">>>=" - "~" - "^" - "&" - "|" - "^=" - "&=" - "|=" - "&&" - "||" - "??" - "&&=" - "||=" - "??=" - "..." -] @operator - -(ternary_expression ["?" ":"] @operator) - -[ - "(" - ")" - "[" - "]" - "{" - "}" -] @punctuation.bracket - -[ - "as" - "async" - "debugger" - "delete" - "extends" - "from" - "function" - "get" - "in" - "instanceof" - "new" - "of" - "set" - "static" - "target" - "try" - "typeof" - "void" - "with" -] @keyword - -[ - "class" - "let" - "const" - "var" -] @keyword.storage.type - -[ - "switch" - "case" - "default" - "if" - "else" - "yield" - "throw" - "finally" - "return" - "catch" - "continue" - "while" - "break" - "for" - "do" - "await" -] @keyword.control - -[ - "import" - "export" -] @keyword.control.import - +; inherits: ecma diff --git a/runtime/queries/javascript/indents.scm b/runtime/queries/javascript/indents.scm index a4237e59..04328f09 100644 --- a/runtime/queries/javascript/indents.scm +++ b/runtime/queries/javascript/indents.scm @@ -1,22 +1 @@ -[ - (array) - (object) - (arguments) - (formal_parameters) - - (statement_block) - (object_pattern) - (class_body) - (named_imports) - - (binary_expression) - (return_statement) - (template_substitution) - (export_clause) -] @indent - -[ - "}" - "]" - ")" -] @outdent +; inherits: ecma diff --git a/runtime/queries/javascript/injections.scm b/runtime/queries/javascript/injections.scm index af3aef10..04328f09 100644 --- a/runtime/queries/javascript/injections.scm +++ b/runtime/queries/javascript/injections.scm @@ -1,36 +1 @@ -; Parse the contents of tagged template literals using -; a language inferred from the tag. - -(call_expression - function: [ - (identifier) @injection.language - (member_expression - property: (property_identifier) @injection.language) - ] - arguments: (template_string) @injection.content) - -; Parse the contents of gql template literals - -((call_expression - function: (identifier) @_template_function_name - arguments: (template_string) @injection.content) - (#eq? @_template_function_name "gql") - (#set! injection.language "graphql")) - -; Parse regex syntax within regex literals - -((regex_pattern) @injection.content - (#set! injection.language "regex")) - -; Parse JSDoc annotations in multiline comments - -((comment) @injection.content - (#set! injection.language "jsdoc") - (#match? @injection.content "^/\\*+")) - -; Parse general tags in single line comments - -((comment) @injection.content - (#set! injection.language "comment") - (#match? @injection.content "^//")) - +; inherits: ecma diff --git a/runtime/queries/javascript/locals.scm b/runtime/queries/javascript/locals.scm index cc5f2e14..04328f09 100644 --- a/runtime/queries/javascript/locals.scm +++ b/runtime/queries/javascript/locals.scm @@ -1,29 +1 @@ -; Scopes -;------- - -[ - (statement_block) - (function) - (arrow_function) - (function_declaration) - (method_definition) -] @local.scope - -; Definitions -;------------ - -(pattern/identifier) @local.definition - -(pattern/rest_pattern - (identifier) @local.definition) - -(arrow_function - parameter: (identifier) @local.definition) - -(variable_declarator - name: (identifier) @local.definition) - -; References -;------------ - -(identifier) @local.reference +; inherits: ecma diff --git a/runtime/queries/javascript/textobjects.scm b/runtime/queries/javascript/textobjects.scm index c80dc81b..04328f09 100644 --- a/runtime/queries/javascript/textobjects.scm +++ b/runtime/queries/javascript/textobjects.scm @@ -1,36 +1 @@ -(function_declaration - body: (_) @function.inside) @function.around - -(function - body: (_) @function.inside) @function.around - -(arrow_function - body: (_) @function.inside) @function.around - -(method_definition - body: (_) @function.inside) @function.around - -(generator_function_declaration - body: (_) @function.inside) @function.around - -(class_declaration - body: (class_body) @class.inside) @class.around - -(class - (class_body) @class.inside) @class.around - -(export_statement - declaration: [ - (function_declaration) @function.around - (class_declaration) @class.around - ]) - -(formal_parameters - ((_) @parameter.inside . ","? @parameter.around) @parameter.around) - -(arguments - ((_) @parameter.inside . ","? @parameter.around) @parameter.around) - -(comment) @comment.inside - -(comment)+ @comment.around +; inherits: ecma -- cgit v1.2.3-70-g09d2