summaryrefslogtreecommitdiff
path: root/support/texlab/crates/inlay-hints/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/crates/inlay-hints/src/lib.rs')
-rw-r--r--support/texlab/crates/inlay-hints/src/lib.rs36
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>>,
+}