summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/link/include.rs
blob: b4d1804cce51fe8a999876bd15c71ca3ce0d03ef (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
26
27
28
29
30
31
32
33
use std::sync::Arc;

use lsp_types::DocumentLinkParams;

use crate::features::FeatureRequest;

use super::LinkResult;

pub(super) fn find_include_links(
    request: &FeatureRequest<DocumentLinkParams>,
    results: &mut Vec<LinkResult>,
) -> Option<()> {
    let data = request.main_document().data.as_latex()?;

    for include in &data.extras.explicit_links {
        for target in &include.targets {
            if request
                .workspace
                .documents_by_uri
                .values()
                .any(|document| document.uri.as_ref() == target.as_ref())
            {
                results.push(LinkResult {
                    range: include.stem_range,
                    target: Arc::clone(target),
                });
                break;
            }
        }
    }

    Some(())
}