summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/link/include.rs
blob: f0c9d147fb48c7636c1b5f3505e488798997d8a9 (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
use crate::{
    db::{dependency_graph, Document, Workspace},
    Db,
};

use super::LinkBuilder;

pub(super) fn find_links(db: &dyn Db, document: Document, builder: &mut LinkBuilder) -> Option<()> {
    let workspace = Workspace::get(db);
    let parent = workspace
        .parents(db, document)
        .iter()
        .next()
        .copied()
        .unwrap_or(document);

    let graph = dependency_graph(db, parent);
    for edge in graph.edges.iter().filter(|edge| edge.source == document) {
        if let Some(origin) = edge.origin {
            builder.push(origin.link.range(db), edge.target);
        }
    }

    Some(())
}