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
|
use base_db::{
semantics::tex,
util::{
queries::{self, Object},
render_label,
},
};
use crate::{Hover, HoverData, HoverParams};
pub(super) fn find_hover<'db>(params: &'db HoverParams<'db>) -> Option<Hover<'db>> {
let data = params.document.data.as_tex()?;
let cursor = queries::object_at_cursor(
&data.semantics.labels,
params.offset,
queries::SearchMode::Full,
)?;
let (_, definition) = tex::Label::find_all(¶ms.project)
.filter(|(_, label)| label.kind == tex::LabelKind::Definition)
.find(|(_, label)| label.name_text() == cursor.object.name_text())?;
let label = render_label(¶ms.workspace, ¶ms.project, definition)?;
Some(Hover {
range: cursor.range,
data: HoverData::Label(label),
})
}
|