project panel: Add setting to disable auto opening project panel (#34752)

maan2003 created

Release Notes:

- Add `project_panel.starts_open` to control opening project panel in
new projects.

Change summary

assets/settings/default.json                       | 2 ++
crates/project_panel/src/project_panel.rs          | 4 ++++
crates/project_panel/src/project_panel_settings.rs | 5 +++++
docs/src/configuring-zed.md                        | 3 ++-
4 files changed, 13 insertions(+), 1 deletion(-)

Detailed changes

assets/settings/default.json 🔗

@@ -596,6 +596,8 @@
     // when a corresponding project entry becomes active.
     // Gitignored entries are never auto revealed.
     "auto_reveal_entries": true,
+    // Whether the project panel should open on startup.
+    "starts_open": true,
     // Whether to fold directories automatically and show compact folders
     // (e.g. "a/b/c" ) when a directory has only one subdirectory inside.
     "auto_fold_dirs": true,

crates/project_panel/src/project_panel.rs 🔗

@@ -5625,6 +5625,10 @@ impl Panel for ProjectPanel {
     }
 
     fn starts_open(&self, _: &Window, cx: &App) -> bool {
+        if !ProjectPanelSettings::get_global(cx).starts_open {
+            return false;
+        }
+
         let project = &self.project.read(cx);
         project.visible_worktrees(cx).any(|tree| {
             tree.read(cx)

crates/project_panel/src/project_panel_settings.rs 🔗

@@ -43,6 +43,7 @@ pub struct ProjectPanelSettings {
     pub sticky_scroll: bool,
     pub auto_reveal_entries: bool,
     pub auto_fold_dirs: bool,
+    pub starts_open: bool,
     pub scrollbar: ScrollbarSettings,
     pub show_diagnostics: ShowDiagnostics,
     pub hide_root: bool,
@@ -139,6 +140,10 @@ pub struct ProjectPanelSettingsContent {
     ///
     /// Default: true
     pub auto_fold_dirs: Option<bool>,
+    /// Whether the project panel should open on startup.
+    ///
+    /// Default: true
+    pub starts_open: Option<bool>,
     /// Scrollbar-related settings
     pub scrollbar: Option<ScrollbarSettingsContent>,
     /// Which files containing diagnostic errors/warnings to mark in the project panel.

docs/src/configuring-zed.md 🔗

@@ -3213,7 +3213,8 @@ Run the `theme selector: toggle` action in the command palette to see a current
     "indent_guides": {
       "show": "always"
     },
-    "hide_root": false
+    "hide_root": false,
+    "starts_open": true
   }
 }
 ```