From 8c85bc20c7e37ad61cf37d4018b7803e751bd1f1 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 26 Aug 2021 15:02:58 -0700 Subject: [PATCH] Indicate the key-path to the error when failing to load a theme --- Cargo.lock | 1 + zed/Cargo.toml | 1 + zed/src/theme/theme_registry.rs | 7 +++---- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9da817877e5cc07fb82a7edb56537fdfc14ff2d4..3f041b7acdbd347ffc44b040fd5c9eedb93b6d81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5835,6 +5835,7 @@ dependencies = [ "seahash", "serde 1.0.125", "serde_json 1.0.64", + "serde_path_to_error", "similar", "simplelog", "smallvec", diff --git a/zed/Cargo.toml b/zed/Cargo.toml index a9cdb7767578f17d6191d25ab58cb58666e3a6ed..b77ed8caff0bd7c27310870b88aad5112206fefd 100644 --- a/zed/Cargo.toml +++ b/zed/Cargo.toml @@ -42,6 +42,7 @@ rust-embed = "5.9.0" seahash = "4.1" serde = { version = "1", features = ["derive"] } serde_json = { version = "1.0.64", features = ["preserve_order"] } +serde_path_to_error = "0.1.4" similar = "1.3" simplelog = "0.9" smallvec = { version = "1.6", features = ["union"] } diff --git a/zed/src/theme/theme_registry.rs b/zed/src/theme/theme_registry.rs index da6d097c315e53fdb5210b024613d02d99d3ef28..0808281f09e4b34f99692130c4f75edf39f85d79 100644 --- a/zed/src/theme/theme_registry.rs +++ b/zed/src/theme/theme_registry.rs @@ -1,8 +1,7 @@ use anyhow::{anyhow, Context, Result}; use gpui::{fonts, AssetSource, FontCache}; -use json::{Map, Value}; use parking_lot::Mutex; -use serde_json as json; +use serde_json::{Map, Value}; use std::{collections::HashMap, fmt, mem, sync::Arc}; use super::Theme; @@ -71,8 +70,8 @@ impl ThemeRegistry { } let theme_data = self.load(name, true)?; - let mut theme = fonts::with_font_cache(self.font_cache.clone(), || { - serde_json::from_value::(theme_data.as_ref().clone()) + let mut theme: Theme = fonts::with_font_cache(self.font_cache.clone(), || { + serde_path_to_error::deserialize(theme_data.as_ref()) })?; theme.name = name.into();