-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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.
- Loading branch information
1 parent
69f84e2
commit 08b442f
Showing
20 changed files
with
359 additions
and
353 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,221 @@ | ||
; 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 | ||
|
||
[ | ||
";" | ||
"?." | ||
"." | ||
"," | ||
] @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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
[ | ||
(array) | ||
(object) | ||
(arguments) | ||
(formal_parameters) | ||
|
||
(statement_block) | ||
(object_pattern) | ||
(class_body) | ||
(named_imports) | ||
|
||
(binary_expression) | ||
(return_statement) | ||
(template_substitution) | ||
(export_clause) | ||
] @indent | ||
|
||
[ | ||
"}" | ||
"]" | ||
")" | ||
] @outdent |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
; 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 "^//")) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
; 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
(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 |
Oops, something went wrong.