summaryrefslogtreecommitdiff
path: root/support/texlab/crates/hover/src/entry_type.rs
blob: f3417e960d741bd60d75e5f535569d993fc8aa3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use base_db::data::BibtexEntryType;
use syntax::bibtex;

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

pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> {
    let data = params.feature.document.data.as_bib()?;
    let root = data.root_node();
    let name = root
        .token_at_offset(params.offset)
        .find(|x| x.kind() == bibtex::TYPE)?;

    let entry_type = BibtexEntryType::find(name.text())?;
    Some(Hover {
        range: name.text_range(),
        data: HoverData::EntryType(entry_type),
    })
}