summaryrefslogtreecommitdiff
path: root/support/texlab/crates/hover/src/package.rs
blob: 1dfc86573d6d7ca9f611c5d9f2f63c0b2bc5630a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use base_db::semantics::tex::LinkKind;

use crate::{Hover, HoverData, HoverParams};

pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> {
    let data = params.feature.document.data.as_tex()?;
    data.semantics
        .links
        .iter()
        .filter(|link| matches!(link.kind, LinkKind::Sty | LinkKind::Cls))
        .filter(|link| link.path.range.contains_inclusive(params.offset))
        .find_map(|link| {
            let meta = completion_data::DATABASE.meta(&link.path.text)?;
            let description = meta.description.as_deref()?;
            Some(Hover {
                range: link.path.range,
                data: HoverData::Package(description),
            })
        })
}