diff options
Diffstat (limited to 'support/texlab/crates/inlay-hints/src/lib.rs')
-rw-r--r-- | support/texlab/crates/inlay-hints/src/lib.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/support/texlab/crates/inlay-hints/src/lib.rs b/support/texlab/crates/inlay-hints/src/lib.rs new file mode 100644 index 0000000000..48373d305b --- /dev/null +++ b/support/texlab/crates/inlay-hints/src/lib.rs @@ -0,0 +1,36 @@ +mod label; + +use base_db::{util::RenderedLabel, FeatureParams}; +use rowan::{TextRange, TextSize}; + +pub struct InlayHintParams<'a> { + pub range: TextRange, + pub feature: FeatureParams<'a>, +} + +#[derive(Debug, PartialEq, Eq)] +pub struct InlayHint<'a> { + pub offset: TextSize, + pub data: InlayHintData<'a>, +} + +#[derive(Debug, PartialEq, Eq)] +pub enum InlayHintData<'a> { + LabelDefinition(RenderedLabel<'a>), + LabelReference(RenderedLabel<'a>), +} + +pub fn find_all<'a>(params: InlayHintParams<'a>) -> Option<Vec<InlayHint>> { + let mut builder = InlayHintBuilder { + params, + hints: Vec::new(), + }; + + label::find_hints(&mut builder); + Some(builder.hints) +} + +struct InlayHintBuilder<'a> { + params: InlayHintParams<'a>, + hints: Vec<InlayHint<'a>>, +} |