diff options
Diffstat (limited to 'support/texlab/src/features/hover/label.rs')
-rw-r--r-- | support/texlab/src/features/hover/label.rs | 74 |
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)); - } -} |