mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +00:00
Enum variant discriminants hints
This commit is contained in:
parent
b48a1ae004
commit
df8fc78ece
8 changed files with 217 additions and 2 deletions
|
@ -327,6 +327,8 @@ config_data! {
|
|||
inlayHints_closingBraceHints_minLines: usize = "25",
|
||||
/// Whether to show inlay type hints for return types of closures.
|
||||
inlayHints_closureReturnTypeHints_enable: ClosureReturnTypeHintsDef = "\"never\"",
|
||||
/// Whether to show enum variant discriminant hints.
|
||||
inlayHints_discriminantHints_enable: DiscriminantHintsDef = "\"never\"",
|
||||
/// Whether to show inlay hints for type adjustments.
|
||||
inlayHints_expressionAdjustmentHints_enable: AdjustmentHintsDef = "\"never\"",
|
||||
/// Whether to hide inlay hints for type adjustments outside of `unsafe` blocks.
|
||||
|
@ -1218,6 +1220,11 @@ impl Config {
|
|||
type_hints: self.data.inlayHints_typeHints_enable,
|
||||
parameter_hints: self.data.inlayHints_parameterHints_enable,
|
||||
chaining_hints: self.data.inlayHints_chainingHints_enable,
|
||||
discriminant_hints: match self.data.inlayHints_discriminantHints_enable {
|
||||
DiscriminantHintsDef::Always => ide::DiscriminantHints::Always,
|
||||
DiscriminantHintsDef::Never => ide::DiscriminantHints::Never,
|
||||
DiscriminantHintsDef::Fieldless => ide::DiscriminantHints::Fieldless,
|
||||
},
|
||||
closure_return_type_hints: match self.data.inlayHints_closureReturnTypeHints_enable {
|
||||
ClosureReturnTypeHintsDef::Always => ide::ClosureReturnTypeHints::Always,
|
||||
ClosureReturnTypeHintsDef::Never => ide::ClosureReturnTypeHints::Never,
|
||||
|
@ -1579,6 +1586,7 @@ mod de_unit_v {
|
|||
named_unit_variant!(skip_trivial);
|
||||
named_unit_variant!(mutable);
|
||||
named_unit_variant!(reborrow);
|
||||
named_unit_variant!(fieldless);
|
||||
named_unit_variant!(with_block);
|
||||
}
|
||||
|
||||
|
@ -1742,6 +1750,17 @@ enum AdjustmentHintsDef {
|
|||
Reborrow,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug, Clone)]
|
||||
#[serde(untagged)]
|
||||
enum DiscriminantHintsDef {
|
||||
#[serde(deserialize_with = "true_or_always")]
|
||||
Always,
|
||||
#[serde(deserialize_with = "false_or_never")]
|
||||
Never,
|
||||
#[serde(deserialize_with = "de_unit_v::fieldless")]
|
||||
Fieldless,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug, Clone)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
enum FilesWatcherDef {
|
||||
|
@ -2064,6 +2083,19 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
|
|||
"Only show auto borrow and dereference adjustment hints."
|
||||
]
|
||||
},
|
||||
"DiscriminantHintsDef" => set! {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"always",
|
||||
"never",
|
||||
"fieldless"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Always show all discriminant hints.",
|
||||
"Never show discriminant hints.",
|
||||
"Only show discriminant hints on fieldless enum variants."
|
||||
]
|
||||
},
|
||||
"CargoFeaturesDef" => set! {
|
||||
"anyOf": [
|
||||
{
|
||||
|
|
|
@ -434,6 +434,7 @@ pub(crate) fn inlay_hint(
|
|||
InlayKind::ParameterHint if render_colons => inlay_hint.label.append_str(":"),
|
||||
InlayKind::TypeHint if render_colons => inlay_hint.label.prepend_str(": "),
|
||||
InlayKind::ClosureReturnTypeHint => inlay_hint.label.prepend_str(" -> "),
|
||||
InlayKind::DiscriminantHint => inlay_hint.label.prepend_str(" = "),
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
@ -447,6 +448,7 @@ pub(crate) fn inlay_hint(
|
|||
// after annotated thing
|
||||
InlayKind::ClosureReturnTypeHint
|
||||
| InlayKind::TypeHint
|
||||
| InlayKind::DiscriminantHint
|
||||
| InlayKind::ChainingHint
|
||||
| InlayKind::GenericParamListHint
|
||||
| InlayKind::ClosingParenthesis
|
||||
|
@ -457,6 +459,7 @@ pub(crate) fn inlay_hint(
|
|||
InlayKind::TypeHint => !render_colons,
|
||||
InlayKind::ChainingHint | InlayKind::ClosingBraceHint => true,
|
||||
InlayKind::ClosingParenthesis
|
||||
| InlayKind::DiscriminantHint
|
||||
| InlayKind::OpeningParenthesis
|
||||
| InlayKind::BindingModeHint
|
||||
| InlayKind::ClosureReturnTypeHint
|
||||
|
@ -473,6 +476,7 @@ pub(crate) fn inlay_hint(
|
|||
| InlayKind::GenericParamListHint
|
||||
| InlayKind::AdjustmentHint
|
||||
| InlayKind::TypeHint
|
||||
| InlayKind::DiscriminantHint
|
||||
| InlayKind::ClosingBraceHint => false,
|
||||
InlayKind::BindingModeHint => inlay_hint.label.as_simple_str() != Some("&"),
|
||||
InlayKind::ParameterHint | InlayKind::LifetimeHint => true,
|
||||
|
@ -483,6 +487,7 @@ pub(crate) fn inlay_hint(
|
|||
Some(lsp_types::InlayHintKind::TYPE)
|
||||
}
|
||||
InlayKind::ClosingParenthesis
|
||||
| InlayKind::DiscriminantHint
|
||||
| InlayKind::OpeningParenthesis
|
||||
| InlayKind::BindingModeHint
|
||||
| InlayKind::GenericParamListHint
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue