feat: support indexing typescript / javascript / tsx / jsx (#539)
parent
92c1f5a8c0
commit
888fbca7e1
|
|
@ -3200,6 +3200,7 @@ dependencies = [
|
|||
"tree-sitter-python",
|
||||
"tree-sitter-rust",
|
||||
"tree-sitter-tags",
|
||||
"tree-sitter-typescript",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
|
|
@ -3942,6 +3943,16 @@ dependencies = [
|
|||
"tree-sitter",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tree-sitter-typescript"
|
||||
version = "0.20.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a75049f0aafabb2aac205d7bb24da162b53dcd0cfb326785f25a2f32efa8071a"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"tree-sitter",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.2.4"
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ serde-jsonlines = { workspace = true }
|
|||
file-rotate = "0.7.5"
|
||||
tree-sitter-python = "0.20.2"
|
||||
tree-sitter-rust = "0.20.3"
|
||||
tree-sitter-typescript = "0.20.3"
|
||||
|
||||
[dev-dependencies]
|
||||
temp_testdir = "0.2"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
; Modified based on https://github.com/tree-sitter/tree-sitter-typescript/blob/master/queries/tags.scm
|
||||
|
||||
(function_signature
|
||||
name: (identifier) @name) @definition.function
|
||||
|
||||
(method_signature
|
||||
name: (property_identifier) @name) @definition.method
|
||||
|
||||
(abstract_method_signature
|
||||
name: (property_identifier) @name) @definition.method
|
||||
|
||||
(abstract_class_declaration
|
||||
name: (type_identifier) @name) @definition.class
|
||||
|
||||
(module
|
||||
name: (identifier) @name) @definition.module
|
||||
|
||||
(interface_declaration
|
||||
name: (type_identifier) @name) @definition.interface
|
||||
|
||||
(type_annotation
|
||||
(type_identifier) @name) @reference.type
|
||||
|
||||
(new_expression
|
||||
constructor: (identifier) @name) @reference.class
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @name) @reference.call
|
||||
|
||||
(call_expression
|
||||
function: (member_expression property: (property_identifier) @name)) @reference.call
|
||||
|
|
@ -193,8 +193,6 @@ lazy_static! {
|
|||
("haskell", vec!["hs"]),
|
||||
("html", vec!["html"]),
|
||||
("java", vec!["java"]),
|
||||
("javascript", vec!["js", "mjs"]),
|
||||
("jsx", vec!["jsx"]),
|
||||
("julia", vec!["jl"]),
|
||||
("lua", vec!["lua"]),
|
||||
("makefile", vec!["Makefile"]),
|
||||
|
|
@ -208,8 +206,10 @@ lazy_static! {
|
|||
("sql", vec!["sql"]),
|
||||
("scala", vec!["scala"]),
|
||||
("shellscript", vec!["sh", "bash", "command", "zsh"]),
|
||||
("typescript", vec!["ts", "mts"]),
|
||||
("tsx", vec!["tsx"]),
|
||||
(
|
||||
"javascript-typescript",
|
||||
vec!["ts", "mts", "js", "mjs", "jsx", "tsx"],
|
||||
),
|
||||
("tex", vec!["tex"]),
|
||||
("vb", vec!["vb"]),
|
||||
])
|
||||
|
|
@ -248,6 +248,17 @@ lazy_static! {
|
|||
.unwrap(),
|
||||
),
|
||||
),
|
||||
(
|
||||
"javascript-typescript",
|
||||
TagsConfigurationSync(
|
||||
TagsConfiguration::new(
|
||||
tree_sitter_typescript::language_tsx(),
|
||||
include_str!("../queries/tsx.scm"),
|
||||
"",
|
||||
)
|
||||
.unwrap(),
|
||||
),
|
||||
),
|
||||
])
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,11 +91,10 @@ fn from_source_file(file: SourceFile) -> impl Iterator<Item = IndexedDocument> {
|
|||
return None;
|
||||
}
|
||||
|
||||
let language = reduce_language_if_needed(&file.language).to_owned();
|
||||
Some(IndexedDocument {
|
||||
git_url: file.git_url.clone(),
|
||||
filepath: file.filepath.clone(),
|
||||
language,
|
||||
language: file.language.clone(),
|
||||
name,
|
||||
body,
|
||||
kind: tag.syntax_type_name,
|
||||
|
|
@ -103,14 +102,6 @@ fn from_source_file(file: SourceFile) -> impl Iterator<Item = IndexedDocument> {
|
|||
})
|
||||
}
|
||||
|
||||
fn reduce_language_if_needed(language: &str) -> &str {
|
||||
if ["javascript", "jsx", "typescript", "tsx"].contains(&language) {
|
||||
"javascript-typescript"
|
||||
} else {
|
||||
language
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use serde_json::{from_value, json};
|
||||
|
|
|
|||
Loading…
Reference in New Issue