feat: support indexing typescript / javascript / tsx / jsx (#539)
parent
92c1f5a8c0
commit
888fbca7e1
|
|
@ -3200,6 +3200,7 @@ dependencies = [
|
||||||
"tree-sitter-python",
|
"tree-sitter-python",
|
||||||
"tree-sitter-rust",
|
"tree-sitter-rust",
|
||||||
"tree-sitter-tags",
|
"tree-sitter-tags",
|
||||||
|
"tree-sitter-typescript",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -3942,6 +3943,16 @@ dependencies = [
|
||||||
"tree-sitter",
|
"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]]
|
[[package]]
|
||||||
name = "try-lock"
|
name = "try-lock"
|
||||||
version = "0.2.4"
|
version = "0.2.4"
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ serde-jsonlines = { workspace = true }
|
||||||
file-rotate = "0.7.5"
|
file-rotate = "0.7.5"
|
||||||
tree-sitter-python = "0.20.2"
|
tree-sitter-python = "0.20.2"
|
||||||
tree-sitter-rust = "0.20.3"
|
tree-sitter-rust = "0.20.3"
|
||||||
|
tree-sitter-typescript = "0.20.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
temp_testdir = "0.2"
|
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"]),
|
("haskell", vec!["hs"]),
|
||||||
("html", vec!["html"]),
|
("html", vec!["html"]),
|
||||||
("java", vec!["java"]),
|
("java", vec!["java"]),
|
||||||
("javascript", vec!["js", "mjs"]),
|
|
||||||
("jsx", vec!["jsx"]),
|
|
||||||
("julia", vec!["jl"]),
|
("julia", vec!["jl"]),
|
||||||
("lua", vec!["lua"]),
|
("lua", vec!["lua"]),
|
||||||
("makefile", vec!["Makefile"]),
|
("makefile", vec!["Makefile"]),
|
||||||
|
|
@ -208,8 +206,10 @@ lazy_static! {
|
||||||
("sql", vec!["sql"]),
|
("sql", vec!["sql"]),
|
||||||
("scala", vec!["scala"]),
|
("scala", vec!["scala"]),
|
||||||
("shellscript", vec!["sh", "bash", "command", "zsh"]),
|
("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"]),
|
("tex", vec!["tex"]),
|
||||||
("vb", vec!["vb"]),
|
("vb", vec!["vb"]),
|
||||||
])
|
])
|
||||||
|
|
@ -248,6 +248,17 @@ lazy_static! {
|
||||||
.unwrap(),
|
.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;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let language = reduce_language_if_needed(&file.language).to_owned();
|
|
||||||
Some(IndexedDocument {
|
Some(IndexedDocument {
|
||||||
git_url: file.git_url.clone(),
|
git_url: file.git_url.clone(),
|
||||||
filepath: file.filepath.clone(),
|
filepath: file.filepath.clone(),
|
||||||
language,
|
language: file.language.clone(),
|
||||||
name,
|
name,
|
||||||
body,
|
body,
|
||||||
kind: tag.syntax_type_name,
|
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)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use serde_json::{from_value, json};
|
use serde_json::{from_value, json};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue