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