diff --git a/Cargo.lock b/Cargo.lock index 801fcfa322933987177c99da04edcbec192d1b2b..02436cf80ead15ec38a7a88fba14f97a1b319618 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15896,6 +15896,7 @@ dependencies = [ "edit_prediction", "edit_prediction_ui", "editor", + "feature_flags", "fs", "futures 0.3.32", "fuzzy", diff --git a/crates/settings_ui/Cargo.toml b/crates/settings_ui/Cargo.toml index 6c7c07e6c46b703dfbe4354f0ecface0fdbf370a..d6865a4906b9fa236a71350068c83491119ed61b 100644 --- a/crates/settings_ui/Cargo.toml +++ b/crates/settings_ui/Cargo.toml @@ -29,6 +29,7 @@ edit_prediction.workspace = true edit_prediction_ui.workspace = true editor.workspace = true fs.workspace = true +feature_flags.workspace = true futures.workspace = true fuzzy.workspace = true gpui.workspace = true diff --git a/crates/settings_ui/src/page_data.rs b/crates/settings_ui/src/page_data.rs index 2d2d24a6ec2157affd57b7798b4ed83da2dd5325..0f5679b85f80c418ecc677349689878e7322597a 100644 --- a/crates/settings_ui/src/page_data.rs +++ b/crates/settings_ui/src/page_data.rs @@ -63,7 +63,7 @@ macro_rules! concat_sections { pub(crate) fn settings_data(cx: &App) -> Vec { vec![ - general_page(), + general_page(cx), appearance_page(), keymap_page(), editor_page(), @@ -80,9 +80,9 @@ pub(crate) fn settings_data(cx: &App) -> Vec { ] } -fn general_page() -> SettingsPage { - fn general_settings_section() -> [SettingsPageItem; 9] { - [ +fn general_page(cx: &App) -> SettingsPage { + fn general_settings_section(cx: &App) -> Vec { + let mut items = vec![ SettingsPageItem::SectionHeader("General Settings"), SettingsPageItem::SettingItem(SettingItem { files: PROJECT, @@ -141,27 +141,6 @@ fn general_page() -> SettingsPage { metadata: None, files: USER, }), - SettingsPageItem::SettingItem(SettingItem { - title: "CLI Default Open Behavior", - description: "How `zed ` opens directories when no flag is specified.", - field: Box::new(SettingField { - json_path: Some("cli_default_open_behavior"), - pick: |settings_content| { - settings_content - .workspace - .cli_default_open_behavior - .as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.cli_default_open_behavior = value; - }, - }), - metadata: Some(Box::new(SettingsFieldMetadata { - should_do_titlecase: Some(false), - ..Default::default() - })), - files: USER, - }), SettingsPageItem::SettingItem(SettingItem { title: "Use System Path Prompts", description: "Use native OS dialogs for 'Open' and 'Save As'.", @@ -221,7 +200,34 @@ fn general_page() -> SettingsPage { metadata: None, files: USER, }), - ] + ]; + + use feature_flags::FeatureFlagAppExt; + if cx.has_flag::() { + items.push(SettingsPageItem::SettingItem(SettingItem { + title: "CLI Default Open Behavior", + description: "How `zed ` opens directories when no flag is specified.", + field: Box::new(SettingField { + json_path: Some("cli_default_open_behavior"), + pick: |settings_content| { + settings_content + .workspace + .cli_default_open_behavior + .as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.cli_default_open_behavior = value; + }, + }), + metadata: Some(Box::new(SettingsFieldMetadata { + should_do_titlecase: Some(false), + ..Default::default() + })), + files: USER, + })); + } + + items } fn security_section() -> [SettingsPageItem; 2] { [ @@ -391,13 +397,15 @@ fn general_page() -> SettingsPage { SettingsPage { title: "General", items: concat_sections!( - general_settings_section(), + @vec, + general_settings_section(cx), security_section(), workspace_restoration_section(), scoped_settings_section(), privacy_section(), auto_update_section(), - ), + ) + .into(), } }