Rework third-party themes (#3254)
This PR reworks the way we define our third-party themes to make them work as overlays on top of a base theme. We introduce the concept of a `UserThemeFamily` that contains `UserTheme`s. Rather than being an entire theme definition on their own, a `UserTheme` just contains optional overrides for the values in a `Theme`. When resolving a `UserTheme`, we apply it on top of the base theme. Any values not overridden in the `UserTheme` will fall back to the `Theme` defaults. Right now we are just using `UserTheme` to model third-party themes that we distribute with the Zed binary. However, this same structure can also be used to import arbitrary user themes (such as from a theme registry, or even a theme blob from the settings file). Release Notes: - N/A
This commit is contained in:
parent
9582a6f317
commit
0d95410634
20 changed files with 1389 additions and 6000 deletions
|
@ -6,6 +6,7 @@ mod scale;
|
|||
mod settings;
|
||||
mod syntax;
|
||||
mod themes;
|
||||
mod user_theme;
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
|
@ -18,10 +19,12 @@ pub use scale::*;
|
|||
pub use settings::*;
|
||||
pub use syntax::*;
|
||||
pub use themes::*;
|
||||
pub use user_theme::*;
|
||||
|
||||
use gpui::{AppContext, Hsla, SharedString};
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Debug, PartialEq, Clone, Copy, Deserialize)]
|
||||
pub enum Appearance {
|
||||
Light,
|
||||
Dark,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue