Switch to tree-sitter-rust-orchard

Offers better attachment of attributes and doc comments
and supports newer language constructs.
Closes #35.
pull/879/head
Antonin Delpeuch 2025-06-17 09:24:02 +07:00 committed by Wilfred Hughes
parent d6ab90d840
commit dc4ce18196
3 changed files with 11 additions and 8 deletions

8
Cargo.lock generated

@ -297,7 +297,7 @@ dependencies = [
"tree-sitter-php", "tree-sitter-php",
"tree-sitter-python", "tree-sitter-python",
"tree-sitter-ruby", "tree-sitter-ruby",
"tree-sitter-rust", "tree-sitter-rust-orchard",
"tree-sitter-scala", "tree-sitter-scala",
"tree-sitter-swift", "tree-sitter-swift",
"tree-sitter-toml-ng", "tree-sitter-toml-ng",
@ -1245,10 +1245,10 @@ dependencies = [
] ]
[[package]] [[package]]
name = "tree-sitter-rust" name = "tree-sitter-rust-orchard"
version = "0.23.2" version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4d64d449ca63e683c562c7743946a646671ca23947b9c925c0cfbe65051a4af" checksum = "42e06f00ca89feba4d7455e95b61b9019a979a380527297fab0c461e2e13c264"
dependencies = [ dependencies = [
"cc", "cc",
"tree-sitter-language", "tree-sitter-language",

@ -100,7 +100,7 @@ tree-sitter-pascal = "0.10.0"
tree-sitter-php = "0.23.11" tree-sitter-php = "0.23.11"
tree-sitter-python = "0.23.5" tree-sitter-python = "0.23.5"
tree-sitter-ruby = "0.23.1" tree-sitter-ruby = "0.23.1"
tree-sitter-rust = "0.23.2" tree-sitter-rust-orchard = "0.13.0"
tree-sitter-scala = "0.23.3" tree-sitter-scala = "0.23.3"
tree-sitter-swift = "0.7.0" tree-sitter-swift = "0.7.0"
tree-sitter-toml-ng = "0.7.0" tree-sitter-toml-ng = "0.7.0"

@ -917,15 +917,18 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
} }
} }
Rust => { Rust => {
let language_fn = tree_sitter_rust::LANGUAGE; let language_fn = tree_sitter_rust_orchard::LANGUAGE;
let language = tree_sitter::Language::new(language_fn); let language = tree_sitter::Language::new(language_fn);
TreeSitterConfig { TreeSitterConfig {
language: language.clone(), language: language.clone(),
atom_nodes: ["char_literal", "string_literal"].into_iter().collect(), atom_nodes: ["char_literal", "string_literal"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")],
highlight_query: ts::Query::new(&language, tree_sitter_rust::HIGHLIGHTS_QUERY) highlight_query: ts::Query::new(
.unwrap(), &language,
tree_sitter_rust_orchard::HIGHLIGHTS_QUERY,
)
.unwrap(),
sub_languages: vec![], sub_languages: vec![],
} }
} }