summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/hover/label.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/hover/label.rs')
-rw-r--r--support/texlab/src/features/hover/label.rs74
1 files changed, 9 insertions, 65 deletions
diff --git a/support/texlab/src/features/hover/label.rs b/support/texlab/src/features/hover/label.rs
index 1018c187c5..2f8489d769 100644
--- a/support/texlab/src/features/hover/label.rs
+++ b/support/texlab/src/features/hover/label.rs
@@ -1,75 +1,19 @@
-use lsp_types::{Hover, HoverContents, HoverParams};
+use lsp_types::{HoverParams, MarkupKind};
-use crate::{features::cursor::CursorContext, render_label, LineIndexExt};
+use crate::{features::cursor::CursorContext, render_label};
-pub fn find_label_hover(context: &CursorContext<HoverParams>) -> Option<Hover> {
- let main_document = context.request.main_document();
+use super::HoverResult;
- let (name_text, name_range) = context
+pub(super) fn find_label_hover(context: &CursorContext<HoverParams>) -> Option<HoverResult> {
+ let (name_text, range) = context
.find_label_name_key()
.or_else(|| context.find_label_name_command())?;
let label = render_label(&context.request.workspace, &name_text, None)?;
- Some(Hover {
- range: Some(main_document.line_index.line_col_lsp_range(name_range)),
- contents: HoverContents::Markup(label.documentation()),
+ Some(HoverResult {
+ range,
+ value: label.reference(),
+ value_kind: MarkupKind::PlainText,
})
}
-
-#[cfg(test)]
-mod tests {
- use lsp_types::Range;
-
- use crate::{features::testing::FeatureTester, RangeExt};
-
- use super::*;
-
- #[test]
- fn test_empty_latex_document() {
- let request = FeatureTester::builder()
- .files(vec![("main.tex", "")])
- .main("main.tex")
- .line(0)
- .character(0)
- .build()
- .hover();
-
- let context = CursorContext::new(request);
- let actual_hover = find_label_hover(&context);
-
- assert_eq!(actual_hover, None);
- }
-
- #[test]
- fn test_empty_bibtex_document() {
- let request = FeatureTester::builder()
- .files(vec![("main.bib", "")])
- .main("main.bib")
- .line(0)
- .character(0)
- .build()
- .hover();
-
- let context = CursorContext::new(request);
- let actual_hover = find_label_hover(&context);
-
- assert_eq!(actual_hover, None);
- }
-
- #[test]
- fn test_section() {
- let request = FeatureTester::builder()
- .files(vec![("main.tex", r#"\section{Foo}\label{sec:foo}"#)])
- .main("main.tex")
- .line(0)
- .character(23)
- .build()
- .hover();
-
- let context = CursorContext::new(request);
- let actual_hover = find_label_hover(&context).unwrap();
-
- assert_eq!(actual_hover.range.unwrap(), Range::new_simple(0, 20, 0, 27));
- }
-}