Add ability to separately set background color for highlighted brackets (#17566)
Closes https://github.com/zed-industries/zed/issues/16380 Currently brackets are highlighted with `editor.document_highlight.read_background`. This commit adds a separate `editor.document_highlight.bracket_background` theme setting so bracket highlights can be made more prominent without doing the same to other highlights, making the display too busy. (My own theme) https://github.com/user-attachments/assets/29a8c05e-2f1a-4c16-9be8-a4b4cb143548 I set defaults for light and dark theme that I hope are sensible and not too obnoxious, but noticeable so people can change it if they don't like it. Release Notes: - Added `editor.document_highlight.bracket_background` field to the theme to set background color of highlighted brackets. - This will fall back to `editor.document_highlight.read_background`, if not set. <img width="355" alt="Screenshot 2024-09-08 at 8 46 57 AM" src="https://github.com/user-attachments/assets/3270bb4d-19f5-4b34-8003-982377b2ceb6"> <img width="444" alt="Screenshot 2024-09-08 at 9 03 27 AM" src="https://github.com/user-attachments/assets/3b12d84d-913c-4bde-9132-9b10f4a8d49b"> --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
This commit is contained in:
parent
c7a79cfc02
commit
11058765be
5 changed files with 25 additions and 5 deletions
|
@ -32,7 +32,7 @@ pub fn refresh_matching_bracket_highlights(editor: &mut Editor, cx: &mut ViewCon
|
||||||
opening_range.to_anchors(&snapshot.buffer_snapshot),
|
opening_range.to_anchors(&snapshot.buffer_snapshot),
|
||||||
closing_range.to_anchors(&snapshot.buffer_snapshot),
|
closing_range.to_anchors(&snapshot.buffer_snapshot),
|
||||||
],
|
],
|
||||||
|theme| theme.editor_document_highlight_read_background,
|
|theme| theme.editor_document_highlight_bracket_background,
|
||||||
cx,
|
cx,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,7 @@ impl ThemeColors {
|
||||||
editor_indent_guide_active: neutral().light_alpha().step_6(),
|
editor_indent_guide_active: neutral().light_alpha().step_6(),
|
||||||
editor_document_highlight_read_background: neutral().light_alpha().step_3(),
|
editor_document_highlight_read_background: neutral().light_alpha().step_3(),
|
||||||
editor_document_highlight_write_background: neutral().light_alpha().step_4(),
|
editor_document_highlight_write_background: neutral().light_alpha().step_4(),
|
||||||
|
editor_document_highlight_bracket_background: green().light_alpha().step_5(),
|
||||||
terminal_background: neutral().light().step_1(),
|
terminal_background: neutral().light().step_1(),
|
||||||
terminal_foreground: black().light().step_12(),
|
terminal_foreground: black().light().step_12(),
|
||||||
terminal_bright_foreground: black().light().step_11(),
|
terminal_bright_foreground: black().light().step_11(),
|
||||||
|
@ -179,6 +180,7 @@ impl ThemeColors {
|
||||||
editor_indent_guide_active: neutral().dark_alpha().step_6(),
|
editor_indent_guide_active: neutral().dark_alpha().step_6(),
|
||||||
editor_document_highlight_read_background: neutral().dark_alpha().step_4(),
|
editor_document_highlight_read_background: neutral().dark_alpha().step_4(),
|
||||||
editor_document_highlight_write_background: neutral().dark_alpha().step_4(),
|
editor_document_highlight_write_background: neutral().dark_alpha().step_4(),
|
||||||
|
editor_document_highlight_bracket_background: green().dark_alpha().step_6(),
|
||||||
terminal_background: neutral().dark().step_1(),
|
terminal_background: neutral().dark().step_1(),
|
||||||
terminal_ansi_background: neutral().dark().step_1(),
|
terminal_ansi_background: neutral().dark().step_1(),
|
||||||
terminal_foreground: white().dark().step_12(),
|
terminal_foreground: white().dark().step_12(),
|
||||||
|
|
|
@ -102,6 +102,7 @@ pub(crate) fn one_dark() -> Theme {
|
||||||
0.2,
|
0.2,
|
||||||
),
|
),
|
||||||
editor_document_highlight_write_background: gpui::red(),
|
editor_document_highlight_write_background: gpui::red(),
|
||||||
|
editor_document_highlight_bracket_background: gpui::green(),
|
||||||
|
|
||||||
terminal_background: bg,
|
terminal_background: bg,
|
||||||
// todo("Use one colors for terminal")
|
// todo("Use one colors for terminal")
|
||||||
|
|
|
@ -413,6 +413,12 @@ pub struct ThemeColorsContent {
|
||||||
#[serde(rename = "editor.document_highlight.write_background")]
|
#[serde(rename = "editor.document_highlight.write_background")]
|
||||||
pub editor_document_highlight_write_background: Option<String>,
|
pub editor_document_highlight_write_background: Option<String>,
|
||||||
|
|
||||||
|
/// Highlighted brackets background color.
|
||||||
|
///
|
||||||
|
/// Matching brackets in the cursor scope are highlighted with this background color.
|
||||||
|
#[serde(rename = "editor.document_highlight.bracket_background")]
|
||||||
|
pub editor_document_highlight_bracket_background: Option<String>,
|
||||||
|
|
||||||
/// Terminal background color.
|
/// Terminal background color.
|
||||||
#[serde(rename = "terminal.background")]
|
#[serde(rename = "terminal.background")]
|
||||||
pub terminal_background: Option<String>,
|
pub terminal_background: Option<String>,
|
||||||
|
@ -540,6 +546,10 @@ impl ThemeColorsContent {
|
||||||
.border
|
.border
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|color| try_parse_color(color).ok());
|
.and_then(|color| try_parse_color(color).ok());
|
||||||
|
let editor_document_highlight_read_background = self
|
||||||
|
.editor_document_highlight_read_background
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|color| try_parse_color(color).ok());
|
||||||
ThemeColorsRefinement {
|
ThemeColorsRefinement {
|
||||||
border,
|
border,
|
||||||
border_variant: self
|
border_variant: self
|
||||||
|
@ -784,14 +794,17 @@ impl ThemeColorsContent {
|
||||||
.editor_indent_guide_active
|
.editor_indent_guide_active
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|color| try_parse_color(color).ok()),
|
.and_then(|color| try_parse_color(color).ok()),
|
||||||
editor_document_highlight_read_background: self
|
editor_document_highlight_read_background,
|
||||||
.editor_document_highlight_read_background
|
|
||||||
.as_ref()
|
|
||||||
.and_then(|color| try_parse_color(color).ok()),
|
|
||||||
editor_document_highlight_write_background: self
|
editor_document_highlight_write_background: self
|
||||||
.editor_document_highlight_write_background
|
.editor_document_highlight_write_background
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|color| try_parse_color(color).ok()),
|
.and_then(|color| try_parse_color(color).ok()),
|
||||||
|
editor_document_highlight_bracket_background: self
|
||||||
|
.editor_document_highlight_bracket_background
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|color| try_parse_color(color).ok())
|
||||||
|
// Fall back to `editor.document_highlight.read_background`, for backwards compatibility.
|
||||||
|
.or(editor_document_highlight_read_background),
|
||||||
terminal_background: self
|
terminal_background: self
|
||||||
.terminal_background
|
.terminal_background
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
|
@ -171,6 +171,10 @@ pub struct ThemeColors {
|
||||||
/// special attention. Usually a document highlight is visualized by changing
|
/// special attention. Usually a document highlight is visualized by changing
|
||||||
/// the background color of its range.
|
/// the background color of its range.
|
||||||
pub editor_document_highlight_write_background: Hsla,
|
pub editor_document_highlight_write_background: Hsla,
|
||||||
|
/// Highlighted brackets background color.
|
||||||
|
///
|
||||||
|
/// Matching brackets in the cursor scope are highlighted with this background color.
|
||||||
|
pub editor_document_highlight_bracket_background: Hsla,
|
||||||
|
|
||||||
// ===
|
// ===
|
||||||
// Terminal
|
// Terminal
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue