Introduce a new, language-overridable Autosave
setting
This commit is contained in:
parent
8f021d8ca8
commit
4b533c339d
2 changed files with 17 additions and 1 deletions
|
@ -39,6 +39,7 @@ pub struct LanguageSettings {
|
||||||
pub preferred_line_length: Option<u32>,
|
pub preferred_line_length: Option<u32>,
|
||||||
pub format_on_save: Option<bool>,
|
pub format_on_save: Option<bool>,
|
||||||
pub enable_language_server: Option<bool>,
|
pub enable_language_server: Option<bool>,
|
||||||
|
pub autosave: Option<Autosave>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)]
|
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||||
|
@ -49,6 +50,15 @@ pub enum SoftWrap {
|
||||||
PreferredLineLength,
|
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)]
|
#[derive(Clone, Debug, Default, Deserialize, JsonSchema)]
|
||||||
pub struct SettingsFileContent {
|
pub struct SettingsFileContent {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
@ -128,6 +138,11 @@ impl Settings {
|
||||||
.unwrap_or(true)
|
.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 {
|
pub fn enable_language_server(&self, language: Option<&str>) -> bool {
|
||||||
self.language_setting(language, |settings| settings.enable_language_server)
|
self.language_setting(language, |settings| settings.enable_language_server)
|
||||||
.unwrap_or(true)
|
.unwrap_or(true)
|
||||||
|
@ -212,6 +227,7 @@ impl Settings {
|
||||||
&mut self.language_settings.preferred_line_length,
|
&mut self.language_settings.preferred_line_length,
|
||||||
data.editor.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() {
|
for (language_name, settings) in data.language_overrides.clone().into_iter() {
|
||||||
let target = self
|
let target = self
|
||||||
|
@ -230,6 +246,7 @@ impl Settings {
|
||||||
&mut target.preferred_line_length,
|
&mut target.preferred_line_length,
|
||||||
settings.preferred_line_length,
|
settings.preferred_line_length,
|
||||||
);
|
);
|
||||||
|
merge_option(&mut target.autosave, settings.autosave);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,6 @@ pub fn init(app_state: &Arc<AppState>, cx: &mut gpui::MutableAppContext) {
|
||||||
cx.add_action({
|
cx.add_action({
|
||||||
let app_state = app_state.clone();
|
let app_state = app_state.clone();
|
||||||
move |_: &mut Workspace, _: &OpenSettings, cx: &mut ViewContext<Workspace>| {
|
move |_: &mut Workspace, _: &OpenSettings, cx: &mut ViewContext<Workspace>| {
|
||||||
println!("open settings");
|
|
||||||
open_config_file(&SETTINGS_PATH, app_state.clone(), cx);
|
open_config_file(&SETTINGS_PATH, app_state.clone(), cx);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue