@@ -12,8 +12,7 @@ use std::{ffi::OsString, fmt, iter, path::PathBuf};
1212use flycheck:: FlycheckConfig ;
1313use ide:: {
1414 AssistConfig , CompletionConfig , DiagnosticsConfig , ExprFillDefaultMode , HighlightRelatedConfig ,
15- HoverConfig , HoverDocFormat , InlayHintsConfig , JoinLinesConfig , LifetimeElisionHints , Snippet ,
16- SnippetScope ,
15+ HoverConfig , HoverDocFormat , InlayHintsConfig , JoinLinesConfig , Snippet , SnippetScope ,
1716} ;
1817use ide_db:: {
1918 imports:: insert_use:: { ImportGranularity , InsertUseConfig , PrefixKind } ,
@@ -263,7 +262,7 @@ config_data! {
263262 /// site.
264263 inlayHints_parameterHints_enable: bool = "true" ,
265264 /// Whether to show inlay type hints for compiler inserted reborrows.
266- inlayHints_reborrowHints_enable: bool = "false " ,
265+ inlayHints_reborrowHints_enable: ReborrowHintsDef = "\" never \" " ,
267266 /// Whether to render leading colons for type hints, and trailing colons for parameter hints.
268267 inlayHints_renderColons: bool = "true" ,
269268 /// Whether to show inlay type hints for variables.
@@ -986,12 +985,16 @@ impl Config {
986985 chaining_hints : self . data . inlayHints_chainingHints_enable ,
987986 closure_return_type_hints : self . data . inlayHints_closureReturnTypeHints_enable ,
988987 lifetime_elision_hints : match self . data . inlayHints_lifetimeElisionHints_enable {
989- LifetimeElisionDef :: Always => LifetimeElisionHints :: Always ,
990- LifetimeElisionDef :: Never => LifetimeElisionHints :: Never ,
991- LifetimeElisionDef :: SkipTrivial => LifetimeElisionHints :: SkipTrivial ,
988+ LifetimeElisionDef :: Always => ide :: LifetimeElisionHints :: Always ,
989+ LifetimeElisionDef :: Never => ide :: LifetimeElisionHints :: Never ,
990+ LifetimeElisionDef :: SkipTrivial => ide :: LifetimeElisionHints :: SkipTrivial ,
992991 } ,
993992 hide_named_constructor_hints : self . data . inlayHints_typeHints_hideNamedConstructor ,
994- reborrow_hints : self . data . inlayHints_reborrowHints_enable ,
993+ reborrow_hints : match self . data . inlayHints_reborrowHints_enable {
994+ ReborrowHintsDef :: Always => ide:: ReborrowHints :: Always ,
995+ ReborrowHintsDef :: Never => ide:: ReborrowHints :: Never ,
996+ ReborrowHintsDef :: Mutable => ide:: ReborrowHints :: MutableOnly ,
997+ } ,
995998 param_names_for_lifetime_elision_hints : self
996999 . data
9971000 . inlayHints_lifetimeElisionHints_useParameterNames ,
@@ -1293,6 +1296,7 @@ macro_rules! named_unit_variant {
12931296mod de_unit_v {
12941297 named_unit_variant ! ( all) ;
12951298 named_unit_variant ! ( skip_trivial) ;
1299+ named_unit_variant ! ( mutable) ;
12961300}
12971301
12981302#[ derive( Deserialize , Debug , Clone , Copy ) ]
@@ -1404,6 +1408,17 @@ enum LifetimeElisionDef {
14041408 SkipTrivial ,
14051409}
14061410
1411+ #[ derive( Deserialize , Debug , Clone ) ]
1412+ #[ serde( untagged) ]
1413+ enum ReborrowHintsDef {
1414+ #[ serde( deserialize_with = "true_or_always" ) ]
1415+ Always ,
1416+ #[ serde( deserialize_with = "false_or_never" ) ]
1417+ Never ,
1418+ #[ serde( deserialize_with = "de_unit_v::mutable" ) ]
1419+ Mutable ,
1420+ }
1421+
14071422#[ derive( Deserialize , Debug , Clone ) ]
14081423#[ serde( rename_all = "snake_case" ) ]
14091424enum ImportPrefixDef {
@@ -1675,6 +1690,15 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
16751690 "Only show lifetime elision hints if a return type is involved."
16761691 ] ,
16771692 } ,
1693+ "ReborrowHintsDef" => set ! {
1694+ "type" : [ "string" , "boolean" ] ,
1695+ "enum" : [ "always" , "never" , "mutable" ] ,
1696+ "enumDescriptions" : [
1697+ "Always show reborrow hints." ,
1698+ "Never show reborrow hints." ,
1699+ "Only show mutable reborrow hints."
1700+ ] ,
1701+ } ,
16781702 "CargoFeatures" => set ! {
16791703 "type" : [ "string" , "array" ] ,
16801704 "items" : { "type" : "string" } ,
0 commit comments