Builds on top of existing work from #2249, but here's a showcase: https://github.com/zed-industries/zed/assets/53836821/4b346965-6654-496c-b379-75425d9b493f TODO: - [x] handle line wrapping - [x] implement handling in multibuffer (crashes currently) - [x] add configuration option - [x] new theme properties? What colors to use? - [x] Possibly support indents with different colors or background colors - [x] investigate edge cases (e.g. indent guides and folds continue on empty lines even if the next indent is different) - [x] add more tests (also test `find_active_indent_index`) - [x] docs (will do in a follow up PR) - [x] benchmark performance impact Release Notes: - Added indent guides ([#5373](https://github.com/zed-industries/zed/issues/5373)) --------- Co-authored-by: Nate Butler <1714999+iamnbutler@users.noreply.github.com> Co-authored-by: Remco <djsmits12@gmail.com>
69 lines
1.8 KiB
Rust
69 lines
1.8 KiB
Rust
use std::sync::Arc;
|
|
|
|
use gpui::WindowBackgroundAppearance;
|
|
|
|
use crate::AccentColors;
|
|
|
|
use crate::{
|
|
default_color_scales,
|
|
one_themes::{one_dark, one_family},
|
|
Appearance, PlayerColors, StatusColors, SyntaxTheme, SystemColors, Theme, ThemeColors,
|
|
ThemeFamily, ThemeStyles,
|
|
};
|
|
|
|
fn zed_pro_daylight() -> Theme {
|
|
Theme {
|
|
id: "zed_pro_daylight".to_string(),
|
|
name: "Zed Pro Daylight".into(),
|
|
appearance: Appearance::Light,
|
|
styles: ThemeStyles {
|
|
window_background_appearance: WindowBackgroundAppearance::Opaque,
|
|
system: SystemColors::default(),
|
|
colors: ThemeColors::light(),
|
|
status: StatusColors::light(),
|
|
player: PlayerColors::light(),
|
|
syntax: Arc::new(SyntaxTheme::default()),
|
|
accents: AccentColors::light(),
|
|
},
|
|
}
|
|
}
|
|
|
|
pub(crate) fn zed_pro_moonlight() -> Theme {
|
|
Theme {
|
|
id: "zed_pro_moonlight".to_string(),
|
|
name: "Zed Pro Moonlight".into(),
|
|
appearance: Appearance::Dark,
|
|
styles: ThemeStyles {
|
|
window_background_appearance: WindowBackgroundAppearance::Opaque,
|
|
system: SystemColors::default(),
|
|
colors: ThemeColors::dark(),
|
|
status: StatusColors::dark(),
|
|
player: PlayerColors::dark(),
|
|
syntax: Arc::new(SyntaxTheme::default()),
|
|
accents: AccentColors::dark(),
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn zed_pro_family() -> ThemeFamily {
|
|
ThemeFamily {
|
|
id: "zed_pro".to_string(),
|
|
name: "Zed Pro".into(),
|
|
author: "Zed Team".into(),
|
|
themes: vec![zed_pro_daylight(), zed_pro_moonlight()],
|
|
scales: default_color_scales(),
|
|
}
|
|
}
|
|
|
|
impl Default for ThemeFamily {
|
|
fn default() -> Self {
|
|
one_family()
|
|
}
|
|
}
|
|
|
|
impl Default for Theme {
|
|
fn default() -> Self {
|
|
one_dark()
|
|
}
|
|
}
|