From eb5a265a590d1555000558c80673717c02cf1781 Mon Sep 17 00:00:00 2001 From: Kiyoon Kim Date: Tue, 13 May 2025 15:22:07 +0900 Subject: [PATCH] feat(ecma): import statements --- queries/ecma/textobjects.scm | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/queries/ecma/textobjects.scm b/queries/ecma/textobjects.scm index 5c9b6047..b91f10b5 100644 --- a/queries/ecma/textobjects.scm +++ b/queries/ecma/textobjects.scm @@ -292,3 +292,48 @@ (export_statement) (lexical_declaration) ] @statement.outer + +; 1. default import +(import_statement + (import_clause + (identifier) @parameter.inner @parameter.outer)) + +; 2. namespace import e.g. `* as React` +(import_statement + (import_clause + (namespace_import + (identifier) @parameter.inner) @parameter.outer)) + +; 3. named import e.g. `import { Bar, Baz } from ...` +(import_statement + (import_clause + (named_imports + (import_specifier) @parameter.inner))) + +; 3‑A. named import followed by a comma +((import_statement + (import_clause + (named_imports + (import_specifier) @_start + . + "," @_end))) + (#make-range! "parameter.outer" @_start @_end)) + +; 3‑B. comma followed by named import +((import_statement + (import_clause + (named_imports + "," @_start + . + (import_specifier) @_end))) + (#make-range! "parameter.outer" @_start @_end)) + +; 3-C. only one named import without a comma +(import_statement + (import_clause + (named_imports + "{" + . + (import_specifier) @parameter.outer + . + "}")))