mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Gracefully handle errors when loading themes (#6904)
This PR improves the theme loading to gracefully handle when a theme couldn't be loaded. Trying to debug a panic that happens on startup in Nightly. Release Notes: - N/A
This commit is contained in:
parent
dfad36f668
commit
5b9cc26194
@ -1,9 +1,10 @@
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
use gpui::{AssetSource, HighlightStyle, SharedString};
|
||||
use refineable::Refineable;
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::{
|
||||
try_parse_color, Appearance, AppearanceContent, PlayerColor, PlayerColors, StatusColors,
|
||||
@ -178,17 +179,21 @@ impl ThemeRegistry {
|
||||
let theme_paths = self
|
||||
.assets
|
||||
.list("themes/")
|
||||
.unwrap()
|
||||
.expect("failed to list theme assets")
|
||||
.into_iter()
|
||||
.filter(|path| path.ends_with(".json"));
|
||||
|
||||
for path in theme_paths {
|
||||
let theme = self
|
||||
.assets
|
||||
.load(&path)
|
||||
.expect(&format!("Failed to load theme '{path}'"));
|
||||
let Some(theme) = self.assets.load(&path).log_err() else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let theme_family: ThemeFamilyContent = serde_json::from_slice(&theme).unwrap();
|
||||
let Some(theme_family) = serde_json::from_slice(&theme)
|
||||
.with_context(|| format!("failed to parse theme at path \"{path}\""))
|
||||
.log_err()
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
self.insert_user_theme_families([theme_family]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user