diff --git a/crates/project/src/project_settings.rs b/crates/project/src/project_settings.rs index 51dcb6fb7e..16cfb3fbda 100644 --- a/crates/project/src/project_settings.rs +++ b/crates/project/src/project_settings.rs @@ -118,22 +118,19 @@ pub enum DirenvSettings { Direct, } -#[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema)] +#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)] +#[serde(default)] pub struct DiagnosticsSettings { /// Whether to show the project diagnostics button in the status bar. - #[serde(default = "default_true")] pub button: bool, /// Whether or not to include warning diagnostics. - #[serde(default = "default_true")] pub include_warnings: bool, /// Settings for showing inline diagnostics. - #[serde(default)] pub inline: InlineDiagnosticsSettings, /// Configuration, related to Rust language diagnostics. - #[serde(default)] pub cargo: Option, } @@ -146,33 +143,29 @@ impl DiagnosticsSettings { } #[derive(Clone, Copy, Debug, Serialize, Deserialize, JsonSchema)] +#[serde(default)] pub struct InlineDiagnosticsSettings { /// Whether or not to show inline diagnostics /// /// Default: false - #[serde(default)] pub enabled: bool, /// Whether to only show the inline diagnostics after a delay after the /// last editor event. /// /// Default: 150 - #[serde(default = "default_inline_diagnostics_debounce_ms")] pub update_debounce_ms: u64, /// The amount of padding between the end of the source line and the start /// of the inline diagnostic in units of columns. /// /// Default: 4 - #[serde(default = "default_inline_diagnostics_padding")] pub padding: u32, /// The minimum column to display inline diagnostics. This setting can be /// used to horizontally align inline diagnostics at some position. Lines /// longer than this value will still push diagnostics further to the right. /// /// Default: 0 - #[serde(default)] pub min_column: u32, - #[serde(default)] pub max_severity: Option, } @@ -211,24 +204,27 @@ impl DiagnosticSeverity { } } -impl Default for InlineDiagnosticsSettings { +impl Default for DiagnosticsSettings { fn default() -> Self { Self { - enabled: false, - update_debounce_ms: default_inline_diagnostics_debounce_ms(), - padding: default_inline_diagnostics_padding(), - min_column: 0, - max_severity: None, + button: true, + include_warnings: true, + inline: Default::default(), + cargo: Default::default(), } } } -fn default_inline_diagnostics_debounce_ms() -> u64 { - 150 -} - -fn default_inline_diagnostics_padding() -> u32 { - 4 +impl Default for InlineDiagnosticsSettings { + fn default() -> Self { + Self { + enabled: false, + update_debounce_ms: 150, + padding: 4, + min_column: 0, + max_severity: None, + } + } } #[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema)] diff --git a/crates/title_bar/src/title_bar_settings.rs b/crates/title_bar/src/title_bar_settings.rs index b4dd1bce70..d2241084ce 100644 --- a/crates/title_bar/src/title_bar_settings.rs +++ b/crates/title_bar/src/title_bar_settings.rs @@ -2,50 +2,48 @@ use db::anyhow; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use settings::{Settings, SettingsSources}; -use util::serde::default_true; -#[derive(Deserialize, Debug, Clone, Copy, PartialEq)] +#[derive(Copy, Clone, Serialize, Deserialize, JsonSchema, Debug)] +#[serde(default)] pub struct TitleBarSettings { - #[serde(default)] - pub show_branch_icon: bool, - #[serde(default = "default_true")] - pub show_branch_name: bool, - #[serde(default = "default_true")] - pub show_project_items: bool, - #[serde(default = "default_true")] - pub show_onboarding_banner: bool, - #[serde(default = "default_true")] - pub show_user_picture: bool, -} - -#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)] -pub struct TitleBarSettingsContent { /// Whether to show the branch icon beside branch switcher in the title bar. /// /// Default: false - pub show_branch_icon: Option, + pub show_branch_icon: bool, /// Whether to show onboarding banners in the title bar. /// /// Default: true - pub show_onboarding_banner: Option, + pub show_onboarding_banner: bool, /// Whether to show user avatar in the title bar. /// /// Default: true - pub show_user_picture: Option, + pub show_user_picture: bool, /// Whether to show the branch name button in the titlebar. /// /// Default: true - pub show_branch_name: Option, + pub show_branch_name: bool, /// Whether to show the project host and name in the titlebar. /// /// Default: true - pub show_project_items: Option, + pub show_project_items: bool, +} + +impl Default for TitleBarSettings { + fn default() -> Self { + Self { + show_branch_icon: false, + show_onboarding_banner: true, + show_user_picture: true, + show_branch_name: true, + show_project_items: true, + } + } } impl Settings for TitleBarSettings { const KEY: Option<&'static str> = Some("title_bar"); - type FileContent = TitleBarSettingsContent; + type FileContent = Self; fn load(sources: SettingsSources, _: &mut gpui::App) -> anyhow::Result where