diff --git a/crates/settings/src/settings.rs b/crates/settings/src/settings.rs index 1e84e5bec6cfbebf157d9511ff91b46aa21df609..886035c543785e8bc66e12630da3be047036e8a6 100644 --- a/crates/settings/src/settings.rs +++ b/crates/settings/src/settings.rs @@ -39,6 +39,7 @@ pub struct LanguageSettings { pub preferred_line_length: Option, pub format_on_save: Option, pub enable_language_server: Option, + pub autosave: Option, } #[derive(Copy, Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)] @@ -49,6 +50,15 @@ pub enum SoftWrap { PreferredLineLength, } +#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum Autosave { + Off, + AfterDelay { milliseconds: usize }, + OnFocusChange, + OnWindowChange, +} + #[derive(Clone, Debug, Default, Deserialize, JsonSchema)] pub struct SettingsFileContent { #[serde(default)] @@ -128,6 +138,11 @@ impl Settings { .unwrap_or(true) } + pub fn autosave(&self, language: Option<&str>) -> Autosave { + self.language_setting(language, |settings| settings.autosave) + .unwrap_or(Autosave::Off) + } + pub fn enable_language_server(&self, language: Option<&str>) -> bool { self.language_setting(language, |settings| settings.enable_language_server) .unwrap_or(true) @@ -212,6 +227,7 @@ impl Settings { &mut self.language_settings.preferred_line_length, data.editor.preferred_line_length, ); + merge_option(&mut self.language_settings.autosave, data.editor.autosave); for (language_name, settings) in data.language_overrides.clone().into_iter() { let target = self @@ -230,6 +246,7 @@ impl Settings { &mut target.preferred_line_length, settings.preferred_line_length, ); + merge_option(&mut target.autosave, settings.autosave); } } } diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 548b726af9e517b158e1e04ddbda63865979d6a3..7240aaef2f841524ae96cc0958df9058277e609a 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -97,7 +97,6 @@ pub fn init(app_state: &Arc, cx: &mut gpui::MutableAppContext) { cx.add_action({ let app_state = app_state.clone(); move |_: &mut Workspace, _: &OpenSettings, cx: &mut ViewContext| { - println!("open settings"); open_config_file(&SETTINGS_PATH, app_state.clone(), cx); } });