settings: Follow-up fix to show more errors (#18123)

Thorsten Ball created

The condition added in #18122 was too strict.


Release Notes:

- N/A

Change summary

crates/zed/src/main.rs | 36 +++++++++++++++++++-----------------
1 file changed, 19 insertions(+), 17 deletions(-)

Detailed changes

crates/zed/src/main.rs 🔗

@@ -629,26 +629,28 @@ fn handle_settings_changed(error: Option<anyhow::Error>, cx: &mut AppContext) {
     for workspace in workspace::local_workspace_windows(cx) {
         workspace
             .update(cx, |workspace, cx| {
-                match error
-                    .as_ref()
-                    .and_then(|error| error.downcast_ref::<InvalidSettingsError>())
-                {
-                    Some(InvalidSettingsError::UserSettings { message }) => {
-                        workspace.show_notification(id.clone(), cx, |cx| {
-                            cx.new_view(|_| {
-                                MessageNotification::new(format!(
-                                    "Invalid user settings file\n{message}"
-                                ))
-                                .with_click_message("Open settings file")
-                                .on_click(|cx| {
-                                    cx.dispatch_action(zed_actions::OpenSettings.boxed_clone());
-                                    cx.emit(DismissEvent);
+                match error.as_ref() {
+                    Some(error) => {
+                        if let Some(InvalidSettingsError::LocalSettings { .. }) =
+                            error.downcast_ref::<InvalidSettingsError>()
+                        {
+                            // Local settings will be displayed by the projects
+                        } else {
+                            workspace.show_notification(id.clone(), cx, |cx| {
+                                cx.new_view(|_| {
+                                    MessageNotification::new(format!(
+                                        "Invalid user settings file\n{error}"
+                                    ))
+                                    .with_click_message("Open settings file")
+                                    .on_click(|cx| {
+                                        cx.dispatch_action(zed_actions::OpenSettings.boxed_clone());
+                                        cx.emit(DismissEvent);
+                                    })
                                 })
-                            })
-                        });
+                            });
+                        }
                     }
                     None => workspace.dismiss_notification(&id, cx),
-                    _ => {}
                 }
             })
             .log_err();