summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/reference.rs
blob: 14cf3bc2972f215603c1732cc84528470d071374 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mod entry;
mod label;
mod string;

use cancellation::CancellationToken;
use lsp_types::{Location, ReferenceParams};

use self::{
    entry::find_entry_references, label::find_label_references, string::find_string_references,
};

use super::{cursor::CursorContext, FeatureRequest};

pub fn find_all_references(
    request: FeatureRequest<ReferenceParams>,
    cancellation_token: &CancellationToken,
) -> Option<Vec<Location>> {
    let mut references = Vec::new();
    let context = CursorContext::new(request);
    log::debug!("[References] Cursor: {:?}", context.cursor);
    find_label_references(&context, cancellation_token, &mut references);
    find_entry_references(&context, cancellation_token, &mut references);
    find_string_references(&context, cancellation_token, &mut references);
    Some(references)
}