mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-25 01:34:02 +00:00
Remove checked-in theme JSON files
* Generate the themes on build * In debug builds, watch the theme sources. When they change, re-generate the themes and reload the current theme, removing the need for the `theme_selector::Reload` command. Co-authored-by: Keith Simmons <keith@zed.dev>
This commit is contained in:
parent
bdeac6b66a
commit
ec41dd9f18
15 changed files with 72 additions and 12288 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,3 +6,4 @@
|
|||
/crates/collab/.env.toml
|
||||
/crates/collab/static/styles.css
|
||||
/vendor/bin
|
||||
/assets/themes
|
||||
|
|
|
@ -210,7 +210,6 @@
|
|||
"bindings": {
|
||||
"cmd-shift-F": "project_search::Deploy",
|
||||
"cmd-k cmd-t": "theme_selector::Toggle",
|
||||
"cmd-k t": "theme_selector::Reload",
|
||||
"cmd-k cmd-s": "zed::OpenKeymap",
|
||||
"cmd-t": "project_symbols::Toggle",
|
||||
"cmd-p": "file_finder::Toggle",
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -23,7 +23,6 @@ actions!(theme_selector, [Toggle, Reload]);
|
|||
|
||||
pub fn init(cx: &mut MutableAppContext) {
|
||||
cx.add_action(ThemeSelector::toggle);
|
||||
cx.add_action(ThemeSelector::reload);
|
||||
Picker::<ThemeSelector>::init(cx);
|
||||
}
|
||||
|
||||
|
@ -73,9 +72,9 @@ impl ThemeSelector {
|
|||
});
|
||||
}
|
||||
|
||||
fn reload(workspace: &mut Workspace, _: &Reload, cx: &mut ViewContext<Workspace>) {
|
||||
#[cfg(debug_assertions)]
|
||||
pub fn reload(themes: Arc<ThemeRegistry>, cx: &mut MutableAppContext) {
|
||||
let current_theme_name = cx.global::<Settings>().theme.name.clone();
|
||||
let themes = workspace.themes();
|
||||
themes.clear();
|
||||
match themes.get(¤t_theme_name) {
|
||||
Ok(theme) => {
|
||||
|
|
|
@ -1,3 +1,31 @@
|
|||
use std::process::Command;
|
||||
|
||||
fn main() {
|
||||
println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.14");
|
||||
|
||||
let output = Command::new("npm")
|
||||
.current_dir("../../styles")
|
||||
.args(["ci"])
|
||||
.output()
|
||||
.expect("failed to run npm");
|
||||
if !output.status.success() {
|
||||
panic!(
|
||||
"failed to install theme dependencies {}",
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
);
|
||||
}
|
||||
|
||||
let output = Command::new("npm")
|
||||
.current_dir("../../styles")
|
||||
.args(["run", "build-themes"])
|
||||
.output()
|
||||
.expect("failed to run npm");
|
||||
if !output.status.success() {
|
||||
panic!(
|
||||
"build-themes script failed {}",
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
);
|
||||
}
|
||||
|
||||
println!("cargo:rerun-if-changed=../../styles");
|
||||
}
|
||||
|
|
|
@ -162,6 +162,8 @@ fn main() {
|
|||
cx.font_cache().clone(),
|
||||
);
|
||||
|
||||
cx.spawn(|cx| watch_themes(fs.clone(), themes.clone(), cx))
|
||||
.detach();
|
||||
cx.spawn(|cx| watch_keymap_file(keymap_file, cx)).detach();
|
||||
|
||||
let settings = cx.background().block(settings_rx.next()).unwrap();
|
||||
|
@ -440,6 +442,43 @@ fn load_embedded_fonts(app: &App) {
|
|||
.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
async fn watch_themes(
|
||||
fs: Arc<dyn Fs>,
|
||||
themes: Arc<ThemeRegistry>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Option<()> {
|
||||
let mut events = fs
|
||||
.watch("styles/src".as_ref(), Duration::from_millis(250))
|
||||
.await;
|
||||
while let Some(_) = events.next().await {
|
||||
let output = Command::new("npm")
|
||||
.current_dir("styles")
|
||||
.args(["run", "build-themes"])
|
||||
.output()
|
||||
.await
|
||||
.log_err()?;
|
||||
if output.status.success() {
|
||||
cx.update(|cx| theme_selector::ThemeSelector::reload(themes.clone(), cx))
|
||||
} else {
|
||||
eprintln!(
|
||||
"build-themes script failed {}",
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
);
|
||||
}
|
||||
}
|
||||
Some(())
|
||||
}
|
||||
|
||||
#[cfg(not(debug_assertions))]
|
||||
async fn watch_themes(
|
||||
_fs: Arc<dyn Fs>,
|
||||
_themes: Arc<ThemeRegistry>,
|
||||
_cx: AsyncAppContext,
|
||||
) -> Option<()> {
|
||||
None
|
||||
}
|
||||
|
||||
fn load_config_files(
|
||||
app: &App,
|
||||
fs: Arc<dyn Fs>,
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
cd styles
|
||||
npm install
|
||||
npm run build
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"watch": [
|
||||
"./**/*"
|
||||
],
|
||||
"ext": "ts",
|
||||
"ignore": [],
|
||||
"exec": "ts-node src/buildThemes.ts"
|
||||
}
|
2005
styles/package-lock.json
generated
2005
styles/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -6,8 +6,7 @@
|
|||
"scripts": {
|
||||
"build": "npm run build-themes && npm run build-tokens",
|
||||
"build-themes": "ts-node ./src/buildThemes.ts",
|
||||
"build-tokens": "ts-node ./src/buildTokens.ts",
|
||||
"watch": "nodemon"
|
||||
"build-tokens": "ts-node ./src/buildTokens.ts"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
|
@ -16,7 +15,6 @@
|
|||
"@types/node": "^17.0.23",
|
||||
"case-anything": "^2.1.10",
|
||||
"chroma-js": "^2.4.2",
|
||||
"ts-node": "^10.7.0",
|
||||
"nodemon": "^2.0.15"
|
||||
"ts-node": "^10.7.0"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue