@@ -12,8 +12,7 @@ use std::{ffi::OsString, fmt, iter, path::PathBuf};
12
12
use flycheck:: FlycheckConfig ;
13
13
use ide:: {
14
14
AssistConfig , CompletionConfig , DiagnosticsConfig , ExprFillDefaultMode , HighlightRelatedConfig ,
15
- HoverConfig , HoverDocFormat , InlayHintsConfig , JoinLinesConfig , LifetimeElisionHints , Snippet ,
16
- SnippetScope ,
15
+ HoverConfig , HoverDocFormat , InlayHintsConfig , JoinLinesConfig , Snippet , SnippetScope ,
17
16
} ;
18
17
use ide_db:: {
19
18
imports:: insert_use:: { ImportGranularity , InsertUseConfig , PrefixKind } ,
@@ -263,7 +262,7 @@ config_data! {
263
262
/// site.
264
263
inlayHints_parameterHints_enable: bool = "true" ,
265
264
/// Whether to show inlay type hints for compiler inserted reborrows.
266
- inlayHints_reborrowHints_enable: bool = "false " ,
265
+ inlayHints_reborrowHints_enable: ReborrowHintsDef = "\" never \" " ,
267
266
/// Whether to render leading colons for type hints, and trailing colons for parameter hints.
268
267
inlayHints_renderColons: bool = "true" ,
269
268
/// Whether to show inlay type hints for variables.
@@ -986,12 +985,16 @@ impl Config {
986
985
chaining_hints : self . data . inlayHints_chainingHints_enable ,
987
986
closure_return_type_hints : self . data . inlayHints_closureReturnTypeHints_enable ,
988
987
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 ,
992
991
} ,
993
992
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
+ } ,
995
998
param_names_for_lifetime_elision_hints : self
996
999
. data
997
1000
. inlayHints_lifetimeElisionHints_useParameterNames ,
@@ -1293,6 +1296,7 @@ macro_rules! named_unit_variant {
1293
1296
mod de_unit_v {
1294
1297
named_unit_variant ! ( all) ;
1295
1298
named_unit_variant ! ( skip_trivial) ;
1299
+ named_unit_variant ! ( mutable) ;
1296
1300
}
1297
1301
1298
1302
#[ derive( Deserialize , Debug , Clone , Copy ) ]
@@ -1404,6 +1408,17 @@ enum LifetimeElisionDef {
1404
1408
SkipTrivial ,
1405
1409
}
1406
1410
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
+
1407
1422
#[ derive( Deserialize , Debug , Clone ) ]
1408
1423
#[ serde( rename_all = "snake_case" ) ]
1409
1424
enum ImportPrefixDef {
@@ -1675,6 +1690,15 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
1675
1690
"Only show lifetime elision hints if a return type is involved."
1676
1691
] ,
1677
1692
} ,
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
+ } ,
1678
1702
"CargoFeatures" => set ! {
1679
1703
"type" : [ "string" , "array" ] ,
1680
1704
"items" : { "type" : "string" } ,
0 commit comments