intelligent ctags powered by tree-sitter and lexical scope-graphs

update rust.tsg to work with latest tree-sitter-rust

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 6497d688 032ddd00

verified
Changed files
+12 -15
src
languages
+9 -12
src/languages/rust.tsg
··· 156 156 157 157 ;; type parameters 158 158 (type_parameters 159 - (type_identifier) @cap) 159 + (type_parameter 160 + (type_identifier) @cap)) 160 161 { 161 162 (def @cap) 162 163 } 163 164 (type_parameters 164 - (lifetime) @cap) 165 - { 166 - (def @cap) 167 - } 168 - (constrained_type_parameter 169 - left: (type_identifier) @cap) 165 + (lifetime_parameter 166 + (lifetime) @cap)) 170 167 { 171 168 (def @cap) 172 169 } ··· 189 186 190 187 ;; 'outer: loop { .. } 191 188 (loop_expression 192 - (loop_label) @cap) 189 + (label) @cap) 193 190 { 194 191 (def @cap) 195 192 } ··· 200 197 { 201 198 (def @cap) 202 199 } 203 - (for_expression (loop_label) @cap) 200 + (for_expression (label) @cap) 204 201 { 205 202 (def @cap) 206 203 } 207 204 208 205 ;; 'label: while cond { .. } 209 206 (while_expression 210 - (loop_label) @cap) 207 + (label) @cap) 211 208 { 212 209 (def @cap) 213 210 } ··· 312 309 (break_expression (identifier) @cap) 313 310 314 311 ;; break 'label 315 - (break_expression (loop_label) @cap) 312 + (break_expression (label) @cap) 316 313 317 314 ;; continue 'label; 318 - (continue_expression (loop_label) @cap) 315 + (continue_expression (label) @cap) 319 316 320 317 ;; yield x; 321 318 (yield_expression (identifier) @cap)
+3 -3
src/stag.rs
··· 489 489 pub fn find_node_by_name(&self, src: &[u8], name: &[u8]) -> Option<NodeIndex> { 490 490 self.graph.node_indices().find(|idx| { 491 491 matches!( 492 - &self.graph[*idx], 492 + &self.graph[*idx].kind, 493 493 NodeKind::Def(d) if d.name(src) == name) 494 494 }) 495 495 } ··· 625 625 let sg = build_graph(src); 626 626 let nodes = sg.graph.node_weights(); 627 627 628 - nodes.fold((0, 0, 0, 0), |(s, d, r, i), node| match node { 628 + nodes.fold((0, 0, 0, 0), |(s, d, r, i), node| match node.kind { 629 629 NodeKind::Scope(_) => (s + 1, d, r, i), 630 630 NodeKind::Def(_) => (s, d + 1, r, i), 631 631 NodeKind::Ref(_) => (s, d, r + 1, i), ··· 643 643 StagBuilder::default() 644 644 .with_source(src) 645 645 .with_stag_file(crate::RUST) 646 - .with_language(tree_sitter_rust::language()) 646 + .with_language(tree_sitter_rust::LANGUAGE.into()) 647 647 .execute() 648 648 .unwrap() 649 649 }