-
Notifications
You must be signed in to change notification settings - Fork 1.7k
feat: show full type in tooltips for hints #19640
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
pub struct InlayHintLabel { | ||
pub parts: SmallVec<[InlayHintLabelPart; 1]>, | ||
pub tooltip: Option<LazyProperty<String>>, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not be needed here, we should instead record the hover tooltip for the ...
parts (to make that work, we probably need to add a function to HirWrite
that is called when the truncation string gets emitted).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If so, should we concatenate the types at the end? 👀 I tried adding a tooltip only for ...
, but it was quite inconvenient. Displaying the tooltip for the entire type directly is a better choice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The feature itself shouldn't require changes to our inlay hint structure here (and thus also no changes in to_proto
). Associating a tooltip with all parts doesnt make sense when every part can track tooltips themselves.
I would expect that if HirWrite
had a function like fn start_truncated(&mut self)
(and end) that gets called when the formatting infra emits a ...
we could have that implemented as:
fn start_truncated(&mut self) {
self.make_new_part();
// render full type into the new part tooltip here / (lazily)
}
fn end_truncated(&mut self) {
self.make_new_part();
}
and probably needs InlayHintLabelBuilder
to get the full type as an additional field or so
fix #19615.