mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-07 20:39:04 +03:00
Test bundled themes and store names on themes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
802f1f4e78
commit
8238c87481
@ -1,21 +1,21 @@
|
||||
extends = "_base"
|
||||
|
||||
[variables]
|
||||
elevation_1 = 0xffffff
|
||||
elevation_2 = 0xf3f3f3
|
||||
elevation_3 = 0xececec
|
||||
elevation_4 = 0x3a3b3c
|
||||
text_dull = 0xacacac
|
||||
text_bright = 0x111111
|
||||
text_normal = 0x333333
|
||||
elevation_1 = "#ffffff"
|
||||
elevation_2 = "#f3f3f3"
|
||||
elevation_3 = "#ececec"
|
||||
elevation_4 = "#3a3b3c"
|
||||
text_dull = "#acacac"
|
||||
text_bright = "#111111"
|
||||
text_normal = "#333333"
|
||||
|
||||
[syntax]
|
||||
keyword = 0x0000fa
|
||||
function = 0x795e26
|
||||
string = 0xa82121
|
||||
type = 0x267f29
|
||||
number = 0xb5cea8
|
||||
comment = 0x6a9955
|
||||
property = 0x4e94ce
|
||||
variant = 0x4fc1ff
|
||||
constant = 0x9cdcfe
|
||||
keyword = "#0000fa"
|
||||
function = "#795e26"
|
||||
string = "#a82121"
|
||||
type = "#267f29"
|
||||
number = "#b5cea8"
|
||||
comment = "#6a9955"
|
||||
property = "#4e94ce"
|
||||
variant = "#4fc1ff"
|
||||
constant = "#9cdcfe"
|
||||
|
@ -1,4 +1,4 @@
|
||||
use crate::theme;
|
||||
use crate::theme::{self, DEFAULT_THEME_NAME};
|
||||
use anyhow::Result;
|
||||
use gpui::font_cache::{FamilyId, FontCache};
|
||||
use postage::watch;
|
||||
@ -48,7 +48,7 @@ pub fn channel_with_themes(
|
||||
font_cache: &FontCache,
|
||||
themes: &ThemeRegistry,
|
||||
) -> Result<(watch::Sender<Settings>, watch::Receiver<Settings>)> {
|
||||
let theme = match themes.get("dark") {
|
||||
let theme = match themes.get(DEFAULT_THEME_NAME) {
|
||||
Ok(theme) => dbg!(theme),
|
||||
Err(err) => {
|
||||
panic!("failed to deserialize default theme: {:?}", err)
|
||||
|
@ -12,6 +12,7 @@ use serde_json as json;
|
||||
use std::{cmp::Ordering, collections::HashMap, sync::Arc};
|
||||
|
||||
const DEFAULT_HIGHLIGHT_ID: HighlightId = HighlightId(u32::MAX);
|
||||
pub const DEFAULT_THEME_NAME: &'static str = "dark";
|
||||
|
||||
pub struct ThemeRegistry {
|
||||
assets: Box<dyn AssetSource>,
|
||||
@ -27,6 +28,8 @@ pub struct HighlightId(u32);
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
pub struct Theme {
|
||||
#[serde(default)]
|
||||
pub name: String,
|
||||
pub ui: Ui,
|
||||
pub editor: Editor,
|
||||
#[serde(deserialize_with = "deserialize_syntax_theme")]
|
||||
@ -129,9 +132,9 @@ impl ThemeRegistry {
|
||||
}
|
||||
|
||||
let theme_data = self.load(name)?;
|
||||
let theme = Arc::new(serde_json::from_value::<Theme>(
|
||||
theme_data.as_ref().clone(),
|
||||
)?);
|
||||
let mut theme = serde_json::from_value::<Theme>(theme_data.as_ref().clone())?;
|
||||
theme.name = name.into();
|
||||
let theme = Arc::new(theme);
|
||||
self.themes.lock().insert(name.to_string(), theme.clone());
|
||||
Ok(theme)
|
||||
}
|
||||
@ -455,8 +458,24 @@ where
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::assets::Assets;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_bundled_themes() {
|
||||
let registry = ThemeRegistry::new(Assets);
|
||||
let mut has_default_theme = false;
|
||||
for theme_name in registry.list() {
|
||||
let theme = registry.get(&theme_name).unwrap();
|
||||
if theme.name == DEFAULT_THEME_NAME {
|
||||
has_default_theme = true;
|
||||
}
|
||||
assert_eq!(theme.name, theme_name);
|
||||
}
|
||||
assert!(has_default_theme);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_theme_extension() {
|
||||
let assets = TestAssets(&[
|
||||
@ -546,6 +565,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_highlight_map() {
|
||||
let theme = Theme {
|
||||
name: "test".into(),
|
||||
ui: Default::default(),
|
||||
editor: Default::default(),
|
||||
syntax: [
|
||||
|
Loading…
Reference in New Issue
Block a user