From 5e502a32fbc5aa5b3bb63183513e7e6d699bccc0 Mon Sep 17 00:00:00 2001 From: Julia Ryan Date: Mon, 22 Sep 2025 17:30:27 -0500 Subject: [PATCH] Fix remote server crash with JSON files (#38678) Closes #38594 Release Notes: - N/A --- crates/languages/src/json.rs | 16 ++++++++++------ crates/theme/src/registry.rs | 5 +++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/languages/src/json.rs b/crates/languages/src/json.rs index 7e698cbf095b5679aefda4230b2b5b08c24b0825..482c709d453c520486990409a37c27a50132dd77 100644 --- a/crates/languages/src/json.rs +++ b/crates/languages/src/json.rs @@ -157,12 +157,16 @@ impl JsonLspAdapter { ) -> Value { let keymap_schema = KeymapFile::generate_json_schema_for_registered_actions(cx); let font_names = &cx.text_system().all_font_names(); - let theme_names = &ThemeRegistry::global(cx).list_names(); - let icon_theme_names = &ThemeRegistry::global(cx) - .list_icon_themes() - .into_iter() - .map(|icon_theme| icon_theme.name) - .collect::>(); + let themes = ThemeRegistry::try_global(cx); + let theme_names = &themes.clone().map(|t| t.list_names()).unwrap_or_default(); + let icon_theme_names = &themes + .map(|t| { + t.list_icon_themes() + .into_iter() + .map(|icon_theme| icon_theme.name) + .collect::>() + }) + .unwrap_or_default(); let settings_schema = cx .global::() .json_schema(&SettingsJsonSchemaParams { diff --git a/crates/theme/src/registry.rs b/crates/theme/src/registry.rs index 8bf8481c84c9c48cbbd03c472b785a776aa07dac..c362b62704257fefde125e81ca1c056490263b0b 100644 --- a/crates/theme/src/registry.rs +++ b/crates/theme/src/registry.rs @@ -73,6 +73,11 @@ impl ThemeRegistry { cx.default_global::().0.clone() } + /// Returns the global [`ThemeRegistry`] if it exists. + pub fn try_global(cx: &mut App) -> Option> { + cx.try_global::().map(|t| t.0.clone()) + } + /// Sets the global [`ThemeRegistry`]. pub(crate) fn set_global(assets: Box, cx: &mut App) { cx.set_global(GlobalThemeRegistry(Arc::new(ThemeRegistry::new(assets))));