From dc4ce18196ed20347ecadf02c0cb85cb77d6404a Mon Sep 17 00:00:00 2001 From: Antonin Delpeuch Date: Tue, 17 Jun 2025 09:24:02 +0200 Subject: [PATCH] Switch to tree-sitter-rust-orchard Offers better attachment of attributes and doc comments and supports newer language constructs. Closes #35. --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- src/parse/tree_sitter_parser.rs | 9 ++++++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aed1d103e..bfe9e646c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -297,7 +297,7 @@ dependencies = [ "tree-sitter-php", "tree-sitter-python", "tree-sitter-ruby", - "tree-sitter-rust", + "tree-sitter-rust-orchard", "tree-sitter-scala", "tree-sitter-swift", "tree-sitter-toml-ng", @@ -1245,10 +1245,10 @@ dependencies = [ ] [[package]] -name = "tree-sitter-rust" -version = "0.23.2" +name = "tree-sitter-rust-orchard" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4d64d449ca63e683c562c7743946a646671ca23947b9c925c0cfbe65051a4af" +checksum = "42e06f00ca89feba4d7455e95b61b9019a979a380527297fab0c461e2e13c264" dependencies = [ "cc", "tree-sitter-language", diff --git a/Cargo.toml b/Cargo.toml index b34613da1..a5ec1378b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -100,7 +100,7 @@ tree-sitter-pascal = "0.10.0" tree-sitter-php = "0.23.11" tree-sitter-python = "0.23.5" 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-swift = "0.7.0" tree-sitter-toml-ng = "0.7.0" diff --git a/src/parse/tree_sitter_parser.rs b/src/parse/tree_sitter_parser.rs index 68fbd0c10..97408f77b 100644 --- a/src/parse/tree_sitter_parser.rs +++ b/src/parse/tree_sitter_parser.rs @@ -917,15 +917,18 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig { } } Rust => { - let language_fn = tree_sitter_rust::LANGUAGE; + let language_fn = tree_sitter_rust_orchard::LANGUAGE; let language = tree_sitter::Language::new(language_fn); TreeSitterConfig { language: language.clone(), atom_nodes: ["char_literal", "string_literal"].into_iter().collect(), delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")], - highlight_query: ts::Query::new(&language, tree_sitter_rust::HIGHLIGHTS_QUERY) - .unwrap(), + highlight_query: ts::Query::new( + &language, + tree_sitter_rust_orchard::HIGHLIGHTS_QUERY, + ) + .unwrap(), sub_languages: vec![], } }