workspace: Add restore_on_startup setting that allows always opening an empty Zed instance (#10366)

Fixes #7694
The new setting accepts "last_workspace" (default) and "none" as
options.

In a follow-up PR I'll add a new option that re-launches all of the Zed
windows and not just the last one.

Release Notes:

- Added `restore_on_startup` option, accepting `last_workspace`
(default) and `none` options. With `none`, new Zed instances will not
restore workspaces that were open last.
This commit is contained in:
Piotr Osiewicz 2024-04-11 13:27:27 +02:00 committed by GitHub
parent fef0516f5b
commit 2f616fe8eb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 30 additions and 3 deletions

View file

@ -81,7 +81,9 @@ use ui::{
};
use util::ResultExt;
use uuid::Uuid;
pub use workspace_settings::{AutosaveSetting, TabBarSettings, WorkspaceSettings};
pub use workspace_settings::{
AutosaveSetting, RestoreOnStartupBehaviour, TabBarSettings, WorkspaceSettings,
};
use crate::notifications::NotificationId;
use crate::persistence::{

View file

@ -10,6 +10,17 @@ pub struct WorkspaceSettings {
pub confirm_quit: bool,
pub show_call_status_icon: bool,
pub autosave: AutosaveSetting,
pub restore_on_startup: RestoreOnStartupBehaviour,
}
#[derive(Copy, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum RestoreOnStartupBehaviour {
/// Always start with an empty editor
None,
/// Restore the workspace that was closed last.
#[default]
LastWorkspace,
}
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
@ -32,6 +43,10 @@ pub struct WorkspaceSettingsContent {
///
/// Default: off
pub autosave: Option<AutosaveSetting>,
/// Controls previous session restoration in freshly launched Zed instance.
/// Values: none, last_workspace
/// Default: last_workspace
pub restore_on_startup: Option<RestoreOnStartupBehaviour>,
}
#[derive(Deserialize)]