Skip to content

Commit 341eb4a

Browse files
committed
Use both type_of and doc_text_for
1 parent 6ee7788 commit 341eb4a

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

crates/ra_lsp_server/src/main_loop/handlers.rs

+25-14
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use languageserver_types::{
99
Range, WorkspaceEdit, ParameterInformation, ParameterLabel, SignatureInformation, Hover,
1010
HoverContents, DocumentFormattingParams, DocumentHighlight,
1111
};
12-
use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FileRange, FilePosition, Severity};
12+
use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FileRange, FilePosition, Severity, NavigationTarget};
1313
use ra_syntax::{TextUnit, text_utils::intersect};
1414
use ra_text_edit::text_utils::contains_offset_nonstrict;
1515
use rustc_hash::FxHashMap;
@@ -514,29 +514,26 @@ pub fn handle_hover(
514514
Some(it) => it,
515515
};
516516
let mut result = Vec::new();
517+
let file_id = params.text_document.try_conv_with(&world)?;
518+
let file_range = FileRange {
519+
file_id,
520+
range: rr.reference_range,
521+
};
522+
if let Some(type_name) = get_type(&world, file_range) {
523+
result.push(type_name);
524+
}
517525
for nav in rr.resolves_to {
518-
if let Some(docs) = world.analysis().doc_text_for(nav)? {
526+
if let Some(docs) = get_doc_text(&world, nav) {
519527
result.push(docs);
520528
}
521529
}
530+
522531
let range = rr.reference_range.conv_with(&line_index);
523532
if result.len() > 0 {
524533
return Ok(Some(Hover {
525534
contents: HoverContents::Scalar(MarkedString::String(result.join("\n\n---\n"))),
526535
range: Some(range),
527536
}));
528-
} else {
529-
let file_id = params.text_document.try_conv_with(&world)?;
530-
let file_range = FileRange {
531-
file_id,
532-
range: rr.reference_range,
533-
};
534-
if let Some(type_name) = world.analysis().type_of(file_range)? {
535-
return Ok(Some(Hover {
536-
contents: HoverContents::Scalar(MarkedString::String(type_name)),
537-
range: Some(range),
538-
}));
539-
}
540537
}
541538
Ok(None)
542539
}
@@ -762,3 +759,17 @@ fn to_diagnostic_severity(severity: Severity) -> DiagnosticSeverity {
762759
WeakWarning => DiagnosticSeverity::Hint,
763760
}
764761
}
762+
763+
fn get_type(world: &ServerWorld, file_range: FileRange) -> Option<String> {
764+
match world.analysis().type_of(file_range) {
765+
Ok(result) => result,
766+
_ => None,
767+
}
768+
}
769+
770+
fn get_doc_text(world: &ServerWorld, nav: NavigationTarget) -> Option<String> {
771+
match world.analysis().doc_text_for(nav) {
772+
Ok(result) => result,
773+
_ => None,
774+
}
775+
}

0 commit comments

Comments
 (0)