Detailed changes
@@ -318,6 +318,10 @@
"show_parameter_hints": true,
// Corresponds to null/None LSP hint type value.
"show_other_hints": true,
+ // Whether to show a background for inlay hints.
+ //
+ // If set to `true`, the background will use the `hint.background` color from the current theme.
+ "show_background": false,
// Time to wait after editing the buffer, before requesting the hints,
// set to 0 to disable debouncing.
"edit_debounce_ms": 700,
@@ -921,10 +921,8 @@ impl PromptLibrary {
scrollbar_width: Pixels::ZERO,
syntax: cx.theme().syntax().clone(),
status: cx.theme().status().clone(),
- inlay_hints_style: HighlightStyle {
- color: Some(cx.theme().status().hint),
- ..HighlightStyle::default()
- },
+ inlay_hints_style:
+ editor::make_inlay_hints_style(cx),
suggestions_style: HighlightStyle {
color: Some(cx.theme().status().predictive),
..HighlightStyle::default()
@@ -1524,6 +1524,7 @@ async fn test_mutual_editor_inlay_hint_cache_update(
show_type_hints: true,
show_parameter_hints: false,
show_other_hints: true,
+ show_background: false,
})
});
});
@@ -1538,6 +1539,7 @@ async fn test_mutual_editor_inlay_hint_cache_update(
show_type_hints: true,
show_parameter_hints: false,
show_other_hints: true,
+ show_background: false,
})
});
});
@@ -1786,6 +1788,7 @@ async fn test_inlay_hint_refresh_is_forwarded(
show_type_hints: false,
show_parameter_hints: false,
show_other_hints: false,
+ show_background: false,
})
});
});
@@ -1800,6 +1803,7 @@ async fn test_inlay_hint_refresh_is_forwarded(
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
});
@@ -412,6 +412,19 @@ impl Default for EditorStyle {
}
}
+pub fn make_inlay_hints_style(cx: &WindowContext) -> HighlightStyle {
+ let show_background = all_language_settings(None, cx)
+ .language(None)
+ .inlay_hints
+ .show_background;
+
+ HighlightStyle {
+ color: Some(cx.theme().status().hint),
+ background_color: show_background.then(|| cx.theme().status().hint_background),
+ ..HighlightStyle::default()
+ }
+}
+
type CompletionId = usize;
#[derive(Clone, Debug)]
@@ -10034,9 +10047,8 @@ impl Editor {
syntax: cx.editor_style.syntax.clone(),
status: cx.editor_style.status.clone(),
inlay_hints_style: HighlightStyle {
- color: Some(cx.theme().status().hint),
font_weight: Some(FontWeight::BOLD),
- ..HighlightStyle::default()
+ ..make_inlay_hints_style(cx)
},
suggestions_style: HighlightStyle {
color: Some(cx.theme().status().predictive),
@@ -12992,10 +13004,7 @@ impl Render for Editor {
scrollbar_width: EditorElement::SCROLLBAR_WIDTH,
syntax: cx.theme().syntax().clone(),
status: cx.theme().status().clone(),
- inlay_hints_style: HighlightStyle {
- color: Some(cx.theme().status().hint),
- ..HighlightStyle::default()
- },
+ inlay_hints_style: make_inlay_hints_style(cx),
suggestions_style: HighlightStyle {
color: Some(cx.theme().status().predictive),
..HighlightStyle::default()
@@ -1205,6 +1205,7 @@ mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -1337,6 +1337,7 @@ mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -1296,6 +1296,7 @@ pub mod tests {
show_type_hints: allowed_hint_kinds.contains(&Some(InlayHintKind::Type)),
show_parameter_hints: allowed_hint_kinds.contains(&Some(InlayHintKind::Parameter)),
show_other_hints: allowed_hint_kinds.contains(&None),
+ show_background: false,
})
});
@@ -1428,6 +1429,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -1547,6 +1549,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -1777,6 +1780,7 @@ pub mod tests {
show_type_hints: allowed_hint_kinds.contains(&Some(InlayHintKind::Type)),
show_parameter_hints: allowed_hint_kinds.contains(&Some(InlayHintKind::Parameter)),
show_other_hints: allowed_hint_kinds.contains(&None),
+ show_background: false,
})
});
@@ -1941,6 +1945,7 @@ pub mod tests {
show_parameter_hints: new_allowed_hint_kinds
.contains(&Some(InlayHintKind::Parameter)),
show_other_hints: new_allowed_hint_kinds.contains(&None),
+ show_background: false,
})
});
cx.executor().run_until_parked();
@@ -1987,6 +1992,7 @@ pub mod tests {
show_parameter_hints: another_allowed_hint_kinds
.contains(&Some(InlayHintKind::Parameter)),
show_other_hints: another_allowed_hint_kinds.contains(&None),
+ show_background: false,
})
});
cx.executor().run_until_parked();
@@ -2047,6 +2053,7 @@ pub mod tests {
show_parameter_hints: final_allowed_hint_kinds
.contains(&Some(InlayHintKind::Parameter)),
show_other_hints: final_allowed_hint_kinds.contains(&None),
+ show_background: false,
})
});
cx.executor().run_until_parked();
@@ -2122,6 +2129,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -2256,6 +2264,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -2551,6 +2560,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -2902,6 +2912,7 @@ pub mod tests {
show_type_hints: false,
show_parameter_hints: false,
show_other_hints: false,
+ show_background: false,
})
});
@@ -3096,6 +3107,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
cx.executor().run_until_parked();
@@ -3131,6 +3143,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -3225,6 +3238,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
@@ -3305,6 +3319,7 @@ pub mod tests {
show_type_hints: true,
show_parameter_hints: true,
show_other_hints: true,
+ show_background: false,
})
});
cx.executor().run_until_parked();
@@ -741,6 +741,14 @@ pub struct InlayHintSettings {
/// Default: true
#[serde(default = "default_true")]
pub show_other_hints: bool,
+ /// Whether to show a background for inlay hints.
+ ///
+ /// If set to `true`, the background will use the `hint.background` color
+ /// from the current theme.
+ ///
+ /// Default: false
+ #[serde(default)]
+ pub show_background: bool,
/// Whether or not to debounce inlay hints updates after buffer edits.
///
/// Set to 0 to disable debouncing.
@@ -982,6 +982,7 @@ To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files
"show_type_hints": true,
"show_parameter_hints": true,
"show_other_hints": true,
+ "show_background": false,
"edit_debounce_ms": 700,
"scroll_debounce_ms": 50
}