From f3fffc25c4bc90d8361f6e367c89667e000455a8 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Mon, 6 May 2024 14:55:44 -0600 Subject: [PATCH] Don't log JSON parse errors with no settings (#11459) Release Notes: - Silenced error messages on startup when no settings/keymap files exist. --- crates/settings/src/keymap_file.rs | 3 +++ crates/settings/src/settings_store.rs | 14 ++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/crates/settings/src/keymap_file.rs b/crates/settings/src/keymap_file.rs index 79771e3e3f7e22a604d4d67c33f815949ce878eb..9e8e69d6a3fb6e1c97dd06180f9dbaef09a60485 100644 --- a/crates/settings/src/keymap_file.rs +++ b/crates/settings/src/keymap_file.rs @@ -47,6 +47,9 @@ impl KeymapFile { } pub fn parse(content: &str) -> Result { + if content.is_empty() { + return Ok(Self::default()); + } parse_json_with_comments::(content) } diff --git a/crates/settings/src/settings_store.rs b/crates/settings/src/settings_store.rs index 5824414917ac6dd5de6c09395548392b9ccdedf7..d8bc163c02cdb4c64330cf684a363905a2e64932 100644 --- a/crates/settings/src/settings_store.rs +++ b/crates/settings/src/settings_store.rs @@ -430,7 +430,11 @@ impl SettingsStore { user_settings_content: &str, cx: &mut AppContext, ) -> Result<()> { - let settings: serde_json::Value = parse_json_with_comments(user_settings_content)?; + let settings: serde_json::Value = if user_settings_content.is_empty() { + parse_json_with_comments("{}")? + } else { + parse_json_with_comments(user_settings_content)? + }; if settings.is_object() { self.raw_user_settings = settings; self.recompute_values(None, cx)?; @@ -448,9 +452,11 @@ impl SettingsStore { settings_content: Option<&str>, cx: &mut AppContext, ) -> Result<()> { - if let Some(content) = settings_content { - self.raw_local_settings - .insert((root_id, path.clone()), parse_json_with_comments(content)?); + if settings_content.is_some_and(|content| !content.is_empty()) { + self.raw_local_settings.insert( + (root_id, path.clone()), + parse_json_with_comments(settings_content.unwrap())?, + ); } else { self.raw_local_settings.remove(&(root_id, path.clone())); }