bbnf_analysis/features/
code_lens.rs1use ls_types::*;
2
3use crate::state::DocumentState;
4
5pub fn code_lens(state: &DocumentState) -> Vec<CodeLens> {
6 state
7 .info
8 .rules
9 .iter()
10 .map(|rule| {
11 let ref_count: usize = state
12 .info
13 .rules
14 .iter()
15 .flat_map(|r| &r.references)
16 .filter(|r| r.name == rule.name)
17 .count();
18
19 let range = state.line_index.span_to_range(rule.name_span.0, rule.name_span.1);
20
21 CodeLens {
22 range,
23 command: Some(Command {
24 title: format!(
25 "{} reference{}",
26 ref_count,
27 if ref_count == 1 { "" } else { "s" }
28 ),
29 command: "editor.action.findReferences".into(),
30 arguments: None,
31 }),
32 data: None,
33 }
34 })
35 .collect()
36}