Compare commits

...

1 Commits

Author SHA1 Message Date
Anthony Eid
96fbc43cef WIP
Co-authored-by: Matt Miller <mattrx@gmail.com>
2025-12-02 17:30:09 -05:00
6 changed files with 98 additions and 75 deletions

View File

@@ -96,11 +96,11 @@
"terminal.ansi.bright_white": "#fafafaff",
"terminal.ansi.dim_white": "#575d65ff",
"link_text.hover": "#74ade8ff",
"version_control.added": "#27a657ff",
"version_control.added": "#2EA04833",
"version_control.modified": "#d3b020ff",
"version_control.word_added": "#2EA04859",
"version_control.word_deleted": "#78081BCC",
"version_control.deleted": "#e06c76ff",
"version_control.word_added": "#2EA0483D",
"version_control.word_deleted": "#78081BB3",
"version_control.deleted": "#78081B66",
"version_control.conflict_marker.ours": "#a1c1811a",
"version_control.conflict_marker.theirs": "#74ade81a",
"conflict": "#dec184ff",
@@ -499,11 +499,11 @@
"terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#aaaaaaff",
"link_text.hover": "#5c78e2ff",
"version_control.added": "#27a657ff",
"version_control.added": "#2EA04833",
"version_control.modified": "#d3b020ff",
"version_control.word_added": "#2EA04859",
"version_control.word_deleted": "#F85149CC",
"version_control.deleted": "#e06c76ff",
"version_control.word_added": "#2EA0483D",
"version_control.word_deleted": "#F851493D",
"version_control.deleted": "#F8514929",
"conflict": "#a48819ff",
"conflict.background": "#faf2e6ff",
"conflict.border": "#f4e7d1ff",

View File

