update typescript parsing to manage for leading tsdoc comments

KCaverly created

Change summary

crates/vector_store/src/parsing.rs                |   8 +
crates/zed/src/languages/typescript/embedding.scm | 113 ++++++++--------
2 files changed, 62 insertions(+), 59 deletions(-)

Detailed changes

crates/vector_store/src/parsing.rs 🔗

@@ -51,6 +51,7 @@ impl CodeContextRetriever {
         let mut documents = Vec::new();
 
         // Iterate through query matches
+        let mut name_ranges: Vec<Range<usize>> = vec![];
         for mat in self.cursor.matches(
             &embedding_config.query,
             tree.root_node(),
@@ -65,7 +66,12 @@ impl CodeContextRetriever {
                     byte_range = Some(capture.node.byte_range());
                     item = content.get(capture.node.byte_range());
                 } else if capture.index == embedding_config.name_capture_ix {
-                    if let Some(name_content) = content.get(capture.node.byte_range()) {
+                    let name_range = capture.node.byte_range();
+                    if name_ranges.contains(&name_range) {
+                        continue;
+                    }
+                    name_ranges.push(name_range.clone());
+                    if let Some(name_content) = content.get(name_range.clone()) {
                         name.push(name_content);
                     }
                 }

crates/zed/src/languages/typescript/embedding.scm 🔗

@@ -1,59 +1,56 @@
-; (internal_module
-;     "namespace" @context
-;     name: (_) @name) @item
-
-(enum_declaration
-    "enum" @context
-    name: (_) @name) @item
-
-; (type_alias_declaration
-;     "type" @context
-;     name: (_) @name) @item
-
-(function_declaration
-    "async"? @context
-    "function" @context
-    name: (_) @name) @item
-
-(interface_declaration
-    "interface" @context
-    name: (_) @name) @item
-
-; (export_statement
-;     (lexical_declaration
-;         ["let" "const"] @context
-;         (variable_declarator
-;             name: (_) @name) @item))
-
-(program
-    (lexical_declaration
-        ["let" "const"] @context
-        (variable_declarator
-            name: (_) @name) @item))
-
-(class_declaration
-    "class" @context
-    name: (_) @name) @item
-
-(method_definition
+(
+    (comment)* @context
+    .
+    (enum_declaration
+        "enum" @context
+        name: (_) @name) @item
+    )
+
+(
+    (comment)* @context
+    .
     [
-        "get"
-        "set"
-        "async"
-        "*"
-        "readonly"
-        "static"
-        (override_modifier)
-        (accessibility_modifier)
-        ]* @context
-    name: (_) @name) @item
-
-; (public_field_definition
-;     [
-;         "declare"
-;         "readonly"
-;         "abstract"
-;         "static"
-;         (accessibility_modifier)
-;         ]* @context
-;     name: (_) @name) @item
+        (export_statement
+            (function_declaration
+                "async"? @name
+                "function" @name
+                name: (_) @name)
+            ) @item
+        (function_declaration
+            "async"? @name
+            "function" @name
+            name: (_) @name) @item
+    ])
+
+(
+    (comment)* @context
+    .
+    (interface_declaration
+        "interface" @name
+        name: (_) @name) @item
+    )
+
+(
+    (comment)* @context
+    .
+    (class_declaration
+        "class" @name
+        name: (_) @name) @item
+    )
+
+(
+    (comment)* @context
+    .
+    (method_definition
+        [
+            "get"
+            "set"
+            "async"
+            "*"
+            "readonly"
+            "static"
+            (override_modifier)
+            (accessibility_modifier)
+            ]* @name
+        name: (_) @name) @item
+    )