Skip to content

Commit 73cd749

Browse files
committed
.
1 parent de44751 commit 73cd749

File tree

1 file changed

+179
-4
lines changed

1 file changed

+179
-4
lines changed

queries/ecma/textobjects.scm

Lines changed: 179 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
(function_declaration
22
body: (statement_block)) @function.outer
33

4+
(generator_function_declaration
5+
body: (statement_block)) @function.outer
6+
47
(function_expression
58
body: (statement_block)) @function.outer
69

@@ -11,6 +14,13 @@
1114
_+ @function.inner
1215
"}"))
1316

17+
(generator_function_declaration
18+
body: (statement_block
19+
.
20+
"{"
21+
_+ @function.inner
22+
"}"))
23+
1424
(function_expression
1525
body: (statement_block
1626
.
@@ -42,7 +52,14 @@
4252
"}"))
4353

4454
(class_declaration
45-
body: (class_body) @class.inner) @class.outer
55+
body: (class_body)) @class.outer
56+
57+
(class_declaration
58+
body: (class_body
59+
.
60+
"{"
61+
_+ @class.inner
62+
"}"))
4663

4764
(export_statement
4865
(class_declaration)) @class.outer
@@ -131,6 +148,12 @@
131148
.
132149
","? @parameter.outer)
133150

151+
; last element with trailing comma
152+
(formal_parameters
153+
(_) @parameter.outer
154+
.
155+
"," @parameter.outer .)
156+
134157
; If the array/object pattern is the first parameter, treat its elements as the argument list
135158
(formal_parameters
136159
.
@@ -162,6 +185,21 @@
162185
","? @parameter.outer)
163186
]))
164187

188+
; last element with trailing comma
189+
(formal_parameters
190+
.
191+
(_
192+
[
193+
(object_pattern
194+
(_) @parameter.outer
195+
.
196+
"," @parameter.outer .)
197+
(array_pattern
198+
(_) @parameter.outer
199+
.
200+
"," @parameter.outer .)
201+
]))
202+
165203
; arguments
166204
(arguments
167205
"," @parameter.outer
@@ -174,6 +212,12 @@
174212
.
175213
","? @parameter.outer)
176214

215+
; last element with trailing comma
216+
(arguments
217+
(_) @parameter.outer
218+
.
219+
"," @parameter.outer .)
220+
177221
; comment
178222
(comment) @comment.outer
179223

@@ -184,9 +228,10 @@
184228
; number
185229
(number) @number.inner
186230

187-
(variable_declarator
188-
name: (_) @assignment.lhs
189-
value: (_) @assignment.inner @assignment.rhs) @assignment.outer
231+
(lexical_declaration
232+
(variable_declarator
233+
name: (_) @assignment.lhs
234+
value: (_) @assignment.inner @assignment.rhs)) @assignment.outer
190235

191236
(variable_declarator
192237
name: (_) @assignment.inner)
@@ -195,3 +240,133 @@
195240
(pair
196241
key: (_) @assignment.lhs
197242
value: (_) @assignment.inner @assignment.rhs) @assignment.outer)
243+
244+
(return_statement
245+
(_) @return.inner) @return.outer
246+
247+
(return_statement) @statement.outer
248+
249+
[
250+
(if_statement)
251+
(expression_statement)
252+
(for_statement)
253+
(while_statement)
254+
(do_statement)
255+
(for_in_statement)
256+
(export_statement)
257+
(lexical_declaration)
258+
] @statement.outer
259+
260+
; 1. default import
261+
(import_statement
262+
(import_clause
263+
(identifier) @parameter.inner @parameter.outer))
264+
265+
; 2. namespace import e.g. `* as React`
266+
(import_statement
267+
(import_clause
268+
(namespace_import
269+
(identifier) @parameter.inner) @parameter.outer))
270+
271+
; 3. named import e.g. `import { Bar, Baz } from ...`
272+
(import_statement
273+
(import_clause
274+
(named_imports
275+
(import_specifier) @parameter.inner)))
276+
277+
; 3‑A. named import followed by a comma
278+
(import_statement
279+
(import_clause
280+
(named_imports
281+
(import_specifier) @parameter.outer
282+
.
283+
"," @parameter.outer)))
284+
285+
; 3‑B. comma followed by named import
286+
(import_statement
287+
(import_clause
288+
(named_imports
289+
"," @parameter.outer
290+
.
291+
(import_specifier) @parameter.outer)))
292+
293+
; 3-C. only one named import without a comma
294+
(import_statement
295+
(import_clause
296+
(named_imports
297+
.
298+
(import_specifier) @parameter.outer .)))
299+
300+
; Treat list or object elements as @parameter
301+
; 1. parameter.inner
302+
(object
303+
(_) @parameter.inner)
304+
305+
(array
306+
(_) @parameter.inner)
307+
308+
(object_pattern
309+
(_) @parameter.inner)
310+
311+
(array_pattern
312+
(_) @parameter.inner)
313+
314+
; 2. parameter.outer: Only one element, no comma
315+
(object
316+
.
317+
(_) @parameter.outer .)
318+
319+
(array
320+
.
321+
(_) @parameter.outer .)
322+
323+
(object_pattern
324+
.
325+
(_) @parameter.outer .)
326+
327+
(array_pattern
328+
.
329+
(_) @parameter.outer .)
330+
331+
; 3. parameter.outer: Comma before or after
332+
[
333+
(object
334+
"," @parameter.outer
335+
.
336+
(_) @parameter.outer)
337+
(array
338+
"," @parameter.outer
339+
.
340+
(_) @parameter.outer)
341+
(object_pattern
342+
"," @parameter.outer
343+
.
344+
(_) @parameter.outer)
345+
(array_pattern
346+
"," @parameter.outer
347+
.
348+
(_) @parameter.outer)
349+
]
350+
351+
[
352+
(object
353+
.
354+
(_) @parameter.outer
355+
.
356+
"," @parameter.outer)
357+
(array
358+
.
359+
(_) @parameter.outer
360+
.
361+
"," @parameter.outer)
362+
(object_pattern
363+
.
364+
(_) @parameter.outer
365+
.
366+
"," @parameter.outer)
367+
(array_pattern
368+
.
369+
(_) @parameter.outer
370+
.
371+
"," @parameter.outer)
372+
]

0 commit comments

Comments
 (0)