@@ -9213,18 +9213,34 @@ impl Element for EditorElement {
continue;
};
let background_color = match diff_status.kind {
DiffHunkStatusKind::Added =>
cx.theme().colors().version_control_added,
DiffHunkStatusKind::Deleted =>
cx.theme().colors().version_control_deleted,
DiffHunkStatusKind::Modified => {
debug_panic!("modified diff status for row info");
continue;
}
};
let background_color = dbg!(match diff_status.kind {
DiffHunkStatusKind::Added =>
cx.theme().colors().version_control_added,
DiffHunkStatusKind::Deleted =>
cx.theme().colors().version_control_deleted,
DiffHunkStatusKind::Modified => {
debug_panic!("modified diff status for row info");
continue;
}
});
let hunk_opacity = if is_light { 0.16 } else { 0.12 };
// Potential fix with new tokens:
// diff.added = "#2EA048"
// diff.added_word = @diff.added/24%
// diff.added_background = @diff.added/20%
//
//
// Ideal State:
// version_control.added = "#2EA048"
// version_control.added_word = @version_control.added/24%
// version_control.added_background = @version_control.added/20%
// version_control.added_icon = "something"
// let hunk_opacity = if background_color.a < 1.0 {
// background_color.a // Use existing alpha
// } else {
// if is_light { 0.16 } else { 0.20 }
// };
let hollow_highlight = LineHighlight {
background: (background_color.opacity(if is_light {
@@ -9243,7 +9259,7 @@ impl Element for EditorElement {
};
let filled_highlight = LineHighlight {
background: solid_background(background_color.opacity(hunk_opacity)),
background: solid_background(background_color),
border: None,
include_gutter: true,
type_id: None,

View File

@@ -8,37 +8,68 @@ pub(crate) fn neutral() -> ColorScaleSet {
sand()
}
const ADDED_COLOR: Hsla = Hsla {
const LIGHT_ADDED_COLOR: Hsla = Hsla {
h: 134. / 360.,
s: 0.55,
l: 0.40,
a: 1.0,
};
const WORD_ADDED_COLOR: Hsla = Hsla {
const LIGHT_WORD_ADDED_COLOR: Hsla = Hsla {
h: 134. / 360.,
s: 0.55,
l: 0.40,
a: 0.35,
};
const MODIFIED_COLOR: Hsla = Hsla {
const LIGHT_MODIFIED_COLOR: Hsla = Hsla {
h: 48. / 360.,
s: 0.76,
l: 0.47,
a: 1.0,
};
const REMOVED_COLOR: Hsla = Hsla {
const LIGHT_REMOVED_COLOR: Hsla = Hsla {
h: 350. / 360.,
s: 0.88,
l: 0.25,
a: 1.0,
};
const WORD_DELETED_COLOR: Hsla = Hsla {
const LIGHT_WORD_DELETED_COLOR: Hsla = Hsla {
h: 350. / 360.,
s: 0.88,
l: 0.25,
a: 0.80,
};
pub(crate) const DARK_ADDED_COLOR: Hsla = Hsla {
h: 1.0,
s: 0.55,
l: 0.30,
a: 0.20,
};
pub(crate) const DARK_WORD_ADDED_COLOR: Hsla = Hsla {
h: 135. / 360.,
s: 0.55,
l: 0.30,
a: 0.24,
};
pub(crate) const DARK_MODIFIED_COLOR: Hsla = Hsla {
h: 218. / 360.,
s: 0.66,
l: 0.36,
a: 0.20,
};
pub(crate) const DARK_REMOVED_COLOR: Hsla = Hsla {
h: 356. / 360.,
s: 0.87,
l: 0.35,
a: 0.32,
};
pub(crate) const DARK_WORD_DELETED_COLOR: Hsla = Hsla {
h: 356. / 360.,
s: 0.87,
l: 0.35,
a: 0.50,
};
/// The default colors for the theme.
///
/// Themes that do not specify all colors are refined off of these defaults.
@@ -158,14 +189,14 @@ impl ThemeColors {
terminal_ansi_dim_cyan: cyan().light().step_10(),
terminal_ansi_dim_white: neutral().light().step_11(),
link_text_hover: orange().light().step_10(),
version_control_added: ADDED_COLOR,
version_control_deleted: REMOVED_COLOR,
version_control_modified: MODIFIED_COLOR,
version_control_renamed: MODIFIED_COLOR,
version_control_added: LIGHT_ADDED_COLOR,
version_control_deleted: LIGHT_REMOVED_COLOR,
version_control_modified: LIGHT_MODIFIED_COLOR,
version_control_renamed: LIGHT_MODIFIED_COLOR,
version_control_conflict: orange().light().step_12(),
version_control_ignored: gray().light().step_12(),
version_control_word_added: WORD_ADDED_COLOR,
version_control_word_deleted: WORD_DELETED_COLOR,
version_control_word_added: LIGHT_WORD_ADDED_COLOR,
version_control_word_deleted: LIGHT_WORD_DELETED_COLOR,
version_control_conflict_marker_ours: green().light().step_10().alpha(0.5),
version_control_conflict_marker_theirs: blue().light().step_10().alpha(0.5),
vim_normal_background: system.transparent,
@@ -295,14 +326,14 @@ impl ThemeColors {
terminal_ansi_bright_white: neutral().dark().step_11(),
terminal_ansi_dim_white: neutral().dark().step_10(),
link_text_hover: orange().dark().step_10(),
version_control_added: ADDED_COLOR,
version_control_deleted: REMOVED_COLOR,
version_control_modified: MODIFIED_COLOR,
version_control_renamed: MODIFIED_COLOR,
version_control_added: DARK_ADDED_COLOR,
version_control_deleted: DARK_REMOVED_COLOR,
version_control_modified: DARK_MODIFIED_COLOR,
version_control_renamed: DARK_MODIFIED_COLOR,
version_control_conflict: orange().dark().step_12(),
version_control_ignored: gray().dark().step_12(),
version_control_word_added: WORD_ADDED_COLOR,
version_control_word_deleted: WORD_DELETED_COLOR,
version_control_word_added: DARK_WORD_ADDED_COLOR,
version_control_word_deleted: DARK_WORD_DELETED_COLOR,
version_control_conflict_marker_ours: green().dark().step_10().alpha(0.5),
version_control_conflict_marker_theirs: blue().dark().step_10().alpha(0.5),
vim_normal_background: system.transparent,

View File

@@ -3,7 +3,8 @@ use std::sync::Arc;
use gpui::{FontStyle, FontWeight, HighlightStyle, Hsla, WindowBackgroundAppearance, hsla};
use crate::{
AccentColors, Appearance, DEFAULT_DARK_THEME, PlayerColors, StatusColors,
AccentColors, Appearance, DARK_ADDED_COLOR, DARK_MODIFIED_COLOR, DARK_REMOVED_COLOR,
DARK_WORD_ADDED_COLOR, DARK_WORD_DELETED_COLOR, DEFAULT_DARK_THEME, PlayerColors, StatusColors,
StatusColorsRefinement, SyntaxTheme, SystemColors, Theme, ThemeColors, ThemeColorsRefinement,
ThemeFamily, ThemeStyles, default_color_scales,
};
@@ -70,37 +71,6 @@ pub(crate) fn zed_default_dark() -> Theme {
let teal = hsla(187. / 360., 47. / 100., 55. / 100., 1.0);
let yellow = hsla(39. / 360., 67. / 100., 69. / 100., 1.0);
const ADDED_COLOR: Hsla = Hsla {
h: 134. / 360.,
s: 0.55,
l: 0.40,
a: 1.0,
};
const WORD_ADDED_COLOR: Hsla = Hsla {
h: 134. / 360.,
s: 0.55,
l: 0.40,
a: 0.35,
};
const MODIFIED_COLOR: Hsla = Hsla {
h: 48. / 360.,
s: 0.76,
l: 0.47,
a: 1.0,
};
const REMOVED_COLOR: Hsla = Hsla {
h: 350. / 360.,
s: 0.88,
l: 0.25,
a: 1.0,
};
const WORD_DELETED_COLOR: Hsla = Hsla {
h: 350. / 360.,
s: 0.88,
l: 0.25,
a: 0.80,
};
let player = PlayerColors::dark();
Theme {
id: "one_dark".to_string(),
@@ -237,14 +207,14 @@ pub(crate) fn zed_default_dark() -> Theme {
minimap_thumb_border: hsla(228. / 360., 8. / 100., 25. / 100., 1.),
editor_foreground: hsla(218. / 360., 14. / 100., 71. / 100., 1.),
link_text_hover: blue,
version_control_added: ADDED_COLOR,
version_control_deleted: REMOVED_COLOR,
version_control_modified: MODIFIED_COLOR,
version_control_renamed: MODIFIED_COLOR,
version_control_added: DARK_ADDED_COLOR,
version_control_deleted: DARK_REMOVED_COLOR,
version_control_modified: DARK_MODIFIED_COLOR,
version_control_renamed: DARK_MODIFIED_COLOR,
version_control_conflict: crate::orange().light().step_12(),
version_control_ignored: crate::gray().light().step_12(),
version_control_word_added: WORD_ADDED_COLOR,
version_control_word_deleted: WORD_DELETED_COLOR,
version_control_word_added: DARK_WORD_ADDED_COLOR,
version_control_word_deleted: DARK_WORD_DELETED_COLOR,
version_control_conflict_marker_ours: crate::green().light().step_12().alpha(0.5),
version_control_conflict_marker_theirs: crate::blue().light().step_12().alpha(0.5),

View File

@@ -287,6 +287,7 @@ pub fn theme_colors_refinement(
.panel_background
.as_ref()
.and_then(|color| try_parse_color(color).ok());
ThemeColorsRefinement {
border,
border_variant: this
@@ -713,6 +714,7 @@ pub fn theme_colors_refinement(
.as_ref()
.and_then(|color| try_parse_color(color).ok())
// Fall back to `created`, for backwards compatibility.
// todo!
.or(status_colors.created),
version_control_deleted: this
.version_control_deleted

View File

@@ -247,6 +247,10 @@ impl ThemeFamily {
};
let mut theme_colors_refinement =
theme_colors_refinement(&theme.style.colors, &status_colors_refinement);
// todo! We could pass in refined_theme_colors to apply default version control colors
// instead of falling back to the status colors created ... etc
//
// That would probably break backwards compatibility though
apply_theme_color_defaults(&mut theme_colors_refinement, &refined_player_colors);
refined_theme_colors.refine(&theme_colors_refinement);