Merge #11445
11445: Upstream inlay hints r=lnicola a=lnicola Closes https://github.com/rust-analyzer/rust-analyzer/issues/2797 Closes https://github.com/rust-analyzer/rust-analyzer/issues/3394 (since now resolve the hints for the range given only, not for the whole document. We don't actually resolve anything due to [hard requirement](https://github.com/rust-analyzer/rust-analyzer/pull/11445#issuecomment-1035227434) on label being immutable. Any further heavy actions could go to the `resolve` method that's now available via the official Code API for hints) Based on `@SomeoneToIgnore's` branch, with a couple of updates: - I squashed, more or less successfully, the commits on that branch - downloading the `.d.ts` no longer works, but you can get it manually from https://raw.githubusercontent.com/microsoft/vscode/release/1.64/src/vscode-dts/vscode.proposed.inlayHints.d.ts - you might need to pass `--enable-proposed-api matklad.rust-analyzer` - if I'm reading the definition right, `InlayHintKind` needs to be serialized as a number, not string - this doesn't work anyway -- the client-side gets the hints, but they don't display Co-authored-by: Kirill Bulatov <mail4score@gmail.com> Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
This commit is contained in:
@@ -416,12 +416,18 @@ pub(crate) fn signature_help(
|
||||
pub(crate) fn inlay_hint(line_index: &LineIndex, inlay_hint: InlayHint) -> lsp_ext::InlayHint {
|
||||
lsp_ext::InlayHint {
|
||||
label: inlay_hint.label.to_string(),
|
||||
range: range(line_index, inlay_hint.range),
|
||||
kind: match inlay_hint.kind {
|
||||
InlayKind::ParameterHint => lsp_ext::InlayKind::ParameterHint,
|
||||
InlayKind::TypeHint => lsp_ext::InlayKind::TypeHint,
|
||||
InlayKind::ChainingHint => lsp_ext::InlayKind::ChainingHint,
|
||||
position: match inlay_hint.kind {
|
||||
InlayKind::ParameterHint => position(line_index, inlay_hint.range.start()),
|
||||
_ => position(line_index, inlay_hint.range.end()),
|
||||
},
|
||||
kind: match inlay_hint.kind {
|
||||
InlayKind::ParameterHint => Some(lsp_ext::InlayHintKind::PARAMETER),
|
||||
InlayKind::TypeHint => Some(lsp_ext::InlayHintKind::TYPE),
|
||||
InlayKind::ChainingHint => None,
|
||||
},
|
||||
tooltip: None,
|
||||
padding_left: Some(true),
|
||||
padding_right: Some(true),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user