Allow inlay hint tooltips to trigger hovers
This commit is contained in:
@@ -432,11 +432,11 @@ pub(crate) fn inlay_hint(
|
||||
| InlayKind::ChainingHint
|
||||
| InlayKind::GenericParamListHint
|
||||
| InlayKind::LifetimeHint
|
||||
| InlayKind::ClosingBraceHint(_) => position(line_index, inlay_hint.range.end()),
|
||||
| InlayKind::ClosingBraceHint => position(line_index, inlay_hint.range.end()),
|
||||
},
|
||||
padding_left: Some(match inlay_hint.kind {
|
||||
InlayKind::TypeHint => !render_colons,
|
||||
InlayKind::ChainingHint | InlayKind::ClosingBraceHint(_) => true,
|
||||
InlayKind::ChainingHint | InlayKind::ClosingBraceHint => true,
|
||||
InlayKind::BindingModeHint
|
||||
| InlayKind::ClosureReturnTypeHint
|
||||
| InlayKind::GenericParamListHint
|
||||
@@ -450,7 +450,7 @@ pub(crate) fn inlay_hint(
|
||||
| InlayKind::GenericParamListHint
|
||||
| InlayKind::ImplicitReborrowHint
|
||||
| InlayKind::TypeHint
|
||||
| InlayKind::ClosingBraceHint(_) => false,
|
||||
| InlayKind::ClosingBraceHint => false,
|
||||
InlayKind::BindingModeHint => inlay_hint.label != "&",
|
||||
InlayKind::ParameterHint | InlayKind::LifetimeHint => true,
|
||||
}),
|
||||
@@ -458,7 +458,7 @@ pub(crate) fn inlay_hint(
|
||||
InlayKind::ParameterHint if render_colons => format!("{}:", inlay_hint.label),
|
||||
InlayKind::TypeHint if render_colons => format!(": {}", inlay_hint.label),
|
||||
InlayKind::ClosureReturnTypeHint => format!(" -> {}", inlay_hint.label),
|
||||
_ => inlay_hint.label,
|
||||
_ => inlay_hint.label.clone(),
|
||||
}),
|
||||
kind: match inlay_hint.kind {
|
||||
InlayKind::ParameterHint => Some(lsp_types::InlayHintKind::PARAMETER),
|
||||
@@ -469,22 +469,24 @@ pub(crate) fn inlay_hint(
|
||||
| InlayKind::GenericParamListHint
|
||||
| InlayKind::LifetimeHint
|
||||
| InlayKind::ImplicitReborrowHint
|
||||
| InlayKind::ClosingBraceHint(_) => None,
|
||||
| InlayKind::ClosingBraceHint => None,
|
||||
},
|
||||
text_edits: None,
|
||||
tooltip: None,
|
||||
data: match inlay_hint.kind {
|
||||
InlayKind::ClosingBraceHint(Some(offset)) => Some(
|
||||
to_value(lsp_ext::InlayHintResolveData {
|
||||
position: lsp_types::TextDocumentPositionParams {
|
||||
text_document: text_document.clone(),
|
||||
position: position(line_index, offset),
|
||||
},
|
||||
})
|
||||
.unwrap(),
|
||||
),
|
||||
_ => None,
|
||||
},
|
||||
tooltip: Some(lsp_types::InlayHintTooltip::String(inlay_hint.label)),
|
||||
data: inlay_hint.hover_trigger.map(|range_or_offset| {
|
||||
to_value(lsp_ext::InlayHintResolveData {
|
||||
text_document: text_document.clone(),
|
||||
position: match range_or_offset {
|
||||
ide::RangeOrOffset::Offset(offset) => {
|
||||
lsp_ext::PositionOrRange::Position(position(line_index, offset))
|
||||
}
|
||||
ide::RangeOrOffset::Range(text_range) => {
|
||||
lsp_ext::PositionOrRange::Range(range(line_index, text_range))
|
||||
}
|
||||
},
|
||||
})
|
||||
.unwrap()
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user