Load themes from settings and rework Settings trait

This commit is contained in:
Marshall Bowers
2023-10-25 20:37:55 +02:00
parent 98e2490807
commit e67048ee7b
19 changed files with 114 additions and 86 deletions
+11 -8
View File
@@ -8,7 +8,7 @@ use schemars::{
};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use settings2::SettingsJsonSchemaParams;
use settings2::{Settings, SettingsJsonSchemaParams};
use std::sync::Arc;
use util::ResultExt as _;
@@ -20,7 +20,7 @@ pub struct ThemeSettings {
pub buffer_font: Font,
pub buffer_font_size: Pixels,
pub buffer_line_height: BufferLineHeight,
pub theme: Arc<Theme>,
pub active_theme: Arc<Theme>,
}
#[derive(Default)]
@@ -75,7 +75,7 @@ impl ThemeSettings {
pub fn adjusted_font_size(size: Pixels, cx: &mut AppContext) -> Pixels {
if let Some(adjusted_size) = cx.default_global::<AdjustedBufferFontSize>().0 {
let buffer_font_size = settings2::get::<ThemeSettings>(cx).buffer_font_size;
let buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size;
let delta = adjusted_size - buffer_font_size;
size + delta
} else {
@@ -85,7 +85,7 @@ pub fn adjusted_font_size(size: Pixels, cx: &mut AppContext) -> Pixels {
}
pub fn adjust_font_size(cx: &mut AppContext, f: fn(&mut Pixels)) {
let buffer_font_size = settings2::get::<ThemeSettings>(cx).buffer_font_size;
let buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size;
let adjusted_size = cx
.default_global::<AdjustedBufferFontSize>()
.0
@@ -102,7 +102,7 @@ pub fn reset_font_size(cx: &mut AppContext) {
}
}
impl settings2::Setting for ThemeSettings {
impl settings2::Settings for ThemeSettings {
const KEY: Option<&'static str> = None;
type FileContent = ThemeSettingsContent;
@@ -123,7 +123,7 @@ impl settings2::Setting for ThemeSettings {
},
buffer_font_size: defaults.buffer_font_size.unwrap().into(),
buffer_line_height: defaults.buffer_line_height.unwrap(),
theme: themes.get(defaults.theme.as_ref().unwrap()).unwrap(),
active_theme: themes.get(defaults.theme.as_ref().unwrap()).unwrap(),
};
for value in user_values.into_iter().copied().cloned() {
@@ -136,11 +136,14 @@ impl settings2::Setting for ThemeSettings {
if let Some(value) = &value.theme {
if let Some(theme) = themes.get(value).log_err() {
this.theme = theme;
this.active_theme = theme;
}
}
merge(&mut this.buffer_font_size, value.buffer_font_size.map(Into::into));
merge(
&mut this.buffer_font_size,
value.buffer_font_size.map(Into::into),
);
merge(&mut this.buffer_line_height, value.buffer_line_height);
}
+11 -12
View File
@@ -5,9 +5,19 @@ mod themes;
pub use registry::*;
pub use settings::*;
use gpui2::{HighlightStyle, Hsla, SharedString};
use gpui2::{AppContext, HighlightStyle, Hsla, SharedString};
use settings2::Settings;
use std::sync::Arc;
pub fn init(cx: &mut AppContext) {
cx.set_global(ThemeRegistry::default());
ThemeSettings::register(cx);
}
pub fn active_theme<'a>(cx: &'a AppContext) -> &'a Arc<Theme> {
&ThemeSettings::get_global(cx).active_theme
}
pub struct Theme {
pub metadata: ThemeMetadata,
@@ -102,14 +112,3 @@ pub struct ThemeMetadata {
pub struct Editor {
pub syntax: Arc<SyntaxTheme>,
}
// #[derive(Default)]
// pub struct SyntaxTheme {
// pub highlights: Vec<(String, HighlightStyle)>,
// }
// impl SyntaxTheme {
// pub fn new(highlights: Vec<(String, HighlightStyle)>) -> Self {
// Self { highlights }
// }
// }