summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/hover/component.rs
blob: 737a99d3ea8e5450c120db5953a5c8b02f7525bf (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 lsp_types::{HoverParams, MarkupKind};

use crate::{component_db::COMPONENT_DATABASE, features::cursor::CursorContext, syntax::latex};

use super::HoverResult;

pub(super) fn find_component_hover(context: &CursorContext<HoverParams>) -> Option<HoverResult> {
    let data = context.request.main_document().data.as_latex()?;
    for link in &data.extras.explicit_links {
        if matches!(
            link.kind,
            latex::ExplicitLinkKind::Package | latex::ExplicitLinkKind::Class
        ) && link.stem_range.contains_inclusive(context.offset)
        {
            let value = COMPONENT_DATABASE.documentation(&link.stem)?.value;
            return Some(HoverResult {
                value,
                value_kind: MarkupKind::PlainText,
                range: link.stem_range,
            });
        }
    }

    None
}