mirror of
https://github.com/typst/typst
synced 2025-05-14 17:15:28 +08:00
Hover tooltips
This commit is contained in:
parent
9ba4d2c134
commit
0c7fb7d30f
@ -1,5 +1,7 @@
|
|||||||
//! Capabilities for IDE support.
|
//! Capabilities for IDE support.
|
||||||
|
|
||||||
mod highlight;
|
mod highlight;
|
||||||
|
mod tooltip;
|
||||||
|
|
||||||
pub use highlight::*;
|
pub use highlight::*;
|
||||||
|
pub use tooltip::*;
|
||||||
|
19
src/ide/tooltip.rs
Normal file
19
src/ide/tooltip.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
use crate::model::Value;
|
||||||
|
use crate::syntax::{LinkedNode, Source, SyntaxKind};
|
||||||
|
use crate::World;
|
||||||
|
|
||||||
|
/// Produce a tooltip which can be shown when a cursor position is hovered.
|
||||||
|
pub fn tooltip(world: &dyn World, source: &Source, cursor: usize) -> Option<String> {
|
||||||
|
let leaf = LinkedNode::new(source.root()).leaf_at(cursor)?;
|
||||||
|
|
||||||
|
// If a known identifier is under the cursor, provide its documentation.
|
||||||
|
if let SyntaxKind::Ident(ident) = leaf.kind() {
|
||||||
|
if let Some(value) = world.library().scope.get(ident) {
|
||||||
|
if let Value::Func(func) = value {
|
||||||
|
return func.doc().map(Into::into);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user