From 40a2c724b72e29181de8108c1181974406b79819 Mon Sep 17 00:00:00 2001 From: Ben Kunkle Date: Wed, 7 Jan 2026 15:14:00 -0600 Subject: [PATCH] settings_ui: Organize page data (#46275) Closes #ISSUE Organizes the giant list of settings UI items in `page_data.rs` a bit so that sections are split out in sub functions that (for the most part) return constant size arrays. Page items is also converted to a `Box<[...]>` instead of a Vec. The goal here is to have working breadcrumbs when in the settings UI file (e.g. `fn general_page() > fn general_section()`), and to escape the `vec![]` macro so that `rust-analyzer` works more consistently. This should help both humans and LLMs know where they are in the file and use the outline to navigate it instead of having to read the whole thing to have an idea of what is going on. Release Notes: - N/A *or* Added/Fixed/Improved ... --- crates/settings_ui/src/page_data.rs | 14727 ++++++++-------- crates/settings_ui/src/settings_ui.rs | 24 +- .../resources/windows/bin/x64/OpenConsole.exe | Bin 0 -> 1145344 bytes 3 files changed, 7755 insertions(+), 6996 deletions(-) create mode 100644 crates/zed/resources/windows/bin/x64/OpenConsole.exe diff --git a/crates/settings_ui/src/page_data.rs b/crates/settings_ui/src/page_data.rs index 7d234d05354e7b82ef0c09a567c57f551d009969..372ed1fae34412f1453e7cc6c4056b24a6c1603f 100644 --- a/crates/settings_ui/src/page_data.rs +++ b/crates/settings_ui/src/page_data.rs @@ -19,4803 +19,5223 @@ const DEFAULT_SHARED_STRING: SharedString = SharedString::new_static(""); /// to avoid the "NO DEFAULT" case. const DEFAULT_EMPTY_SHARED_STRING: Option<&SharedString> = Some(&DEFAULT_SHARED_STRING); +macro_rules! concat_sections { + (@vec, $($arr:expr),+ $(,)?) => {{ + let total_len = 0_usize $(+ $arr.len())+; + let mut out = Vec::with_capacity(total_len); + + $( + out.extend($arr); + )+ + + out + }}; + + ($($arr:expr),+ $(,)?) => {{ + let total_len = 0_usize $(+ $arr.len())+; + + let mut out: Box<[std::mem::MaybeUninit<_>]> = Box::new_uninit_slice(total_len); + + let mut index = 0usize; + $( + let array = $arr; + for item in array { + out[index].write(item); + index += 1; + } + )+ + + debug_assert_eq!(index, total_len); + + // SAFETY: we wrote exactly `total_len` elements. + unsafe { out.assume_init() } + }}; +} + pub(crate) fn settings_data(cx: &App) -> Vec { vec![ - SettingsPage { - title: "General", - items: vec![ - SettingsPageItem::SectionHeader("General Settings"), - SettingsPageItem::SettingItem(SettingItem { - files: PROJECT, - title: "Project Name", - description: "The displayed name of this project. If left empty, the root directory name will be displayed.", - field: Box::new( - SettingField { - json_path: Some("project_name"), - pick: |settings_content| { - settings_content.project.worktree.project_name.as_ref().or(DEFAULT_EMPTY_STRING) - }, - write: |settings_content, value| { - settings_content.project.worktree.project_name = value.filter(|name| !name.is_empty()); - }, - } - ), - metadata: Some(Box::new(SettingsFieldMetadata { placeholder: Some("Project Name"), ..Default::default() })), + general_page(), + appearance_page(), + keymap_page(), + editor_page(), + languages_and_tools_page(cx), + search_and_files_page(), + window_and_layout_page(), + panels_page(), + debugger_page(), + terminal_page(), + version_control_page(), + collaboration_page(), + ai_page(), + network_page(), + ] +} + +fn general_page() -> SettingsPage { + fn general_settings_section() -> [SettingsPageItem; 8] { + [ + SettingsPageItem::SectionHeader("General Settings"), + SettingsPageItem::SettingItem(SettingItem { + files: PROJECT, + title: "Project Name", + description: "The displayed name of this project. If left empty, the root directory name will be displayed.", + field: Box::new(SettingField { + json_path: Some("project_name"), + pick: |settings_content| { + settings_content + .project + .worktree + .project_name + .as_ref() + .or(DEFAULT_EMPTY_STRING) + }, + write: |settings_content, value| { + settings_content.project.worktree.project_name = + value.filter(|name| !name.is_empty()); + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "When Closing With No Tabs", - description: "What to do when using the 'close active item' action with no tabs.", - field: Box::new(SettingField { - json_path: Some("when_closing_with_no_tabs"), - pick: |settings_content| { - settings_content - .workspace - .when_closing_with_no_tabs - .as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.when_closing_with_no_tabs = value; - }, - }), - metadata: None, - files: USER, + metadata: Some(Box::new(SettingsFieldMetadata { + placeholder: Some("Project Name"), + ..Default::default() + })), + }), + SettingsPageItem::SettingItem(SettingItem { + title: "When Closing With No Tabs", + description: "What to do when using the 'close active item' action with no tabs.", + field: Box::new(SettingField { + json_path: Some("when_closing_with_no_tabs"), + pick: |settings_content| { + settings_content + .workspace + .when_closing_with_no_tabs + .as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.when_closing_with_no_tabs = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "On Last Window Closed", - description: "What to do when the last window is closed.", - field: Box::new(SettingField { - json_path: Some("on_last_window_closed"), - pick: |settings_content| { - settings_content.workspace.on_last_window_closed.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.on_last_window_closed = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "On Last Window Closed", + description: "What to do when the last window is closed.", + field: Box::new(SettingField { + json_path: Some("on_last_window_closed"), + pick: |settings_content| { + settings_content.workspace.on_last_window_closed.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.on_last_window_closed = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use System Path Prompts", - description: "Use native OS dialogs for 'Open' and 'Save As'.", - field: Box::new(SettingField { - json_path: Some("use_system_path_prompts"), - pick: |settings_content| { - settings_content.workspace.use_system_path_prompts.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.use_system_path_prompts = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Use System Path Prompts", + description: "Use native OS dialogs for 'Open' and 'Save As'.", + field: Box::new(SettingField { + json_path: Some("use_system_path_prompts"), + pick: |settings_content| { + settings_content.workspace.use_system_path_prompts.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.use_system_path_prompts = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use System Prompts", - description: "Use native OS dialogs for confirmations.", - field: Box::new(SettingField { - json_path: Some("use_system_prompts"), - pick: |settings_content| { - settings_content.workspace.use_system_prompts.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.use_system_prompts = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Use System Prompts", + description: "Use native OS dialogs for confirmations.", + field: Box::new(SettingField { + json_path: Some("use_system_prompts"), + pick: |settings_content| settings_content.workspace.use_system_prompts.as_ref(), + write: |settings_content, value| { + settings_content.workspace.use_system_prompts = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Redact Private Values", - description: "Hide the values of variables in private files.", - field: Box::new(SettingField { - json_path: Some("redact_private_values"), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Redact Private Values", + description: "Hide the values of variables in private files.", + field: Box::new(SettingField { + json_path: Some("redact_private_values"), + pick: |settings_content| settings_content.editor.redact_private_values.as_ref(), + write: |settings_content, value| { + settings_content.editor.redact_private_values = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Private Files", + description: "Globs to match against file paths to determine if a file is private.", + field: Box::new( + SettingField { + json_path: Some("worktree.private_files"), pick: |settings_content| { - settings_content.editor.redact_private_values.as_ref() + settings_content.project.worktree.private_files.as_ref() }, write: |settings_content, value| { - settings_content.editor.redact_private_values = value; + settings_content.project.worktree.private_files = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + ] + } + fn security_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Security"), + SettingsPageItem::SettingItem(SettingItem { + title: "Trust All Projects By Default", + description: "When opening Zed, avoid Restricted Mode by auto-trusting all projects, enabling use of all features without having to give permission to each new project.", + field: Box::new(SettingField { + json_path: Some("session.trust_all_projects"), + pick: |settings_content| { + settings_content + .session + .as_ref() + .and_then(|session| session.trust_all_worktrees.as_ref()) + }, + write: |settings_content, value| { + settings_content + .session + .get_or_insert_default() + .trust_all_worktrees = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Private Files", - description: "Globs to match against file paths to determine if a file is private.", - field: Box::new( - SettingField { - json_path: Some("worktree.private_files"), - pick: |settings_content| { - settings_content.project.worktree.private_files.as_ref() - }, - write: |settings_content, value| { - settings_content.project.worktree.private_files = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn workspace_restoration_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Workspace Restoration"), + SettingsPageItem::SettingItem(SettingItem { + title: "Restore Unsaved Buffers", + description: "Whether or not to restore unsaved buffers on restart.", + field: Box::new(SettingField { + json_path: Some("session.restore_unsaved_buffers"), + pick: |settings_content| { + settings_content + .session + .as_ref() + .and_then(|session| session.restore_unsaved_buffers.as_ref()) + }, + write: |settings_content, value| { + settings_content + .session + .get_or_insert_default() + .restore_unsaved_buffers = value; + }, }), - SettingsPageItem::SectionHeader("Security"), - SettingsPageItem::SettingItem(SettingItem { - title: "Trust All Projects By Default", - description: "When opening Zed, avoid Restricted Mode by auto-trusting all projects, enabling use of all features without having to give permission to each new project.", - field: Box::new(SettingField { - json_path: Some("session.trust_all_projects"), - pick: |settings_content| { - settings_content - .session - .as_ref() - .and_then(|session| session.trust_all_worktrees.as_ref()) - }, - write: |settings_content, value| { - settings_content - .session - .get_or_insert_default() - .trust_all_worktrees = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Restore On Startup", + description: "What to restore from the previous session when opening Zed.", + field: Box::new(SettingField { + json_path: Some("restore_on_startup"), + pick: |settings_content| settings_content.workspace.restore_on_startup.as_ref(), + write: |settings_content, value| { + settings_content.workspace.restore_on_startup = value; + }, }), - SettingsPageItem::SectionHeader("Workspace Restoration"), - SettingsPageItem::SettingItem(SettingItem { - title: "Restore Unsaved Buffers", - description: "Whether or not to restore unsaved buffers on restart.", - field: Box::new(SettingField { - json_path: Some("session.restore_unsaved_buffers"), - pick: |settings_content| { - settings_content - .session - .as_ref() - .and_then(|session| session.restore_unsaved_buffers.as_ref()) - }, - write: |settings_content, value| { - settings_content - .session - .get_or_insert_default() - .restore_unsaved_buffers = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn scoped_settings_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Scoped Settings"), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Preview Channel", + description: "Which settings should be activated only in Preview build of Zed.", + field: Box::new( + SettingField { + json_path: Some("preview_channel_settings"), + pick: |settings_content| Some(settings_content), + write: |_settings_content, _value| {}, + } + .unimplemented(), + ), + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Settings Profiles", + description: "Any number of settings profiles that are temporarily applied on top of your existing user settings.", + field: Box::new( + SettingField { + json_path: Some("settings_profiles"), + pick: |settings_content| Some(settings_content), + write: |_settings_content, _value| {}, + } + .unimplemented(), + ), + metadata: None, + }), + ] + } + + fn privacy_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Privacy"), + SettingsPageItem::SettingItem(SettingItem { + title: "Telemetry Diagnostics", + description: "Send debug information like crash reports.", + field: Box::new(SettingField { + json_path: Some("telemetry.diagnostics"), + pick: |settings_content| { + settings_content + .telemetry + .as_ref() + .and_then(|telemetry| telemetry.diagnostics.as_ref()) + }, + write: |settings_content, value| { + settings_content + .telemetry + .get_or_insert_default() + .diagnostics = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Restore On Startup", - description: "What to restore from the previous session when opening Zed.", + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Telemetry Metrics", + description: "Send anonymized usage data like what languages you're using Zed with.", + field: Box::new(SettingField { + json_path: Some("telemetry.metrics"), + pick: |settings_content| { + settings_content + .telemetry + .as_ref() + .and_then(|telemetry| telemetry.metrics.as_ref()) + }, + write: |settings_content, value| { + settings_content.telemetry.get_or_insert_default().metrics = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn auto_update_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Auto Update"), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Update", + description: "Whether or not to automatically check for updates.", + field: Box::new(SettingField { + json_path: Some("auto_update"), + pick: |settings_content| settings_content.auto_update.as_ref(), + write: |settings_content, value| { + settings_content.auto_update = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "General", + items: concat_sections!( + general_settings_section(), + security_section(), + workspace_restoration_section(), + scoped_settings_section(), + privacy_section(), + auto_update_section(), + ), + } +} + +fn appearance_page() -> SettingsPage { + fn theme_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Theme"), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { + files: USER, + title: "Theme Mode", + description: "Choose a static, fixed theme or dynamically select themes based on appearance and light/dark modes.", field: Box::new(SettingField { - json_path: Some("restore_on_startup"), + json_path: Some("theme$"), pick: |settings_content| { - settings_content.workspace.restore_on_startup.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.restore_on_startup = value; + Some(&dynamic_variants::()[ + settings_content + .theme + .theme + .as_ref()? + .discriminant() as usize]) + }, + write: |settings_content, value| { + let Some(value) = value else { + settings_content.theme.theme = None; + return; + }; + let settings_value = settings_content.theme.theme.get_or_insert_default(); + *settings_value = match value { + settings::ThemeSelectionDiscriminants::Static => { + let name = match settings_value { + settings::ThemeSelection::Static(_) => return, + settings::ThemeSelection::Dynamic { mode, light, dark } => { + match mode { + theme::ThemeAppearanceMode::Light => light.clone(), + theme::ThemeAppearanceMode::Dark => dark.clone(), + theme::ThemeAppearanceMode::System => dark.clone(), // no cx, can't determine correct choice + } + }, + }; + settings::ThemeSelection::Static(name) + }, + settings::ThemeSelectionDiscriminants::Dynamic => { + let static_name = match settings_value { + settings::ThemeSelection::Static(theme_name) => theme_name.clone(), + settings::ThemeSelection::Dynamic {..} => return, + }; + + settings::ThemeSelection::Dynamic { + mode: settings::ThemeAppearanceMode::System, + light: static_name.clone(), + dark: static_name, + } + }, + }; }, }), metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Scoped Settings"), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Preview Channel", - description: "Which settings should be activated only in Preview build of Zed.", - field: Box::new( - SettingField { - json_path: Some("preview_channel_settings"), - pick: |settings_content| { - Some(settings_content) + }, + pick_discriminant: |settings_content| { + Some(settings_content.theme.theme.as_ref()?.discriminant() as usize) + }, + fields: dynamic_variants::().into_iter().map(|variant| { + match variant { + settings::ThemeSelectionDiscriminants::Static => vec![ + SettingItem { + files: USER, + title: "Theme Name", + description: "The name of your selected theme.", + field: Box::new(SettingField { + json_path: Some("theme"), + pick: |settings_content| { + match settings_content.theme.theme.as_ref() { + Some(settings::ThemeSelection::Static(name)) => Some(name), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .theme.get_or_insert_default() { + settings::ThemeSelection::Static(theme_name) => *theme_name = value, + _ => return + } + }, + }), + metadata: None, + } + ], + settings::ThemeSelectionDiscriminants::Dynamic => vec![ + SettingItem { + files: USER, + title: "Mode", + description: "Choose whether to use the selected light or dark theme or to follow your OS appearance configuration.", + field: Box::new(SettingField { + json_path: Some("theme.mode"), + pick: |settings_content| { + match settings_content.theme.theme.as_ref() { + Some(settings::ThemeSelection::Dynamic { mode, ..}) => Some(mode), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .theme.get_or_insert_default() { + settings::ThemeSelection::Dynamic{ mode, ..} => *mode = value, + _ => return + } + }, + }), + metadata: None, }, - write: |_settings_content, _value| { - + SettingItem { + files: USER, + title: "Light Theme", + description: "The theme to use when mode is set to light, or when mode is set to system and it is in light mode.", + field: Box::new(SettingField { + json_path: Some("theme.light"), + pick: |settings_content| { + match settings_content.theme.theme.as_ref() { + Some(settings::ThemeSelection::Dynamic { light, ..}) => Some(light), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .theme.get_or_insert_default() { + settings::ThemeSelection::Dynamic{ light, ..} => *light = value, + _ => return + } + }, + }), + metadata: None, }, - } - .unimplemented(), - ), - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { + SettingItem { + files: USER, + title: "Dark Theme", + description: "The theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.", + field: Box::new(SettingField { + json_path: Some("theme.dark"), + pick: |settings_content| { + match settings_content.theme.theme.as_ref() { + Some(settings::ThemeSelection::Dynamic { dark, ..}) => Some(dark), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .theme.get_or_insert_default() { + settings::ThemeSelection::Dynamic{ dark, ..} => *dark = value, + _ => return + } + }, + }), + metadata: None, + } + ], + } + }).collect(), + }), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { files: USER, - title: "Settings Profiles", - description: "Any number of settings profiles that are temporarily applied on top of your existing user settings.", - field: Box::new( - SettingField { - json_path: Some("settings_profiles"), - pick: |settings_content| { - Some(settings_content) + title: "Icon Theme", + description: "The custom set of icons Zed will associate with files and directories.", + field: Box::new(SettingField { + json_path: Some("icon_theme$"), + pick: |settings_content| { + Some(&dynamic_variants::()[ + settings_content + .theme + .icon_theme + .as_ref()? + .discriminant() as usize]) + }, + write: |settings_content, value| { + let Some(value) = value else { + settings_content.theme.icon_theme = None; + return; + }; + let settings_value = settings_content.theme.icon_theme.get_or_insert_with(|| { + settings::IconThemeSelection::Static(settings::IconThemeName(theme::default_icon_theme().name.clone().into())) + }); + *settings_value = match value { + settings::IconThemeSelectionDiscriminants::Static => { + let name = match settings_value { + settings::IconThemeSelection::Static(_) => return, + settings::IconThemeSelection::Dynamic { mode, light, dark } => { + match mode { + theme::ThemeAppearanceMode::Light => light.clone(), + theme::ThemeAppearanceMode::Dark => dark.clone(), + theme::ThemeAppearanceMode::System => dark.clone(), // no cx, can't determine correct choice + } + }, + }; + settings::IconThemeSelection::Static(name) + }, + settings::IconThemeSelectionDiscriminants::Dynamic => { + let static_name = match settings_value { + settings::IconThemeSelection::Static(theme_name) => theme_name.clone(), + settings::IconThemeSelection::Dynamic {..} => return, + }; + + settings::IconThemeSelection::Dynamic { + mode: settings::ThemeAppearanceMode::System, + light: static_name.clone(), + dark: static_name, + } + }, + }; + }, + }), + metadata: None, + }, + pick_discriminant: |settings_content| { + Some(settings_content.theme.icon_theme.as_ref()?.discriminant() as usize) + }, + fields: dynamic_variants::().into_iter().map(|variant| { + match variant { + settings::IconThemeSelectionDiscriminants::Static => vec![ + SettingItem { + files: USER, + title: "Icon Theme Name", + description: "The name of your selected icon theme.", + field: Box::new(SettingField { + json_path: Some("icon_theme$string"), + pick: |settings_content| { + match settings_content.theme.icon_theme.as_ref() { + Some(settings::IconThemeSelection::Static(name)) => Some(name), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .icon_theme.as_mut() { + Some(settings::IconThemeSelection::Static(theme_name)) => *theme_name = value, + _ => return + } + }, + }), + metadata: None, + } + ], + settings::IconThemeSelectionDiscriminants::Dynamic => vec![ + SettingItem { + files: USER, + title: "Mode", + description: "Choose whether to use the selected light or dark icon theme or to follow your OS appearance configuration.", + field: Box::new(SettingField { + json_path: Some("icon_theme"), + pick: |settings_content| { + match settings_content.theme.icon_theme.as_ref() { + Some(settings::IconThemeSelection::Dynamic { mode, ..}) => Some(mode), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .icon_theme.as_mut() { + Some(settings::IconThemeSelection::Dynamic{ mode, ..}) => *mode = value, + _ => return + } + }, + }), + metadata: None, }, - write: |_settings_content, _value| { + SettingItem { + files: USER, + title: "Light Icon Theme", + description: "The icon theme to use when mode is set to light, or when mode is set to system and it is in light mode.", + field: Box::new(SettingField { + json_path: Some("icon_theme.light"), + pick: |settings_content| { + match settings_content.theme.icon_theme.as_ref() { + Some(settings::IconThemeSelection::Dynamic { light, ..}) => Some(light), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .icon_theme.as_mut() { + Some(settings::IconThemeSelection::Dynamic{ light, ..}) => *light = value, + _ => return + } + }, + }), + metadata: None, }, - } - .unimplemented(), - ), - metadata: None, + SettingItem { + files: USER, + title: "Dark Icon Theme", + description: "The icon theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.", + field: Box::new(SettingField { + json_path: Some("icon_theme.dark"), + pick: |settings_content| { + match settings_content.theme.icon_theme.as_ref() { + Some(settings::IconThemeSelection::Dynamic { dark, ..}) => Some(dark), + _ => None + } + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .theme + .icon_theme.as_mut() { + Some(settings::IconThemeSelection::Dynamic{ dark, ..}) => *dark = value, + _ => return + } + }, + }), + metadata: None, + } + ], + } + }).collect(), + }), + ] + } + + fn buffer_font_section() -> [SettingsPageItem; 7] { + [ + SettingsPageItem::SectionHeader("Buffer Font"), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Family", + description: "Font family for editor text.", + field: Box::new(SettingField { + json_path: Some("buffer_font_family"), + pick: |settings_content| settings_content.theme.buffer_font_family.as_ref(), + write: |settings_content, value| { + settings_content.theme.buffer_font_family = value; + }, }), - SettingsPageItem::SectionHeader("Privacy"), - SettingsPageItem::SettingItem(SettingItem { - title: "Telemetry Diagnostics", - description: "Send debug information like crash reports.", + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Size", + description: "Font size for editor text.", + field: Box::new(SettingField { + json_path: Some("buffer_font_size"), + pick: |settings_content| settings_content.theme.buffer_font_size.as_ref(), + write: |settings_content, value| { + settings_content.theme.buffer_font_size = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Weight", + description: "Font weight for editor text (100-900).", + field: Box::new(SettingField { + json_path: Some("buffer_font_weight"), + pick: |settings_content| settings_content.theme.buffer_font_weight.as_ref(), + write: |settings_content, value| { + settings_content.theme.buffer_font_weight = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { + files: USER, + title: "Line Height", + description: "Line height for editor text.", field: Box::new(SettingField { - json_path: Some("telemetry.diagnostics"), + json_path: Some("buffer_line_height$"), pick: |settings_content| { - settings_content - .telemetry - .as_ref() - .and_then(|telemetry| telemetry.diagnostics.as_ref()) + Some( + &dynamic_variants::()[settings_content + .theme + .buffer_line_height + .as_ref()? + .discriminant() + as usize], + ) }, write: |settings_content, value| { - settings_content - .telemetry - .get_or_insert_default() - .diagnostics = value; + let Some(value) = value else { + settings_content.theme.buffer_line_height = None; + return; + }; + let settings_value = settings_content + .theme + .buffer_line_height + .get_or_insert_with(|| settings::BufferLineHeight::default()); + *settings_value = match value { + settings::BufferLineHeightDiscriminants::Comfortable => { + settings::BufferLineHeight::Comfortable + } + settings::BufferLineHeightDiscriminants::Standard => { + settings::BufferLineHeight::Standard + } + settings::BufferLineHeightDiscriminants::Custom => { + let custom_value = + theme::BufferLineHeight::from(*settings_value).value(); + settings::BufferLineHeight::Custom(custom_value) + } + }; }, }), metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Telemetry Metrics", - description: "Send anonymized usage data like what languages you're using Zed with.", - field: Box::new(SettingField { - json_path: Some("telemetry.metrics"), + }, + pick_discriminant: |settings_content| { + Some( + settings_content + .theme + .buffer_line_height + .as_ref()? + .discriminant() as usize, + ) + }, + fields: dynamic_variants::() + .into_iter() + .map(|variant| match variant { + settings::BufferLineHeightDiscriminants::Comfortable => vec![], + settings::BufferLineHeightDiscriminants::Standard => vec![], + settings::BufferLineHeightDiscriminants::Custom => vec![SettingItem { + files: USER, + title: "Custom Line Height", + description: "Custom line height value (must be at least 1.0).", + field: Box::new(SettingField { + json_path: Some("buffer_line_height"), + pick: |settings_content| match settings_content + .theme + .buffer_line_height + .as_ref() + { + Some(settings::BufferLineHeight::Custom(value)) => Some(value), + _ => None, + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content.theme.buffer_line_height.as_mut() { + Some(settings::BufferLineHeight::Custom(line_height)) => { + *line_height = f32::max(value, 1.0) + } + _ => return, + } + }, + }), + metadata: None, + }], + }) + .collect(), + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Font Features", + description: "The OpenType features to enable for rendering in text buffers.", + field: Box::new( + SettingField { + json_path: Some("buffer_font_features"), pick: |settings_content| { - settings_content - .telemetry - .as_ref() - .and_then(|telemetry| telemetry.metrics.as_ref()) + settings_content.theme.buffer_font_features.as_ref() }, write: |settings_content, value| { - settings_content.telemetry.get_or_insert_default().metrics = value; + settings_content.theme.buffer_font_features = value; + }, + } + .unimplemented(), + ), + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Font Fallbacks", + description: "The font fallbacks to use for rendering in text buffers.", + field: Box::new( + SettingField { + json_path: Some("buffer_font_fallbacks"), + pick: |settings_content| { + settings_content.theme.buffer_font_fallbacks.as_ref() }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Auto Update"), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Update", - description: "Whether or not to automatically check for updates.", - field: Box::new(SettingField { - json_path: Some("auto_update"), - pick: |settings_content| settings_content.auto_update.as_ref(), write: |settings_content, value| { - settings_content.auto_update = value; + settings_content.theme.buffer_font_fallbacks = value; }, - }), - metadata: None, - files: USER, - }), - ], - }, - SettingsPage { - title: "Appearance", - items: vec![ - SettingsPageItem::SectionHeader("Theme"), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER, - title: "Theme Mode", - description: "Choose a static, fixed theme or dynamically select themes based on appearance and light/dark modes.", - field: Box::new(SettingField { - json_path: Some("theme$"), - pick: |settings_content| { - Some(&dynamic_variants::()[ - settings_content - .theme - .theme - .as_ref()? - .discriminant() as usize]) - }, - write: |settings_content, value| { - let Some(value) = value else { - settings_content.theme.theme = None; - return; - }; - let settings_value = settings_content.theme.theme.get_or_insert_default(); - *settings_value = match value { - settings::ThemeSelectionDiscriminants::Static => { - let name = match settings_value { - settings::ThemeSelection::Static(_) => return, - settings::ThemeSelection::Dynamic { mode, light, dark } => { - match mode { - theme::ThemeAppearanceMode::Light => light.clone(), - theme::ThemeAppearanceMode::Dark => dark.clone(), - theme::ThemeAppearanceMode::System => dark.clone(), // no cx, can't determine correct choice - } - }, - }; - settings::ThemeSelection::Static(name) - }, - settings::ThemeSelectionDiscriminants::Dynamic => { - let static_name = match settings_value { - settings::ThemeSelection::Static(theme_name) => theme_name.clone(), - settings::ThemeSelection::Dynamic {..} => return, - }; + } + .unimplemented(), + ), + metadata: None, + }), + ] + } - settings::ThemeSelection::Dynamic { - mode: settings::ThemeAppearanceMode::System, - light: static_name.clone(), - dark: static_name, - } - }, - }; - }, - }), - metadata: None, + fn ui_font_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("UI Font"), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Family", + description: "Font family for UI elements.", + field: Box::new(SettingField { + json_path: Some("ui_font_family"), + pick: |settings_content| settings_content.theme.ui_font_family.as_ref(), + write: |settings_content, value| { + settings_content.theme.ui_font_family = value; }, - pick_discriminant: |settings_content| { - Some(settings_content.theme.theme.as_ref()?.discriminant() as usize) + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Size", + description: "Font size for UI elements.", + field: Box::new(SettingField { + json_path: Some("ui_font_size"), + pick: |settings_content| settings_content.theme.ui_font_size.as_ref(), + write: |settings_content, value| { + settings_content.theme.ui_font_size = value; }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { - settings::ThemeSelectionDiscriminants::Static => vec![ - SettingItem { - files: USER, - title: "Theme Name", - description: "The name of your selected theme.", - field: Box::new(SettingField { - json_path: Some("theme"), - pick: |settings_content| { - match settings_content.theme.theme.as_ref() { - Some(settings::ThemeSelection::Static(name)) => Some(name), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .theme.get_or_insert_default() { - settings::ThemeSelection::Static(theme_name) => *theme_name = value, - _ => return - } - }, - }), - metadata: None, - } - ], - settings::ThemeSelectionDiscriminants::Dynamic => vec![ - SettingItem { - files: USER, - title: "Mode", - description: "Choose whether to use the selected light or dark theme or to follow your OS appearance configuration.", - field: Box::new(SettingField { - json_path: Some("theme.mode"), - pick: |settings_content| { - match settings_content.theme.theme.as_ref() { - Some(settings::ThemeSelection::Dynamic { mode, ..}) => Some(mode), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .theme.get_or_insert_default() { - settings::ThemeSelection::Dynamic{ mode, ..} => *mode = value, - _ => return - } - }, - }), - metadata: None, - }, - SettingItem { - files: USER, - title: "Light Theme", - description: "The theme to use when mode is set to light, or when mode is set to system and it is in light mode.", - field: Box::new(SettingField { - json_path: Some("theme.light"), - pick: |settings_content| { - match settings_content.theme.theme.as_ref() { - Some(settings::ThemeSelection::Dynamic { light, ..}) => Some(light), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .theme.get_or_insert_default() { - settings::ThemeSelection::Dynamic{ light, ..} => *light = value, - _ => return - } - }, - }), - metadata: None, - }, - SettingItem { - files: USER, - title: "Dark Theme", - description: "The theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.", - field: Box::new(SettingField { - json_path: Some("theme.dark"), - pick: |settings_content| { - match settings_content.theme.theme.as_ref() { - Some(settings::ThemeSelection::Dynamic { dark, ..}) => Some(dark), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .theme.get_or_insert_default() { - settings::ThemeSelection::Dynamic{ dark, ..} => *dark = value, - _ => return - } - }, - }), - metadata: None, - } - ], - } - }).collect(), }), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER, - title: "Icon Theme", - description: "The custom set of icons Zed will associate with files and directories.", - field: Box::new(SettingField { - json_path: Some("icon_theme$"), - pick: |settings_content| { - Some(&dynamic_variants::()[ - settings_content - .theme - .icon_theme - .as_ref()? - .discriminant() as usize]) - }, - write: |settings_content, value| { - let Some(value) = value else { - settings_content.theme.icon_theme = None; - return; - }; - let settings_value = settings_content.theme.icon_theme.get_or_insert_with(|| { - settings::IconThemeSelection::Static(settings::IconThemeName(theme::default_icon_theme().name.clone().into())) - }); - *settings_value = match value { - settings::IconThemeSelectionDiscriminants::Static => { - let name = match settings_value { - settings::IconThemeSelection::Static(_) => return, - settings::IconThemeSelection::Dynamic { mode, light, dark } => { - match mode { - theme::ThemeAppearanceMode::Light => light.clone(), - theme::ThemeAppearanceMode::Dark => dark.clone(), - theme::ThemeAppearanceMode::System => dark.clone(), // no cx, can't determine correct choice - } - }, - }; - settings::IconThemeSelection::Static(name) - }, - settings::IconThemeSelectionDiscriminants::Dynamic => { - let static_name = match settings_value { - settings::IconThemeSelection::Static(theme_name) => theme_name.clone(), - settings::IconThemeSelection::Dynamic {..} => return, - }; + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Weight", + description: "Font weight for UI elements (100-900).", + field: Box::new(SettingField { + json_path: Some("ui_font_weight"), + pick: |settings_content| settings_content.theme.ui_font_weight.as_ref(), + write: |settings_content, value| { + settings_content.theme.ui_font_weight = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Font Features", + description: "The OpenType features to enable for rendering in UI elements.", + field: Box::new( + SettingField { + json_path: Some("ui_font_features"), + pick: |settings_content| settings_content.theme.ui_font_features.as_ref(), + write: |settings_content, value| { + settings_content.theme.ui_font_features = value; + }, + } + .unimplemented(), + ), + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Font Fallbacks", + description: "The font fallbacks to use for rendering in the UI.", + field: Box::new( + SettingField { + json_path: Some("ui_font_fallbacks"), + pick: |settings_content| settings_content.theme.ui_font_fallbacks.as_ref(), + write: |settings_content, value| { + settings_content.theme.ui_font_fallbacks = value; + }, + } + .unimplemented(), + ), + metadata: None, + }), + ] + } - settings::IconThemeSelection::Dynamic { - mode: settings::ThemeAppearanceMode::System, - light: static_name.clone(), - dark: static_name, - } - }, - }; - }, - }), - metadata: None, + fn agent_panel_font_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Agent Panel Font"), + SettingsPageItem::SettingItem(SettingItem { + title: "UI Font Size", + description: "Font size for agent response text in the agent panel. Falls back to the regular UI font size.", + field: Box::new(SettingField { + json_path: Some("agent_ui_font_size"), + pick: |settings_content| { + settings_content + .theme + .agent_ui_font_size + .as_ref() + .or(settings_content.theme.ui_font_size.as_ref()) }, - pick_discriminant: |settings_content| { - Some(settings_content.theme.icon_theme.as_ref()?.discriminant() as usize) + write: |settings_content, value| { + settings_content.theme.agent_ui_font_size = value; }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { - settings::IconThemeSelectionDiscriminants::Static => vec![ - SettingItem { - files: USER, - title: "Icon Theme Name", - description: "The name of your selected icon theme.", - field: Box::new(SettingField { - json_path: Some("icon_theme$string"), - pick: |settings_content| { - match settings_content.theme.icon_theme.as_ref() { - Some(settings::IconThemeSelection::Static(name)) => Some(name), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .icon_theme.as_mut() { - Some(settings::IconThemeSelection::Static(theme_name)) => *theme_name = value, - _ => return - } - }, - }), - metadata: None, - } - ], - settings::IconThemeSelectionDiscriminants::Dynamic => vec![ - SettingItem { - files: USER, - title: "Mode", - description: "Choose whether to use the selected light or dark icon theme or to follow your OS appearance configuration.", - field: Box::new(SettingField { - json_path: Some("icon_theme"), - pick: |settings_content| { - match settings_content.theme.icon_theme.as_ref() { - Some(settings::IconThemeSelection::Dynamic { mode, ..}) => Some(mode), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .icon_theme.as_mut() { - Some(settings::IconThemeSelection::Dynamic{ mode, ..}) => *mode = value, - _ => return - } - }, - }), - metadata: None, - }, - SettingItem { - files: USER, - title: "Light Icon Theme", - description: "The icon theme to use when mode is set to light, or when mode is set to system and it is in light mode.", - field: Box::new(SettingField { - json_path: Some("icon_theme.light"), - pick: |settings_content| { - match settings_content.theme.icon_theme.as_ref() { - Some(settings::IconThemeSelection::Dynamic { light, ..}) => Some(light), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .icon_theme.as_mut() { - Some(settings::IconThemeSelection::Dynamic{ light, ..}) => *light = value, - _ => return - } - }, - }), - metadata: None, - }, - SettingItem { - files: USER, - title: "Dark Icon Theme", - description: "The icon theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.", - field: Box::new(SettingField { - json_path: Some("icon_theme.dark"), - pick: |settings_content| { - match settings_content.theme.icon_theme.as_ref() { - Some(settings::IconThemeSelection::Dynamic { dark, ..}) => Some(dark), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .icon_theme.as_mut() { - Some(settings::IconThemeSelection::Dynamic{ dark, ..}) => *dark = value, - _ => return - } - }, - }), - metadata: None, - } - ], - } - }).collect(), }), - SettingsPageItem::SectionHeader("Buffer Font"), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Family", - description: "Font family for editor text.", - field: Box::new(SettingField { - json_path: Some("buffer_font_family"), - pick: |settings_content| settings_content.theme.buffer_font_family.as_ref(), - write: |settings_content, value|{ settings_content.theme.buffer_font_family = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Buffer Font Size", + description: "Font size for user messages text in the agent panel.", + field: Box::new(SettingField { + json_path: Some("agent_buffer_font_size"), + pick: |settings_content| { + settings_content + .theme + .agent_buffer_font_size + .as_ref() + .or(settings_content.theme.buffer_font_size.as_ref()) + }, + write: |settings_content, value| { + settings_content.theme.agent_buffer_font_size = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Size", - description: "Font size for editor text.", - field: Box::new(SettingField { - json_path: Some("buffer_font_size"), - pick: |settings_content| settings_content.theme.buffer_font_size.as_ref(), - write: |settings_content, value|{ settings_content.theme.buffer_font_size = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn text_rendering_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Text Rendering"), + SettingsPageItem::SettingItem(SettingItem { + title: "Text Rendering Mode", + description: "The text rendering mode to use.", + field: Box::new(SettingField { + json_path: Some("text_rendering_mode"), + pick: |settings_content| { + settings_content.workspace.text_rendering_mode.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.text_rendering_mode = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Weight", - description: "Font weight for editor text (100-900).", - field: Box::new(SettingField { - json_path: Some("buffer_font_weight"), - pick: |settings_content| settings_content.theme.buffer_font_weight.as_ref(), - write: |settings_content, value|{ settings_content.theme.buffer_font_weight = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn cursor_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Cursor"), + SettingsPageItem::SettingItem(SettingItem { + title: "Multi Cursor Modifier", + description: "Modifier key for adding multiple cursors.", + field: Box::new(SettingField { + json_path: Some("multi_cursor_modifier"), + pick: |settings_content| settings_content.editor.multi_cursor_modifier.as_ref(), + write: |settings_content, value| { + settings_content.editor.multi_cursor_modifier = value; + }, }), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER, - title: "Line Height", - description: "Line height for editor text.", - field: Box::new(SettingField { - json_path: Some("buffer_line_height$"), - pick: |settings_content| { - Some(&dynamic_variants::()[ - settings_content - .theme - .buffer_line_height - .as_ref()? - .discriminant() as usize]) - }, - write: |settings_content, value| { - let Some(value) = value else { - settings_content.theme.buffer_line_height = None; - return; - }; - let settings_value = settings_content.theme.buffer_line_height.get_or_insert_with(|| { - settings::BufferLineHeight::default() - }); - *settings_value = match value { - settings::BufferLineHeightDiscriminants::Comfortable => { - settings::BufferLineHeight::Comfortable - }, - settings::BufferLineHeightDiscriminants::Standard => { - settings::BufferLineHeight::Standard - }, - settings::BufferLineHeightDiscriminants::Custom => { - let custom_value = theme::BufferLineHeight::from(*settings_value).value(); - settings::BufferLineHeight::Custom(custom_value) - }, - }; - }, - }), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursor Blink", + description: "Whether the cursor blinks in the editor.", + field: Box::new(SettingField { + json_path: Some("cursor_blink"), + pick: |settings_content| settings_content.editor.cursor_blink.as_ref(), + write: |settings_content, value| { + settings_content.editor.cursor_blink = value; }, - pick_discriminant: |settings_content| { - Some(settings_content.theme.buffer_line_height.as_ref()?.discriminant() as usize) + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursor Shape", + description: "Cursor shape for the editor.", + field: Box::new(SettingField { + json_path: Some("cursor_shape"), + pick: |settings_content| settings_content.editor.cursor_shape.as_ref(), + write: |settings_content, value| { + settings_content.editor.cursor_shape = value; }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { - settings::BufferLineHeightDiscriminants::Comfortable => vec![], - settings::BufferLineHeightDiscriminants::Standard => vec![], - settings::BufferLineHeightDiscriminants::Custom => vec![ - SettingItem { - files: USER, - title: "Custom Line Height", - description: "Custom line height value (must be at least 1.0).", - field: Box::new(SettingField { - json_path: Some("buffer_line_height"), - pick: |settings_content| { - match settings_content.theme.buffer_line_height.as_ref() { - Some(settings::BufferLineHeight::Custom(value)) => Some(value), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .theme - .buffer_line_height.as_mut() { - Some(settings::BufferLineHeight::Custom(line_height)) => *line_height = f32::max(value, 1.0), - _ => return - } - }, - }), - metadata: None, - } - ], - } - }).collect(), }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Font Features", - description: "The OpenType features to enable for rendering in text buffers.", - field: Box::new( - SettingField { - json_path: Some("buffer_font_features"), - pick: |settings_content| { - settings_content.theme.buffer_font_features.as_ref() - }, - write: |settings_content, value| { - settings_content.theme.buffer_font_features = value; - - }, - } - .unimplemented(), - ), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Hide Mouse", + description: "When to hide the mouse cursor.", + field: Box::new(SettingField { + json_path: Some("hide_mouse"), + pick: |settings_content| settings_content.editor.hide_mouse.as_ref(), + write: |settings_content, value| { + settings_content.editor.hide_mouse = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Font Fallbacks", - description: "The font fallbacks to use for rendering in text buffers.", - field: Box::new( - SettingField { - json_path: Some("buffer_font_fallbacks"), - pick: |settings_content| { - settings_content.theme.buffer_font_fallbacks.as_ref() - }, - write: |settings_content, value| { - settings_content.theme.buffer_font_fallbacks = value; + metadata: None, + files: USER, + }), + ] + } - }, - } - .unimplemented(), - ), - metadata: None, + fn highlighting_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Highlighting"), + SettingsPageItem::SettingItem(SettingItem { + title: "Unnecessary Code Fade", + description: "How much to fade out unused code (0.0 - 0.9).", + field: Box::new(SettingField { + json_path: Some("unnecessary_code_fade"), + pick: |settings_content| settings_content.theme.unnecessary_code_fade.as_ref(), + write: |settings_content, value| { + settings_content.theme.unnecessary_code_fade = value; + }, }), - SettingsPageItem::SectionHeader("UI Font"), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Family", - description: "Font family for UI elements.", - field: Box::new(SettingField { - json_path: Some("ui_font_family"), - pick: |settings_content| settings_content.theme.ui_font_family.as_ref(), - write: |settings_content, value|{ settings_content.theme.ui_font_family = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Current Line Highlight", + description: "How to highlight the current line.", + field: Box::new(SettingField { + json_path: Some("current_line_highlight"), + pick: |settings_content| { + settings_content.editor.current_line_highlight.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.current_line_highlight = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Size", - description: "Font size for UI elements.", - field: Box::new(SettingField { - json_path: Some("ui_font_size"), - pick: |settings_content| settings_content.theme.ui_font_size.as_ref(), - write: |settings_content, value|{ settings_content.theme.ui_font_size = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Selection Highlight", + description: "Highlight all occurrences of selected text.", + field: Box::new(SettingField { + json_path: Some("selection_highlight"), + pick: |settings_content| settings_content.editor.selection_highlight.as_ref(), + write: |settings_content, value| { + settings_content.editor.selection_highlight = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Weight", - description: "Font weight for UI elements (100-900).", - field: Box::new(SettingField { - json_path: Some("ui_font_weight"), - pick: |settings_content| settings_content.theme.ui_font_weight.as_ref(), - write: |settings_content, value|{ settings_content.theme.ui_font_weight = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Rounded Selection", + description: "Whether the text selection should have rounded corners.", + field: Box::new(SettingField { + json_path: Some("rounded_selection"), + pick: |settings_content| settings_content.editor.rounded_selection.as_ref(), + write: |settings_content, value| { + settings_content.editor.rounded_selection = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Font Features", - description: "The OpenType features to enable for rendering in UI elements.", - field: Box::new( - SettingField { - json_path: Some("ui_font_features"), - pick: |settings_content| { - settings_content.theme.ui_font_features.as_ref() - }, - write: |settings_content, value| { - settings_content.theme.ui_font_features = value; - - }, - } - .unimplemented(), - ), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Minimum Contrast For Highlights", + description: "The minimum APCA perceptual contrast to maintain when rendering text over highlight backgrounds.", + field: Box::new(SettingField { + json_path: Some("minimum_contrast_for_highlights"), + pick: |settings_content| { + settings_content + .editor + .minimum_contrast_for_highlights + .as_ref() + }, + write: |settings_content, value| { + settings_content.editor.minimum_contrast_for_highlights = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Font Fallbacks", - description: "The font fallbacks to use for rendering in the UI.", - field: Box::new( - SettingField { - json_path: Some("ui_font_fallbacks"), - pick: |settings_content| { - settings_content.theme.ui_font_fallbacks.as_ref() - }, - write: |settings_content, value| { - settings_content.theme.ui_font_fallbacks = value; + metadata: None, + files: USER, + }), + ] + } - }, - } - .unimplemented(), - ), - metadata: None, - }), - SettingsPageItem::SectionHeader("Agent Panel Font"), - SettingsPageItem::SettingItem(SettingItem { - title: "UI Font Size", - description: "Font size for agent response text in the agent panel. Falls back to the regular UI font size.", - field: Box::new(SettingField { - json_path: Some("agent_ui_font_size"), - pick: |settings_content| { - settings_content - .theme - .agent_ui_font_size - .as_ref() - .or(settings_content.theme.ui_font_size.as_ref()) - }, - write: |settings_content, value|{ settings_content.theme.agent_ui_font_size = value;}, - }), - metadata: None, - files: USER, + fn guides_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Guides"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Wrap Guides", + description: "Show wrap guides (vertical rulers).", + field: Box::new(SettingField { + json_path: Some("show_wrap_guides"), + pick: |settings_content| { + settings_content + .project + .all_languages + .defaults + .show_wrap_guides + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project + .all_languages + .defaults + .show_wrap_guides = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Buffer Font Size", - description: "Font size for user messages text in the agent panel.", - field: Box::new(SettingField { - json_path: Some("agent_buffer_font_size"), + metadata: None, + files: USER | PROJECT, + }), + // todo(settings_ui): This needs a custom component + SettingsPageItem::SettingItem(SettingItem { + title: "Wrap Guides", + description: "Character counts at which to show wrap guides.", + field: Box::new( + SettingField { + json_path: Some("wrap_guides"), pick: |settings_content| { settings_content - .theme - .agent_buffer_font_size + .project + .all_languages + .defaults + .wrap_guides .as_ref() - .or(settings_content.theme.buffer_font_size.as_ref()) - }, - write: |settings_content, value| { - settings_content.theme.agent_buffer_font_size = value; - - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Text Rendering"), - SettingsPageItem::SettingItem(SettingItem { - title: "Text Rendering Mode", - description: "The text rendering mode to use.", - field: Box::new(SettingField { - json_path: Some("text_rendering_mode"), - pick: |settings_content| { - settings_content.workspace.text_rendering_mode.as_ref() }, write: |settings_content, value| { - settings_content.workspace.text_rendering_mode = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Cursor"), - SettingsPageItem::SettingItem(SettingItem { - title: "Multi Cursor Modifier", - description: "Modifier key for adding multiple cursors.", - field: Box::new(SettingField { - json_path: Some("multi_cursor_modifier"), - pick: |settings_content| { - settings_content.editor.multi_cursor_modifier.as_ref() + settings_content.project.all_languages.defaults.wrap_guides = value; }, - write: |settings_content, value| { - settings_content.editor.multi_cursor_modifier = value; + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + ] + } - }, - }), - metadata: None, - files: USER, + let items: Box<[SettingsPageItem]> = concat_sections!( + theme_section(), + buffer_font_section(), + ui_font_section(), + agent_panel_font_section(), + text_rendering_section(), + cursor_section(), + highlighting_section(), + guides_section(), + ); + + SettingsPage { + title: "Appearance", + items, + } +} + +fn keymap_page() -> SettingsPage { + fn keybindings_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Keybindings"), + SettingsPageItem::ActionLink(ActionLink { + title: "Edit Keybindings".into(), + description: Some("Customize keybindings in the keymap editor.".into()), + button_text: "Open Keymap".into(), + on_click: Arc::new(|settings_window, window, cx| { + let Some(original_window) = settings_window.original_window else { + return; + }; + original_window + .update(cx, |_workspace, original_window, cx| { + original_window + .dispatch_action(zed_actions::OpenKeymap.boxed_clone(), cx); + original_window.activate_window(); + }) + .ok(); + window.remove_window(); }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Blink", - description: "Whether the cursor blinks in the editor.", - field: Box::new(SettingField { - json_path: Some("cursor_blink"), - pick: |settings_content| settings_content.editor.cursor_blink.as_ref(), - write: |settings_content, value|{ settings_content.editor.cursor_blink = value;}, - }), - metadata: None, - files: USER, + }), + ] + } + + fn base_keymap_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Base Keymap"), + SettingsPageItem::SettingItem(SettingItem { + title: "Base Keymap", + description: "The name of a base set of key bindings to use.", + field: Box::new(SettingField { + json_path: Some("base_keymap"), + pick: |settings_content| settings_content.base_keymap.as_ref(), + write: |settings_content, value| { + settings_content.base_keymap = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Shape", - description: "Cursor shape for the editor.", - field: Box::new(SettingField { - json_path: Some("cursor_shape"), - pick: |settings_content| settings_content.editor.cursor_shape.as_ref(), - write: |settings_content, value|{ settings_content.editor.cursor_shape = value;}, - }), - metadata: None, - files: USER, + metadata: Some(Box::new(SettingsFieldMetadata { + should_do_titlecase: Some(false), + ..Default::default() + })), + files: USER, + }), + ] + } + + fn modal_editing_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Modal Editing"), + // todo(settings_ui): Vim/Helix Mode should be apart of one type because it's undefined + // behavior to have them both enabled at the same time + SettingsPageItem::SettingItem(SettingItem { + title: "Vim Mode", + description: "Enable Vim mode and key bindings.", + field: Box::new(SettingField { + json_path: Some("vim_mode"), + pick: |settings_content| settings_content.vim_mode.as_ref(), + write: |settings_content, value| { + settings_content.vim_mode = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hide Mouse", - description: "When to hide the mouse cursor.", - field: Box::new(SettingField { - json_path: Some("hide_mouse"), - pick: |settings_content| settings_content.editor.hide_mouse.as_ref(), - write: |settings_content, value|{ settings_content.editor.hide_mouse = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Helix Mode", + description: "Enable Helix mode and key bindings.", + field: Box::new(SettingField { + json_path: Some("helix_mode"), + pick: |settings_content| settings_content.helix_mode.as_ref(), + write: |settings_content, value| { + settings_content.helix_mode = value; + }, }), - SettingsPageItem::SectionHeader("Highlighting"), - SettingsPageItem::SettingItem(SettingItem { - title: "Unnecessary Code Fade", - description: "How much to fade out unused code (0.0 - 0.9).", - field: Box::new(SettingField { - json_path: Some("unnecessary_code_fade"), - pick: |settings_content| { - settings_content.theme.unnecessary_code_fade.as_ref() - }, - write: |settings_content, value| { - settings_content.theme.unnecessary_code_fade = value; + metadata: None, + files: USER, + }), + ] + } - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Current Line Highlight", - description: "How to highlight the current line.", - field: Box::new(SettingField { - json_path: Some("current_line_highlight"), - pick: |settings_content| { - settings_content.editor.current_line_highlight.as_ref() + let items: Box<[SettingsPageItem]> = concat_sections!( + keybindings_section(), + base_keymap_section(), + modal_editing_section(), + ); + + SettingsPage { + title: "Keymap", + items, + } +} + +fn editor_page() -> SettingsPage { + fn auto_save_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Auto Save"), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { + files: USER, + title: "Auto Save Mode", + description: "When to auto save buffer changes.", + field: Box::new(SettingField { + json_path: Some("autosave$"), + pick: |settings_content| { + Some( + &dynamic_variants::()[settings_content + .workspace + .autosave + .as_ref()? + .discriminant() + as usize], + ) }, write: |settings_content, value| { - settings_content.editor.current_line_highlight = value; - + let Some(value) = value else { + settings_content.workspace.autosave = None; + return; + }; + let settings_value = settings_content + .workspace + .autosave + .get_or_insert_with(|| settings::AutosaveSetting::Off); + *settings_value = match value { + settings::AutosaveSettingDiscriminants::Off => { + settings::AutosaveSetting::Off + } + settings::AutosaveSettingDiscriminants::AfterDelay => { + let milliseconds = match settings_value { + settings::AutosaveSetting::AfterDelay { milliseconds } => { + *milliseconds + } + _ => settings::DelayMs(1000), + }; + settings::AutosaveSetting::AfterDelay { milliseconds } + } + settings::AutosaveSettingDiscriminants::OnFocusChange => { + settings::AutosaveSetting::OnFocusChange + } + settings::AutosaveSettingDiscriminants::OnWindowChange => { + settings::AutosaveSetting::OnWindowChange + } + }; }, }), metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Selection Highlight", - description: "Highlight all occurrences of selected text.", - field: Box::new(SettingField { - json_path: Some("selection_highlight"), - pick: |settings_content| { - settings_content.editor.selection_highlight.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.selection_highlight = value; + }, + pick_discriminant: |settings_content| { + Some(settings_content.workspace.autosave.as_ref()?.discriminant() as usize) + }, + fields: dynamic_variants::() + .into_iter() + .map(|variant| match variant { + settings::AutosaveSettingDiscriminants::Off => vec![], + settings::AutosaveSettingDiscriminants::AfterDelay => vec![SettingItem { + files: USER, + title: "Delay (milliseconds)", + description: "Save after inactivity period (in milliseconds).", + field: Box::new(SettingField { + json_path: Some("autosave.after_delay.milliseconds"), + pick: |settings_content| match settings_content + .workspace + .autosave + .as_ref() + { + Some(settings::AutosaveSetting::AfterDelay { + milliseconds, + }) => Some(milliseconds), + _ => None, + }, + write: |settings_content, value| { + let Some(value) = value else { + settings_content.workspace.autosave = None; + return; + }; + match settings_content.workspace.autosave.as_mut() { + Some(settings::AutosaveSetting::AfterDelay { + milliseconds, + }) => *milliseconds = value, + _ => return, + } + }, + }), + metadata: None, + }], + settings::AutosaveSettingDiscriminants::OnFocusChange => vec![], + settings::AutosaveSettingDiscriminants::OnWindowChange => vec![], + }) + .collect(), + }), + ] + } - }, - }), - metadata: None, - files: USER, + fn which_key_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Which-key Menu"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Which-key Menu", + description: "Display the which-key menu with matching bindings while a multi-stroke binding is pending.", + field: Box::new(SettingField { + json_path: Some("which_key.enabled"), + pick: |settings_content| { + settings_content + .which_key + .as_ref() + .and_then(|settings| settings.enabled.as_ref()) + }, + write: |settings_content, value| { + settings_content.which_key.get_or_insert_default().enabled = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Rounded Selection", - description: "Whether the text selection should have rounded corners.", - field: Box::new(SettingField { - json_path: Some("rounded_selection"), - pick: |settings_content| settings_content.editor.rounded_selection.as_ref(), - write: |settings_content, value|{ settings_content.editor.rounded_selection = value;}, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Menu Delay", + description: "Delay in milliseconds before the which-key menu appears.", + field: Box::new(SettingField { + json_path: Some("which_key.delay_ms"), + pick: |settings_content| { + settings_content + .which_key + .as_ref() + .and_then(|settings| settings.delay_ms.as_ref()) + }, + write: |settings_content, value| { + settings_content.which_key.get_or_insert_default().delay_ms = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Minimum Contrast For Highlights", - description: "The minimum APCA perceptual contrast to maintain when rendering text over highlight backgrounds.", - field: Box::new(SettingField { - json_path: Some("minimum_contrast_for_highlights"), - pick: |settings_content| { - settings_content - .editor - .minimum_contrast_for_highlights - .as_ref() - }, - write: |settings_content, value| { - settings_content.editor.minimum_contrast_for_highlights = value; + metadata: None, + files: USER, + }), + ] + } - }, - }), - metadata: None, - files: USER, + fn multibuffer_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Multibuffer"), + SettingsPageItem::SettingItem(SettingItem { + title: "Double Click In Multibuffer", + description: "What to do when multibuffer is double-clicked in some of its excerpts.", + field: Box::new(SettingField { + json_path: Some("double_click_in_multibuffer"), + pick: |settings_content| { + settings_content.editor.double_click_in_multibuffer.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.double_click_in_multibuffer = value; + }, }), - SettingsPageItem::SectionHeader("Guides"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Wrap Guides", - description: "Show wrap guides (vertical rulers).", - field: Box::new(SettingField { - json_path: Some("show_wrap_guides"), - pick: |settings_content| { - settings_content - .project - .all_languages - .defaults - .show_wrap_guides - .as_ref() - }, - write: |settings_content, value| { - settings_content - - .project - .all_languages - .defaults - .show_wrap_guides = value; - }, - }), - metadata: None, - files: USER | PROJECT, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Expand Excerpt Lines", + description: "How many lines to expand the multibuffer excerpts by default.", + field: Box::new(SettingField { + json_path: Some("expand_excerpt_lines"), + pick: |settings_content| settings_content.editor.expand_excerpt_lines.as_ref(), + write: |settings_content, value| { + settings_content.editor.expand_excerpt_lines = value; + }, }), - // todo(settings_ui): This needs a custom component - SettingsPageItem::SettingItem(SettingItem { - title: "Wrap Guides", - description: "Character counts at which to show wrap guides.", - field: Box::new( - SettingField { - json_path: Some("wrap_guides"), - pick: |settings_content| { - settings_content - .project - .all_languages - .defaults - .wrap_guides - .as_ref() - }, - write: |settings_content, value| { - settings_content.project.all_languages.defaults.wrap_guides = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Excerpt Context Lines", + description: "How many lines of context to provide in multibuffer excerpts by default.", + field: Box::new(SettingField { + json_path: Some("excerpt_context_lines"), + pick: |settings_content| settings_content.editor.excerpt_context_lines.as_ref(), + write: |settings_content, value| { + settings_content.editor.excerpt_context_lines = value; + }, }), - ], - }, - SettingsPage { - title: "Keymap", - items: vec![ - SettingsPageItem::SectionHeader("Keybindings"), - SettingsPageItem::ActionLink(ActionLink { - title: "Edit Keybindings".into(), - description: Some("Customize keybindings in the keymap editor.".into()), - button_text: "Open Keymap".into(), - on_click: Arc::new(|settings_window, window, cx| { - let Some(original_window) = settings_window.original_window else { - return; - }; - original_window - .update(cx, |_workspace, original_window, cx| { - original_window - .dispatch_action(zed_actions::OpenKeymap.boxed_clone(), cx); - original_window.activate_window(); + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Expand Outlines With Depth", + description: "Default depth to expand outline items in the current file.", + field: Box::new(SettingField { + json_path: Some("outline_panel.expand_outlines_with_depth"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref() + .and_then(|outline_panel| { + outline_panel.expand_outlines_with_depth.as_ref() }) - .ok(); - window.remove_window(); - }), + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .expand_outlines_with_depth = value; + }, }), - SettingsPageItem::SectionHeader("Base Keymap"), - SettingsPageItem::SettingItem(SettingItem { - title: "Base Keymap", - description: "The name of a base set of key bindings to use.", - field: Box::new(SettingField { - json_path: Some("base_keymap"), - pick: |settings_content| settings_content.base_keymap.as_ref(), - write: |settings_content, value| { - settings_content.base_keymap = value; - }, - }), - metadata: Some(Box::new(SettingsFieldMetadata { - should_do_titlecase: Some(false), - ..Default::default() - })), - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn scrolling_section() -> [SettingsPageItem; 8] { + [ + SettingsPageItem::SectionHeader("Scrolling"), + SettingsPageItem::SettingItem(SettingItem { + title: "Scroll Beyond Last Line", + description: "Whether the editor will scroll beyond the last line.", + field: Box::new(SettingField { + json_path: Some("scroll_beyond_last_line"), + pick: |settings_content| { + settings_content.editor.scroll_beyond_last_line.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.scroll_beyond_last_line = value; + }, }), - SettingsPageItem::SectionHeader("Modal Editing"), - // todo(settings_ui): Vim/Helix Mode should be apart of one type because it's undefined - // behavior to have them both enabled at the same time - SettingsPageItem::SettingItem(SettingItem { - title: "Vim Mode", - description: "Enable Vim mode and key bindings.", - field: Box::new(SettingField { - json_path: Some("vim_mode"), - pick: |settings_content| settings_content.vim_mode.as_ref(), - write: |settings_content, value| { - settings_content.vim_mode = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Vertical Scroll Margin", + description: "The number of lines to keep above/below the cursor when auto-scrolling.", + field: Box::new(SettingField { + json_path: Some("vertical_scroll_margin"), + pick: |settings_content| { + settings_content.editor.vertical_scroll_margin.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.vertical_scroll_margin = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Helix Mode", - description: "Enable Helix mode and key bindings.", - field: Box::new(SettingField { - json_path: Some("helix_mode"), - pick: |settings_content| settings_content.helix_mode.as_ref(), - write: |settings_content, value| { - settings_content.helix_mode = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Horizontal Scroll Margin", + description: "The number of characters to keep on either side when scrolling with the mouse.", + field: Box::new(SettingField { + json_path: Some("horizontal_scroll_margin"), + pick: |settings_content| { + settings_content.editor.horizontal_scroll_margin.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.horizontal_scroll_margin = value; + }, }), - ], - }, - SettingsPage { - title: "Editor", - items: { - let mut items = vec![ - SettingsPageItem::SectionHeader("Auto Save"), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER, - title: "Auto Save Mode", - description: "When to auto save buffer changes.", - field: Box::new(SettingField { - json_path: Some("autosave$"), - pick: |settings_content| { - Some(&dynamic_variants::()[ - settings_content - .workspace - .autosave - .as_ref()? - .discriminant() as usize]) - }, - write: |settings_content, value| { - let Some(value) = value else { - settings_content.workspace.autosave = None; - return; - }; - let settings_value = settings_content.workspace.autosave.get_or_insert_with(|| { - settings::AutosaveSetting::Off - }); - *settings_value = match value { - settings::AutosaveSettingDiscriminants::Off => { - settings::AutosaveSetting::Off - }, - settings::AutosaveSettingDiscriminants::AfterDelay => { - let milliseconds = match settings_value { - settings::AutosaveSetting::AfterDelay { milliseconds } => *milliseconds, - _ => settings::DelayMs(1000), - }; - settings::AutosaveSetting::AfterDelay { milliseconds } - }, - settings::AutosaveSettingDiscriminants::OnFocusChange => { - settings::AutosaveSetting::OnFocusChange - }, - settings::AutosaveSettingDiscriminants::OnWindowChange => { - settings::AutosaveSetting::OnWindowChange - }, - }; - }, - }), - metadata: None, - }, - pick_discriminant: |settings_content| { - Some(settings_content.workspace.autosave.as_ref()?.discriminant() as usize) - }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { - settings::AutosaveSettingDiscriminants::Off => vec![], - settings::AutosaveSettingDiscriminants::AfterDelay => vec![ - SettingItem { - files: USER, - title: "Delay (milliseconds)", - description: "Save after inactivity period (in milliseconds).", - field: Box::new(SettingField { - json_path: Some("autosave.after_delay.milliseconds"), - pick: |settings_content| { - match settings_content.workspace.autosave.as_ref() { - Some(settings::AutosaveSetting::AfterDelay { milliseconds }) => Some(milliseconds), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - settings_content.workspace.autosave = None; - return; - }; - match settings_content - .workspace - .autosave.as_mut() { - Some(settings::AutosaveSetting::AfterDelay { milliseconds }) => *milliseconds = value, - _ => return - } - }, - }), - metadata: None, - } - ], - settings::AutosaveSettingDiscriminants::OnFocusChange => vec![], - settings::AutosaveSettingDiscriminants::OnWindowChange => vec![], - } - }).collect(), - }), - SettingsPageItem::SectionHeader("Which-key Menu"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Which-key Menu", - description: "Display the which-key menu with matching bindings while a multi-stroke binding is pending.", - field: Box::new(SettingField { - json_path: Some("which_key.enabled"), - pick: |settings_content| { - settings_content - .which_key - .as_ref() - .and_then(|settings| settings.enabled.as_ref()) - }, - write: |settings_content, value| { - settings_content - .which_key - .get_or_insert_default() - .enabled = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Menu Delay", - description: "Delay in milliseconds before the which-key menu appears.", - field: Box::new(SettingField { - json_path: Some("which_key.delay_ms"), - pick: |settings_content| { - settings_content - .which_key - .as_ref() - .and_then(|settings| settings.delay_ms.as_ref()) - }, - write: |settings_content, value| { - settings_content - .which_key - .get_or_insert_default() - .delay_ms = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Multibuffer"), - SettingsPageItem::SettingItem(SettingItem { - title: "Double Click In Multibuffer", - description: "What to do when multibuffer is double-clicked in some of its excerpts.", - field: Box::new(SettingField { - json_path: Some("double_click_in_multibuffer"), - pick: |settings_content| { - settings_content.editor.double_click_in_multibuffer.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.double_click_in_multibuffer = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Expand Excerpt Lines", - description: "How many lines to expand the multibuffer excerpts by default.", - field: Box::new(SettingField { - json_path: Some("expand_excerpt_lines"), - pick: |settings_content| { - settings_content.editor.expand_excerpt_lines.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.expand_excerpt_lines = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Excerpt Context Lines", - description: "How many lines of context to provide in multibuffer excerpts by default.", - field: Box::new(SettingField { - json_path: Some("excerpt_context_lines"), - pick: |settings_content| { - settings_content.editor.excerpt_context_lines.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.excerpt_context_lines = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Expand Outlines With Depth", - description: "Default depth to expand outline items in the current file.", - field: Box::new(SettingField { - json_path: Some("outline_panel.expand_outlines_with_depth"), - pick: |settings_content| { - settings_content - .outline_panel - .as_ref() - .and_then(|outline_panel| { - outline_panel.expand_outlines_with_depth.as_ref() - }) - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .expand_outlines_with_depth = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Scrolling"), - SettingsPageItem::SettingItem(SettingItem { - title: "Scroll Beyond Last Line", - description: "Whether the editor will scroll beyond the last line.", - field: Box::new(SettingField { - json_path: Some("scroll_beyond_last_line"), - pick: |settings_content| { - settings_content.editor.scroll_beyond_last_line.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.scroll_beyond_last_line = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Vertical Scroll Margin", - description: "The number of lines to keep above/below the cursor when auto-scrolling.", - field: Box::new(SettingField { - json_path: Some("vertical_scroll_margin"), - pick: |settings_content| { - settings_content.editor.vertical_scroll_margin.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.vertical_scroll_margin = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Horizontal Scroll Margin", - description: "The number of characters to keep on either side when scrolling with the mouse.", - field: Box::new(SettingField { - json_path: Some("horizontal_scroll_margin"), - pick: |settings_content| { - settings_content.editor.horizontal_scroll_margin.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.horizontal_scroll_margin = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Scroll Sensitivity", - description: "Scroll sensitivity multiplier for both horizontal and vertical scrolling.", - field: Box::new(SettingField { - json_path: Some("scroll_sensitivity"), - pick: |settings_content| { - settings_content.editor.scroll_sensitivity.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.scroll_sensitivity = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Fast Scroll Sensitivity", - description: "Fast scroll sensitivity multiplier for both horizontal and vertical scrolling.", - field: Box::new(SettingField { - json_path: Some("fast_scroll_sensitivity"), - pick: |settings_content| { - settings_content.editor.fast_scroll_sensitivity.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.fast_scroll_sensitivity = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Autoscroll On Clicks", - description: "Whether to scroll when clicking near the edge of the visible text area.", - field: Box::new(SettingField { - json_path: Some("autoscroll_on_clicks"), - pick: |settings_content| { - settings_content.editor.autoscroll_on_clicks.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.autoscroll_on_clicks = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Sticky Scroll", - description: "Whether to stick scopes to the top of the editor", - field: Box::new(SettingField { - json_path: Some("sticky_scroll.enabled"), - pick: |settings_content| { - settings_content.editor.sticky_scroll.as_ref().and_then(|sticky_scroll| sticky_scroll.enabled.as_ref()) - }, - write: |settings_content, value| { - settings_content.editor.sticky_scroll.get_or_insert_default().enabled = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Signature Help"), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Signature Help", - description: "Automatically show a signature help pop-up.", - field: Box::new(SettingField { - json_path: Some("auto_signature_help"), - pick: |settings_content| { - settings_content.editor.auto_signature_help.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.auto_signature_help = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Signature Help After Edits", - description: "Show the signature help pop-up after completions or bracket pairs are inserted.", - field: Box::new(SettingField { - json_path: Some("show_signature_help_after_edits"), - pick: |settings_content| { - settings_content - .editor - .show_signature_help_after_edits - .as_ref() - }, - write: |settings_content, value| { - settings_content.editor.show_signature_help_after_edits = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Snippet Sort Order", - description: "Determines how snippets are sorted relative to other completion items.", - field: Box::new(SettingField { - json_path: Some("snippet_sort_order"), - pick: |settings_content| { - settings_content.editor.snippet_sort_order.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.snippet_sort_order = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Hover Popover"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Show the informational hover box when moving the mouse over symbols in the editor.", - field: Box::new(SettingField { - json_path: Some("hover_popover_enabled"), - pick: |settings_content| { - settings_content.editor.hover_popover_enabled.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.hover_popover_enabled = value; - }, - }), - metadata: None, - files: USER, - }), - // todo(settings ui): add units to this number input - SettingsPageItem::SettingItem(SettingItem { - title: "Delay", - description: "Time to wait in milliseconds before showing the informational hover box.", - field: Box::new(SettingField { - json_path: Some("hover_popover_enabled"), - pick: |settings_content| { - settings_content.editor.hover_popover_delay.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.hover_popover_delay = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Drag And Drop Selection"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Enable drag and drop selection.", - field: Box::new(SettingField { - json_path: Some("drag_and_drop_selection.enabled"), - pick: |settings_content| { - settings_content - .editor - .drag_and_drop_selection - .as_ref() - .and_then(|drag_and_drop| drag_and_drop.enabled.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .drag_and_drop_selection - .get_or_insert_default() - .enabled = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Delay", - description: "Delay in milliseconds before drag and drop selection starts.", - field: Box::new(SettingField { - json_path: Some("drag_and_drop_selection.delay"), - pick: |settings_content| { - settings_content - .editor - .drag_and_drop_selection - .as_ref() - .and_then(|drag_and_drop| drag_and_drop.delay.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .drag_and_drop_selection - .get_or_insert_default() - .delay = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Gutter"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Line Numbers", - description: "Show line numbers in the gutter.", - field: Box::new(SettingField { - json_path: Some("gutter.line_numbers"), - pick: |settings_content| { - settings_content - .editor - .gutter - .as_ref() - .and_then(|gutter| gutter.line_numbers.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .gutter - .get_or_insert_default() - .line_numbers = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Relative Line Numbers", - description: "Controls line number display in the editor's gutter. \"disabled\" shows absolute line numbers, \"enabled\" shows relative line numbers for each absolute line, and \"wrapped\" shows relative line numbers for every line, absolute or wrapped.", - field: Box::new(SettingField { - json_path: Some("relative_line_numbers"), - pick: |settings_content| { - settings_content.editor.relative_line_numbers.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.relative_line_numbers = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Runnables", - description: "Show runnable buttons in the gutter.", - field: Box::new(SettingField { - json_path: Some("gutter.runnables"), - pick: |settings_content| { - settings_content - .editor - .gutter - .as_ref() - .and_then(|gutter| gutter.runnables.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .gutter - .get_or_insert_default() - .runnables = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Breakpoints", - description: "Show breakpoints in the gutter.", - field: Box::new(SettingField { - json_path: Some("gutter.breakpoints"), - pick: |settings_content| { - settings_content - .editor - .gutter - .as_ref() - .and_then(|gutter| gutter.breakpoints.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .gutter - .get_or_insert_default() - .breakpoints = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Folds", - description: "Show code folding controls in the gutter.", - field: Box::new(SettingField { - json_path: Some("gutter.folds"), - pick: |settings_content| { - settings_content - .editor - .gutter - .as_ref() - .and_then(|gutter| gutter.folds.as_ref()) - }, - write: |settings_content, value| { - settings_content.editor.gutter.get_or_insert_default().folds = - value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Min Line Number Digits", - description: "Minimum number of characters to reserve space for in the gutter.", - field: Box::new(SettingField { - json_path: Some("gutter.min_line_number_digits"), - pick: |settings_content| { - settings_content - .editor - .gutter - .as_ref() - .and_then(|gutter| gutter.min_line_number_digits.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .gutter - .get_or_insert_default() - .min_line_number_digits = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Inline Code Actions", - description: "Show code action button at start of buffer line.", - field: Box::new(SettingField { - json_path: Some("inline_code_actions"), - pick: |settings_content| { - settings_content.editor.inline_code_actions.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.inline_code_actions = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Scrollbar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show", - description: "When to show the scrollbar in the editor.", - field: Box::new(SettingField { - json_path: Some("scrollbar"), - pick: |settings_content| { - settings_content.editor.scrollbar.as_ref()?.show.as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .show = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursors", - description: "Show cursor positions in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.cursors"), - pick: |settings_content| { - settings_content.editor.scrollbar.as_ref()?.cursors.as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .cursors = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Diff", - description: "Show Git diff indicators in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.git_diff"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .git_diff - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .git_diff = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Search Results", - description: "Show buffer search result indicators in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.search_results"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .search_results - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .search_results = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Selected Text", - description: "Show selected text occurrences in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.selected_text"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .selected_text - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .selected_text = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Selected Symbol", - description: "Show selected symbol occurrences in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.selected_symbol"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .selected_symbol - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .selected_symbol = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Diagnostics", - description: "Which diagnostic indicators to show in the scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.diagnostics"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .diagnostics - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .diagnostics = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Horizontal Scrollbar", - description: "When false, forcefully disables the horizontal scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.axes.horizontal"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .axes - .as_ref()? - .horizontal - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .axes - .get_or_insert_default() - .horizontal = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Vertical Scrollbar", - description: "When false, forcefully disables the vertical scrollbar.", - field: Box::new(SettingField { - json_path: Some("scrollbar.axes.vertical"), - pick: |settings_content| { - settings_content - .editor - .scrollbar - .as_ref()? - .axes - .as_ref()? - .vertical - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .scrollbar - .get_or_insert_default() - .axes - .get_or_insert_default() - .vertical = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Minimap"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show", - description: "When to show the minimap in the editor.", - field: Box::new(SettingField { - json_path: Some("minimap.show"), - pick: |settings_content| { - settings_content.editor.minimap.as_ref()?.show.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.minimap.get_or_insert_default().show = - value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Display In", - description: "Where to show the minimap in the editor.", - field: Box::new(SettingField { - json_path: Some("minimap.display_in"), - pick: |settings_content| { - settings_content - .editor - .minimap - .as_ref()? - .display_in - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .minimap - .get_or_insert_default() - .display_in = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Thumb", - description: "When to show the minimap thumb.", - field: Box::new(SettingField { - json_path: Some("minimap.thumb"), - pick: |settings_content| { - settings_content.editor.minimap.as_ref()?.thumb.as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .minimap - .get_or_insert_default() - .thumb = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Thumb Border", - description: "Border style for the minimap's scrollbar thumb.", - field: Box::new(SettingField { - json_path: Some("minimap.thumb_border"), - pick: |settings_content| { - settings_content - .editor - .minimap - .as_ref()? - .thumb_border - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .minimap - .get_or_insert_default() - .thumb_border = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Current Line Highlight", - description: "How to highlight the current line in the minimap.", - field: Box::new(SettingField { - json_path: Some("minimap.current_line_highlight"), - pick: |settings_content| { - settings_content - .editor - .minimap - .as_ref() - .and_then(|minimap| minimap.current_line_highlight.as_ref()) - .or(settings_content.editor.current_line_highlight.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .minimap - .get_or_insert_default() - .current_line_highlight = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Max Width Columns", - description: "Maximum number of columns to display in the minimap.", - field: Box::new(SettingField { - json_path: Some("minimap.max_width_columns"), - pick: |settings_content| { - settings_content - .editor - .minimap - .as_ref()? - .max_width_columns - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .minimap - .get_or_insert_default() - .max_width_columns = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Toolbar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Breadcrumbs", - description: "Show breadcrumbs.", - field: Box::new(SettingField { - json_path: Some("toolbar.breadcrumbs"), - pick: |settings_content| { - settings_content - .editor - .toolbar - .as_ref()? - .breadcrumbs - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .toolbar - .get_or_insert_default() - .breadcrumbs = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Quick Actions", - description: "Show quick action buttons (e.g., search, selection, editor controls, etc.).", - field: Box::new(SettingField { - json_path: Some("toolbar.quick_actions"), - pick: |settings_content| { - settings_content - .editor - .toolbar - .as_ref()? - .quick_actions - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .toolbar - .get_or_insert_default() - .quick_actions = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Selections Menu", - description: "Show the selections menu in the editor toolbar.", - field: Box::new(SettingField { - json_path: Some("toolbar.selections_menu"), - pick: |settings_content| { - settings_content - .editor - .toolbar - .as_ref()? - .selections_menu - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .toolbar - .get_or_insert_default() - .selections_menu = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Agent Review", - description: "Show agent review buttons in the editor toolbar.", - field: Box::new(SettingField { - json_path: Some("toolbar.agent_review"), - pick: |settings_content| { - settings_content - .editor - .toolbar - .as_ref()? - .agent_review - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .toolbar - .get_or_insert_default() - .agent_review = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Code Actions", - description: "Show code action buttons in the editor toolbar.", - field: Box::new(SettingField { - json_path: Some("toolbar.code_actions"), - pick: |settings_content| { - settings_content - .editor - .toolbar - .as_ref()? - .code_actions - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .toolbar - .get_or_insert_default() - .code_actions = value; - }, - }), - metadata: None, - files: USER, - }), - ]; - items.extend(language_settings_data()); - items - }, - }, - SettingsPage { - title: "Languages & Tools", - items: { - let mut items = vec![]; - items.extend(non_editor_language_settings_data()); - items.extend([ - SettingsPageItem::SectionHeader("File Types"), - SettingsPageItem::SettingItem(SettingItem { - title: "File Type Associations", - description: "A mapping from languages to files and file extensions that should be treated as that language.", - field: Box::new( - SettingField { - json_path: Some("file_type_associations"), - pick: |settings_content| { - settings_content.project.all_languages.file_types.as_ref() - }, - write: |settings_content, value| { - settings_content.project.all_languages.file_types = value; - - }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - ]); - - items.extend([ - SettingsPageItem::SectionHeader("Diagnostics"), - SettingsPageItem::SettingItem(SettingItem { - title: "Max Severity", - description: "Which level to use to filter out diagnostics displayed in the editor.", - field: Box::new(SettingField { - json_path: Some("diagnostics_max_severity"), - pick: |settings_content| settings_content.editor.diagnostics_max_severity.as_ref(), - write: |settings_content, value| { - settings_content.editor.diagnostics_max_severity = value; - - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Include Warnings", - description: "Whether to show warnings or not by default.", - field: Box::new(SettingField { - json_path: Some("diagnostics.include_warnings"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.include_warnings.as_ref() - }, - write: |settings_content, value| { - settings_content - - .diagnostics - .get_or_insert_default() - .include_warnings - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Inline Diagnostics"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Whether to show diagnostics inline or not.", - field: Box::new(SettingField { - json_path: Some("diagnostics.inline.enabled"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.inline.as_ref()?.enabled.as_ref() - }, - write: |settings_content, value| { - settings_content - - .diagnostics - .get_or_insert_default() - .inline - .get_or_insert_default() - .enabled - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Update Debounce", - description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update.", - field: Box::new(SettingField { - json_path: Some("diagnostics.inline.update_debounce_ms"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.inline.as_ref()?.update_debounce_ms.as_ref() - }, - write: |settings_content, value| { - settings_content - - .diagnostics - .get_or_insert_default() - .inline - .get_or_insert_default() - .update_debounce_ms - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Padding", - description: "The amount of padding between the end of the source line and the start of the inline diagnostic.", - field: Box::new(SettingField { - json_path: Some("diagnostics.inline.padding"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.inline.as_ref()?.padding.as_ref() - }, - write: |settings_content, value| { - settings_content - - .diagnostics - .get_or_insert_default() - .inline - .get_or_insert_default() - .padding - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Minimum Column", - description: "The minimum column at which to display inline diagnostics.", - field: Box::new(SettingField { - json_path: Some("diagnostics.inline.min_column"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.inline.as_ref()?.min_column.as_ref() - }, - write: |settings_content, value| { - settings_content + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Scroll Sensitivity", + description: "Scroll sensitivity multiplier for both horizontal and vertical scrolling.", + field: Box::new(SettingField { + json_path: Some("scroll_sensitivity"), + pick: |settings_content| settings_content.editor.scroll_sensitivity.as_ref(), + write: |settings_content, value| { + settings_content.editor.scroll_sensitivity = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Fast Scroll Sensitivity", + description: "Fast scroll sensitivity multiplier for both horizontal and vertical scrolling.", + field: Box::new(SettingField { + json_path: Some("fast_scroll_sensitivity"), + pick: |settings_content| { + settings_content.editor.fast_scroll_sensitivity.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.fast_scroll_sensitivity = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Autoscroll On Clicks", + description: "Whether to scroll when clicking near the edge of the visible text area.", + field: Box::new(SettingField { + json_path: Some("autoscroll_on_clicks"), + pick: |settings_content| settings_content.editor.autoscroll_on_clicks.as_ref(), + write: |settings_content, value| { + settings_content.editor.autoscroll_on_clicks = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Sticky Scroll", + description: "Whether to stick scopes to the top of the editor", + field: Box::new(SettingField { + json_path: Some("sticky_scroll.enabled"), + pick: |settings_content| { + settings_content + .editor + .sticky_scroll + .as_ref() + .and_then(|sticky_scroll| sticky_scroll.enabled.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .sticky_scroll + .get_or_insert_default() + .enabled = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } - .diagnostics - .get_or_insert_default() - .inline - .get_or_insert_default() - .min_column - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("LSP Pull Diagnostics"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Whether to pull for language server-powered diagnostics or not.", - field: Box::new(SettingField { - json_path: Some("diagnostics.lsp_pull_diagnostics.enabled"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.enabled.as_ref() - }, - write: |settings_content, value| { - settings_content + fn signature_help_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Signature Help"), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Signature Help", + description: "Automatically show a signature help pop-up.", + field: Box::new(SettingField { + json_path: Some("auto_signature_help"), + pick: |settings_content| settings_content.editor.auto_signature_help.as_ref(), + write: |settings_content, value| { + settings_content.editor.auto_signature_help = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Signature Help After Edits", + description: "Show the signature help pop-up after completions or bracket pairs are inserted.", + field: Box::new(SettingField { + json_path: Some("show_signature_help_after_edits"), + pick: |settings_content| { + settings_content + .editor + .show_signature_help_after_edits + .as_ref() + }, + write: |settings_content, value| { + settings_content.editor.show_signature_help_after_edits = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Snippet Sort Order", + description: "Determines how snippets are sorted relative to other completion items.", + field: Box::new(SettingField { + json_path: Some("snippet_sort_order"), + pick: |settings_content| settings_content.editor.snippet_sort_order.as_ref(), + write: |settings_content, value| { + settings_content.editor.snippet_sort_order = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } - .diagnostics - .get_or_insert_default() - .lsp_pull_diagnostics - .get_or_insert_default() - .enabled - = value; - }, - }), - metadata: None, - files: USER, - }), - // todo(settings_ui): Needs unit - SettingsPageItem::SettingItem(SettingItem { - title: "Debounce", - description: "Minimum time to wait before pulling diagnostics from the language server(s).", - field: Box::new(SettingField { - json_path: Some("diagnostics.lsp_pull_diagnostics.debounce_ms"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.debounce_ms.as_ref() - }, - write: |settings_content, value| { - settings_content + fn hover_popover_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Hover Popover"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Show the informational hover box when moving the mouse over symbols in the editor.", + field: Box::new(SettingField { + json_path: Some("hover_popover_enabled"), + pick: |settings_content| settings_content.editor.hover_popover_enabled.as_ref(), + write: |settings_content, value| { + settings_content.editor.hover_popover_enabled = value; + }, + }), + metadata: None, + files: USER, + }), + // todo(settings ui): add units to this number input + SettingsPageItem::SettingItem(SettingItem { + title: "Delay", + description: "Time to wait in milliseconds before showing the informational hover box.", + field: Box::new(SettingField { + json_path: Some("hover_popover_enabled"), + pick: |settings_content| settings_content.editor.hover_popover_delay.as_ref(), + write: |settings_content, value| { + settings_content.editor.hover_popover_delay = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } - .diagnostics - .get_or_insert_default() - .lsp_pull_diagnostics - .get_or_insert_default() - .debounce_ms - = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("LSP Highlights"), - SettingsPageItem::SettingItem(SettingItem { - title: "Debounce", - description: "The debounce delay before querying highlights from the language.", - field: Box::new(SettingField { - json_path: Some("lsp_highlight_debounce"), - pick: |settings_content| settings_content.editor.lsp_highlight_debounce.as_ref(), - write: |settings_content, value| { - settings_content.editor.lsp_highlight_debounce = value; - }, - }), - metadata: None, - files: USER, - }), - ]); - - // todo(settings_ui): Refresh on extension (un)/installed - // Note that `crates/json_schema_store` solves the same problem, there is probably a way to unify the two - items.push(SettingsPageItem::SectionHeader(LANGUAGES_SECTION_HEADER)); - items.extend(all_language_names(cx).into_iter().map(|language_name| { - let link = format!("languages.{language_name}"); - SettingsPageItem::SubPageLink(SubPageLink { - title: language_name, - description: None, - json_path: Some(link.leak()), - in_json: true, - files: USER | PROJECT, - render: Arc::new(|this, window, cx| { - this.render_sub_page_items( - language_settings_data() - .iter() - .chain(non_editor_language_settings_data().iter()) - .chain(edit_prediction_language_settings_section().iter()) - .enumerate(), - None, - window, - cx, - ) - .into_any_element() - }), - }) - })); - items - }, - }, - SettingsPage { - title: "Search & Files", - items: vec![ - SettingsPageItem::SectionHeader("Search"), - SettingsPageItem::SettingItem(SettingItem { - title: "Whole Word", - description: "Search for whole words by default.", - field: Box::new(SettingField { - json_path: Some("search.whole_word"), - pick: |settings_content| { - settings_content.editor.search.as_ref()?.whole_word.as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .search - .get_or_insert_default() - .whole_word = value; - }, - }), - metadata: None, - files: USER, + fn drag_and_drop_selection_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Drag And Drop Selection"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Enable drag and drop selection.", + field: Box::new(SettingField { + json_path: Some("drag_and_drop_selection.enabled"), + pick: |settings_content| { + settings_content + .editor + .drag_and_drop_selection + .as_ref() + .and_then(|drag_and_drop| drag_and_drop.enabled.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .drag_and_drop_selection + .get_or_insert_default() + .enabled = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Case Sensitive", - description: "Search case-sensitively by default.", - field: Box::new(SettingField { - json_path: Some("search.case_sensitive"), - pick: |settings_content| { - settings_content - .editor - .search - .as_ref()? - .case_sensitive - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .search - .get_or_insert_default() - .case_sensitive = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Delay", + description: "Delay in milliseconds before drag and drop selection starts.", + field: Box::new(SettingField { + json_path: Some("drag_and_drop_selection.delay"), + pick: |settings_content| { + settings_content + .editor + .drag_and_drop_selection + .as_ref() + .and_then(|drag_and_drop| drag_and_drop.delay.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .drag_and_drop_selection + .get_or_insert_default() + .delay = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use Smartcase Search", - description: "Whether to automatically enable case-sensitive search based on the search query.", - field: Box::new(SettingField { - json_path: Some("use_smartcase_search"), - pick: |settings_content| { - settings_content.editor.use_smartcase_search.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.use_smartcase_search = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn gutter_section() -> [SettingsPageItem; 8] { + [ + SettingsPageItem::SectionHeader("Gutter"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Line Numbers", + description: "Show line numbers in the gutter.", + field: Box::new(SettingField { + json_path: Some("gutter.line_numbers"), + pick: |settings_content| { + settings_content + .editor + .gutter + .as_ref() + .and_then(|gutter| gutter.line_numbers.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .gutter + .get_or_insert_default() + .line_numbers = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Include Ignored", - description: "Include ignored files in search results by default.", - field: Box::new(SettingField { - json_path: Some("search.include_ignored"), - pick: |settings_content| { - settings_content - .editor - .search - .as_ref()? - .include_ignored - .as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .search - .get_or_insert_default() - .include_ignored = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Relative Line Numbers", + description: "Controls line number display in the editor's gutter. \"disabled\" shows absolute line numbers, \"enabled\" shows relative line numbers for each absolute line, and \"wrapped\" shows relative line numbers for every line, absolute or wrapped.", + field: Box::new(SettingField { + json_path: Some("relative_line_numbers"), + pick: |settings_content| settings_content.editor.relative_line_numbers.as_ref(), + write: |settings_content, value| { + settings_content.editor.relative_line_numbers = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Regex", - description: "Use regex search by default.", - field: Box::new(SettingField { - json_path: Some("search.regex"), - pick: |settings_content| { - settings_content.editor.search.as_ref()?.regex.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.search.get_or_insert_default().regex = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Runnables", + description: "Show runnable buttons in the gutter.", + field: Box::new(SettingField { + json_path: Some("gutter.runnables"), + pick: |settings_content| { + settings_content + .editor + .gutter + .as_ref() + .and_then(|gutter| gutter.runnables.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .gutter + .get_or_insert_default() + .runnables = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Search Wrap", - description: "Whether the editor search results will loop.", - field: Box::new(SettingField { - json_path: Some("search_wrap"), - pick: |settings_content| settings_content.editor.search_wrap.as_ref(), - write: |settings_content, value| { - settings_content.editor.search_wrap = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Breakpoints", + description: "Show breakpoints in the gutter.", + field: Box::new(SettingField { + json_path: Some("gutter.breakpoints"), + pick: |settings_content| { + settings_content + .editor + .gutter + .as_ref() + .and_then(|gutter| gutter.breakpoints.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .gutter + .get_or_insert_default() + .breakpoints = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Folds", + description: "Show code folding controls in the gutter.", + field: Box::new(SettingField { + json_path: Some("gutter.folds"), + pick: |settings_content| { + settings_content + .editor + .gutter + .as_ref() + .and_then(|gutter| gutter.folds.as_ref()) + }, + write: |settings_content, value| { + settings_content.editor.gutter.get_or_insert_default().folds = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Center on Match", - description: "Whether to center the current match in the editor", - field: Box::new(SettingField { - json_path: Some("editor.search.center_on_match"), - pick: |settings_content| { - settings_content - .editor - .search - .as_ref() - .and_then(|search| search.center_on_match.as_ref()) - }, - write: |settings_content, value| { - settings_content - .editor - .search - .get_or_insert_default() - .center_on_match = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Min Line Number Digits", + description: "Minimum number of characters to reserve space for in the gutter.", + field: Box::new(SettingField { + json_path: Some("gutter.min_line_number_digits"), + pick: |settings_content| { + settings_content + .editor + .gutter + .as_ref() + .and_then(|gutter| gutter.min_line_number_digits.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .gutter + .get_or_insert_default() + .min_line_number_digits = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Seed Search Query From Cursor", - description: "When to populate a new search's query based on the text under the cursor.", - field: Box::new(SettingField { - json_path: Some("seed_search_query_from_cursor"), - pick: |settings_content| { - settings_content - .editor - .seed_search_query_from_cursor - .as_ref() - }, - write: |settings_content, value| { - settings_content.editor.seed_search_query_from_cursor = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Inline Code Actions", + description: "Show code action button at start of buffer line.", + field: Box::new(SettingField { + json_path: Some("inline_code_actions"), + pick: |settings_content| settings_content.editor.inline_code_actions.as_ref(), + write: |settings_content, value| { + settings_content.editor.inline_code_actions = value; + }, }), - SettingsPageItem::SectionHeader("File Finder"), - // todo: null by default - SettingsPageItem::SettingItem(SettingItem { - title: "Include Ignored in Search", - description: "Use gitignored files when searching.", - field: Box::new( - SettingField { - json_path: Some("file_finder.include_ignored"), - pick: |settings_content| { - settings_content - .file_finder - .as_ref()? - .include_ignored - .as_ref() - }, - write: |settings_content, value| { - settings_content - .file_finder - .get_or_insert_default() - .include_ignored = value; - }, - } - ), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn scrollbar_section() -> [SettingsPageItem; 10] { + [ + SettingsPageItem::SectionHeader("Scrollbar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show", + description: "When to show the scrollbar in the editor.", + field: Box::new(SettingField { + json_path: Some("scrollbar"), + pick: |settings_content| { + settings_content.editor.scrollbar.as_ref()?.show.as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "File Icons", - description: "Show file icons in the file finder.", - field: Box::new(SettingField { - json_path: Some("file_finder.file_icons"), - pick: |settings_content| { - settings_content.file_finder.as_ref()?.file_icons.as_ref() - }, - write: |settings_content, value| { - settings_content - .file_finder - .get_or_insert_default() - .file_icons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursors", + description: "Show cursor positions in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.cursors"), + pick: |settings_content| { + settings_content.editor.scrollbar.as_ref()?.cursors.as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .cursors = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Modal Max Width", - description: "Determines how much space the file finder can take up in relation to the available window width.", - field: Box::new(SettingField { - json_path: Some("file_finder.modal_max_width"), - pick: |settings_content| { - settings_content - .file_finder - .as_ref()? - .modal_max_width - .as_ref() - }, - write: |settings_content, value| { - settings_content - .file_finder - .get_or_insert_default() - .modal_max_width = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Diff", + description: "Show Git diff indicators in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.git_diff"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .git_diff + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .git_diff = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Skip Focus For Active In Search", - description: "Whether the file finder should skip focus for the active file in search results.", - field: Box::new(SettingField { - json_path: Some("file_finder.skip_focus_for_active_in_search"), - pick: |settings_content| { - settings_content - .file_finder - .as_ref()? - .skip_focus_for_active_in_search - .as_ref() - }, - write: |settings_content, value| { - settings_content - .file_finder - .get_or_insert_default() - .skip_focus_for_active_in_search = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Search Results", + description: "Show buffer search result indicators in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.search_results"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .search_results + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .search_results = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Status", - description: "Show the Git status in the file finder.", - field: Box::new(SettingField { - json_path: Some("file_finder.git_status"), - pick: |settings_content| { - settings_content.file_finder.as_ref()?.git_status.as_ref() - }, - write: |settings_content, value| { - settings_content - .file_finder - .get_or_insert_default() - .git_status = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Selected Text", + description: "Show selected text occurrences in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.selected_text"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .selected_text + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .selected_text = value; + }, }), - SettingsPageItem::SectionHeader("File Scan"), - SettingsPageItem::SettingItem(SettingItem { - title: "File Scan Exclusions", - description: "Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Takes precedence over \"File Scan Inclusions\"", - field: Box::new( - SettingField { - json_path: Some("file_scan_exclusions"), - pick: |settings_content| { - settings_content - .project - .worktree - .file_scan_exclusions - .as_ref() - }, - write: |settings_content, value| { - settings_content.project.worktree.file_scan_exclusions = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Selected Symbol", + description: "Show selected symbol occurrences in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.selected_symbol"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .selected_symbol + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .selected_symbol = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "File Scan Inclusions", - description: "Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. \"File Scan Exclusions\" takes precedence over these inclusions", - field: Box::new( - SettingField { - json_path: Some("file_scan_inclusions"), - pick: |settings_content| { - settings_content - .project - .worktree - .file_scan_inclusions - .as_ref() - }, - write: |settings_content, value| { - settings_content.project.worktree.file_scan_inclusions = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Diagnostics", + description: "Which diagnostic indicators to show in the scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.diagnostics"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .diagnostics + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .diagnostics = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Restore File State", - description: "Restore previous file state when reopening.", - field: Box::new(SettingField { - json_path: Some("restore_on_file_reopen"), - pick: |settings_content| { - settings_content.workspace.restore_on_file_reopen.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.restore_on_file_reopen = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Horizontal Scrollbar", + description: "When false, forcefully disables the horizontal scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.axes.horizontal"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .axes + .as_ref()? + .horizontal + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .axes + .get_or_insert_default() + .horizontal = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Vertical Scrollbar", + description: "When false, forcefully disables the vertical scrollbar.", + field: Box::new(SettingField { + json_path: Some("scrollbar.axes.vertical"), + pick: |settings_content| { + settings_content + .editor + .scrollbar + .as_ref()? + .axes + .as_ref()? + .vertical + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .scrollbar + .get_or_insert_default() + .axes + .get_or_insert_default() + .vertical = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Close on File Delete", - description: "Automatically close files that have been deleted.", - field: Box::new(SettingField { - json_path: Some("close_on_file_delete"), - pick: |settings_content| { - settings_content.workspace.close_on_file_delete.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.close_on_file_delete = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn minimap_section() -> [SettingsPageItem; 7] { + [ + SettingsPageItem::SectionHeader("Minimap"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show", + description: "When to show the minimap in the editor.", + field: Box::new(SettingField { + json_path: Some("minimap.show"), + pick: |settings_content| { + settings_content.editor.minimap.as_ref()?.show.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.minimap.get_or_insert_default().show = value; + }, }), - ], - }, - SettingsPage { - title: "Window & Layout", - items: vec![ - SettingsPageItem::SectionHeader("Status Bar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Project Panel Button", - description: "Show the project panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("project_panel.button"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Display In", + description: "Where to show the minimap in the editor.", + field: Box::new(SettingField { + json_path: Some("minimap.display_in"), + pick: |settings_content| { + settings_content + .editor + .minimap + .as_ref()? + .display_in + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .minimap + .get_or_insert_default() + .display_in = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Active Language Button", - description: "Show the active language button in the status bar.", - field: Box::new(SettingField { - json_path: Some("status_bar.active_language_button"), - pick: |settings_content| { - settings_content - .status_bar - .as_ref()? - .active_language_button - .as_ref() - }, - write: |settings_content, value| { - settings_content - .status_bar - .get_or_insert_default() - .active_language_button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Thumb", + description: "When to show the minimap thumb.", + field: Box::new(SettingField { + json_path: Some("minimap.thumb"), + pick: |settings_content| { + settings_content.editor.minimap.as_ref()?.thumb.as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .minimap + .get_or_insert_default() + .thumb = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Active Encoding Button", - description: "Control when to show the active encoding in the status bar.", - field: Box::new(SettingField { - json_path: Some("status_bar.active_encoding_button"), - pick: |settings_content| { - settings_content - .status_bar - .as_ref()? - .active_encoding_button - .as_ref() - }, - write: |settings_content, value| { - settings_content - .status_bar - .get_or_insert_default() - .active_encoding_button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Thumb Border", + description: "Border style for the minimap's scrollbar thumb.", + field: Box::new(SettingField { + json_path: Some("minimap.thumb_border"), + pick: |settings_content| { + settings_content + .editor + .minimap + .as_ref()? + .thumb_border + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .minimap + .get_or_insert_default() + .thumb_border = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Position Button", - description: "Show the cursor position button in the status bar.", - field: Box::new(SettingField { - json_path: Some("status_bar.cursor_position_button"), - pick: |settings_content| { - settings_content - .status_bar - .as_ref()? - .cursor_position_button - .as_ref() - }, - write: |settings_content, value| { - settings_content - .status_bar - .get_or_insert_default() - .cursor_position_button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Current Line Highlight", + description: "How to highlight the current line in the minimap.", + field: Box::new(SettingField { + json_path: Some("minimap.current_line_highlight"), + pick: |settings_content| { + settings_content + .editor + .minimap + .as_ref() + .and_then(|minimap| minimap.current_line_highlight.as_ref()) + .or(settings_content.editor.current_line_highlight.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .minimap + .get_or_insert_default() + .current_line_highlight = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Terminal Button", - description: "Show the terminal button in the status bar.", - field: Box::new(SettingField { - json_path: Some("terminal.button"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content.terminal.get_or_insert_default().button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Max Width Columns", + description: "Maximum number of columns to display in the minimap.", + field: Box::new(SettingField { + json_path: Some("minimap.max_width_columns"), + pick: |settings_content| { + settings_content + .editor + .minimap + .as_ref()? + .max_width_columns + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .minimap + .get_or_insert_default() + .max_width_columns = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Diagnostics Button", - description: "Show the project diagnostics button in the status bar.", - field: Box::new(SettingField { - json_path: Some("diagnostics.button"), - pick: |settings_content| { - settings_content.diagnostics.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content.diagnostics.get_or_insert_default().button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn toolbar_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Toolbar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Breadcrumbs", + description: "Show breadcrumbs.", + field: Box::new(SettingField { + json_path: Some("toolbar.breadcrumbs"), + pick: |settings_content| { + settings_content + .editor + .toolbar + .as_ref()? + .breadcrumbs + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .toolbar + .get_or_insert_default() + .breadcrumbs = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Project Search Button", - description: "Show the project search button in the status bar.", - field: Box::new(SettingField { - json_path: Some("search.button"), - pick: |settings_content| { - settings_content.editor.search.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content - .editor - .search - .get_or_insert_default() - .button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Quick Actions", + description: "Show quick action buttons (e.g., search, selection, editor controls, etc.).", + field: Box::new(SettingField { + json_path: Some("toolbar.quick_actions"), + pick: |settings_content| { + settings_content + .editor + .toolbar + .as_ref()? + .quick_actions + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .toolbar + .get_or_insert_default() + .quick_actions = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Debugger Button", - description: "Show the debugger button in the status bar.", - field: Box::new(SettingField { - json_path: Some("debugger.button"), - pick: |settings_content| { - settings_content.debugger.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content.debugger.get_or_insert_default().button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Selections Menu", + description: "Show the selections menu in the editor toolbar.", + field: Box::new(SettingField { + json_path: Some("toolbar.selections_menu"), + pick: |settings_content| { + settings_content + .editor + .toolbar + .as_ref()? + .selections_menu + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .toolbar + .get_or_insert_default() + .selections_menu = value; + }, }), - SettingsPageItem::SectionHeader("Title Bar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Branch Icon", - description: "Show the branch icon beside branch switcher in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_branch_icon"), - pick: |settings_content| { - settings_content - .title_bar - .as_ref()? - .show_branch_icon - .as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_branch_icon = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Agent Review", + description: "Show agent review buttons in the editor toolbar.", + field: Box::new(SettingField { + json_path: Some("toolbar.agent_review"), + pick: |settings_content| { + settings_content + .editor + .toolbar + .as_ref()? + .agent_review + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .toolbar + .get_or_insert_default() + .agent_review = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Branch Name", - description: "Show the branch name button in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_branch_name"), - pick: |settings_content| { - settings_content - .title_bar - .as_ref()? - .show_branch_name - .as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_branch_name = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Code Actions", + description: "Show code action buttons in the editor toolbar.", + field: Box::new(SettingField { + json_path: Some("toolbar.code_actions"), + pick: |settings_content| { + settings_content + .editor + .toolbar + .as_ref()? + .code_actions + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .toolbar + .get_or_insert_default() + .code_actions = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Project Items", - description: "Show the project host and name in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_project_items"), + metadata: None, + files: USER, + }), + ] + } + + let items = concat_sections!( + auto_save_section(), + which_key_section(), + multibuffer_section(), + scrolling_section(), + signature_help_section(), + hover_popover_section(), + drag_and_drop_selection_section(), + gutter_section(), + scrollbar_section(), + minimap_section(), + toolbar_section(), + language_settings_data(), + ); + + SettingsPage { + title: "Editor", + items: items, + } +} + +fn languages_and_tools_page(cx: &App) -> SettingsPage { + fn file_types_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("File Types"), + SettingsPageItem::SettingItem(SettingItem { + title: "File Type Associations", + description: "A mapping from languages to files and file extensions that should be treated as that language.", + field: Box::new( + SettingField { + json_path: Some("file_type_associations"), pick: |settings_content| { - settings_content - .title_bar - .as_ref()? - .show_project_items - .as_ref() + settings_content.project.all_languages.file_types.as_ref() }, write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_project_items = value; + settings_content.project.all_languages.file_types = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + ] + } + + fn diagnostics_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Diagnostics"), + SettingsPageItem::SettingItem(SettingItem { + title: "Max Severity", + description: "Which level to use to filter out diagnostics displayed in the editor.", + field: Box::new(SettingField { + json_path: Some("diagnostics_max_severity"), + pick: |settings_content| { + settings_content.editor.diagnostics_max_severity.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.diagnostics_max_severity = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Onboarding Banner", - description: "Show banners announcing new features in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_onboarding_banner"), - pick: |settings_content| { - settings_content - .title_bar - .as_ref()? - .show_onboarding_banner - .as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_onboarding_banner = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Include Warnings", + description: "Whether to show warnings or not by default.", + field: Box::new(SettingField { + json_path: Some("diagnostics.include_warnings"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .include_warnings + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .include_warnings = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Sign In", - description: "Show the sign in button in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_sign_in"), - pick: |settings_content| { - settings_content.title_bar.as_ref()?.show_sign_in.as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_sign_in = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn inline_diagnostics_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Inline Diagnostics"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Whether to show diagnostics inline or not.", + field: Box::new(SettingField { + json_path: Some("diagnostics.inline.enabled"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .inline + .as_ref()? + .enabled + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .inline + .get_or_insert_default() + .enabled = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show User Menu", - description: "Show the user menu button in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_user_menu"), - pick: |settings_content| { - settings_content.title_bar.as_ref()?.show_user_menu.as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_user_menu = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Update Debounce", + description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update.", + field: Box::new(SettingField { + json_path: Some("diagnostics.inline.update_debounce_ms"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .inline + .as_ref()? + .update_debounce_ms + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .inline + .get_or_insert_default() + .update_debounce_ms = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show User Picture", - description: "Show user picture in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_user_picture"), - pick: |settings_content| { - settings_content - .title_bar - .as_ref()? - .show_user_picture - .as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_user_picture = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Padding", + description: "The amount of padding between the end of the source line and the start of the inline diagnostic.", + field: Box::new(SettingField { + json_path: Some("diagnostics.inline.padding"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .inline + .as_ref()? + .padding + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .inline + .get_or_insert_default() + .padding = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Menus", - description: "Show the menus in the titlebar.", - field: Box::new(SettingField { - json_path: Some("title_bar.show_menus"), - pick: |settings_content| { - settings_content.title_bar.as_ref()?.show_menus.as_ref() - }, - write: |settings_content, value| { - settings_content - .title_bar - .get_or_insert_default() - .show_menus = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Minimum Column", + description: "The minimum column at which to display inline diagnostics.", + field: Box::new(SettingField { + json_path: Some("diagnostics.inline.min_column"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .inline + .as_ref()? + .min_column + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .inline + .get_or_insert_default() + .min_column = value; + }, }), - SettingsPageItem::SectionHeader("Tab Bar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Tab Bar", - description: "Show the tab bar in the editor.", - field: Box::new(SettingField { - json_path: Some("tab_bar.show"), - pick: |settings_content| settings_content.tab_bar.as_ref()?.show.as_ref(), - write: |settings_content, value| { - settings_content.tab_bar.get_or_insert_default().show = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn lsp_pull_diagnostics_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("LSP Pull Diagnostics"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Whether to pull for language server-powered diagnostics or not.", + field: Box::new(SettingField { + json_path: Some("diagnostics.lsp_pull_diagnostics.enabled"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .lsp_pull_diagnostics + .as_ref()? + .enabled + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .lsp_pull_diagnostics + .get_or_insert_default() + .enabled = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Git Status In Tabs", - description: "Show the Git file status on a tab item.", - field: Box::new(SettingField { - json_path: Some("tabs.git_status"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.git_status.as_ref() - }, - write: |settings_content, value| { - settings_content.tabs.get_or_insert_default().git_status = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + // todo(settings_ui): Needs unit + SettingsPageItem::SettingItem(SettingItem { + title: "Debounce", + description: "Minimum time to wait before pulling diagnostics from the language server(s).", + field: Box::new(SettingField { + json_path: Some("diagnostics.lsp_pull_diagnostics.debounce_ms"), + pick: |settings_content| { + settings_content + .diagnostics + .as_ref()? + .lsp_pull_diagnostics + .as_ref()? + .debounce_ms + .as_ref() + }, + write: |settings_content, value| { + settings_content + .diagnostics + .get_or_insert_default() + .lsp_pull_diagnostics + .get_or_insert_default() + .debounce_ms = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show File Icons In Tabs", - description: "Show the file icon for a tab.", - field: Box::new(SettingField { - json_path: Some("tabs.file_icons"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.file_icons.as_ref() - }, - write: |settings_content, value| { - settings_content.tabs.get_or_insert_default().file_icons = value; - }, + metadata: None, + files: USER, + }), + ] + } + + fn lsp_highlights_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("LSP Highlights"), + SettingsPageItem::SettingItem(SettingItem { + title: "Debounce", + description: "The debounce delay before querying highlights from the language.", + field: Box::new(SettingField { + json_path: Some("lsp_highlight_debounce"), + pick: |settings_content| { + settings_content.editor.lsp_highlight_debounce.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.lsp_highlight_debounce = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn languages_list_section(cx: &App) -> Box<[SettingsPageItem]> { + // todo(settings_ui): Refresh on extension (un)/installed + // Note that `crates/json_schema_store` solves the same problem, there is probably a way to unify the two + std::iter::once(SettingsPageItem::SectionHeader(LANGUAGES_SECTION_HEADER)) + .chain(all_language_names(cx).into_iter().map(|language_name| { + let link = format!("languages.{language_name}"); + SettingsPageItem::SubPageLink(SubPageLink { + title: language_name, + description: None, + json_path: Some(link.leak()), + in_json: true, + files: USER | PROJECT, + render: Arc::new(|this, window, cx| { + let items: Box<[SettingsPageItem]> = concat_sections!( + language_settings_data(), + non_editor_language_settings_data(), + edit_prediction_language_settings_section() + ); + this.render_sub_page_items(items.iter().enumerate(), None, window, cx) + .into_any_element() }), - metadata: None, - files: USER, + }) + })) + .collect() + } + + SettingsPage { + title: "Languages & Tools", + items: { + concat_sections!( + non_editor_language_settings_data(), + file_types_section(), + diagnostics_section(), + inline_diagnostics_section(), + lsp_pull_diagnostics_section(), + lsp_highlights_section(), + languages_list_section(cx), + ) + }, + } +} + +fn search_and_files_page() -> SettingsPage { + fn search_section() -> [SettingsPageItem; 9] { + [ + SettingsPageItem::SectionHeader("Search"), + SettingsPageItem::SettingItem(SettingItem { + title: "Whole Word", + description: "Search for whole words by default.", + field: Box::new(SettingField { + json_path: Some("search.whole_word"), + pick: |settings_content| { + settings_content.editor.search.as_ref()?.whole_word.as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .search + .get_or_insert_default() + .whole_word = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Case Sensitive", + description: "Search case-sensitively by default.", + field: Box::new(SettingField { + json_path: Some("search.case_sensitive"), + pick: |settings_content| { + settings_content + .editor + .search + .as_ref()? + .case_sensitive + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .search + .get_or_insert_default() + .case_sensitive = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Tab Close Position", - description: "Position of the close button in a tab.", - field: Box::new(SettingField { - json_path: Some("tabs.close_position"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.close_position.as_ref() - }, - write: |settings_content, value| { - settings_content.tabs.get_or_insert_default().close_position = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Use Smartcase Search", + description: "Whether to automatically enable case-sensitive search based on the search query.", + field: Box::new(SettingField { + json_path: Some("use_smartcase_search"), + pick: |settings_content| settings_content.editor.use_smartcase_search.as_ref(), + write: |settings_content, value| { + settings_content.editor.use_smartcase_search = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Maximum Tabs", - description: "Maximum open tabs in a pane. Will not close an unsaved tab.", - // todo(settings_ui): The default for this value is null and it's use in code - // is complex, so I'm going to come back to this later - field: Box::new( - SettingField { - json_path: Some("max_tabs"), - pick: |settings_content| settings_content.workspace.max_tabs.as_ref(), - write: |settings_content, value| { - settings_content.workspace.max_tabs = value; - }, - } - .unimplemented(), - ), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Include Ignored", + description: "Include ignored files in search results by default.", + field: Box::new(SettingField { + json_path: Some("search.include_ignored"), + pick: |settings_content| { + settings_content + .editor + .search + .as_ref()? + .include_ignored + .as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .search + .get_or_insert_default() + .include_ignored = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Navigation History Buttons", - description: "Show the navigation history buttons in the tab bar.", - field: Box::new(SettingField { - json_path: Some("tab_bar.show_nav_history_buttons"), - pick: |settings_content| { - settings_content - .tab_bar - .as_ref()? - .show_nav_history_buttons - .as_ref() - }, - write: |settings_content, value| { - settings_content - .tab_bar - .get_or_insert_default() - .show_nav_history_buttons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Regex", + description: "Use regex search by default.", + field: Box::new(SettingField { + json_path: Some("search.regex"), + pick: |settings_content| { + settings_content.editor.search.as_ref()?.regex.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.search.get_or_insert_default().regex = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Tab Bar Buttons", - description: "Show the tab bar buttons (New, Split Pane, Zoom).", - field: Box::new(SettingField { - json_path: Some("tab_bar.show_tab_bar_buttons"), - pick: |settings_content| { - settings_content - .tab_bar - .as_ref()? - .show_tab_bar_buttons - .as_ref() - }, - write: |settings_content, value| { - settings_content - .tab_bar - .get_or_insert_default() - .show_tab_bar_buttons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Search Wrap", + description: "Whether the editor search results will loop.", + field: Box::new(SettingField { + json_path: Some("search_wrap"), + pick: |settings_content| settings_content.editor.search_wrap.as_ref(), + write: |settings_content, value| { + settings_content.editor.search_wrap = value; + }, }), - SettingsPageItem::SectionHeader("Tab Settings"), - SettingsPageItem::SettingItem(SettingItem { - title: "Activate On Close", - description: "What to do after closing the current tab.", - field: Box::new(SettingField { - json_path: Some("tabs.activate_on_close"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.activate_on_close.as_ref() - }, - write: |settings_content, value| { - settings_content - .tabs - .get_or_insert_default() - .activate_on_close = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Center on Match", + description: "Whether to center the current match in the editor", + field: Box::new(SettingField { + json_path: Some("editor.search.center_on_match"), + pick: |settings_content| { + settings_content + .editor + .search + .as_ref() + .and_then(|search| search.center_on_match.as_ref()) + }, + write: |settings_content, value| { + settings_content + .editor + .search + .get_or_insert_default() + .center_on_match = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Tab Show Diagnostics", - description: "Which files containing diagnostic errors/warnings to mark in the tabs.", - field: Box::new(SettingField { - json_path: Some("tabs.show_diagnostics"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.show_diagnostics.as_ref() - }, - write: |settings_content, value| { - settings_content - .tabs - .get_or_insert_default() - .show_diagnostics = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Seed Search Query From Cursor", + description: "When to populate a new search's query based on the text under the cursor.", + field: Box::new(SettingField { + json_path: Some("seed_search_query_from_cursor"), + pick: |settings_content| { + settings_content + .editor + .seed_search_query_from_cursor + .as_ref() + }, + write: |settings_content, value| { + settings_content.editor.seed_search_query_from_cursor = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Close Button", - description: "Controls the appearance behavior of the tab's close button.", - field: Box::new(SettingField { - json_path: Some("tabs.show_close_button"), - pick: |settings_content| { - settings_content.tabs.as_ref()?.show_close_button.as_ref() - }, - write: |settings_content, value| { - settings_content - .tabs - .get_or_insert_default() - .show_close_button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn file_finder_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("File Finder"), + // todo: null by default + SettingsPageItem::SettingItem(SettingItem { + title: "Include Ignored in Search", + description: "Use gitignored files when searching.", + field: Box::new(SettingField { + json_path: Some("file_finder.include_ignored"), + pick: |settings_content| { + settings_content + .file_finder + .as_ref()? + .include_ignored + .as_ref() + }, + write: |settings_content, value| { + settings_content + .file_finder + .get_or_insert_default() + .include_ignored = value; + }, }), - SettingsPageItem::SectionHeader("Preview Tabs"), - SettingsPageItem::SettingItem(SettingItem { - title: "Preview Tabs Enabled", - description: "Show opened editors as preview tabs.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enabled"), - pick: |settings_content| { - settings_content.preview_tabs.as_ref()?.enabled.as_ref() - }, - write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enabled = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "File Icons", + description: "Show file icons in the file finder.", + field: Box::new(SettingField { + json_path: Some("file_finder.file_icons"), + pick: |settings_content| { + settings_content.file_finder.as_ref()?.file_icons.as_ref() + }, + write: |settings_content, value| { + settings_content + .file_finder + .get_or_insert_default() + .file_icons = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Preview From Project Panel", - description: "Whether to open tabs in preview mode when opened from the project panel with a single click.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_preview_from_project_panel"), - pick: |settings_content| { - settings_content - .preview_tabs - .as_ref()? - .enable_preview_from_project_panel - .as_ref() - }, - write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_preview_from_project_panel = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Modal Max Width", + description: "Determines how much space the file finder can take up in relation to the available window width.", + field: Box::new(SettingField { + json_path: Some("file_finder.modal_max_width"), + pick: |settings_content| { + settings_content + .file_finder + .as_ref()? + .modal_max_width + .as_ref() + }, + write: |settings_content, value| { + settings_content + .file_finder + .get_or_insert_default() + .modal_max_width = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Preview From File Finder", - description: "Whether to open tabs in preview mode when selected from the file finder.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_preview_from_file_finder"), - pick: |settings_content| { - settings_content - .preview_tabs - .as_ref()? - .enable_preview_from_file_finder - .as_ref() - }, - write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_preview_from_file_finder = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Skip Focus For Active In Search", + description: "Whether the file finder should skip focus for the active file in search results.", + field: Box::new(SettingField { + json_path: Some("file_finder.skip_focus_for_active_in_search"), + pick: |settings_content| { + settings_content + .file_finder + .as_ref()? + .skip_focus_for_active_in_search + .as_ref() + }, + write: |settings_content, value| { + settings_content + .file_finder + .get_or_insert_default() + .skip_focus_for_active_in_search = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Preview From Multibuffer", - description: "Whether to open tabs in preview mode when opened from a multibuffer.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_preview_from_multibuffer"), - pick: |settings_content| { - settings_content - .preview_tabs - .as_ref()? - .enable_preview_from_multibuffer - .as_ref() - }, - write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_preview_from_multibuffer = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Status", + description: "Show the Git status in the file finder.", + field: Box::new(SettingField { + json_path: Some("file_finder.git_status"), + pick: |settings_content| { + settings_content.file_finder.as_ref()?.git_status.as_ref() + }, + write: |settings_content, value| { + settings_content + .file_finder + .get_or_insert_default() + .git_status = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Preview Multibuffer From Code Navigation", - description: "Whether to open tabs in preview mode when code navigation is used to open a multibuffer.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_preview_multibuffer_from_code_navigation"), + metadata: None, + files: USER, + }), + ] + } + + fn file_scan_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("File Scan"), + SettingsPageItem::SettingItem(SettingItem { + title: "File Scan Exclusions", + description: "Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Takes precedence over \"File Scan Inclusions\"", + field: Box::new( + SettingField { + json_path: Some("file_scan_exclusions"), pick: |settings_content| { settings_content - .preview_tabs - .as_ref()? - .enable_preview_multibuffer_from_code_navigation + .project + .worktree + .file_scan_exclusions .as_ref() }, write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_preview_multibuffer_from_code_navigation = value; + settings_content.project.worktree.file_scan_exclusions = value; }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Preview File From Code Navigation", - description: "Whether to open tabs in preview mode when code navigation is used to open a single file.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_preview_file_from_code_navigation"), + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "File Scan Inclusions", + description: "Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. \"File Scan Exclusions\" takes precedence over these inclusions", + field: Box::new( + SettingField { + json_path: Some("file_scan_inclusions"), pick: |settings_content| { settings_content - .preview_tabs - .as_ref()? - .enable_preview_file_from_code_navigation + .project + .worktree + .file_scan_inclusions .as_ref() }, write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_preview_file_from_code_navigation = value; + settings_content.project.worktree.file_scan_inclusions = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Restore File State", + description: "Restore previous file state when reopening.", + field: Box::new(SettingField { + json_path: Some("restore_on_file_reopen"), + pick: |settings_content| { + settings_content.workspace.restore_on_file_reopen.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.restore_on_file_reopen = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Keep Preview On Code Navigation", - description: "Whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.", - field: Box::new(SettingField { - json_path: Some("preview_tabs.enable_keep_preview_on_code_navigation"), - pick: |settings_content| { - settings_content - .preview_tabs - .as_ref()? - .enable_keep_preview_on_code_navigation - .as_ref() - }, - write: |settings_content, value| { - settings_content - .preview_tabs - .get_or_insert_default() - .enable_keep_preview_on_code_navigation = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Close on File Delete", + description: "Automatically close files that have been deleted.", + field: Box::new(SettingField { + json_path: Some("close_on_file_delete"), + pick: |settings_content| { + settings_content.workspace.close_on_file_delete.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.close_on_file_delete = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Search & Files", + items: concat_sections![search_section(), file_finder_section(), file_scan_section()], + } +} + +fn window_and_layout_page() -> SettingsPage { + fn status_bar_section() -> [SettingsPageItem; 9] { + [ + SettingsPageItem::SectionHeader("Status Bar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Project Panel Button", + description: "Show the project panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("project_panel.button"), + pick: |settings_content| { + settings_content.project_panel.as_ref()?.button.as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Active Language Button", + description: "Show the active language button in the status bar.", + field: Box::new(SettingField { + json_path: Some("status_bar.active_language_button"), + pick: |settings_content| { + settings_content + .status_bar + .as_ref()? + .active_language_button + .as_ref() + }, + write: |settings_content, value| { + settings_content + .status_bar + .get_or_insert_default() + .active_language_button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Active Encoding Button", + description: "Control when to show the active encoding in the status bar.", + field: Box::new(SettingField { + json_path: Some("status_bar.active_encoding_button"), + pick: |settings_content| { + settings_content + .status_bar + .as_ref()? + .active_encoding_button + .as_ref() + }, + write: |settings_content, value| { + settings_content + .status_bar + .get_or_insert_default() + .active_encoding_button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursor Position Button", + description: "Show the cursor position button in the status bar.", + field: Box::new(SettingField { + json_path: Some("status_bar.cursor_position_button"), + pick: |settings_content| { + settings_content + .status_bar + .as_ref()? + .cursor_position_button + .as_ref() + }, + write: |settings_content, value| { + settings_content + .status_bar + .get_or_insert_default() + .cursor_position_button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Terminal Button", + description: "Show the terminal button in the status bar.", + field: Box::new(SettingField { + json_path: Some("terminal.button"), + pick: |settings_content| settings_content.terminal.as_ref()?.button.as_ref(), + write: |settings_content, value| { + settings_content.terminal.get_or_insert_default().button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Diagnostics Button", + description: "Show the project diagnostics button in the status bar.", + field: Box::new(SettingField { + json_path: Some("diagnostics.button"), + pick: |settings_content| settings_content.diagnostics.as_ref()?.button.as_ref(), + write: |settings_content, value| { + settings_content.diagnostics.get_or_insert_default().button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Project Search Button", + description: "Show the project search button in the status bar.", + field: Box::new(SettingField { + json_path: Some("search.button"), + pick: |settings_content| { + settings_content.editor.search.as_ref()?.button.as_ref() + }, + write: |settings_content, value| { + settings_content + .editor + .search + .get_or_insert_default() + .button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Debugger Button", + description: "Show the debugger button in the status bar.", + field: Box::new(SettingField { + json_path: Some("debugger.button"), + pick: |settings_content| settings_content.debugger.as_ref()?.button.as_ref(), + write: |settings_content, value| { + settings_content.debugger.get_or_insert_default().button = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn title_bar_section() -> [SettingsPageItem; 9] { + [ + SettingsPageItem::SectionHeader("Title Bar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Branch Icon", + description: "Show the branch icon beside branch switcher in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_branch_icon"), + pick: |settings_content| { + settings_content + .title_bar + .as_ref()? + .show_branch_icon + .as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_branch_icon = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Branch Name", + description: "Show the branch name button in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_branch_name"), + pick: |settings_content| { + settings_content + .title_bar + .as_ref()? + .show_branch_name + .as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_branch_name = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Project Items", + description: "Show the project host and name in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_project_items"), + pick: |settings_content| { + settings_content + .title_bar + .as_ref()? + .show_project_items + .as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_project_items = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Onboarding Banner", + description: "Show banners announcing new features in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_onboarding_banner"), + pick: |settings_content| { + settings_content + .title_bar + .as_ref()? + .show_onboarding_banner + .as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_onboarding_banner = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Sign In", + description: "Show the sign in button in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_sign_in"), + pick: |settings_content| { + settings_content.title_bar.as_ref()?.show_sign_in.as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_sign_in = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show User Menu", + description: "Show the user menu button in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_user_menu"), + pick: |settings_content| { + settings_content.title_bar.as_ref()?.show_user_menu.as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_user_menu = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show User Picture", + description: "Show user picture in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_user_picture"), + pick: |settings_content| { + settings_content + .title_bar + .as_ref()? + .show_user_picture + .as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_user_picture = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Menus", + description: "Show the menus in the titlebar.", + field: Box::new(SettingField { + json_path: Some("title_bar.show_menus"), + pick: |settings_content| { + settings_content.title_bar.as_ref()?.show_menus.as_ref() + }, + write: |settings_content, value| { + settings_content + .title_bar + .get_or_insert_default() + .show_menus = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn tab_bar_section() -> [SettingsPageItem; 8] { + [ + SettingsPageItem::SectionHeader("Tab Bar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Tab Bar", + description: "Show the tab bar in the editor.", + field: Box::new(SettingField { + json_path: Some("tab_bar.show"), + pick: |settings_content| settings_content.tab_bar.as_ref()?.show.as_ref(), + write: |settings_content, value| { + settings_content.tab_bar.get_or_insert_default().show = value; + }, }), - SettingsPageItem::SectionHeader("Layout"), - SettingsPageItem::SettingItem(SettingItem { - title: "Bottom Dock Layout", - description: "Layout mode for the bottom dock.", - field: Box::new(SettingField { - json_path: Some("bottom_dock_layout"), - pick: |settings_content| { - settings_content.workspace.bottom_dock_layout.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.bottom_dock_layout = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Git Status In Tabs", + description: "Show the Git file status on a tab item.", + field: Box::new(SettingField { + json_path: Some("tabs.git_status"), + pick: |settings_content| settings_content.tabs.as_ref()?.git_status.as_ref(), + write: |settings_content, value| { + settings_content.tabs.get_or_insert_default().git_status = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Centered Layout Left Padding", - description: "Left padding for centered layout.", - field: Box::new(SettingField { - json_path: Some("centered_layout.left_padding"), - pick: |settings_content| { - settings_content - .workspace - .centered_layout - .as_ref()? - .left_padding - .as_ref() - }, - write: |settings_content, value| { - settings_content - .workspace - .centered_layout - .get_or_insert_default() - .left_padding = value; - }, - }), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show File Icons In Tabs", + description: "Show the file icon for a tab.", + field: Box::new(SettingField { + json_path: Some("tabs.file_icons"), + pick: |settings_content| settings_content.tabs.as_ref()?.file_icons.as_ref(), + write: |settings_content, value| { + settings_content.tabs.get_or_insert_default().file_icons = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Centered Layout Right Padding", - description: "Right padding for centered layout.", - field: Box::new(SettingField { - json_path: Some("centered_layout.right_padding"), - pick: |settings_content| { - settings_content - .workspace - .centered_layout - .as_ref()? - .right_padding - .as_ref() - }, - write: |settings_content, value| { - settings_content - .workspace - .centered_layout - .get_or_insert_default() - .right_padding = value; - }, - }), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Tab Close Position", + description: "Position of the close button in a tab.", + field: Box::new(SettingField { + json_path: Some("tabs.close_position"), + pick: |settings_content| { + settings_content.tabs.as_ref()?.close_position.as_ref() + }, + write: |settings_content, value| { + settings_content.tabs.get_or_insert_default().close_position = value; + }, }), - SettingsPageItem::SectionHeader("Window"), - // todo(settings_ui): Should we filter by platform.as_ref()? - SettingsPageItem::SettingItem(SettingItem { - title: "Use System Window Tabs", - description: "(macOS only) whether to allow Windows to tab together.", - field: Box::new(SettingField { - json_path: Some("use_system_window_tabs"), - pick: |settings_content| { - settings_content.workspace.use_system_window_tabs.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.use_system_window_tabs = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Maximum Tabs", + description: "Maximum open tabs in a pane. Will not close an unsaved tab.", + // todo(settings_ui): The default for this value is null and it's use in code + // is complex, so I'm going to come back to this later + field: Box::new( + SettingField { + json_path: Some("max_tabs"), + pick: |settings_content| settings_content.workspace.max_tabs.as_ref(), + write: |settings_content, value| { + settings_content.workspace.max_tabs = value; + }, + } + .unimplemented(), + ), + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Navigation History Buttons", + description: "Show the navigation history buttons in the tab bar.", + field: Box::new(SettingField { + json_path: Some("tab_bar.show_nav_history_buttons"), + pick: |settings_content| { + settings_content + .tab_bar + .as_ref()? + .show_nav_history_buttons + .as_ref() + }, + write: |settings_content, value| { + settings_content + .tab_bar + .get_or_insert_default() + .show_nav_history_buttons = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Window Decorations", - description: "(Linux only) whether Zed or your compositor should draw window decorations.", - field: Box::new(SettingField { - json_path: Some("window_decorations"), - pick: |settings_content| { - settings_content.workspace.window_decorations.as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.window_decorations = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Tab Bar Buttons", + description: "Show the tab bar buttons (New, Split Pane, Zoom).", + field: Box::new(SettingField { + json_path: Some("tab_bar.show_tab_bar_buttons"), + pick: |settings_content| { + settings_content + .tab_bar + .as_ref()? + .show_tab_bar_buttons + .as_ref() + }, + write: |settings_content, value| { + settings_content + .tab_bar + .get_or_insert_default() + .show_tab_bar_buttons = value; + }, }), - SettingsPageItem::SectionHeader("Pane Modifiers"), - SettingsPageItem::SettingItem(SettingItem { - title: "Inactive Opacity", - description: "Opacity of inactive panels (0.0 - 1.0).", - field: Box::new(SettingField { - json_path: Some("active_pane_modifiers.inactive_opacity"), - pick: |settings_content| { - settings_content - .workspace - .active_pane_modifiers - .as_ref()? - .inactive_opacity - .as_ref() - }, - write: |settings_content, value| { - settings_content - .workspace - .active_pane_modifiers - .get_or_insert_default() - .inactive_opacity = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn tab_settings_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Tab Settings"), + SettingsPageItem::SettingItem(SettingItem { + title: "Activate On Close", + description: "What to do after closing the current tab.", + field: Box::new(SettingField { + json_path: Some("tabs.activate_on_close"), + pick: |settings_content| { + settings_content.tabs.as_ref()?.activate_on_close.as_ref() + }, + write: |settings_content, value| { + settings_content + .tabs + .get_or_insert_default() + .activate_on_close = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Border Size", - description: "Size of the border surrounding the active pane.", - field: Box::new(SettingField { - json_path: Some("active_pane_modifiers.border_size"), - pick: |settings_content| { - settings_content - .workspace - .active_pane_modifiers - .as_ref()? - .border_size - .as_ref() - }, - write: |settings_content, value| { - settings_content - .workspace - .active_pane_modifiers - .get_or_insert_default() - .border_size = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Tab Show Diagnostics", + description: "Which files containing diagnostic errors/warnings to mark in the tabs.", + field: Box::new(SettingField { + json_path: Some("tabs.show_diagnostics"), + pick: |settings_content| { + settings_content.tabs.as_ref()?.show_diagnostics.as_ref() + }, + write: |settings_content, value| { + settings_content + .tabs + .get_or_insert_default() + .show_diagnostics = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Zoomed Padding", - description: "Show padding for zoomed panes.", - field: Box::new(SettingField { - json_path: Some("zoomed_padding"), - pick: |settings_content| settings_content.workspace.zoomed_padding.as_ref(), - write: |settings_content, value| { - settings_content.workspace.zoomed_padding = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Close Button", + description: "Controls the appearance behavior of the tab's close button.", + field: Box::new(SettingField { + json_path: Some("tabs.show_close_button"), + pick: |settings_content| { + settings_content.tabs.as_ref()?.show_close_button.as_ref() + }, + write: |settings_content, value| { + settings_content + .tabs + .get_or_insert_default() + .show_close_button = value; + }, }), - SettingsPageItem::SectionHeader("Pane Split Direction"), - SettingsPageItem::SettingItem(SettingItem { - title: "Vertical Split Direction", - description: "Direction to split vertically.", - field: Box::new(SettingField { - json_path: Some("pane_split_direction_vertical"), - pick: |settings_content| { - settings_content - .workspace - .pane_split_direction_vertical - .as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.pane_split_direction_vertical = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn preview_tabs_section() -> [SettingsPageItem; 8] { + [ + SettingsPageItem::SectionHeader("Preview Tabs"), + SettingsPageItem::SettingItem(SettingItem { + title: "Preview Tabs Enabled", + description: "Show opened editors as preview tabs.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enabled"), + pick: |settings_content| { + settings_content.preview_tabs.as_ref()?.enabled.as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enabled = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Horizontal Split Direction", - description: "Direction to split horizontally.", - field: Box::new(SettingField { - json_path: Some("pane_split_direction_horizontal"), - pick: |settings_content| { - settings_content - .workspace - .pane_split_direction_horizontal - .as_ref() - }, - write: |settings_content, value| { - settings_content.workspace.pane_split_direction_horizontal = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Preview From Project Panel", + description: "Whether to open tabs in preview mode when opened from the project panel with a single click.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_preview_from_project_panel"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_preview_from_project_panel + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_preview_from_project_panel = value; + }, }), - ], - }, - SettingsPage { - title: "Panels", - items: vec![ - SettingsPageItem::SectionHeader("Project Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Project Panel Dock", - description: "Where to dock the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.dock"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.dock.as_ref() - }, - write: |settings_content, value| { - settings_content.project_panel.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Preview From File Finder", + description: "Whether to open tabs in preview mode when selected from the file finder.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_preview_from_file_finder"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_preview_from_file_finder + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_preview_from_file_finder = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Project Panel Default Width", - description: "Default width of the project panel in pixels.", - field: Box::new(SettingField { - json_path: Some("project_panel.default_width"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .default_width - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Preview From Multibuffer", + description: "Whether to open tabs in preview mode when opened from a multibuffer.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_preview_from_multibuffer"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_preview_from_multibuffer + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_preview_from_multibuffer = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hide .gitignore", - description: "Whether to hide the gitignore entries in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.hide_gitignore"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .hide_gitignore - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .hide_gitignore = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Preview Multibuffer From Code Navigation", + description: "Whether to open tabs in preview mode when code navigation is used to open a multibuffer.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_preview_multibuffer_from_code_navigation"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_preview_multibuffer_from_code_navigation + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_preview_multibuffer_from_code_navigation = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Entry Spacing", - description: "Spacing between worktree entries in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.entry_spacing"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .entry_spacing - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .entry_spacing = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Preview File From Code Navigation", + description: "Whether to open tabs in preview mode when code navigation is used to open a single file.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_preview_file_from_code_navigation"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_preview_file_from_code_navigation + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_preview_file_from_code_navigation = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "File Icons", - description: "Show file icons in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.file_icons"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.file_icons.as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .file_icons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Keep Preview On Code Navigation", + description: "Whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.", + field: Box::new(SettingField { + json_path: Some("preview_tabs.enable_keep_preview_on_code_navigation"), + pick: |settings_content| { + settings_content + .preview_tabs + .as_ref()? + .enable_keep_preview_on_code_navigation + .as_ref() + }, + write: |settings_content, value| { + settings_content + .preview_tabs + .get_or_insert_default() + .enable_keep_preview_on_code_navigation = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Folder Icons", - description: "Whether to show folder icons or chevrons for directories in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.folder_icons"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .folder_icons - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .folder_icons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn layout_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Layout"), + SettingsPageItem::SettingItem(SettingItem { + title: "Bottom Dock Layout", + description: "Layout mode for the bottom dock.", + field: Box::new(SettingField { + json_path: Some("bottom_dock_layout"), + pick: |settings_content| settings_content.workspace.bottom_dock_layout.as_ref(), + write: |settings_content, value| { + settings_content.workspace.bottom_dock_layout = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Status", - description: "Show the Git status in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.git_status"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.git_status.as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .git_status = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Centered Layout Left Padding", + description: "Left padding for centered layout.", + field: Box::new(SettingField { + json_path: Some("centered_layout.left_padding"), + pick: |settings_content| { + settings_content + .workspace + .centered_layout + .as_ref()? + .left_padding + .as_ref() + }, + write: |settings_content, value| { + settings_content + .workspace + .centered_layout + .get_or_insert_default() + .left_padding = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Indent Size", - description: "Amount of indentation for nested items.", - field: Box::new(SettingField { - json_path: Some("project_panel.indent_size"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .indent_size - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .indent_size = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Centered Layout Right Padding", + description: "Right padding for centered layout.", + field: Box::new(SettingField { + json_path: Some("centered_layout.right_padding"), + pick: |settings_content| { + settings_content + .workspace + .centered_layout + .as_ref()? + .right_padding + .as_ref() + }, + write: |settings_content, value| { + settings_content + .workspace + .centered_layout + .get_or_insert_default() + .right_padding = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Reveal Entries", - description: "Whether to reveal entries in the project panel automatically when a corresponding project entry becomes active.", - field: Box::new(SettingField { - json_path: Some("project_panel.auto_reveal_entries"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .auto_reveal_entries - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .auto_reveal_entries = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + }), + ] + } + + fn window_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Window"), + // todo(settings_ui): Should we filter by platform.as_ref()? + SettingsPageItem::SettingItem(SettingItem { + title: "Use System Window Tabs", + description: "(macOS only) whether to allow Windows to tab together.", + field: Box::new(SettingField { + json_path: Some("use_system_window_tabs"), + pick: |settings_content| { + settings_content.workspace.use_system_window_tabs.as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.use_system_window_tabs = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Starts Open", - description: "Whether the project panel should open on startup.", - field: Box::new(SettingField { - json_path: Some("project_panel.starts_open"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .starts_open - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .starts_open = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Window Decorations", + description: "(Linux only) whether Zed or your compositor should draw window decorations.", + field: Box::new(SettingField { + json_path: Some("window_decorations"), + pick: |settings_content| settings_content.workspace.window_decorations.as_ref(), + write: |settings_content, value| { + settings_content.workspace.window_decorations = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Fold Directories", - description: "Whether to fold directories automatically and show compact folders when a directory has only one subdirectory inside.", - field: Box::new(SettingField { - json_path: Some("project_panel.auto_fold_dirs"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .auto_fold_dirs - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .auto_fold_dirs = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn pane_modifiers_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Pane Modifiers"), + SettingsPageItem::SettingItem(SettingItem { + title: "Inactive Opacity", + description: "Opacity of inactive panels (0.0 - 1.0).", + field: Box::new(SettingField { + json_path: Some("active_pane_modifiers.inactive_opacity"), + pick: |settings_content| { + settings_content + .workspace + .active_pane_modifiers + .as_ref()? + .inactive_opacity + .as_ref() + }, + write: |settings_content, value| { + settings_content + .workspace + .active_pane_modifiers + .get_or_insert_default() + .inactive_opacity = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Scrollbar", - description: "Show the scrollbar in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.scrollbar.show"), - pick: |settings_content| { - show_scrollbar_or_editor(settings_content, |settings_content| { - settings_content - .project_panel - .as_ref()? - .scrollbar - .as_ref()? - .show - .as_ref() - }) - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .scrollbar - .get_or_insert_default() - .show = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Border Size", + description: "Size of the border surrounding the active pane.", + field: Box::new(SettingField { + json_path: Some("active_pane_modifiers.border_size"), + pick: |settings_content| { + settings_content + .workspace + .active_pane_modifiers + .as_ref()? + .border_size + .as_ref() + }, + write: |settings_content, value| { + settings_content + .workspace + .active_pane_modifiers + .get_or_insert_default() + .border_size = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Diagnostics", - description: "Which files containing diagnostic errors/warnings to mark in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.show_diagnostics"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .show_diagnostics - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .show_diagnostics = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Zoomed Padding", + description: "Show padding for zoomed panes.", + field: Box::new(SettingField { + json_path: Some("zoomed_padding"), + pick: |settings_content| settings_content.workspace.zoomed_padding.as_ref(), + write: |settings_content, value| { + settings_content.workspace.zoomed_padding = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Sticky Scroll", - description: "Whether to stick parent directories at top of the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.sticky_scroll"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .sticky_scroll - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .sticky_scroll = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn pane_split_direction_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Pane Split Direction"), + SettingsPageItem::SettingItem(SettingItem { + title: "Vertical Split Direction", + description: "Direction to split vertically.", + field: Box::new(SettingField { + json_path: Some("pane_split_direction_vertical"), + pick: |settings_content| { + settings_content + .workspace + .pane_split_direction_vertical + .as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.pane_split_direction_vertical = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Show Indent Guides", - description: "Show indent guides in the project panel.", - field: Box::new( - SettingField { - json_path: Some("project_panel.indent_guides.show"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .indent_guides - .as_ref()? - .show - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .indent_guides - .get_or_insert_default() - .show = value; - }, - } - ), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Horizontal Split Direction", + description: "Direction to split horizontally.", + field: Box::new(SettingField { + json_path: Some("pane_split_direction_horizontal"), + pick: |settings_content| { + settings_content + .workspace + .pane_split_direction_horizontal + .as_ref() + }, + write: |settings_content, value| { + settings_content.workspace.pane_split_direction_horizontal = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Drag and Drop", - description: "Whether to enable drag-and-drop operations in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.drag_and_drop"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .drag_and_drop - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .drag_and_drop = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Window & Layout", + items: concat_sections![ + status_bar_section(), + title_bar_section(), + tab_bar_section(), + tab_settings_section(), + preview_tabs_section(), + layout_section(), + window_section(), + pane_modifiers_section(), + pane_split_direction_section(), + ], + } +} + +fn panels_page() -> SettingsPage { + fn project_panel_section() -> [SettingsPageItem; 20] { + [ + SettingsPageItem::SectionHeader("Project Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Project Panel Dock", + description: "Where to dock the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.dock"), + pick: |settings_content| settings_content.project_panel.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.project_panel.get_or_insert_default().dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hide Root", - description: "Whether to hide the root entry when only one folder is open in the window.", - field: Box::new(SettingField { - json_path: Some("project_panel.drag_and_drop"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.hide_root.as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .hide_root = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Project Panel Default Width", + description: "Default width of the project panel in pixels.", + field: Box::new(SettingField { + json_path: Some("project_panel.default_width"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .default_width + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .default_width = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hide Hidden", - description: "Whether to hide the hidden entries in the project panel.", - field: Box::new(SettingField { - json_path: Some("project_panel.hide_hidden"), - pick: |settings_content| { - settings_content - .project_panel - .as_ref()? - .hide_hidden - .as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .hide_hidden = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Hide .gitignore", + description: "Whether to hide the gitignore entries in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.hide_gitignore"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .hide_gitignore + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .hide_gitignore = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hidden Files", - description: "Globs to match files that will be considered \"hidden\" and can be hidden from the project panel.", - field: Box::new( - SettingField { - json_path: Some("worktree.hidden_files"), - pick: |settings_content| { - settings_content.project.worktree.hidden_files.as_ref() - }, - write: |settings_content, value| { - settings_content.project.worktree.hidden_files = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Entry Spacing", + description: "Spacing between worktree entries in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.entry_spacing"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .entry_spacing + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .entry_spacing = value; + }, }), - SettingsPageItem::SectionHeader("Auto Open Files"), - SettingsPageItem::SettingItem(SettingItem { - title: "On Create", - description: "Whether to automatically open newly created files in the editor.", - field: Box::new(SettingField { - json_path: Some("project_panel.auto_open.on_create"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.auto_open.as_ref()?.on_create.as_ref() - }, - write: |settings_content, value| { - settings_content.project_panel.get_or_insert_default().auto_open.get_or_insert_default().on_create = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "File Icons", + description: "Show file icons in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.file_icons"), + pick: |settings_content| { + settings_content.project_panel.as_ref()?.file_icons.as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .file_icons = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "On Paste", - description: "Whether to automatically open files after pasting or duplicating them.", - field: Box::new(SettingField { - json_path: Some("project_panel.auto_open.on_paste"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.auto_open.as_ref()?.on_paste.as_ref() - }, - write: |settings_content, value| { - settings_content.project_panel.get_or_insert_default().auto_open.get_or_insert_default().on_paste = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Folder Icons", + description: "Whether to show folder icons or chevrons for directories in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.folder_icons"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .folder_icons + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .folder_icons = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "On Drop", - description: "Whether to automatically open files dropped from external sources.", - field: Box::new(SettingField { - json_path: Some("project_panel.auto_open.on_drop"), - pick: |settings_content| { - settings_content.project_panel.as_ref()?.auto_open.as_ref()?.on_drop.as_ref() - }, - write: |settings_content, value| { - settings_content.project_panel.get_or_insert_default().auto_open.get_or_insert_default().on_drop = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Status", + description: "Show the Git status in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.git_status"), + pick: |settings_content| { + settings_content.project_panel.as_ref()?.git_status.as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .git_status = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Sort Mode", - description: "Sort order for entries in the project panel.", - field: Box::new(SettingField { - pick: |settings_content| { - settings_content.project_panel.as_ref()?.sort_mode.as_ref() - }, - write: |settings_content, value| { - settings_content - .project_panel - .get_or_insert_default() - .sort_mode = value; - }, - json_path: Some("project_panel.sort_mode"), - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Indent Size", + description: "Amount of indentation for nested items.", + field: Box::new(SettingField { + json_path: Some("project_panel.indent_size"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .indent_size + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .indent_size = value; + }, }), - SettingsPageItem::SectionHeader("Terminal Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Terminal Dock", - description: "Where to dock the terminal panel.", - field: Box::new(SettingField { - json_path: Some("terminal.dock"), - pick: |settings_content| settings_content.terminal.as_ref()?.dock.as_ref(), - write: |settings_content, value| { - settings_content.terminal.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Reveal Entries", + description: "Whether to reveal entries in the project panel automatically when a corresponding project entry becomes active.", + field: Box::new(SettingField { + json_path: Some("project_panel.auto_reveal_entries"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .auto_reveal_entries + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .auto_reveal_entries = value; + }, }), - SettingsPageItem::SectionHeader("Outline Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Outline Panel Button", - description: "Show the outline panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("outline_panel.button"), - pick: |settings_content| { - settings_content.outline_panel.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Starts Open", + description: "Whether the project panel should open on startup.", + field: Box::new(SettingField { + json_path: Some("project_panel.starts_open"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .starts_open + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .starts_open = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Outline Panel Dock", - description: "Where to dock the outline panel.", - field: Box::new(SettingField { - json_path: Some("outline_panel.dock"), - pick: |settings_content| { - settings_content.outline_panel.as_ref()?.dock.as_ref() - }, - write: |settings_content, value| { - settings_content.outline_panel.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Fold Directories", + description: "Whether to fold directories automatically and show compact folders when a directory has only one subdirectory inside.", + field: Box::new(SettingField { + json_path: Some("project_panel.auto_fold_dirs"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .auto_fold_dirs + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .auto_fold_dirs = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Outline Panel Default Width", - description: "Default width of the outline panel in pixels.", - field: Box::new(SettingField { - json_path: Some("outline_panel.default_width"), - pick: |settings_content| { + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Scrollbar", + description: "Show the scrollbar in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.scrollbar.show"), + pick: |settings_content| { + show_scrollbar_or_editor(settings_content, |settings_content| { settings_content - .outline_panel + .project_panel + .as_ref()? + .scrollbar .as_ref()? - .default_width + .show .as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + }) + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .scrollbar + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "File Icons", - description: "Show file icons in the outline panel.", - field: Box::new(SettingField { - json_path: Some("outline_panel.file_icons"), - pick: |settings_content| { - settings_content.outline_panel.as_ref()?.file_icons.as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .file_icons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Diagnostics", + description: "Which files containing diagnostic errors/warnings to mark in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.show_diagnostics"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .show_diagnostics + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .show_diagnostics = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Folder Icons", - description: "Whether to show folder icons or chevrons for directories in the outline panel.", - field: Box::new(SettingField { - json_path: Some("outline_panel.folder_icons"), - pick: |settings_content| { - settings_content - .outline_panel - .as_ref()? - .folder_icons - .as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .folder_icons = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Sticky Scroll", + description: "Whether to stick parent directories at top of the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.sticky_scroll"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .sticky_scroll + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .sticky_scroll = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Status", - description: "Show the Git status in the outline panel.", - field: Box::new(SettingField { - json_path: Some("outline_panel.git_status"), - pick: |settings_content| { - settings_content.outline_panel.as_ref()?.git_status.as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .git_status = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Show Indent Guides", + description: "Show indent guides in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.indent_guides.show"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .indent_guides + .as_ref()? + .show + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .indent_guides + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Indent Size", - description: "Amount of indentation for nested items.", - field: Box::new(SettingField { - json_path: Some("outline_panel.indent_size"), - pick: |settings_content| { - settings_content - .outline_panel - .as_ref()? - .indent_size - .as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .indent_size = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Drag and Drop", + description: "Whether to enable drag-and-drop operations in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.drag_and_drop"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .drag_and_drop + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .drag_and_drop = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Hide Root", + description: "Whether to hide the root entry when only one folder is open in the window.", + field: Box::new(SettingField { + json_path: Some("project_panel.drag_and_drop"), + pick: |settings_content| { + settings_content.project_panel.as_ref()?.hide_root.as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .hide_root = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Hide Hidden", + description: "Whether to hide the hidden entries in the project panel.", + field: Box::new(SettingField { + json_path: Some("project_panel.hide_hidden"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .hide_hidden + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .hide_hidden = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Reveal Entries", - description: "Whether to reveal when a corresponding outline entry becomes active.", - field: Box::new(SettingField { - json_path: Some("outline_panel.auto_reveal_entries"), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Hidden Files", + description: "Globs to match files that will be considered \"hidden\" and can be hidden from the project panel.", + field: Box::new( + SettingField { + json_path: Some("worktree.hidden_files"), pick: |settings_content| { - settings_content - .outline_panel - .as_ref()? - .auto_reveal_entries - .as_ref() + settings_content.project.worktree.hidden_files.as_ref() }, write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .auto_reveal_entries = value; + settings_content.project.worktree.hidden_files = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + ] + } + + fn auto_open_files_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Auto Open Files"), + SettingsPageItem::SettingItem(SettingItem { + title: "On Create", + description: "Whether to automatically open newly created files in the editor.", + field: Box::new(SettingField { + json_path: Some("project_panel.auto_open.on_create"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .auto_open + .as_ref()? + .on_create + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .auto_open + .get_or_insert_default() + .on_create = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Fold Directories", - description: "Whether to fold directories automatically when a directory contains only one subdirectory.", - field: Box::new(SettingField { - json_path: Some("outline_panel.auto_fold_dirs"), - pick: |settings_content| { - settings_content - .outline_panel - .as_ref()? - .auto_fold_dirs - .as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .auto_fold_dirs = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "On Paste", + description: "Whether to automatically open files after pasting or duplicating them.", + field: Box::new(SettingField { + json_path: Some("project_panel.auto_open.on_paste"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .auto_open + .as_ref()? + .on_paste + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .auto_open + .get_or_insert_default() + .on_paste = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - files: USER, - title: "Show Indent Guides", - description: "When to show indent guides in the outline panel.", - field: Box::new( - SettingField { - json_path: Some("outline_panel.indent_guides.show"), - pick: |settings_content| { - settings_content - .outline_panel - .as_ref()? - .indent_guides - .as_ref()? - .show - .as_ref() - }, - write: |settings_content, value| { - settings_content - .outline_panel - .get_or_insert_default() - .indent_guides - .get_or_insert_default() - .show = value; - }, - } - ), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "On Drop", + description: "Whether to automatically open files dropped from external sources.", + field: Box::new(SettingField { + json_path: Some("project_panel.auto_open.on_drop"), + pick: |settings_content| { + settings_content + .project_panel + .as_ref()? + .auto_open + .as_ref()? + .on_drop + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .auto_open + .get_or_insert_default() + .on_drop = value; + }, }), - SettingsPageItem::SectionHeader("Git Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Panel Button", - description: "Show the Git panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("git_panel.button"), - pick: |settings_content| { - settings_content.git_panel.as_ref()?.button.as_ref() - }, - write: |settings_content, value| { - settings_content.git_panel.get_or_insert_default().button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Sort Mode", + description: "Sort order for entries in the project panel.", + field: Box::new(SettingField { + pick: |settings_content| { + settings_content.project_panel.as_ref()?.sort_mode.as_ref() + }, + write: |settings_content, value| { + settings_content + .project_panel + .get_or_insert_default() + .sort_mode = value; + }, + json_path: Some("project_panel.sort_mode"), }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Panel Dock", - description: "Where to dock the Git panel.", - field: Box::new(SettingField { - json_path: Some("git_panel.dock"), - pick: |settings_content| settings_content.git_panel.as_ref()?.dock.as_ref(), - write: |settings_content, value| { - settings_content.git_panel.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn terminal_panel_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Terminal Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Terminal Dock", + description: "Where to dock the terminal panel.", + field: Box::new(SettingField { + json_path: Some("terminal.dock"), + pick: |settings_content| settings_content.terminal.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.terminal.get_or_insert_default().dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Panel Default Width", - description: "Default width of the Git panel in pixels.", - field: Box::new(SettingField { - json_path: Some("git_panel.default_width"), - pick: |settings_content| { - settings_content.git_panel.as_ref()?.default_width.as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn outline_panel_section() -> [SettingsPageItem; 11] { + [ + SettingsPageItem::SectionHeader("Outline Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Outline Panel Button", + description: "Show the outline panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("outline_panel.button"), + pick: |settings_content| { + settings_content.outline_panel.as_ref()?.button.as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .button = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Git Panel Status Style", - description: "How entry statuses are displayed.", - field: Box::new(SettingField { - json_path: Some("git_panel.status_style"), - pick: |settings_content| { - settings_content.git_panel.as_ref()?.status_style.as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .status_style = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Outline Panel Dock", + description: "Where to dock the outline panel.", + field: Box::new(SettingField { + json_path: Some("outline_panel.dock"), + pick: |settings_content| settings_content.outline_panel.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.outline_panel.get_or_insert_default().dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Fallback Branch Name", - description: "Default branch name will be when init.defaultbranch is not set in Git.", - field: Box::new(SettingField { - json_path: Some("git_panel.fallback_branch_name"), - pick: |settings_content| { - settings_content - .git_panel - .as_ref()? - .fallback_branch_name - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .fallback_branch_name = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Outline Panel Default Width", + description: "Default width of the outline panel in pixels.", + field: Box::new(SettingField { + json_path: Some("outline_panel.default_width"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .default_width + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .default_width = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "File Icons", + description: "Show file icons in the outline panel.", + field: Box::new(SettingField { + json_path: Some("outline_panel.file_icons"), + pick: |settings_content| { + settings_content.outline_panel.as_ref()?.file_icons.as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .file_icons = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Folder Icons", + description: "Whether to show folder icons or chevrons for directories in the outline panel.", + field: Box::new(SettingField { + json_path: Some("outline_panel.folder_icons"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .folder_icons + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .folder_icons = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Status", + description: "Show the Git status in the outline panel.", + field: Box::new(SettingField { + json_path: Some("outline_panel.git_status"), + pick: |settings_content| { + settings_content.outline_panel.as_ref()?.git_status.as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .git_status = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Indent Size", + description: "Amount of indentation for nested items.", + field: Box::new(SettingField { + json_path: Some("outline_panel.indent_size"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .indent_size + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .indent_size = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Sort By Path", - description: "Enable to sort entries in the panel by path, disable to sort by status.", - field: Box::new(SettingField { - json_path: Some("git_panel.sort_by_path"), - pick: |settings_content| { - settings_content.git_panel.as_ref()?.sort_by_path.as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .sort_by_path = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Reveal Entries", + description: "Whether to reveal when a corresponding outline entry becomes active.", + field: Box::new(SettingField { + json_path: Some("outline_panel.auto_reveal_entries"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .auto_reveal_entries + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .auto_reveal_entries = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Collapse Untracked Diff", - description: "Whether to collapse untracked files in the diff panel.", - field: Box::new(SettingField { - json_path: Some("git_panel.collapse_untracked_diff"), - pick: |settings_content| { - settings_content - .git_panel - .as_ref()? - .collapse_untracked_diff - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .collapse_untracked_diff = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Fold Directories", + description: "Whether to fold directories automatically when a directory contains only one subdirectory.", + field: Box::new(SettingField { + json_path: Some("outline_panel.auto_fold_dirs"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .auto_fold_dirs + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .auto_fold_dirs = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Tree View", - description: "Enable to show entries in tree view list, disable to show in flat view list.", - field: Box::new(SettingField { - json_path: Some("git_panel.tree_view"), - pick: |settings_content| { - settings_content.git_panel.as_ref()?.tree_view.as_ref() - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .tree_view = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + files: USER, + title: "Show Indent Guides", + description: "When to show indent guides in the outline panel.", + field: Box::new(SettingField { + json_path: Some("outline_panel.indent_guides.show"), + pick: |settings_content| { + settings_content + .outline_panel + .as_ref()? + .indent_guides + .as_ref()? + .show + .as_ref() + }, + write: |settings_content, value| { + settings_content + .outline_panel + .get_or_insert_default() + .indent_guides + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Scroll Bar", - description: "How and when the scrollbar should be displayed.", - field: Box::new(SettingField { - json_path: Some("git_panel.scrollbar.show"), - pick: |settings_content| { - show_scrollbar_or_editor(settings_content, |settings_content| { - settings_content - .git_panel - .as_ref()? - .scrollbar - .as_ref()? - .show - .as_ref() - }) - }, - write: |settings_content, value| { - settings_content - .git_panel - .get_or_insert_default() - .scrollbar - .get_or_insert_default() - .show = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + }), + ] + } + + fn git_panel_section() -> [SettingsPageItem; 10] { + [ + SettingsPageItem::SectionHeader("Git Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Panel Button", + description: "Show the Git panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("git_panel.button"), + pick: |settings_content| settings_content.git_panel.as_ref()?.button.as_ref(), + write: |settings_content, value| { + settings_content.git_panel.get_or_insert_default().button = value; + }, }), - SettingsPageItem::SectionHeader("Debugger Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Debugger Panel Dock", - description: "The dock position of the debug panel.", - field: Box::new(SettingField { - json_path: Some("debugger.dock"), - pick: |settings_content| settings_content.debugger.as_ref()?.dock.as_ref(), - write: |settings_content, value| { - settings_content.debugger.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Panel Dock", + description: "Where to dock the Git panel.", + field: Box::new(SettingField { + json_path: Some("git_panel.dock"), + pick: |settings_content| settings_content.git_panel.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.git_panel.get_or_insert_default().dock = value; + }, }), - SettingsPageItem::SectionHeader("Notification Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Notification Panel Button", - description: "Show the notification panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("notification_panel.button"), - pick: |settings_content| { - settings_content - .notification_panel - .as_ref()? - .button - .as_ref() - }, - write: |settings_content, value| { - settings_content - .notification_panel - .get_or_insert_default() - .button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Panel Default Width", + description: "Default width of the Git panel in pixels.", + field: Box::new(SettingField { + json_path: Some("git_panel.default_width"), + pick: |settings_content| { + settings_content.git_panel.as_ref()?.default_width.as_ref() + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .default_width = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Notification Panel Dock", - description: "Where to dock the notification panel.", - field: Box::new(SettingField { - json_path: Some("notification_panel.dock"), - pick: |settings_content| { - settings_content.notification_panel.as_ref()?.dock.as_ref() - }, - write: |settings_content, value| { - settings_content - .notification_panel - .get_or_insert_default() - .dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Git Panel Status Style", + description: "How entry statuses are displayed.", + field: Box::new(SettingField { + json_path: Some("git_panel.status_style"), + pick: |settings_content| { + settings_content.git_panel.as_ref()?.status_style.as_ref() + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .status_style = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Notification Panel Default Width", - description: "Default width of the notification panel in pixels.", - field: Box::new(SettingField { - json_path: Some("notification_panel.default_width"), - pick: |settings_content| { - settings_content - .notification_panel - .as_ref()? - .default_width - .as_ref() - }, - write: |settings_content, value| { - settings_content - .notification_panel - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Fallback Branch Name", + description: "Default branch name will be when init.defaultbranch is not set in Git.", + field: Box::new(SettingField { + json_path: Some("git_panel.fallback_branch_name"), + pick: |settings_content| { + settings_content + .git_panel + .as_ref()? + .fallback_branch_name + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .fallback_branch_name = value; + }, }), - SettingsPageItem::SectionHeader("Collaboration Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Collaboration Panel Button", - description: "Show the collaboration panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("collaboration_panel.button"), - pick: |settings_content| { - settings_content - .collaboration_panel - .as_ref()? - .button - .as_ref() - }, - write: |settings_content, value| { - settings_content - .collaboration_panel - .get_or_insert_default() - .button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Sort By Path", + description: "Enable to sort entries in the panel by path, disable to sort by status.", + field: Box::new(SettingField { + json_path: Some("git_panel.sort_by_path"), + pick: |settings_content| { + settings_content.git_panel.as_ref()?.sort_by_path.as_ref() + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .sort_by_path = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Collaboration Panel Dock", - description: "Where to dock the collaboration panel.", - field: Box::new(SettingField { - json_path: Some("collaboration_panel.dock"), - pick: |settings_content| { - settings_content.collaboration_panel.as_ref()?.dock.as_ref() - }, - write: |settings_content, value| { - settings_content - .collaboration_panel - .get_or_insert_default() - .dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Collapse Untracked Diff", + description: "Whether to collapse untracked files in the diff panel.", + field: Box::new(SettingField { + json_path: Some("git_panel.collapse_untracked_diff"), + pick: |settings_content| { + settings_content + .git_panel + .as_ref()? + .collapse_untracked_diff + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .collapse_untracked_diff = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Collaboration Panel Default Width", - description: "Default width of the collaboration panel in pixels.", - field: Box::new(SettingField { - json_path: Some("collaboration_panel.dock"), - pick: |settings_content| { + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Tree View", + description: "Enable to show entries in tree view list, disable to show in flat view list.", + field: Box::new(SettingField { + json_path: Some("git_panel.tree_view"), + pick: |settings_content| { + settings_content.git_panel.as_ref()?.tree_view.as_ref() + }, + write: |settings_content, value| { + settings_content.git_panel.get_or_insert_default().tree_view = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Scroll Bar", + description: "How and when the scrollbar should be displayed.", + field: Box::new(SettingField { + json_path: Some("git_panel.scrollbar.show"), + pick: |settings_content| { + show_scrollbar_or_editor(settings_content, |settings_content| { settings_content - .collaboration_panel + .git_panel .as_ref()? - .default_width + .scrollbar + .as_ref()? + .show .as_ref() - }, - write: |settings_content, value| { - settings_content - .collaboration_panel - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + }) + }, + write: |settings_content, value| { + settings_content + .git_panel + .get_or_insert_default() + .scrollbar + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SectionHeader("Agent Panel"), - SettingsPageItem::SettingItem(SettingItem { - title: "Agent Panel Button", - description: "Whether to show the agent panel button in the status bar.", - field: Box::new(SettingField { - json_path: Some("agent.button"), - pick: |settings_content| settings_content.agent.as_ref()?.button.as_ref(), - write: |settings_content, value| { - settings_content.agent.get_or_insert_default().button = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn debugger_panel_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Debugger Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Debugger Panel Dock", + description: "The dock position of the debug panel.", + field: Box::new(SettingField { + json_path: Some("debugger.dock"), + pick: |settings_content| settings_content.debugger.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.debugger.get_or_insert_default().dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Agent Panel Dock", - description: "Where to dock the agent panel.", - field: Box::new(SettingField { - json_path: Some("agent.dock"), - pick: |settings_content| settings_content.agent.as_ref()?.dock.as_ref(), - write: |settings_content, value| { - settings_content.agent.get_or_insert_default().dock = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn notification_panel_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Notification Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Notification Panel Button", + description: "Show the notification panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("notification_panel.button"), + pick: |settings_content| { + settings_content + .notification_panel + .as_ref()? + .button + .as_ref() + }, + write: |settings_content, value| { + settings_content + .notification_panel + .get_or_insert_default() + .button = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Agent Panel Default Width", - description: "Default width when the agent panel is docked to the left or right.", - field: Box::new(SettingField { - json_path: Some("agent.default_width"), - pick: |settings_content| { - settings_content.agent.as_ref()?.default_width.as_ref() - }, - write: |settings_content, value| { - settings_content.agent.get_or_insert_default().default_width = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Notification Panel Dock", + description: "Where to dock the notification panel.", + field: Box::new(SettingField { + json_path: Some("notification_panel.dock"), + pick: |settings_content| { + settings_content.notification_panel.as_ref()?.dock.as_ref() + }, + write: |settings_content, value| { + settings_content + .notification_panel + .get_or_insert_default() + .dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Agent Panel Default Height", - description: "Default height when the agent panel is docked to the bottom.", - field: Box::new(SettingField { - json_path: Some("agent.default_height"), - pick: |settings_content| { - settings_content.agent.as_ref()?.default_height.as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .default_height = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Notification Panel Default Width", + description: "Default width of the notification panel in pixels.", + field: Box::new(SettingField { + json_path: Some("notification_panel.default_width"), + pick: |settings_content| { + settings_content + .notification_panel + .as_ref()? + .default_width + .as_ref() + }, + write: |settings_content, value| { + settings_content + .notification_panel + .get_or_insert_default() + .default_width = value; + }, }), - ], - }, - SettingsPage { - title: "Debugger", - items: vec![ - SettingsPageItem::SectionHeader("General"), - SettingsPageItem::SettingItem(SettingItem { - title: "Stepping Granularity", - description: "Determines the stepping granularity for debug operations.", - field: Box::new(SettingField { - json_path: Some("debugger.stepping_granularity"), - pick: |settings_content| { - settings_content - .debugger - .as_ref()? - .stepping_granularity - .as_ref() - }, - write: |settings_content, value| { - settings_content - .debugger - .get_or_insert_default() - .stepping_granularity = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn collaboration_panel_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Collaboration Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Collaboration Panel Button", + description: "Show the collaboration panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("collaboration_panel.button"), + pick: |settings_content| { + settings_content + .collaboration_panel + .as_ref()? + .button + .as_ref() + }, + write: |settings_content, value| { + settings_content + .collaboration_panel + .get_or_insert_default() + .button = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Save Breakpoints", - description: "Whether breakpoints should be reused across Zed sessions.", - field: Box::new(SettingField { - json_path: Some("debugger.save_breakpoints"), - pick: |settings_content| { - settings_content - .debugger - .as_ref()? - .save_breakpoints - .as_ref() - }, - write: |settings_content, value| { - settings_content - .debugger - .get_or_insert_default() - .save_breakpoints = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Collaboration Panel Dock", + description: "Where to dock the collaboration panel.", + field: Box::new(SettingField { + json_path: Some("collaboration_panel.dock"), + pick: |settings_content| { + settings_content.collaboration_panel.as_ref()?.dock.as_ref() + }, + write: |settings_content, value| { + settings_content + .collaboration_panel + .get_or_insert_default() + .dock = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Timeout", - description: "Time in milliseconds until timeout error when connecting to a TCP debug adapter.", - field: Box::new(SettingField { - json_path: Some("debugger.timeout"), - pick: |settings_content| { - settings_content.debugger.as_ref()?.timeout.as_ref() - }, - write: |settings_content, value| { - settings_content.debugger.get_or_insert_default().timeout = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Collaboration Panel Default Width", + description: "Default width of the collaboration panel in pixels.", + field: Box::new(SettingField { + json_path: Some("collaboration_panel.dock"), + pick: |settings_content| { + settings_content + .collaboration_panel + .as_ref()? + .default_width + .as_ref() + }, + write: |settings_content, value| { + settings_content + .collaboration_panel + .get_or_insert_default() + .default_width = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Log DAP Communications", - description: "Whether to log messages between active debug adapters and Zed.", - field: Box::new(SettingField { - json_path: Some("debugger.log_dap_communications"), - pick: |settings_content| { - settings_content - .debugger - .as_ref()? - .log_dap_communications - .as_ref() - }, - write: |settings_content, value| { - settings_content - .debugger - .get_or_insert_default() - .log_dap_communications = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn agent_panel_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Agent Panel"), + SettingsPageItem::SettingItem(SettingItem { + title: "Agent Panel Button", + description: "Whether to show the agent panel button in the status bar.", + field: Box::new(SettingField { + json_path: Some("agent.button"), + pick: |settings_content| settings_content.agent.as_ref()?.button.as_ref(), + write: |settings_content, value| { + settings_content.agent.get_or_insert_default().button = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Agent Panel Dock", + description: "Where to dock the agent panel.", + field: Box::new(SettingField { + json_path: Some("agent.dock"), + pick: |settings_content| settings_content.agent.as_ref()?.dock.as_ref(), + write: |settings_content, value| { + settings_content.agent.get_or_insert_default().dock = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Agent Panel Default Width", + description: "Default width when the agent panel is docked to the left or right.", + field: Box::new(SettingField { + json_path: Some("agent.default_width"), + pick: |settings_content| { + settings_content.agent.as_ref()?.default_width.as_ref() + }, + write: |settings_content, value| { + settings_content.agent.get_or_insert_default().default_width = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Agent Panel Default Height", + description: "Default height when the agent panel is docked to the bottom.", + field: Box::new(SettingField { + json_path: Some("agent.default_height"), + pick: |settings_content| { + settings_content.agent.as_ref()?.default_height.as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .default_height = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Panels", + items: concat_sections![ + project_panel_section(), + auto_open_files_section(), + terminal_panel_section(), + outline_panel_section(), + git_panel_section(), + debugger_panel_section(), + notification_panel_section(), + collaboration_panel_section(), + agent_panel_section(), + ], + } +} + +fn debugger_page() -> SettingsPage { + fn general_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("General"), + SettingsPageItem::SettingItem(SettingItem { + title: "Stepping Granularity", + description: "Determines the stepping granularity for debug operations.", + field: Box::new(SettingField { + json_path: Some("debugger.stepping_granularity"), + pick: |settings_content| { + settings_content + .debugger + .as_ref()? + .stepping_granularity + .as_ref() + }, + write: |settings_content, value| { + settings_content + .debugger + .get_or_insert_default() + .stepping_granularity = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Save Breakpoints", + description: "Whether breakpoints should be reused across Zed sessions.", + field: Box::new(SettingField { + json_path: Some("debugger.save_breakpoints"), + pick: |settings_content| { + settings_content + .debugger + .as_ref()? + .save_breakpoints + .as_ref() + }, + write: |settings_content, value| { + settings_content + .debugger + .get_or_insert_default() + .save_breakpoints = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Format DAP Log Messages", - description: "Whether to format DAP messages when adding them to debug adapter logger.", - field: Box::new(SettingField { - json_path: Some("debugger.format_dap_log_messages"), - pick: |settings_content| { - settings_content - .debugger - .as_ref()? - .format_dap_log_messages - .as_ref() - }, - write: |settings_content, value| { - settings_content - .debugger - .get_or_insert_default() - .format_dap_log_messages = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Timeout", + description: "Time in milliseconds until timeout error when connecting to a TCP debug adapter.", + field: Box::new(SettingField { + json_path: Some("debugger.timeout"), + pick: |settings_content| settings_content.debugger.as_ref()?.timeout.as_ref(), + write: |settings_content, value| { + settings_content.debugger.get_or_insert_default().timeout = value; + }, }), - ], - }, - SettingsPage { - title: "Terminal", - items: vec![ + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Log DAP Communications", + description: "Whether to log messages between active debug adapters and Zed.", + field: Box::new(SettingField { + json_path: Some("debugger.log_dap_communications"), + pick: |settings_content| { + settings_content + .debugger + .as_ref()? + .log_dap_communications + .as_ref() + }, + write: |settings_content, value| { + settings_content + .debugger + .get_or_insert_default() + .log_dap_communications = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Format DAP Log Messages", + description: "Whether to format DAP messages when adding them to debug adapter logger.", + field: Box::new(SettingField { + json_path: Some("debugger.format_dap_log_messages"), + pick: |settings_content| { + settings_content + .debugger + .as_ref()? + .format_dap_log_messages + .as_ref() + }, + write: |settings_content, value| { + settings_content + .debugger + .get_or_insert_default() + .format_dap_log_messages = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Debugger", + items: concat_sections![general_section()], + } +} + +fn terminal_page() -> SettingsPage { + fn environment_section() -> [SettingsPageItem; 5] { + [ SettingsPageItem::SectionHeader("Environment"), SettingsPageItem::DynamicItem(DynamicItem { discriminant: SettingItem { @@ -4832,7 +5252,8 @@ pub(crate) fn settings_data(cx: &App) -> Vec { .project .shell .as_ref()? - .discriminant() as usize]) + .discriminant() as usize + ]) }, write: |settings_content, value| { let Some(value) = value else { @@ -4853,23 +5274,23 @@ pub(crate) fn settings_data(cx: &App) -> Vec { "sh" }; *settings_value = match value { - settings::ShellDiscriminants::System => { - settings::Shell::System - }, + settings::ShellDiscriminants::System => settings::Shell::System, settings::ShellDiscriminants::Program => { let program = match settings_value { - settings::Shell::Program(p) => p.clone(), + settings::Shell::Program(program) => program.clone(), settings::Shell::WithArguments { program, .. } => program.clone(), _ => String::from(default_shell), }; settings::Shell::Program(program) - }, + } settings::ShellDiscriminants::WithArguments => { let (program, args, title_override) = match settings_value { - settings::Shell::Program(p) => (p.clone(), vec![], None), - settings::Shell::WithArguments { program, args, title_override } => { - (program.clone(), args.clone(), title_override.clone()) - }, + settings::Shell::Program(program) => (program.clone(), vec![], None), + settings::Shell::WithArguments { + program, + args, + title_override, + } => (program.clone(), args.clone(), title_override.clone()), _ => (String::from(default_shell), vec![], None), }; settings::Shell::WithArguments { @@ -4877,48 +5298,56 @@ pub(crate) fn settings_data(cx: &App) -> Vec { args, title_override, } - }, + } }; }, }), metadata: None, }, pick_discriminant: |settings_content| { - Some(settings_content.terminal.as_ref()?.project.shell.as_ref()?.discriminant() as usize) + Some( + settings_content + .terminal + .as_ref()? + .project + .shell + .as_ref()? + .discriminant() as usize, + ) }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { + fields: dynamic_variants::() + .into_iter() + .map(|variant| match variant { settings::ShellDiscriminants::System => vec![], - settings::ShellDiscriminants::Program => vec![ - SettingItem { - files: USER | PROJECT, - title: "Program", - description: "The shell program to use.", - field: Box::new(SettingField { - json_path: Some("terminal.shell"), - pick: |settings_content| { - match settings_content.terminal.as_ref()?.project.shell.as_ref() { - Some(settings::Shell::Program(program)) => Some(program), - _ => None - } - }, - write: |settings_content, value| { - let Some(value) = value else { - return; - }; - match settings_content - .terminal - .get_or_insert_default() - .project - .shell.as_mut() { - Some(settings::Shell::Program(program)) => *program = value, - _ => return - } - }, - }), - metadata: None, - } - ], + settings::ShellDiscriminants::Program => vec![SettingItem { + files: USER | PROJECT, + title: "Program", + description: "The shell program to use.", + field: Box::new(SettingField { + json_path: Some("terminal.shell"), + pick: |settings_content| match settings_content.terminal.as_ref()?.project.shell.as_ref() + { + Some(settings::Shell::Program(program)) => Some(program), + _ => None, + }, + write: |settings_content, value| { + let Some(value) = value else { + return; + }; + match settings_content + .terminal + .get_or_insert_default() + .project + .shell + .as_mut() + { + Some(settings::Shell::Program(program)) => *program = value, + _ => return, + } + }, + }), + metadata: None, + }], settings::ShellDiscriminants::WithArguments => vec![ SettingItem { files: USER | PROJECT, @@ -4929,7 +5358,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { Some(settings::Shell::WithArguments { program, .. }) => Some(program), - _ => None + _ => None, } }, write: |settings_content, value| { @@ -4940,10 +5369,14 @@ pub(crate) fn settings_data(cx: &App) -> Vec { .terminal .get_or_insert_default() .project - .shell.as_mut() { - Some(settings::Shell::WithArguments { program, .. }) => *program = value, - _ => return + .shell + .as_mut() + { + Some(settings::Shell::WithArguments { program, .. }) => { + *program = value } + _ => return, + } }, }), metadata: None, @@ -4958,7 +5391,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { Some(settings::Shell::WithArguments { args, .. }) => Some(args), - _ => None + _ => None, } }, write: |settings_content, value| { @@ -4969,10 +5402,12 @@ pub(crate) fn settings_data(cx: &App) -> Vec { .terminal .get_or_insert_default() .project - .shell.as_mut() { - Some(settings::Shell::WithArguments { args, .. }) => *args = value, - _ => return - } + .shell + .as_mut() + { + Some(settings::Shell::WithArguments { args, .. }) => *args = value, + _ => return, + } }, } .unimplemented(), @@ -4987,1344 +5422,1493 @@ pub(crate) fn settings_data(cx: &App) -> Vec { json_path: Some("terminal.shell.title_override"), pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { - Some(settings::Shell::WithArguments { title_override, .. }) => title_override.as_ref().or(DEFAULT_EMPTY_SHARED_STRING), - _ => None - } - }, - write: |settings_content, value| { - match settings_content - .terminal - .get_or_insert_default() - .project - .shell.as_mut() { - Some(settings::Shell::WithArguments { title_override, .. }) => *title_override = value.filter(|s| !s.is_empty()), - _ => return + Some(settings::Shell::WithArguments { title_override, .. }) => { + title_override.as_ref().or(DEFAULT_EMPTY_SHARED_STRING) } - }, - }), - metadata: None, - } - ], - } - }).collect(), - }), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER | PROJECT, - title: "Working Directory", - description: "What working directory to use when launching the terminal.", - field: Box::new(SettingField { - json_path: Some("terminal.working_directory$"), - pick: |settings_content| { - Some(&dynamic_variants::()[ - settings_content - .terminal - .as_ref()? - .project - .working_directory - .as_ref()? - .discriminant() as usize]) - }, - write: |settings_content, value| { - let Some(value) = value else { - if let Some(terminal) = settings_content.terminal.as_mut() { - terminal.project.working_directory = None; - } - return; - }; - let settings_value = settings_content - .terminal - .get_or_insert_default() - .project - .working_directory - .get_or_insert_with(|| settings::WorkingDirectory::CurrentProjectDirectory); - *settings_value = match value { - settings::WorkingDirectoryDiscriminants::CurrentProjectDirectory => { - settings::WorkingDirectory::CurrentProjectDirectory - }, - settings::WorkingDirectoryDiscriminants::FirstProjectDirectory => { - settings::WorkingDirectory::FirstProjectDirectory - }, - settings::WorkingDirectoryDiscriminants::AlwaysHome => { - settings::WorkingDirectory::AlwaysHome - }, - settings::WorkingDirectoryDiscriminants::Always => { - let directory = match settings_value { - settings::WorkingDirectory::Always { .. } => return, - _ => String::new(), - }; - settings::WorkingDirectory::Always { directory } - }, - }; - }, - }), - metadata: None, - }, - pick_discriminant: |settings_content| { - Some(settings_content.terminal.as_ref()?.project.working_directory.as_ref()?.discriminant() as usize) - }, - fields: dynamic_variants::().into_iter().map(|variant| { - match variant { - settings::WorkingDirectoryDiscriminants::CurrentProjectDirectory => vec![], - settings::WorkingDirectoryDiscriminants::FirstProjectDirectory => vec![], - settings::WorkingDirectoryDiscriminants::AlwaysHome => vec![], - settings::WorkingDirectoryDiscriminants::Always => vec![ - SettingItem { - files: USER | PROJECT, - title: "Directory", - description: "The directory path to use (will be shell expanded).", - field: Box::new(SettingField { - json_path: Some("terminal.working_directory.always"), - pick: |settings_content| { - match settings_content.terminal.as_ref()?.project.working_directory.as_ref() { - Some(settings::WorkingDirectory::Always { directory }) => Some(directory), - _ => None + _ => None, } }, write: |settings_content, value| { - let value = value.unwrap_or_default(); match settings_content .terminal .get_or_insert_default() .project - .working_directory.as_mut() { - Some(settings::WorkingDirectory::Always { directory }) => *directory = value, - _ => return + .shell + .as_mut() + { + Some(settings::Shell::WithArguments { title_override, .. }) => { + *title_override = value.filter(|s| !s.is_empty()) } + _ => return, + } }, }), metadata: None, - } + }, ], - } - }).collect(), - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Environment Variables", - description: "Key-value pairs to add to the terminal's environment.", - field: Box::new( - SettingField { - json_path: Some("terminal.env"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.project.env.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .project - .env = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Detect Virtual Environment", - description: "Activates the Python virtual environment, if one is found, in the terminal's working directory.", - field: Box::new( - SettingField { - json_path: Some("terminal.detect_venv"), - pick: |settings_content| { - settings_content - .terminal - .as_ref()? - .project - .detect_venv - .as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .project - .detect_venv = value; - }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Font"), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Size", - description: "Font size for terminal text. If not set, defaults to buffer font size.", - field: Box::new(SettingField { - json_path: Some("terminal.font_size"), - pick: |settings_content| { - settings_content - .terminal - .as_ref() - .and_then(|terminal| terminal.font_size.as_ref()) - .or(settings_content.theme.buffer_font_size.as_ref()) - }, - write: |settings_content, value| { - settings_content.terminal.get_or_insert_default().font_size = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Family", - description: "Font family for terminal text. If not set, defaults to buffer font family.", - field: Box::new(SettingField { - json_path: Some("terminal.font_family"), - pick: |settings_content| { - settings_content - .terminal - .as_ref() - .and_then(|terminal| terminal.font_family.as_ref()) - .or(settings_content.theme.buffer_font_family.as_ref()) - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .font_family = value; - }, - }), - metadata: None, - files: USER, + }) + .collect(), }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Fallbacks", - description: "Font fallbacks for terminal text. If not set, defaults to buffer font fallbacks.", - field: Box::new( - SettingField { - json_path: Some("terminal.font_fallbacks"), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { + files: USER | PROJECT, + title: "Working Directory", + description: "What working directory to use when launching the terminal.", + field: Box::new(SettingField { + json_path: Some("terminal.working_directory$"), pick: |settings_content| { - settings_content - .terminal - .as_ref() - .and_then(|terminal| terminal.font_fallbacks.as_ref()) - .or(settings_content.theme.buffer_font_fallbacks.as_ref()) + Some(&dynamic_variants::()[ + settings_content + .terminal + .as_ref()? + .project + .working_directory + .as_ref()? + .discriminant() as usize + ]) }, write: |settings_content, value| { - settings_content + let Some(value) = value else { + if let Some(terminal) = settings_content.terminal.as_mut() { + terminal.project.working_directory = None; + } + return; + }; + let settings_value = settings_content .terminal .get_or_insert_default() - .font_fallbacks = value; + .project + .working_directory + .get_or_insert_with(|| settings::WorkingDirectory::CurrentProjectDirectory); + *settings_value = match value { + settings::WorkingDirectoryDiscriminants::CurrentProjectDirectory => { + settings::WorkingDirectory::CurrentProjectDirectory + } + settings::WorkingDirectoryDiscriminants::FirstProjectDirectory => { + settings::WorkingDirectory::FirstProjectDirectory + } + settings::WorkingDirectoryDiscriminants::AlwaysHome => { + settings::WorkingDirectory::AlwaysHome + } + settings::WorkingDirectoryDiscriminants::Always => { + let directory = match settings_value { + settings::WorkingDirectory::Always { .. } => return, + _ => String::new(), + }; + settings::WorkingDirectory::Always { directory } + } + }; }, - } - .unimplemented(), - ), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Font Weight", - description: "Font weight for terminal text in CSS weight units (100-900).", - field: Box::new(SettingField { - json_path: Some("terminal.font_weight"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.font_weight.as_ref() - }, - write: |settings_content, value| { + }), + metadata: None, + }, + pick_discriminant: |settings_content| { + Some( settings_content .terminal - .get_or_insert_default() - .font_weight = value; - }, - }), - metadata: None, - files: USER, + .as_ref()? + .project + .working_directory + .as_ref()? + .discriminant() as usize, + ) + }, + fields: dynamic_variants::() + .into_iter() + .map(|variant| match variant { + settings::WorkingDirectoryDiscriminants::CurrentProjectDirectory => vec![], + settings::WorkingDirectoryDiscriminants::FirstProjectDirectory => vec![], + settings::WorkingDirectoryDiscriminants::AlwaysHome => vec![], + settings::WorkingDirectoryDiscriminants::Always => vec![SettingItem { + files: USER | PROJECT, + title: "Directory", + description: "The directory path to use (will be shell expanded).", + field: Box::new(SettingField { + json_path: Some("terminal.working_directory.always"), + pick: |settings_content| { + match settings_content.terminal.as_ref()?.project.working_directory.as_ref() { + Some(settings::WorkingDirectory::Always { directory }) => Some(directory), + _ => None, + } + }, + write: |settings_content, value| { + let value = value.unwrap_or_default(); + match settings_content + .terminal + .get_or_insert_default() + .project + .working_directory + .as_mut() + { + Some(settings::WorkingDirectory::Always { directory }) => *directory = value, + _ => return, + } + }, + }), + metadata: None, + }], + }) + .collect(), }), SettingsPageItem::SettingItem(SettingItem { - title: "Font Features", - description: "Font features for terminal text.", + title: "Environment Variables", + description: "Key-value pairs to add to the terminal's environment.", field: Box::new( SettingField { - json_path: Some("terminal.font_features"), - pick: |settings_content| { - settings_content - .terminal - .as_ref() - .and_then(|terminal| terminal.font_features.as_ref()) - .or(settings_content.theme.buffer_font_features.as_ref()) - }, + json_path: Some("terminal.env"), + pick: |settings_content| settings_content.terminal.as_ref()?.project.env.as_ref(), write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .font_features = value; + settings_content.terminal.get_or_insert_default().project.env = value; }, } .unimplemented(), ), metadata: None, - files: USER, + files: USER | PROJECT, }), - SettingsPageItem::SectionHeader("Display Settings"), SettingsPageItem::SettingItem(SettingItem { - title: "Line Height", - description: "Line height for terminal text.", + title: "Detect Virtual Environment", + description: "Activates the Python virtual environment, if one is found, in the terminal's working directory.", field: Box::new( SettingField { - json_path: Some("terminal.line_height"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.line_height.as_ref() - }, + json_path: Some("terminal.detect_venv"), + pick: |settings_content| settings_content.terminal.as_ref()?.project.detect_venv.as_ref(), write: |settings_content, value| { settings_content .terminal .get_or_insert_default() - .line_height = value; + .project + .detect_venv = value; }, } .unimplemented(), ), metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Shape", - description: "Default cursor shape for the terminal (bar, block, underline, or hollow).", - field: Box::new(SettingField { - json_path: Some("terminal.cursor_shape"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.cursor_shape.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .cursor_shape = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Blinking", - description: "Sets the cursor blinking behavior in the terminal.", - field: Box::new(SettingField { - json_path: Some("terminal.blinking"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.blinking.as_ref() - }, - write: |settings_content, value| { - settings_content.terminal.get_or_insert_default().blinking = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Alternate Scroll", - description: "Whether alternate scroll mode is active by default (converts mouse scroll to arrow keys in apps like Vim).", - field: Box::new(SettingField { - json_path: Some("terminal.alternate_scroll"), - pick: |settings_content| { - settings_content - .terminal - .as_ref()? - .alternate_scroll - .as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .alternate_scroll = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Minimum Contrast", - description: "The minimum APCA perceptual contrast between foreground and background colors (0-106).", - field: Box::new(SettingField { - json_path: Some("terminal.minimum_contrast"), - pick: |settings_content| { - settings_content - .terminal - .as_ref()? - .minimum_contrast - .as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .minimum_contrast = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Behavior Settings"), - SettingsPageItem::SettingItem(SettingItem { - title: "Option As Meta", - description: "Whether the option key behaves as the meta key.", - field: Box::new(SettingField { - json_path: Some("terminal.option_as_meta"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.option_as_meta.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .option_as_meta = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Copy On Select", - description: "Whether selecting text in the terminal automatically copies to the system clipboard.", - field: Box::new(SettingField { - json_path: Some("terminal.copy_on_select"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.copy_on_select.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .copy_on_select = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Keep Selection On Copy", - description: "Whether to keep the text selection after copying it to the clipboard.", - field: Box::new(SettingField { - json_path: Some("terminal.keep_selection_on_copy"), - pick: |settings_content| { - settings_content - .terminal - .as_ref()? - .keep_selection_on_copy - .as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .keep_selection_on_copy = value; - }, - }), - metadata: None, - files: USER, + files: USER | PROJECT, }), - SettingsPageItem::SectionHeader("Layout Settings"), - SettingsPageItem::SettingItem(SettingItem { - title: "Default Width", - description: "Default width when the terminal is docked to the left or right (in pixels).", - field: Box::new(SettingField { - json_path: Some("terminal.default_width"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.default_width.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .default_width = value; - }, - }), - metadata: None, - files: USER, + ] + } + + fn font_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Font"), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Size", + description: "Font size for terminal text. If not set, defaults to buffer font size.", + field: Box::new(SettingField { + json_path: Some("terminal.font_size"), + pick: |settings_content| { + settings_content + .terminal + .as_ref() + .and_then(|terminal| terminal.font_size.as_ref()) + .or(settings_content.theme.buffer_font_size.as_ref()) + }, + write: |settings_content, value| { + settings_content.terminal.get_or_insert_default().font_size = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Default Height", - description: "Default height when the terminal is docked to the bottom (in pixels).", - field: Box::new(SettingField { - json_path: Some("terminal.default_height"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.default_height.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .default_height = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Family", + description: "Font family for terminal text. If not set, defaults to buffer font family.", + field: Box::new(SettingField { + json_path: Some("terminal.font_family"), + pick: |settings_content| { + settings_content + .terminal + .as_ref() + .and_then(|terminal| terminal.font_family.as_ref()) + .or(settings_content.theme.buffer_font_family.as_ref()) + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .font_family = value; + }, }), - SettingsPageItem::SectionHeader("Advanced Settings"), - SettingsPageItem::SettingItem(SettingItem { - title: "Max Scroll History Lines", - description: "Maximum number of lines to keep in scrollback history (max: 100,000; 0 disables scrolling).", - field: Box::new(SettingField { - json_path: Some("terminal.max_scroll_history_lines"), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Fallbacks", + description: "Font fallbacks for terminal text. If not set, defaults to buffer font fallbacks.", + field: Box::new( + SettingField { + json_path: Some("terminal.font_fallbacks"), pick: |settings_content| { settings_content .terminal - .as_ref()? - .max_scroll_history_lines .as_ref() + .and_then(|terminal| terminal.font_fallbacks.as_ref()) + .or(settings_content.theme.buffer_font_fallbacks.as_ref()) }, write: |settings_content, value| { settings_content .terminal .get_or_insert_default() - .max_scroll_history_lines = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Scroll Multiplier", - description: "The multiplier for scrolling in the terminal with the mouse wheel", - field: Box::new(SettingField { - json_path: Some("terminal.scroll_multiplier"), - pick: |settings_content| { - settings_content.terminal.as_ref()?.scroll_multiplier.as_ref() - }, - write: |settings_content, value| { - settings_content - .terminal - .get_or_insert_default() - .scroll_multiplier = value; + .font_fallbacks = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Weight", + description: "Font weight for terminal text in CSS weight units (100-900).", + field: Box::new(SettingField { + json_path: Some("terminal.font_weight"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.font_weight.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .font_weight = value; + }, }), - SettingsPageItem::SectionHeader("Toolbar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Breadcrumbs", - description: "Display the terminal title in breadcrumbs inside the terminal pane.", - field: Box::new(SettingField { - json_path: Some("terminal.toolbar.breadcrumbs"), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Font Features", + description: "Font features for terminal text.", + field: Box::new( + SettingField { + json_path: Some("terminal.font_features"), pick: |settings_content| { settings_content .terminal - .as_ref()? - .toolbar - .as_ref()? - .breadcrumbs .as_ref() + .and_then(|terminal| terminal.font_features.as_ref()) + .or(settings_content.theme.buffer_font_features.as_ref()) }, write: |settings_content, value| { settings_content .terminal .get_or_insert_default() - .toolbar - .get_or_insert_default() - .breadcrumbs = value; + .font_features = value; }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Scrollbar"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Scrollbar", - description: "When to show the scrollbar in the terminal.", - field: Box::new(SettingField { - json_path: Some("terminal.scrollbar.show"), + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + ] + } + + fn display_settings_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Display Settings"), + SettingsPageItem::SettingItem(SettingItem { + title: "Line Height", + description: "Line height for terminal text.", + field: Box::new( + SettingField { + json_path: Some("terminal.line_height"), pick: |settings_content| { - show_scrollbar_or_editor(settings_content, |settings_content| { - settings_content - .terminal - .as_ref()? - .scrollbar - .as_ref()? - .show - .as_ref() - }) + settings_content.terminal.as_ref()?.line_height.as_ref() }, write: |settings_content, value| { settings_content .terminal .get_or_insert_default() - .scrollbar - .get_or_insert_default() - .show = value; + .line_height = value; }, - }), - metadata: None, - files: USER, + } + .unimplemented(), + ), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursor Shape", + description: "Default cursor shape for the terminal (bar, block, underline, or hollow).", + field: Box::new(SettingField { + json_path: Some("terminal.cursor_shape"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.cursor_shape.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .cursor_shape = value; + }, }), - ], - }, - SettingsPage { - title: "Version Control", - items: vec![ - SettingsPageItem::SectionHeader("Git Integration"), - SettingsPageItem::DynamicItem(DynamicItem { - discriminant: SettingItem { - files: USER, - title: "Disable Git Integration", - description: "Disable all Git integration features in Zed.", - field: Box::new(SettingField:: { - json_path: Some("git.disable_git"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .enabled - .as_ref()? - .disable_git - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .enabled - .get_or_insert_default() - .disable_git = value; - }, - }), - metadata: None, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Cursor Blinking", + description: "Sets the cursor blinking behavior in the terminal.", + field: Box::new(SettingField { + json_path: Some("terminal.blinking"), + pick: |settings_content| settings_content.terminal.as_ref()?.blinking.as_ref(), + write: |settings_content, value| { + settings_content.terminal.get_or_insert_default().blinking = value; }, - pick_discriminant: |settings_content| { - let disabled = settings_content - .git + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Alternate Scroll", + description: "Whether alternate scroll mode is active by default (converts mouse scroll to arrow keys in apps like Vim).", + field: Box::new(SettingField { + json_path: Some("terminal.alternate_scroll"), + pick: |settings_content| { + settings_content + .terminal .as_ref()? - .enabled + .alternate_scroll + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .alternate_scroll = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Minimum Contrast", + description: "The minimum APCA perceptual contrast between foreground and background colors (0-106).", + field: Box::new(SettingField { + json_path: Some("terminal.minimum_contrast"), + pick: |settings_content| { + settings_content + .terminal .as_ref()? - .disable_git - .unwrap_or(false); - Some(if disabled { 0 } else { 1 }) + .minimum_contrast + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .minimum_contrast = value; }, - fields: vec![ - vec![], - vec![ - SettingItem { - files: USER, - title: "Enable Git Status", - description: "Show Git status information in the editor.", - field: Box::new(SettingField:: { - json_path: Some("git.enable_status"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .enabled - .as_ref()? - .enable_status - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .enabled - .get_or_insert_default() - .enable_status = value; - }, - }), - metadata: None, - }, - SettingItem { - files: USER, - title: "Enable Git Diff", - description: "Show Git diff information in the editor.", - field: Box::new(SettingField:: { - json_path: Some("git.enable_diff"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .enabled - .as_ref()? - .enable_diff - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .enabled - .get_or_insert_default() - .enable_diff = value; - }, - }), - metadata: None, - }, - ], - ], }), - SettingsPageItem::SectionHeader("Git Gutter"), - SettingsPageItem::SettingItem(SettingItem { - title: "Visibility", - description: "Control whether Git status is shown in the editor's gutter.", - field: Box::new(SettingField { - json_path: Some("git.git_gutter"), - pick: |settings_content| settings_content.git.as_ref()?.git_gutter.as_ref(), - write: |settings_content, value| { - settings_content.git.get_or_insert_default().git_gutter = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn behavior_settings_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Behavior Settings"), + SettingsPageItem::SettingItem(SettingItem { + title: "Option As Meta", + description: "Whether the option key behaves as the meta key.", + field: Box::new(SettingField { + json_path: Some("terminal.option_as_meta"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.option_as_meta.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .option_as_meta = value; + }, }), - // todo(settings_ui): Figure out the right default for this value in default.json - SettingsPageItem::SettingItem(SettingItem { - title: "Debounce", - description: "Debounce threshold in milliseconds after which changes are reflected in the Git gutter.", - field: Box::new(SettingField { - json_path: Some("git.gutter_debounce"), - pick: |settings_content| { - settings_content.git.as_ref()?.gutter_debounce.as_ref() - }, - write: |settings_content, value| { - settings_content.git.get_or_insert_default().gutter_debounce = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Copy On Select", + description: "Whether selecting text in the terminal automatically copies to the system clipboard.", + field: Box::new(SettingField { + json_path: Some("terminal.copy_on_select"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.copy_on_select.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .copy_on_select = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Keep Selection On Copy", + description: "Whether to keep the text selection after copying it to the clipboard.", + field: Box::new(SettingField { + json_path: Some("terminal.keep_selection_on_copy"), + pick: |settings_content| { + settings_content + .terminal + .as_ref()? + .keep_selection_on_copy + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .keep_selection_on_copy = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn layout_settings_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Layout Settings"), + SettingsPageItem::SettingItem(SettingItem { + title: "Default Width", + description: "Default width when the terminal is docked to the left or right (in pixels).", + field: Box::new(SettingField { + json_path: Some("terminal.default_width"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.default_width.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .default_width = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Default Height", + description: "Default height when the terminal is docked to the bottom (in pixels).", + field: Box::new(SettingField { + json_path: Some("terminal.default_height"), + pick: |settings_content| { + settings_content.terminal.as_ref()?.default_height.as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .default_height = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn advanced_settings_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Advanced Settings"), + SettingsPageItem::SettingItem(SettingItem { + title: "Max Scroll History Lines", + description: "Maximum number of lines to keep in scrollback history (max: 100,000; 0 disables scrolling).", + field: Box::new(SettingField { + json_path: Some("terminal.max_scroll_history_lines"), + pick: |settings_content| { + settings_content + .terminal + .as_ref()? + .max_scroll_history_lines + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .max_scroll_history_lines = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Scroll Multiplier", + description: "The multiplier for scrolling in the terminal with the mouse wheel", + field: Box::new(SettingField { + json_path: Some("terminal.scroll_multiplier"), + pick: |settings_content| { + settings_content + .terminal + .as_ref()? + .scroll_multiplier + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .scroll_multiplier = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn toolbar_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Toolbar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Breadcrumbs", + description: "Display the terminal title in breadcrumbs inside the terminal pane.", + field: Box::new(SettingField { + json_path: Some("terminal.toolbar.breadcrumbs"), + pick: |settings_content| { + settings_content + .terminal + .as_ref()? + .toolbar + .as_ref()? + .breadcrumbs + .as_ref() + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .toolbar + .get_or_insert_default() + .breadcrumbs = value; + }, }), - SettingsPageItem::SectionHeader("Inline Git Blame"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Whether or not to show Git blame data inline in the currently focused line.", - field: Box::new(SettingField { - json_path: Some("git.inline_blame.enabled"), - pick: |settings_content| { + metadata: None, + files: USER, + }), + ] + } + + fn scrollbar_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Scrollbar"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Scrollbar", + description: "When to show the scrollbar in the terminal.", + field: Box::new(SettingField { + json_path: Some("terminal.scrollbar.show"), + pick: |settings_content| { + show_scrollbar_or_editor(settings_content, |settings_content| { settings_content - .git + .terminal .as_ref()? - .inline_blame + .scrollbar .as_ref()? - .enabled + .show .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .inline_blame - .get_or_insert_default() - .enabled = value; - }, - }), - metadata: None, - files: USER, + }) + }, + write: |settings_content, value| { + settings_content + .terminal + .get_or_insert_default() + .scrollbar + .get_or_insert_default() + .show = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Delay", - description: "The delay after which the inline blame information is shown.", - field: Box::new(SettingField { - json_path: Some("git.inline_blame.delay_ms"), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Terminal", + items: concat_sections![ + environment_section(), + font_section(), + display_settings_section(), + behavior_settings_section(), + layout_settings_section(), + advanced_settings_section(), + toolbar_section(), + scrollbar_section(), + ], + } +} + +fn version_control_page() -> SettingsPage { + fn git_integration_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Git Integration"), + SettingsPageItem::DynamicItem(DynamicItem { + discriminant: SettingItem { + files: USER, + title: "Disable Git Integration", + description: "Disable all Git integration features in Zed.", + field: Box::new(SettingField:: { + json_path: Some("git.disable_git"), pick: |settings_content| { settings_content .git .as_ref()? - .inline_blame + .enabled .as_ref()? - .delay_ms + .disable_git .as_ref() }, write: |settings_content, value| { settings_content .git .get_or_insert_default() - .inline_blame + .enabled .get_or_insert_default() - .delay_ms = value; + .disable_git = value; }, }), metadata: None, - files: USER, + }, + pick_discriminant: |settings_content| { + let disabled = settings_content + .git + .as_ref()? + .enabled + .as_ref()? + .disable_git + .unwrap_or(false); + Some(if disabled { 0 } else { 1 }) + }, + fields: vec![ + vec![], + vec![ + SettingItem { + files: USER, + title: "Enable Git Status", + description: "Show Git status information in the editor.", + field: Box::new(SettingField:: { + json_path: Some("git.enable_status"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .enabled + .as_ref()? + .enable_status + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .enabled + .get_or_insert_default() + .enable_status = value; + }, + }), + metadata: None, + }, + SettingItem { + files: USER, + title: "Enable Git Diff", + description: "Show Git diff information in the editor.", + field: Box::new(SettingField:: { + json_path: Some("git.enable_diff"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .enabled + .as_ref()? + .enable_diff + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .enabled + .get_or_insert_default() + .enable_diff = value; + }, + }), + metadata: None, + }, + ], + ], + }), + ] + } + + fn git_gutter_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Git Gutter"), + SettingsPageItem::SettingItem(SettingItem { + title: "Visibility", + description: "Control whether Git status is shown in the editor's gutter.", + field: Box::new(SettingField { + json_path: Some("git.git_gutter"), + pick: |settings_content| settings_content.git.as_ref()?.git_gutter.as_ref(), + write: |settings_content, value| { + settings_content.git.get_or_insert_default().git_gutter = value; + }, + }), + metadata: None, + files: USER, + }), + // todo(settings_ui): Figure out the right default for this value in default.json + SettingsPageItem::SettingItem(SettingItem { + title: "Debounce", + description: "Debounce threshold in milliseconds after which changes are reflected in the Git gutter.", + field: Box::new(SettingField { + json_path: Some("git.gutter_debounce"), + pick: |settings_content| { + settings_content.git.as_ref()?.gutter_debounce.as_ref() + }, + write: |settings_content, value| { + settings_content.git.get_or_insert_default().gutter_debounce = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn inline_git_blame_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Inline Git Blame"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Whether or not to show Git blame data inline in the currently focused line.", + field: Box::new(SettingField { + json_path: Some("git.inline_blame.enabled"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .inline_blame + .as_ref()? + .enabled + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .inline_blame + .get_or_insert_default() + .enabled = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Delay", + description: "The delay after which the inline blame information is shown.", + field: Box::new(SettingField { + json_path: Some("git.inline_blame.delay_ms"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .inline_blame + .as_ref()? + .delay_ms + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .inline_blame + .get_or_insert_default() + .delay_ms = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Padding", + description: "Padding between the end of the source line and the start of the inline blame in columns.", + field: Box::new(SettingField { + json_path: Some("git.inline_blame.padding"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .inline_blame + .as_ref()? + .padding + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .inline_blame + .get_or_insert_default() + .padding = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Minimum Column", + description: "The minimum column number at which to show the inline blame information.", + field: Box::new(SettingField { + json_path: Some("git.inline_blame.min_column"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .inline_blame + .as_ref()? + .min_column + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .inline_blame + .get_or_insert_default() + .min_column = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Commit Summary", + description: "Show commit summary as part of the inline blame.", + field: Box::new(SettingField { + json_path: Some("git.inline_blame.show_commit_summary"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .inline_blame + .as_ref()? + .show_commit_summary + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .inline_blame + .get_or_insert_default() + .show_commit_summary = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn git_blame_view_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Git Blame View"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Avatar", + description: "Show the avatar of the author of the commit.", + field: Box::new(SettingField { + json_path: Some("git.blame.show_avatar"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .blame + .as_ref()? + .show_avatar + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .blame + .get_or_insert_default() + .show_avatar = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn branch_picker_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Branch Picker"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Author Name", + description: "Show author name as part of the commit information in branch picker.", + field: Box::new(SettingField { + json_path: Some("git.branch_picker.show_author_name"), + pick: |settings_content| { + settings_content + .git + .as_ref()? + .branch_picker + .as_ref()? + .show_author_name + .as_ref() + }, + write: |settings_content, value| { + settings_content + .git + .get_or_insert_default() + .branch_picker + .get_or_insert_default() + .show_author_name = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn git_hunks_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Git Hunks"), + SettingsPageItem::SettingItem(SettingItem { + title: "Hunk Style", + description: "How Git hunks are displayed visually in the editor.", + field: Box::new(SettingField { + json_path: Some("git.hunk_style"), + pick: |settings_content| settings_content.git.as_ref()?.hunk_style.as_ref(), + write: |settings_content, value| { + settings_content.git.get_or_insert_default().hunk_style = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Path Style", + description: "Should the name or path be displayed first in the git view.", + field: Box::new(SettingField { + json_path: Some("git.path_style"), + pick: |settings_content| settings_content.git.as_ref()?.path_style.as_ref(), + write: |settings_content, value| { + settings_content.git.get_or_insert_default().path_style = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Version Control", + items: concat_sections![ + git_integration_section(), + git_gutter_section(), + inline_git_blame_section(), + git_blame_view_section(), + branch_picker_section(), + git_hunks_section(), + ], + } +} + +fn collaboration_page() -> SettingsPage { + fn calls_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Calls"), + SettingsPageItem::SettingItem(SettingItem { + title: "Mute On Join", + description: "Whether the microphone should be muted when joining a channel or a call.", + field: Box::new(SettingField { + json_path: Some("calls.mute_on_join"), + pick: |settings_content| settings_content.calls.as_ref()?.mute_on_join.as_ref(), + write: |settings_content, value| { + settings_content.calls.get_or_insert_default().mute_on_join = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Share On Join", + description: "Whether your current project should be shared when joining an empty channel.", + field: Box::new(SettingField { + json_path: Some("calls.share_on_join"), + pick: |settings_content| { + settings_content.calls.as_ref()?.share_on_join.as_ref() + }, + write: |settings_content, value| { + settings_content.calls.get_or_insert_default().share_on_join = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Padding", - description: "Padding between the end of the source line and the start of the inline blame in columns.", - field: Box::new(SettingField { - json_path: Some("git.inline_blame.padding"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .inline_blame - .as_ref()? - .padding - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .inline_blame - .get_or_insert_default() - .padding = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn experimental_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Experimental"), + SettingsPageItem::SettingItem(SettingItem { + title: "Rodio Audio", + description: "Opt into the new audio system.", + field: Box::new(SettingField { + json_path: Some("audio.experimental.rodio_audio"), + pick: |settings_content| settings_content.audio.as_ref()?.rodio_audio.as_ref(), + write: |settings_content, value| { + settings_content.audio.get_or_insert_default().rodio_audio = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Minimum Column", - description: "The minimum column number at which to show the inline blame information.", - field: Box::new(SettingField { - json_path: Some("git.inline_blame.min_column"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .inline_blame - .as_ref()? - .min_column - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .inline_blame - .get_or_insert_default() - .min_column = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Microphone Volume", + description: "Automatically adjust microphone volume (requires rodio audio).", + field: Box::new(SettingField { + json_path: Some("audio.experimental.auto_microphone_volume"), + pick: |settings_content| { + settings_content + .audio + .as_ref()? + .auto_microphone_volume + .as_ref() + }, + write: |settings_content, value| { + settings_content + .audio + .get_or_insert_default() + .auto_microphone_volume = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Commit Summary", - description: "Show commit summary as part of the inline blame.", - field: Box::new(SettingField { - json_path: Some("git.inline_blame.show_commit_summary"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .inline_blame - .as_ref()? - .show_commit_summary - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .inline_blame - .get_or_insert_default() - .show_commit_summary = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Speaker Volume", + description: "Automatically adjust volume of other call members (requires rodio audio).", + field: Box::new(SettingField { + json_path: Some("audio.experimental.auto_speaker_volume"), + pick: |settings_content| { + settings_content + .audio + .as_ref()? + .auto_speaker_volume + .as_ref() + }, + write: |settings_content, value| { + settings_content + .audio + .get_or_insert_default() + .auto_speaker_volume = value; + }, }), - SettingsPageItem::SectionHeader("Git Blame View"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Avatar", - description: "Show the avatar of the author of the commit.", - field: Box::new(SettingField { - json_path: Some("git.blame.show_avatar"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .blame - .as_ref()? - .show_avatar - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .blame - .get_or_insert_default() - .show_avatar = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Denoise", + description: "Remove background noises (requires rodio audio).", + field: Box::new(SettingField { + json_path: Some("audio.experimental.denoise"), + pick: |settings_content| settings_content.audio.as_ref()?.denoise.as_ref(), + write: |settings_content, value| { + settings_content.audio.get_or_insert_default().denoise = value; + }, }), - SettingsPageItem::SectionHeader("Branch Picker"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Author Name", - description: "Show author name as part of the commit information in branch picker.", - field: Box::new(SettingField { - json_path: Some("git.branch_picker.show_author_name"), - pick: |settings_content| { - settings_content - .git - .as_ref()? - .branch_picker - .as_ref()? - .show_author_name - .as_ref() - }, - write: |settings_content, value| { - settings_content - .git - .get_or_insert_default() - .branch_picker - .get_or_insert_default() - .show_author_name = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Legacy Audio Compatible", + description: "Use audio parameters compatible with previous versions (requires rodio audio).", + field: Box::new(SettingField { + json_path: Some("audio.experimental.legacy_audio_compatible"), + pick: |settings_content| { + settings_content + .audio + .as_ref()? + .legacy_audio_compatible + .as_ref() + }, + write: |settings_content, value| { + settings_content + .audio + .get_or_insert_default() + .legacy_audio_compatible = value; + }, }), - SettingsPageItem::SectionHeader("Git Hunks"), - SettingsPageItem::SettingItem(SettingItem { - title: "Hunk Style", - description: "How Git hunks are displayed visually in the editor.", - field: Box::new(SettingField { - json_path: Some("git.hunk_style"), - pick: |settings_content| settings_content.git.as_ref()?.hunk_style.as_ref(), - write: |settings_content, value| { - settings_content.git.get_or_insert_default().hunk_style = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "Collaboration", + items: concat_sections![calls_section(), experimental_section()], + } +} + +fn ai_page() -> SettingsPage { + fn general_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("General"), + SettingsPageItem::SettingItem(SettingItem { + title: "Disable AI", + description: "Whether to disable all AI features in Zed.", + field: Box::new(SettingField { + json_path: Some("disable_ai"), + pick: |settings_content| settings_content.disable_ai.as_ref(), + write: |settings_content, value| { + settings_content.disable_ai = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Path Style", - description: "Should the name or path be displayed first in the git view.", - field: Box::new(SettingField { - json_path: Some("git.path_style"), - pick: |settings_content| settings_content.git.as_ref()?.path_style.as_ref(), - write: |settings_content, value| { - settings_content.git.get_or_insert_default().path_style = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn agent_configuration_section() -> [SettingsPageItem; 10] { + [ + SettingsPageItem::SectionHeader("Agent Configuration"), + SettingsPageItem::SettingItem(SettingItem { + title: "Always Allow Tool Actions", + description: "When enabled, the agent can run potentially destructive actions without asking for your confirmation. This setting has no effect on external agents.", + field: Box::new(SettingField { + json_path: Some("agent.always_allow_tool_actions"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .always_allow_tool_actions + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .always_allow_tool_actions = value; + }, }), - ], - }, - SettingsPage { - title: "Collaboration", - items: vec![ - SettingsPageItem::SectionHeader("Calls"), - SettingsPageItem::SettingItem(SettingItem { - title: "Mute On Join", - description: "Whether the microphone should be muted when joining a channel or a call.", - field: Box::new(SettingField { - json_path: Some("calls.mute_on_join"), - pick: |settings_content| { - settings_content.calls.as_ref()?.mute_on_join.as_ref() - }, - write: |settings_content, value| { - settings_content.calls.get_or_insert_default().mute_on_join = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Single File Review", + description: "When enabled, agent edits will also be displayed in single-file buffers for review.", + field: Box::new(SettingField { + json_path: Some("agent.single_file_review"), + pick: |settings_content| { + settings_content.agent.as_ref()?.single_file_review.as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .single_file_review = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Share On Join", - description: "Whether your current project should be shared when joining an empty channel.", - field: Box::new(SettingField { - json_path: Some("calls.share_on_join"), - pick: |settings_content| { - settings_content.calls.as_ref()?.share_on_join.as_ref() - }, - write: |settings_content, value| { - settings_content.calls.get_or_insert_default().share_on_join = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Enable Feedback", + description: "Show voting thumbs up/down icon buttons for feedback on agent edits.", + field: Box::new(SettingField { + json_path: Some("agent.enable_feedback"), + pick: |settings_content| { + settings_content.agent.as_ref()?.enable_feedback.as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .enable_feedback = value; + }, }), - SettingsPageItem::SectionHeader("Experimental"), - SettingsPageItem::SettingItem(SettingItem { - title: "Rodio Audio", - description: "Opt into the new audio system.", - field: Box::new(SettingField { - json_path: Some("audio.experimental.rodio_audio"), - pick: |settings_content| { - settings_content.audio.as_ref()?.rodio_audio.as_ref() - }, - write: |settings_content, value| { - settings_content.audio.get_or_insert_default().rodio_audio = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Notify When Agent Waiting", + description: "Where to show notifications when the agent has completed its response or needs confirmation before running a tool action.", + field: Box::new(SettingField { + json_path: Some("agent.notify_when_agent_waiting"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .notify_when_agent_waiting + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .notify_when_agent_waiting = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Play Sound When Agent Done", + description: "Whether to play a sound when the agent has either completed its response, or needs user input.", + field: Box::new(SettingField { + json_path: Some("agent.play_sound_when_agent_done"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .play_sound_when_agent_done + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .play_sound_when_agent_done = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Microphone Volume", - description: "Automatically adjust microphone volume (requires rodio audio).", - field: Box::new(SettingField { - json_path: Some("audio.experimental.auto_microphone_volume"), - pick: |settings_content| { - settings_content - .audio - .as_ref()? - .auto_microphone_volume - .as_ref() - }, - write: |settings_content, value| { - settings_content - .audio - .get_or_insert_default() - .auto_microphone_volume = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Expand Edit Card", + description: "Whether to have edit cards in the agent panel expanded, showing a Preview of the diff.", + field: Box::new(SettingField { + json_path: Some("agent.expand_edit_card"), + pick: |settings_content| { + settings_content.agent.as_ref()?.expand_edit_card.as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .expand_edit_card = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Speaker Volume", - description: "Automatically adjust volume of other call members (requires rodio audio).", - field: Box::new(SettingField { - json_path: Some("audio.experimental.auto_speaker_volume"), - pick: |settings_content| { - settings_content - .audio - .as_ref()? - .auto_speaker_volume - .as_ref() - }, - write: |settings_content, value| { - settings_content - .audio - .get_or_insert_default() - .auto_speaker_volume = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Expand Terminal Card", + description: "Whether to have terminal cards in the agent panel expanded, showing the whole command output.", + field: Box::new(SettingField { + json_path: Some("agent.expand_terminal_card"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .expand_terminal_card + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .expand_terminal_card = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Denoise", - description: "Remove background noises (requires rodio audio).", - field: Box::new(SettingField { - json_path: Some("audio.experimental.denoise"), - pick: |settings_content| settings_content.audio.as_ref()?.denoise.as_ref(), - write: |settings_content, value| { - settings_content.audio.get_or_insert_default().denoise = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Use Modifier To Send", + description: "Whether to always use cmd-enter (or ctrl-enter on Linux or Windows) to send messages.", + field: Box::new(SettingField { + json_path: Some("agent.use_modifier_to_send"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .use_modifier_to_send + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .use_modifier_to_send = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Legacy Audio Compatible", - description: "Use audio parameters compatible with previous versions (requires rodio audio).", - field: Box::new(SettingField { - json_path: Some("audio.experimental.legacy_audio_compatible"), - pick: |settings_content| { - settings_content - .audio - .as_ref()? - .legacy_audio_compatible - .as_ref() - }, - write: |settings_content, value| { - settings_content - .audio - .get_or_insert_default() - .legacy_audio_compatible = value; - }, - }), - metadata: None, - files: USER, + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Message Editor Min Lines", + description: "Minimum number of lines to display in the agent message editor.", + field: Box::new(SettingField { + json_path: Some("agent.message_editor_min_lines"), + pick: |settings_content| { + settings_content + .agent + .as_ref()? + .message_editor_min_lines + .as_ref() + }, + write: |settings_content, value| { + settings_content + .agent + .get_or_insert_default() + .message_editor_min_lines = value; + }, }), - ], - }, - SettingsPage { - title: "AI", - items: { - let mut items = vec![ - SettingsPageItem::SectionHeader("General"), - SettingsPageItem::SettingItem(SettingItem { - title: "Disable AI", - description: "Whether to disable all AI features in Zed.", - field: Box::new(SettingField { - json_path: Some("disable_ai"), - pick: |settings_content| settings_content.disable_ai.as_ref(), - write: |settings_content, value| { - settings_content.disable_ai = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Agent Configuration"), - SettingsPageItem::SettingItem(SettingItem { - title: "Always Allow Tool Actions", - description: "When enabled, the agent can run potentially destructive actions without asking for your confirmation. This setting has no effect on external agents.", - field: Box::new(SettingField { - json_path: Some("agent.always_allow_tool_actions"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .always_allow_tool_actions - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .always_allow_tool_actions = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Single File Review", - description: "When enabled, agent edits will also be displayed in single-file buffers for review.", - field: Box::new(SettingField { - json_path: Some("agent.single_file_review"), - pick: |settings_content| { - settings_content.agent.as_ref()?.single_file_review.as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .single_file_review = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Feedback", - description: "Show voting thumbs up/down icon buttons for feedback on agent edits.", - field: Box::new(SettingField { - json_path: Some("agent.enable_feedback"), - pick: |settings_content| { - settings_content.agent.as_ref()?.enable_feedback.as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .enable_feedback = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Notify When Agent Waiting", - description: "Where to show notifications when the agent has completed its response or needs confirmation before running a tool action.", - field: Box::new(SettingField { - json_path: Some("agent.notify_when_agent_waiting"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .notify_when_agent_waiting - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .notify_when_agent_waiting = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Play Sound When Agent Done", - description: "Whether to play a sound when the agent has either completed its response, or needs user input.", - field: Box::new(SettingField { - json_path: Some("agent.play_sound_when_agent_done"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .play_sound_when_agent_done - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .play_sound_when_agent_done = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Expand Edit Card", - description: "Whether to have edit cards in the agent panel expanded, showing a Preview of the diff.", - field: Box::new(SettingField { - json_path: Some("agent.expand_edit_card"), - pick: |settings_content| { - settings_content.agent.as_ref()?.expand_edit_card.as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .expand_edit_card = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Expand Terminal Card", - description: "Whether to have terminal cards in the agent panel expanded, showing the whole command output.", - field: Box::new(SettingField { - json_path: Some("agent.expand_terminal_card"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .expand_terminal_card - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .expand_terminal_card = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use Modifier To Send", - description: "Whether to always use cmd-enter (or ctrl-enter on Linux or Windows) to send messages.", - field: Box::new(SettingField { - json_path: Some("agent.use_modifier_to_send"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .use_modifier_to_send - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .use_modifier_to_send = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Message Editor Min Lines", - description: "Minimum number of lines to display in the agent message editor.", - field: Box::new(SettingField { - json_path: Some("agent.message_editor_min_lines"), - pick: |settings_content| { - settings_content - .agent - .as_ref()? - .message_editor_min_lines - .as_ref() - }, - write: |settings_content, value| { - settings_content - .agent - .get_or_insert_default() - .message_editor_min_lines = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Context Servers"), - SettingsPageItem::SettingItem(SettingItem { - title: "Context Server Timeout", - description: "Default timeout in seconds for context server tool calls. Can be overridden per-server in context_servers configuration.", - field: Box::new(SettingField { - json_path: Some("context_server_timeout"), - pick: |settings_content| { - settings_content.project.context_server_timeout.as_ref() - }, - write: |settings_content, value| { - settings_content.project.context_server_timeout = value; - }, - }), - metadata: None, - files: USER | PROJECT, - }), - ]; - items.extend(edit_prediction_language_settings_section()); - items.extend( - [ - SettingsPageItem::SettingItem(SettingItem { - title: "Display Mode", - description: "When to show edit predictions previews in buffer. The eager mode displays them inline, while the subtle mode displays them only when holding a modifier key.", - field: Box::new(SettingField { - json_path: Some("edit_prediction.display_mode"), - pick: |settings_content| { - settings_content.project.all_languages.edit_predictions.as_ref()?.mode.as_ref() - }, - write: |settings_content, value| { - settings_content.project.all_languages.edit_predictions.get_or_insert_default().mode = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Display In Text Threads", - description: "Whether edit predictions are enabled when editing text threads in the agent panel.", - field: Box::new(SettingField { - json_path: Some("edit_prediction.in_text_threads"), - pick: |settings_content| { - settings_content.project.all_languages.edit_predictions.as_ref()?.enabled_in_text_threads.as_ref() - }, - write: |settings_content, value| { - settings_content.project.all_languages.edit_predictions.get_or_insert_default().enabled_in_text_threads = value; - }, - }), - metadata: None, - files: USER, - }), - ] - ); - items - }, - }, - SettingsPage { - title: "Network", - items: vec![ - SettingsPageItem::SectionHeader("Network"), - SettingsPageItem::SettingItem(SettingItem { - title: "Proxy", - description: "The proxy to use for network requests.", - field: Box::new(SettingField { - json_path: Some("proxy"), - pick: |settings_content| settings_content.proxy.as_ref(), - write: |settings_content, value| { - settings_content.proxy = value; - }, - }), - metadata: Some(Box::new(SettingsFieldMetadata { - placeholder: Some("socks5h://localhost:10808"), - ..Default::default() - })), - files: USER, + metadata: None, + files: USER, + }), + ] + } + + fn context_servers_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Context Servers"), + SettingsPageItem::SettingItem(SettingItem { + title: "Context Server Timeout", + description: "Default timeout in seconds for context server tool calls. Can be overridden per-server in context_servers configuration.", + field: Box::new(SettingField { + json_path: Some("context_server_timeout"), + pick: |settings_content| { + settings_content.project.context_server_timeout.as_ref() + }, + write: |settings_content, value| { + settings_content.project.context_server_timeout = value; + }, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Server URL", - description: "The URL of the Zed server to connect to.", - field: Box::new(SettingField { - json_path: Some("server_url"), - pick: |settings_content| settings_content.server_url.as_ref(), - write: |settings_content, value| { - settings_content.server_url = value; - }, - }), - metadata: Some(Box::new(SettingsFieldMetadata { - placeholder: Some("https://zed.dev"), - ..Default::default() - })), - files: USER, + metadata: None, + files: USER | PROJECT, + }), + ] + } + + fn edit_prediction_display_sub_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SettingItem(SettingItem { + title: "Display Mode", + description: "When to show edit predictions previews in buffer. The eager mode displays them inline, while the subtle mode displays them only when holding a modifier key.", + field: Box::new(SettingField { + json_path: Some("edit_prediction.display_mode"), + pick: |settings_content| { + settings_content + .project + .all_languages + .edit_predictions + .as_ref()? + .mode + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project + .all_languages + .edit_predictions + .get_or_insert_default() + .mode = value; + }, }), - ], - }, - ] + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Display In Text Threads", + description: "Whether edit predictions are enabled when editing text threads in the agent panel.", + field: Box::new(SettingField { + json_path: Some("edit_prediction.in_text_threads"), + pick: |settings_content| { + settings_content + .project + .all_languages + .edit_predictions + .as_ref()? + .enabled_in_text_threads + .as_ref() + }, + write: |settings_content, value| { + settings_content + .project + .all_languages + .edit_predictions + .get_or_insert_default() + .enabled_in_text_threads = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + SettingsPage { + title: "AI", + items: concat_sections![ + general_section(), + agent_configuration_section(), + context_servers_section(), + edit_prediction_language_settings_section(), + edit_prediction_display_sub_section() + ], + } +} + +fn network_page() -> SettingsPage { + fn network_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SectionHeader("Network"), + SettingsPageItem::SettingItem(SettingItem { + title: "Proxy", + description: "The proxy to use for network requests.", + field: Box::new(SettingField { + json_path: Some("proxy"), + pick: |settings_content| settings_content.proxy.as_ref(), + write: |settings_content, value| { + settings_content.proxy = value; + }, + }), + metadata: Some(Box::new(SettingsFieldMetadata { + placeholder: Some("socks5h://localhost:10808"), + ..Default::default() + })), + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Server URL", + description: "The URL of the Zed server to connect to.", + field: Box::new(SettingField { + json_path: Some("server_url"), + pick: |settings_content| settings_content.server_url.as_ref(), + write: |settings_content, value| { + settings_content.server_url = value; + }, + }), + metadata: Some(Box::new(SettingsFieldMetadata { + placeholder: Some("https://zed.dev"), + ..Default::default() + })), + files: USER, + }), + ] + } + + SettingsPage { + title: "Network", + items: concat_sections![network_section()], + } } const LANGUAGES_SECTION_HEADER: &'static str = "Languages"; @@ -6370,854 +6954,890 @@ fn language_settings_field_mut( write(language_content, value); } -fn language_settings_data() -> Vec { - let mut items = vec![ - SettingsPageItem::SectionHeader("Indentation"), - SettingsPageItem::SettingItem(SettingItem { - title: "Tab Size", - description: "How many columns a tab should occupy.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).tab_size"), // TODO(cameron): not JQ syntax because not URL-safe - pick: |settings_content| { - language_settings_field(settings_content, |language| language.tab_size.as_ref()) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.tab_size = value; - }) - }, +fn language_settings_data() -> Box<[SettingsPageItem]> { + fn indentation_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Indentation"), + SettingsPageItem::SettingItem(SettingItem { + title: "Tab Size", + description: "How many columns a tab should occupy.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).tab_size"), // TODO(cameron): not JQ syntax because not URL-safe + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.tab_size.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.tab_size = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Hard Tabs", - description: "Whether to indent lines using tab characters, as opposed to multiple spaces.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).hard_tabs"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.hard_tabs.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.hard_tabs = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Hard Tabs", + description: "Whether to indent lines using tab characters, as opposed to multiple spaces.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).hard_tabs"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.hard_tabs.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.hard_tabs = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Indent", + description: "Whether indentation should be adjusted based on the context whilst typing.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).auto_indent"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.auto_indent.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.auto_indent = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Indent On Paste", + description: "Whether indentation of pasted content should be adjusted based on the context.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).auto_indent_on_paste"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.auto_indent_on_paste.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.auto_indent_on_paste = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + ] + } + + fn wrapping_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Wrapping"), + SettingsPageItem::SettingItem(SettingItem { + title: "Soft Wrap", + description: "How to soft-wrap long lines of text.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).soft_wrap"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.soft_wrap.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.soft_wrap = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Wrap Guides", + description: "Show wrap guides in the editor.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).show_wrap_guides"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.show_wrap_guides.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.show_wrap_guides = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Preferred Line Length", + description: "The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).preferred_line_length"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.preferred_line_length.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.preferred_line_length = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Wrap Guides", + description: "Character counts at which to show wrap guides in the editor.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).wrap_guides"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.wrap_guides.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.wrap_guides = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Allow Rewrap", + description: "Controls where the `editor::rewrap` action is allowed for this language.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).allow_rewrap"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.allow_rewrap.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.allow_rewrap = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + ] + } + + fn indent_guides_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Indent Guides"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Display indent guides in the editor.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).indent_guides.enabled"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language + .indent_guides + .as_ref() + .and_then(|indent_guides| indent_guides.enabled.as_ref()) + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.indent_guides.get_or_insert_default().enabled = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Line Width", + description: "The width of the indent guides in pixels, between 1 and 10.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).indent_guides.line_width"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language + .indent_guides + .as_ref() + .and_then(|indent_guides| indent_guides.line_width.as_ref()) + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.indent_guides.get_or_insert_default().line_width = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Active Line Width", + description: "The width of the active indent guide in pixels, between 1 and 10.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).indent_guides.active_line_width"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language + .indent_guides + .as_ref() + .and_then(|indent_guides| indent_guides.active_line_width.as_ref()) + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .indent_guides + .get_or_insert_default() + .active_line_width = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Coloring", + description: "Determines how indent guides are colored.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).indent_guides.coloring"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language + .indent_guides + .as_ref() + .and_then(|indent_guides| indent_guides.coloring.as_ref()) + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.indent_guides.get_or_insert_default().coloring = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Indent", - description: "Whether indentation should be adjusted based on the context whilst typing.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).auto_indent"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.auto_indent.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.auto_indent = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Background Coloring", + description: "Determines how indent guide backgrounds are colored.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).indent_guides.background_coloring"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.indent_guides.as_ref().and_then(|indent_guides| { + indent_guides.background_coloring.as_ref() + }) + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .indent_guides + .get_or_insert_default() + .background_coloring = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Auto Indent On Paste", - description: "Whether indentation of pasted content should be adjusted based on the context.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).auto_indent_on_paste"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.auto_indent_on_paste.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.auto_indent_on_paste = value; - }) - }, + ] + } + + fn formatting_section() -> [SettingsPageItem; 7] { + [ + SettingsPageItem::SectionHeader("Formatting"), + SettingsPageItem::SettingItem(SettingItem { + title: "Format On Save", + description: "Whether or not to perform a buffer format before saving.", + field: Box::new( + // TODO(settings_ui): this setting should just be a bool + SettingField { + json_path: Some("languages.$(language).format_on_save"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.format_on_save.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.format_on_save = value; + }, + ) + }, + }, + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Wrapping"), - SettingsPageItem::SettingItem(SettingItem { - title: "Soft Wrap", - description: "How to soft-wrap long lines of text.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).soft_wrap"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.soft_wrap.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.soft_wrap = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Remove Trailing Whitespace On Save", + description: "Whether or not to remove any trailing whitespace from lines of a buffer before saving it.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).remove_trailing_whitespace_on_save"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.remove_trailing_whitespace_on_save.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.remove_trailing_whitespace_on_save = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Wrap Guides", - description: "Show wrap guides in the editor.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).show_wrap_guides"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.show_wrap_guides.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.show_wrap_guides = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Ensure Final Newline On Save", + description: "Whether or not to ensure there's a single newline at the end of a buffer when saving it.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).ensure_final_newline_on_save"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.ensure_final_newline_on_save.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.ensure_final_newline_on_save = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Preferred Line Length", - description: "The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).preferred_line_length"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.preferred_line_length.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.preferred_line_length = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Formatter", + description: "How to perform a buffer format.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).formatter"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.formatter.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.formatter = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Wrap Guides", - description: "Character counts at which to show wrap guides in the editor.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).wrap_guides"), + SettingsPageItem::SettingItem(SettingItem { + title: "Use On Type Format", + description: "Whether to use additional LSP queries to format (and amend) the code after every \"trigger\" symbol input, defined by LSP server capabilities", + field: Box::new(SettingField { + json_path: Some("languages.$(language).use_on_type_format"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.wrap_guides.as_ref() + language.use_on_type_format.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.wrap_guides = value; + language.use_on_type_format = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Allow Rewrap", - description: "Controls where the `editor::rewrap` action is allowed for this language.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).allow_rewrap"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.allow_rewrap.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.allow_rewrap = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Indent Guides"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Display indent guides in the editor.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).indent_guides.enabled"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language - .indent_guides - .as_ref() - .and_then(|indent_guides| indent_guides.enabled.as_ref()) - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.indent_guides.get_or_insert_default().enabled = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Code Actions On Format", + description: "Additional code actions to run when formatting.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).code_actions_on_format"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.code_actions_on_format.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.code_actions_on_format = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Line Width", - description: "The width of the indent guides in pixels, between 1 and 10.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).indent_guides.line_width"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language - .indent_guides - .as_ref() - .and_then(|indent_guides| indent_guides.line_width.as_ref()) - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.indent_guides.get_or_insert_default().line_width = value; - }) - }, + ] + } + + fn autoclose_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Autoclose"), + SettingsPageItem::SettingItem(SettingItem { + title: "Use Autoclose", + description: "Whether to automatically type closing characters for you. For example, when you type '(', Zed will automatically add a closing ')' at the correct position.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).use_autoclose"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.use_autoclose.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.use_autoclose = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Active Line Width", - description: "The width of the active indent guide in pixels, between 1 and 10.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).indent_guides.active_line_width"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language - .indent_guides - .as_ref() - .and_then(|indent_guides| indent_guides.active_line_width.as_ref()) - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .indent_guides - .get_or_insert_default() - .active_line_width = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Use Auto Surround", + description: "Whether to automatically surround text with characters for you. For example, when you select text and type '(', Zed will automatically surround text with ().", + field: Box::new(SettingField { + json_path: Some("languages.$(language).use_auto_surround"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.use_auto_surround.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.use_auto_surround = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Coloring", - description: "Determines how indent guides are colored.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).indent_guides.coloring"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language - .indent_guides - .as_ref() - .and_then(|indent_guides| indent_guides.coloring.as_ref()) - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.indent_guides.get_or_insert_default().coloring = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Always Treat Brackets As Autoclosed", + description: "Controls whether the closing characters are always skipped over and auto-removed no matter how they were inserted.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).always_treat_brackets_as_autoclosed"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.always_treat_brackets_as_autoclosed.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.always_treat_brackets_as_autoclosed = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Background Coloring", - description: "Determines how indent guide backgrounds are colored.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).indent_guides.background_coloring"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language - .indent_guides - .as_ref() - .and_then(|indent_guides| indent_guides.background_coloring.as_ref()) - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .indent_guides - .get_or_insert_default() - .background_coloring = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "JSX Tag Auto Close", + description: "Whether to automatically close JSX tags.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).jsx_tag_auto_close"), + // TODO(settings_ui): this setting should just be a bool + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.jsx_tag_auto_close.as_ref()?.enabled.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.jsx_tag_auto_close.get_or_insert_default().enabled = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Formatting"), - SettingsPageItem::SettingItem(SettingItem { - title: "Format On Save", - description: "Whether or not to perform a buffer format before saving.", - field: Box::new( - // TODO(settings_ui): this setting should just be a bool - SettingField { - json_path: Some("languages.$(language).format_on_save"), + ] + } + + fn whitespace_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Whitespace"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Whitespaces", + description: "Whether to show tabs and spaces in the editor.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).show_whitespaces"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.format_on_save.as_ref() + language.show_whitespaces.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.format_on_save = value; + language.show_whitespaces = value; }) }, - }, - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Remove Trailing Whitespace On Save", - description: "Whether or not to remove any trailing whitespace from lines of a buffer before saving it.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).remove_trailing_whitespace_on_save"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.remove_trailing_whitespace_on_save.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.remove_trailing_whitespace_on_save = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Ensure Final Newline On Save", - description: "Whether or not to ensure there's a single newline at the end of a buffer when saving it.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).ensure_final_newline_on_save"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.ensure_final_newline_on_save.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.ensure_final_newline_on_save = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Space Whitespace Indicator", + description: "Visible character used to render space characters when show_whitespaces is enabled (default: \"•\")", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).whitespace_map.space"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.whitespace_map.as_ref()?.space.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.whitespace_map.get_or_insert_default().space = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Formatter", - description: "How to perform a buffer format.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).formatter"), + SettingsPageItem::SettingItem(SettingItem { + title: "Tab Whitespace Indicator", + description: "Visible character used to render tab characters when show_whitespaces is enabled (default: \"→\")", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).whitespace_map.tab"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.whitespace_map.as_ref()?.tab.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.whitespace_map.get_or_insert_default().tab = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + ] + } + + fn completions_section() -> [SettingsPageItem; 7] { + [ + SettingsPageItem::SectionHeader("Completions"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Completions On Input", + description: "Whether to pop the completions menu while typing in an editor without explicitly requesting it.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).show_completions_on_input"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.formatter.as_ref() + language.show_completions_on_input.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.formatter = value; + language.show_completions_on_input = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use On Type Format", - description: "Whether to use additional LSP queries to format (and amend) the code after every \"trigger\" symbol input, defined by LSP server capabilities", - field: Box::new(SettingField { - json_path: Some("languages.$(language).use_on_type_format"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.use_on_type_format.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.use_on_type_format = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Code Actions On Format", - description: "Additional code actions to run when formatting.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).code_actions_on_format"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Completion Documentation", + description: "Whether to display inline and alongside documentation for items in the completions menu.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).show_completion_documentation"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.code_actions_on_format.as_ref() + language.show_completion_documentation.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.code_actions_on_format = value; + language.show_completion_documentation = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Autoclose"), - SettingsPageItem::SettingItem(SettingItem { - title: "Use Autoclose", - description: "Whether to automatically type closing characters for you. For example, when you type '(', Zed will automatically add a closing ')' at the correct position.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).use_autoclose"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.use_autoclose.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.use_autoclose = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Use Auto Surround", - description: "Whether to automatically surround text with characters for you. For example, when you select text and type '(', Zed will automatically surround text with ().", - field: Box::new(SettingField { - json_path: Some("languages.$(language).use_auto_surround"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.use_auto_surround.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.use_auto_surround = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Words", + description: "Controls how words are completed.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).completions.words"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.completions.as_ref()?.words.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.completions.get_or_insert_default().words = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Always Treat Brackets As Autoclosed", - description: "Controls whether the closing characters are always skipped over and auto-removed no matter how they were inserted.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).always_treat_brackets_as_autoclosed"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.always_treat_brackets_as_autoclosed.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.always_treat_brackets_as_autoclosed = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Words Min Length", + description: "How many characters has to be in the completions query to automatically show the words-based completions.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).completions.words_min_length"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.completions.as_ref()?.words_min_length.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .completions + .get_or_insert_default() + .words_min_length = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "JSX Tag Auto Close", - description: "Whether to automatically close JSX tags.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).jsx_tag_auto_close"), - // TODO(settings_ui): this setting should just be a bool - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.jsx_tag_auto_close.as_ref()?.enabled.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.jsx_tag_auto_close.get_or_insert_default().enabled = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Completion Menu Scrollbar", + description: "When to show the scrollbar in the completion menu.", + field: Box::new(SettingField { + json_path: Some("editor.completion_menu_scrollbar"), + pick: |settings_content| { + settings_content.editor.completion_menu_scrollbar.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.completion_menu_scrollbar = value; + }, + }), + metadata: None, + files: USER, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Whitespace"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Whitespaces", - description: "Whether to show tabs and spaces in the editor.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).show_whitespaces"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.show_whitespaces.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.show_whitespaces = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Completion Detail Alignment", + description: "Whether to align detail text in code completions context menus left or right.", + field: Box::new(SettingField { + json_path: Some("editor.completion_detail_alignment"), + pick: |settings_content| { + settings_content.editor.completion_detail_alignment.as_ref() + }, + write: |settings_content, value| { + settings_content.editor.completion_detail_alignment = value; + }, + }), + metadata: None, + files: USER, + }), + ] + } + + fn inlay_hints_section() -> [SettingsPageItem; 10] { + [ + SettingsPageItem::SectionHeader("Inlay Hints"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Global switch to toggle hints on and off.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.enabled"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.enabled.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.inlay_hints.get_or_insert_default().enabled = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Space Whitespace Indicator", - description: "Visible character used to render space characters when show_whitespaces is enabled (default: \"•\")", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).whitespace_map.space"), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Value Hints", + description: "Global switch to toggle inline values on and off when debugging.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.show_value_hints"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.whitespace_map.as_ref()?.space.as_ref() + language.inlay_hints.as_ref()?.show_value_hints.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.whitespace_map.get_or_insert_default().space = value; + language + .inlay_hints + .get_or_insert_default() + .show_value_hints = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Tab Whitespace Indicator", - description: "Visible character used to render tab characters when show_whitespaces is enabled (default: \"→\")", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).whitespace_map.tab"), + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Show Type Hints", + description: "Whether type hints should be shown.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.show_type_hints"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.whitespace_map.as_ref()?.tab.as_ref() + language.inlay_hints.as_ref()?.show_type_hints.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.whitespace_map.get_or_insert_default().tab = value; + language.inlay_hints.get_or_insert_default().show_type_hints = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Completions"), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Completions On Input", - description: "Whether to pop the completions menu while typing in an editor without explicitly requesting it.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).show_completions_on_input"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.show_completions_on_input.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.show_completions_on_input = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Completion Documentation", - description: "Whether to display inline and alongside documentation for items in the completions menu.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).show_completion_documentation"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.show_completion_documentation.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.show_completion_documentation = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Words", - description: "Controls how words are completed.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).completions.words"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.completions.as_ref()?.words.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.completions.get_or_insert_default().words = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Words Min Length", - description: "How many characters has to be in the completions query to automatically show the words-based completions.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).completions.words_min_length"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.completions.as_ref()?.words_min_length.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .completions - .get_or_insert_default() - .words_min_length = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Completion Menu Scrollbar", - description: "When to show the scrollbar in the completion menu.", - field: Box::new(SettingField { - json_path: Some("editor.completion_menu_scrollbar"), - pick: |settings_content| settings_content.editor.completion_menu_scrollbar.as_ref(), - write: |settings_content, value| { - settings_content.editor.completion_menu_scrollbar = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Completion Detail Alignment", - description: "Whether to align detail text in code completions context menus left or right.", - field: Box::new(SettingField { - json_path: Some("editor.completion_detail_alignment"), - pick: |settings_content| { - settings_content.editor.completion_detail_alignment.as_ref() - }, - write: |settings_content, value| { - settings_content.editor.completion_detail_alignment = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("Inlay Hints"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Global switch to toggle hints on and off.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.enabled"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.enabled.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.inlay_hints.get_or_insert_default().enabled = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Value Hints", - description: "Global switch to toggle inline values on and off when debugging.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.show_value_hints"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.show_value_hints.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .inlay_hints - .get_or_insert_default() - .show_value_hints = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Type Hints", - description: "Whether type hints should be shown.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.show_type_hints"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.show_type_hints.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.inlay_hints.get_or_insert_default().show_type_hints = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Parameter Hints", - description: "Whether parameter hints should be shown.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.show_parameter_hints"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.show_parameter_hints.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .inlay_hints - .get_or_insert_default() - .show_parameter_hints = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Other Hints", - description: "Whether other hints should be shown.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.show_other_hints"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.show_other_hints.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .inlay_hints - .get_or_insert_default() - .show_other_hints = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Show Background", - description: "Show a background for inlay hints.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.show_background"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.show_background.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.inlay_hints.get_or_insert_default().show_background = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Show Parameter Hints", + description: "Whether parameter hints should be shown.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.show_parameter_hints"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.show_parameter_hints.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .inlay_hints + .get_or_insert_default() + .show_parameter_hints = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Edit Debounce Ms", - description: "Whether or not to debounce inlay hints updates after buffer edits (set to 0 to disable debouncing).", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.edit_debounce_ms"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.edit_debounce_ms.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .inlay_hints - .get_or_insert_default() - .edit_debounce_ms = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Show Other Hints", + description: "Whether other hints should be shown.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.show_other_hints"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.show_other_hints.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .inlay_hints + .get_or_insert_default() + .show_other_hints = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Scroll Debounce Ms", - description: "Whether or not to debounce inlay hints updates after buffer scrolls (set to 0 to disable debouncing).", - field: Box::new(SettingField { - json_path: Some("languages.$(language).inlay_hints.scroll_debounce_ms"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.inlay_hints.as_ref()?.scroll_debounce_ms.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .inlay_hints - .get_or_insert_default() - .scroll_debounce_ms = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Show Background", + description: "Show a background for inlay hints.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.show_background"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.show_background.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.inlay_hints.get_or_insert_default().show_background = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Toggle On Modifiers Press", - description: "Toggles inlay hints (hides or shows) when the user presses the modifiers specified.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).inlay_hints.toggle_on_modifiers_press"), + SettingsPageItem::SettingItem(SettingItem { + title: "Edit Debounce Ms", + description: "Whether or not to debounce inlay hints updates after buffer edits (set to 0 to disable debouncing).", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.edit_debounce_ms"), pick: |settings_content| { language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.edit_debounce_ms.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { language .inlay_hints - .as_ref()? - .toggle_on_modifiers_press - .as_ref() + .get_or_insert_default() + .edit_debounce_ms = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Scroll Debounce Ms", + description: "Whether or not to debounce inlay hints updates after buffer scrolls (set to 0 to disable debouncing).", + field: Box::new(SettingField { + json_path: Some("languages.$(language).inlay_hints.scroll_debounce_ms"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.inlay_hints.as_ref()?.scroll_debounce_ms.as_ref() }) }, write: |settings_content, value| { @@ -7225,494 +7845,621 @@ fn language_settings_data() -> Vec { language .inlay_hints .get_or_insert_default() - .toggle_on_modifiers_press = value; + .scroll_debounce_ms = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - ]; - if current_language().is_none() { - items.push(SettingsPageItem::SettingItem(SettingItem { - title: "LSP Document Colors", - description: "How to render LSP color previews in the editor.", - field: Box::new(SettingField { - json_path: Some("lsp_document_colors"), - pick: |settings_content| settings_content.editor.lsp_document_colors.as_ref(), - write: |settings_content, value| { - settings_content.editor.lsp_document_colors = value; - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER, - })) + SettingsPageItem::SettingItem(SettingItem { + title: "Toggle On Modifiers Press", + description: "Toggles inlay hints (hides or shows) when the user presses the modifiers specified.", + field: Box::new( + SettingField { + json_path: Some( + "languages.$(language).inlay_hints.toggle_on_modifiers_press", + ), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language + .inlay_hints + .as_ref()? + .toggle_on_modifiers_press + .as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language + .inlay_hints + .get_or_insert_default() + .toggle_on_modifiers_press = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + ] } - items.extend([ - SettingsPageItem::SectionHeader("Tasks"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Whether tasks are enabled for this language.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).tasks.enabled"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.tasks.as_ref()?.enabled.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.tasks.get_or_insert_default().enabled = value; - }) - }, + fn tasks_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("Tasks"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Whether tasks are enabled for this language.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).tasks.enabled"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.tasks.as_ref()?.enabled.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.tasks.get_or_insert_default().enabled = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Variables", - description: "Extra task variables to set for a particular language.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).tasks.variables"), + SettingsPageItem::SettingItem(SettingItem { + title: "Variables", + description: "Extra task variables to set for a particular language.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).tasks.variables"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.tasks.as_ref()?.variables.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.tasks.get_or_insert_default().variables = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Prefer LSP", + description: "Use LSP tasks over Zed language extension tasks.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).tasks.prefer_lsp"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.tasks.as_ref()?.variables.as_ref() + language.tasks.as_ref()?.prefer_lsp.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.tasks.get_or_insert_default().variables = value; - + language.tasks.get_or_insert_default().prefer_lsp = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Prefer LSP", - description: "Use LSP tasks over Zed language extension tasks.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).tasks.prefer_lsp"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.tasks.as_ref()?.prefer_lsp.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.tasks.get_or_insert_default().prefer_lsp = value; + }), + metadata: None, + files: USER | PROJECT, + }), + ] + } - }) - }, + fn miscellaneous_section() -> [SettingsPageItem; 6] { + [ + SettingsPageItem::SectionHeader("Miscellaneous"), + SettingsPageItem::SettingItem(SettingItem { + title: "Word Diff Enabled", + description: "Whether to enable word diff highlighting in the editor. When enabled, changed words within modified lines are highlighted to show exactly what changed.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).word_diff_enabled"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.word_diff_enabled.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.word_diff_enabled = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Miscellaneous"), - SettingsPageItem::SettingItem(SettingItem { - title: "Word Diff Enabled", - description: "Whether to enable word diff highlighting in the editor. When enabled, changed words within modified lines are highlighted to show exactly what changed.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).word_diff_enabled"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.word_diff_enabled.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.word_diff_enabled = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Debuggers", + description: "Preferred debuggers for this language.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).debuggers"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.debuggers.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.debuggers = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Debuggers", - description: "Preferred debuggers for this language.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).debuggers"), + SettingsPageItem::SettingItem(SettingItem { + title: "Middle Click Paste", + description: "Enable middle-click paste on Linux.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).editor.middle_click_paste"), + pick: |settings_content| settings_content.editor.middle_click_paste.as_ref(), + write: |settings_content, value| { + settings_content.editor.middle_click_paste = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Extend Comment On Newline", + description: "Whether to start a new line with a comment when a previous line is a comment as well.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).extend_comment_on_newline"), pick: |settings_content| { - language_settings_field(settings_content, |language| language.debuggers.as_ref()) + language_settings_field(settings_content, |language| { + language.extend_comment_on_newline.as_ref() + }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.debuggers = value; - + language.extend_comment_on_newline = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Middle Click Paste", - description: "Enable middle-click paste on Linux.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).editor.middle_click_paste"), - pick: |settings_content| settings_content.editor.middle_click_paste.as_ref(), - write: |settings_content, value| {settings_content.editor.middle_click_paste = value;}, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Extend Comment On Newline", - description: "Whether to start a new line with a comment when a previous line is a comment as well.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).extend_comment_on_newline"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.extend_comment_on_newline.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.extend_comment_on_newline = value; + SettingsPageItem::SettingItem(SettingItem { + title: "Colorize Brackets", + description: "Whether to colorize brackets in the editor.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).colorize_brackets"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.colorize_brackets.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language.colorize_brackets = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, + }), + ] + } - }) - }, + fn global_only_miscellaneous_sub_section() -> [SettingsPageItem; 3] { + [ + SettingsPageItem::SettingItem(SettingItem { + title: "Image Viewer", + description: "The unit for image file sizes.", + field: Box::new(SettingField { + json_path: Some("image_viewer.unit"), + pick: |settings_content| { + settings_content + .image_viewer + .as_ref() + .and_then(|image_viewer| image_viewer.unit.as_ref()) + }, + write: |settings_content, value| { + settings_content.image_viewer.get_or_insert_default().unit = value; + }, + }), + metadata: None, + files: USER, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Colorize Brackets", - description: "Whether to colorize brackets in the editor.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).colorize_brackets"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.colorize_brackets.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.colorize_brackets = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Auto Replace Emoji Shortcode", + description: "Whether to automatically replace emoji shortcodes with emoji characters.", + field: Box::new(SettingField { + json_path: Some("message_editor.auto_replace_emoji_shortcode"), + pick: |settings_content| { + settings_content + .message_editor + .as_ref() + .and_then(|message_editor| { + message_editor.auto_replace_emoji_shortcode.as_ref() + }) + }, + write: |settings_content, value| { + settings_content + .message_editor + .get_or_insert_default() + .auto_replace_emoji_shortcode = value; + }, + }), + metadata: None, + files: USER, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Drop Size Target", + description: "Relative size of the drop target in the editor that will open dropped file as a split pane.", + field: Box::new(SettingField { + json_path: Some("drop_target_size"), + pick: |settings_content| settings_content.workspace.drop_target_size.as_ref(), + write: |settings_content, value| { + settings_content.workspace.drop_target_size = value; + }, + }), + metadata: None, + files: USER, }), - metadata: None, - files: USER | PROJECT, + ] + } + + let is_global = current_language().is_none(); + + let lsp_document_colors_item = [SettingsPageItem::SettingItem(SettingItem { + title: "LSP Document Colors", + description: "How to render LSP color previews in the editor.", + field: Box::new(SettingField { + json_path: Some("lsp_document_colors"), + pick: |settings_content| settings_content.editor.lsp_document_colors.as_ref(), + write: |settings_content, value| { + settings_content.editor.lsp_document_colors = value; + }, }), - ]); + metadata: None, + files: USER, + })]; - if current_language().is_none() { - items.extend([ + if is_global { + concat_sections!( + indentation_section(), + wrapping_section(), + indent_guides_section(), + formatting_section(), + autoclose_section(), + whitespace_section(), + completions_section(), + inlay_hints_section(), + lsp_document_colors_item, + tasks_section(), + miscellaneous_section(), + global_only_miscellaneous_sub_section(), + ) + } else { + concat_sections!( + indentation_section(), + wrapping_section(), + indent_guides_section(), + formatting_section(), + autoclose_section(), + whitespace_section(), + completions_section(), + inlay_hints_section(), + tasks_section(), + miscellaneous_section(), + ) + } +} + +/// LanguageSettings items that should be included in the "Languages & Tools" page +/// not the "Editor" page +fn non_editor_language_settings_data() -> Box<[SettingsPageItem]> { + fn lsp_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("LSP"), SettingsPageItem::SettingItem(SettingItem { - title: "Image Viewer", - description: "The unit for image file sizes.", + title: "Enable Language Server", + description: "Whether to use language servers to provide code intelligence.", field: Box::new(SettingField { - json_path: Some("image_viewer.unit"), + json_path: Some("languages.$(language).enable_language_server"), pick: |settings_content| { - settings_content.image_viewer.as_ref().and_then(|image_viewer| image_viewer.unit.as_ref()) + language_settings_field(settings_content, |language| { + language.enable_language_server.as_ref() + }) }, write: |settings_content, value| { - settings_content.image_viewer.get_or_insert_default().unit = value; - + language_settings_field_mut(settings_content, value, |language, value| { + language.enable_language_server = value; + }) }, }), metadata: None, - files: USER, + files: USER | PROJECT, }), SettingsPageItem::SettingItem(SettingItem { - title: "Auto Replace Emoji Shortcode", - description: "Whether to automatically replace emoji shortcodes with emoji characters.", + title: "Language Servers", + description: "The list of language servers to use (or disable) for this language.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).language_servers"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.language_servers.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.language_servers = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Linked Edits", + description: "Whether to perform linked edits of associated ranges, if the LS supports it. For example, when editing opening tag, the contents of the closing tag will be edited as well.", field: Box::new(SettingField { - json_path: Some("message_editor.auto_replace_emoji_shortcode"), + json_path: Some("languages.$(language).linked_edits"), pick: |settings_content| { - settings_content.message_editor.as_ref().and_then(|message_editor| message_editor.auto_replace_emoji_shortcode.as_ref()) + language_settings_field(settings_content, |language| { + language.linked_edits.as_ref() + }) }, write: |settings_content, value| { - settings_content.message_editor.get_or_insert_default().auto_replace_emoji_shortcode = value; - + language_settings_field_mut(settings_content, value, |language, value| { + language.linked_edits = value; + }) }, }), metadata: None, - files: USER, + files: USER | PROJECT, }), SettingsPageItem::SettingItem(SettingItem { - title: "Drop Size Target", - description: "Relative size of the drop target in the editor that will open dropped file as a split pane.", + title: "Go To Definition Fallback", + description: "Whether to follow-up empty Go to definition responses from the language server.", field: Box::new(SettingField { - json_path: Some("drop_target_size"), + json_path: Some("go_to_definition_fallback"), pick: |settings_content| { - settings_content.workspace.drop_target_size.as_ref() + settings_content.editor.go_to_definition_fallback.as_ref() }, write: |settings_content, value| { - settings_content.workspace.drop_target_size = value; - + settings_content.editor.go_to_definition_fallback = value; }, }), metadata: None, files: USER, }), - ]); + ] } - items -} -/// LanguageSettings items that should be included in the "Languages & Tools" page -/// not the "Editor" page -fn non_editor_language_settings_data() -> Vec { - vec![ - SettingsPageItem::SectionHeader("LSP"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enable Language Server", - description: "Whether to use language servers to provide code intelligence.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).enable_language_server"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.enable_language_server.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.enable_language_server = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Language Servers", - description: "The list of language servers to use (or disable) for this language.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).language_servers"), + fn lsp_completions_section() -> [SettingsPageItem; 4] { + [ + SettingsPageItem::SectionHeader("LSP Completions"), + SettingsPageItem::SettingItem(SettingItem { + title: "Enabled", + description: "Whether to fetch LSP completions or not.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).completions.lsp"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.language_servers.as_ref() + language.completions.as_ref()?.lsp.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.language_servers = value; + language.completions.get_or_insert_default().lsp = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Linked Edits", - description: "Whether to perform linked edits of associated ranges, if the LS supports it. For example, when editing opening tag, the contents of the closing tag will be edited as well.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).linked_edits"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.linked_edits.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.linked_edits = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Go To Definition Fallback", - description: "Whether to follow-up empty Go to definition responses from the language server.", - field: Box::new(SettingField { - json_path: Some("go_to_definition_fallback"), - pick: |settings_content| settings_content.editor.go_to_definition_fallback.as_ref(), - write: |settings_content, value| { - settings_content.editor.go_to_definition_fallback = value; - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SectionHeader("LSP Completions"), - SettingsPageItem::SettingItem(SettingItem { - title: "Enabled", - description: "Whether to fetch LSP completions or not.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).completions.lsp"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.completions.as_ref()?.lsp.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.completions.get_or_insert_default().lsp = value; - }) - }, - }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Fetch Timeout (milliseconds)", - description: "When fetching LSP completions, determines how long to wait for a response of a particular server (set to 0 to wait indefinitely).", - field: Box::new(SettingField { - json_path: Some("languages.$(language).completions.lsp_fetch_timeout_ms"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.completions.as_ref()?.lsp_fetch_timeout_ms.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language - .completions - .get_or_insert_default() - .lsp_fetch_timeout_ms = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Insert Mode", - description: "Controls how LSP completions are inserted.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).completions.lsp_insert_mode"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.completions.as_ref()?.lsp_insert_mode.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.completions.get_or_insert_default().lsp_insert_mode = value; - }) - }, + SettingsPageItem::SettingItem(SettingItem { + title: "Fetch Timeout (milliseconds)", + description: "When fetching LSP completions, determines how long to wait for a response of a particular server (set to 0 to wait indefinitely).", + field: Box::new(SettingField { + json_path: Some("languages.$(language).completions.lsp_fetch_timeout_ms"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.completions.as_ref()?.lsp_fetch_timeout_ms.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut(settings_content, value, |language, value| { + language + .completions + .get_or_insert_default() + .lsp_fetch_timeout_ms = value; + }) + }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Debuggers"), - SettingsPageItem::SettingItem(SettingItem { - title: "Debuggers", - description: "Preferred debuggers for this language.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).debuggers"), + SettingsPageItem::SettingItem(SettingItem { + title: "Insert Mode", + description: "Controls how LSP completions are inserted.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).completions.lsp_insert_mode"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.debuggers.as_ref() + language.completions.as_ref()?.lsp_insert_mode.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.debuggers = value; + language.completions.get_or_insert_default().lsp_insert_mode = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SectionHeader("Prettier"), - SettingsPageItem::SettingItem(SettingItem { - title: "Allowed", - description: "Enables or disables formatting with Prettier for a given language.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).prettier.allowed"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.prettier.as_ref()?.allowed.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.prettier.get_or_insert_default().allowed = value; - }) - }, + }), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Parser", - description: "Forces Prettier integration to use a specific parser name when formatting files with the language.", - field: Box::new(SettingField { - json_path: Some("languages.$(language).prettier.parser"), - pick: |settings_content| { - language_settings_field(settings_content, |language| { - language.prettier.as_ref()?.parser.as_ref() - }) - }, - write: |settings_content, value| { - language_settings_field_mut(settings_content, value, |language, value| { - language.prettier.get_or_insert_default().parser = value; - }) - }, + ] + } + + fn debugger_section() -> [SettingsPageItem; 2] { + [ + SettingsPageItem::SectionHeader("Debuggers"), + SettingsPageItem::SettingItem(SettingItem { + title: "Debuggers", + description: "Preferred debuggers for this language.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).debuggers"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.debuggers.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.debuggers = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, }), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Plugins", - description: "Forces Prettier integration to use specific plugins when formatting files with the language.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).prettier.plugins"), + ] + } + + fn prettier_section() -> [SettingsPageItem; 5] { + [ + SettingsPageItem::SectionHeader("Prettier"), + SettingsPageItem::SettingItem(SettingItem { + title: "Allowed", + description: "Enables or disables formatting with Prettier for a given language.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).prettier.allowed"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.prettier.as_ref()?.plugins.as_ref() + language.prettier.as_ref()?.allowed.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.prettier.get_or_insert_default().plugins = value; + language.prettier.get_or_insert_default().allowed = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Options", - description: "Default Prettier options, in the format as in package.json section for Prettier.", - field: Box::new( - SettingField { - json_path: Some("languages.$(language).prettier.options"), + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Parser", + description: "Forces Prettier integration to use a specific parser name when formatting files with the language.", + field: Box::new(SettingField { + json_path: Some("languages.$(language).prettier.parser"), pick: |settings_content| { language_settings_field(settings_content, |language| { - language.prettier.as_ref()?.options.as_ref() + language.prettier.as_ref()?.parser.as_ref() }) }, write: |settings_content, value| { language_settings_field_mut(settings_content, value, |language, value| { - language.prettier.get_or_insert_default().options = value; + language.prettier.get_or_insert_default().parser = value; }) }, - } - .unimplemented(), - ), - metadata: None, - files: USER | PROJECT, - }), - ] + }), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Plugins", + description: "Forces Prettier integration to use specific plugins when formatting files with the language.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).prettier.plugins"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.prettier.as_ref()?.plugins.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.prettier.get_or_insert_default().plugins = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + SettingsPageItem::SettingItem(SettingItem { + title: "Options", + description: "Default Prettier options, in the format as in package.json section for Prettier.", + field: Box::new( + SettingField { + json_path: Some("languages.$(language).prettier.options"), + pick: |settings_content| { + language_settings_field(settings_content, |language| { + language.prettier.as_ref()?.options.as_ref() + }) + }, + write: |settings_content, value| { + language_settings_field_mut( + settings_content, + value, + |language, value| { + language.prettier.get_or_insert_default().options = value; + }, + ) + }, + } + .unimplemented(), + ), + metadata: None, + files: USER | PROJECT, + }), + ] + } + + concat_sections!( + lsp_section(), + lsp_completions_section(), + debugger_section(), + prettier_section(), + ) } -fn edit_prediction_language_settings_section() -> Vec { - vec![ +fn edit_prediction_language_settings_section() -> [SettingsPageItem; 4] { + [ SettingsPageItem::SectionHeader("Edit Predictions"), SettingsPageItem::SubPageLink(SubPageLink { title: "Configure Providers".into(), diff --git a/crates/settings_ui/src/settings_ui.rs b/crates/settings_ui/src/settings_ui.rs index 4144adbd29bc4c75667375ef8c8946ae3c949b44..50bb6534cc15e926a5592acfb89000507e1f46d5 100644 --- a/crates/settings_ui/src/settings_ui.rs +++ b/crates/settings_ui/src/settings_ui.rs @@ -727,7 +727,7 @@ struct NavBarEntry { struct SettingsPage { title: &'static str, - items: Vec, + items: Box<[SettingsPageItem]>, } #[derive(PartialEq)] @@ -3965,7 +3965,11 @@ pub mod test { } fn parse(input: &'static str, window: &mut Window, cx: &mut App) -> SettingsWindow { - let mut pages: Vec = Vec::new(); + struct PageBuilder { + title: &'static str, + items: Vec, + } + let mut page_builders: Vec = Vec::new(); let mut expanded_pages = Vec::new(); let mut selected_idx = None; let mut index = 0; @@ -3985,23 +3989,23 @@ pub mod test { assert_eq!(kind.len(), 1); let kind = kind.chars().next().unwrap(); if kind == 'v' { - let page_idx = pages.len(); + let page_idx = page_builders.len(); expanded_pages.push(page_idx); - pages.push(SettingsPage { + page_builders.push(PageBuilder { title, items: vec![], }); index += 1; in_expanded_section = true; } else if kind == '>' { - pages.push(SettingsPage { + page_builders.push(PageBuilder { title, items: vec![], }); index += 1; in_expanded_section = false; } else if kind == '-' { - pages + page_builders .last_mut() .unwrap() .items @@ -4018,6 +4022,14 @@ pub mod test { } } + let pages: Vec = page_builders + .into_iter() + .map(|builder| SettingsPage { + title: builder.title, + items: builder.items.into_boxed_slice(), + }) + .collect(); + let mut settings_window = SettingsWindow { title_bar: None, original_window: None, diff --git a/crates/zed/resources/windows/bin/x64/OpenConsole.exe b/crates/zed/resources/windows/bin/x64/OpenConsole.exe new file mode 100644 index 0000000000000000000000000000000000000000..8bb6ab2188fd7a56adc941c3f8449265e762cf06 GIT binary patch literal 1145344 zcmdqKd3;k<`ahm7p+y?fDv_cBQKMGt(y=bBh$gg=8%U)pNR`z=5gn8cBv=Kdm{z%7 zBAro3X2cP?>+1D zJm)#jd7kGy=cMe~I$N5}W=qGPVc2X-@#H_R`2Ugrmz`p>_3Yo!)Anljbtf)O39dVF z_@tYrxhtnmxpC@sx40)ZcVXJ88%9|!kVqb^DtlV$2U4Ku8?LRN} zy~!%G+jf$zM{3VAZQo|uY|oNXHrx19@t!SSy&!{pPqo>)iKN8SwlPN#_q{Pk+fr@g zms^$0x@N`1gVklTe6!hRre@o!?06~2v2C1#XLYvi!M`)d{MVRc+uak{5B9WGT4~A8 zzx1@_;XAw1VUvJbnGV|=)LU#gyBzDYLpM}~Q1r~5CZ5DyqHZ-{bAt?LPrd%S&~-Lj z<^Xb$!)Ch}&+kz->7N(ubha#JD=0vQ7Z?)Bv-!WoKd;T!cy^^MC~yR>wuQ*Qq*FPx zcM}Q%0A$qnmf_9*x?LK^L?^Mov_S73DPeDP_(gvCe_-@8C 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%0Dp9l9UHbz>0p)8oD$yadUxDri%u;=MC6@Bm zt@oH0MC7{6-gDP1uC{^b*!U?72_A}GRR?m#B15ZCQ;|)))wn?~j=xIdb~Jj({;`T~ z^4OTgwxu?!os5V)2-SQCk17YVL&9gvOAx>tFXqbFmh}QY9{LUgfm5N>RT-y3uYXCY zo@=QQ8tCfy!cl35LdKa8?eo7%Zt@Hu_(iklOej}*IYN4r&v8SANKeFjUyJCxVtFixNMKbbnT-EFa5Bdohy2X$JF zW7q?*!reGP{zJ}7j*9JC%)YDN(GdCLtd@1P!O|!BX2e{-)$-3|5izTL;8bn!==EG* zQlH0HFKIh)JC%uVkjZ<#2S+lY8)%zJkTW&2%7A?LDkJe-CjPPF2J@~BDT{{tB51H= z!*b$K+rBuB4ZpF34Y!$V0YQj0AMb$>2X4aZ`p<1^=R3>1mRU8 z?{qn^X3aHZeW0B_T*2GE1WSFG#nS zn&oX3P#qjKUR&%5VN715LpYTw{;SWkbE6Wi{lrZE#g^64*>7ihlnQdyp-3 zEC!vlc0>pnNWU-MaN2dUPh)+sev!oZJ5VLI9`A&Knz<$HjC{$?b?vqf1Ij(RbHv z=HqA6#nXq+y9hog9!Br)wmXGnh0PY>mKQ_^rT^_*%S3`@tdp?>+?RF=89A2v&s?3P z{ZrMXQ=Q6-OVy)7gB;j?2#p;=h32z?bjl?3h%M9~ju*4eQ za@x#jyVa+7qntdfm!~4l8(j5Et}denb|ZCYf8K+=PQYei&5ULuKLQwD+OjWudC7Jp6@l0Bsd~7e-lL~{o^Yn zOb?rByeh!g!Ig$6nz+xa&h7Or@$zMu06 zHjJGFnQ84-NWR2ANm}8G*R7_rsL^WqBy`G-+KTt1H;DL%tz>~;W-Bz zNwL*}Tj}$Piyber44=|@v29lDElYV$2|A6pEDILOqh|@>A9WE%iGtUW?$NOQ--P~g zYWIa2cSNCj?U1)tE?#Pj79}QSNM>zpw?{Lh{>L@_*NP5C5+@$`_pegH$J7~Xw31jY zFOoBG<9-waCAl-SZR~!&}%&Gsa(3J5iTK>1Mz&eJ?Ylr**+d(rFgaT%KG^$`|o*7Y0S*)f@Xt(?ydX(53 z**+Y)Hp#kcF5~u44wr^a^PDnCK9zW=xD2bkm0b`6cd^`FmTqHaO#37~GvNM&Yg>&< z@>|+tumeQrw>2`8>2Ql`mBvj|Ys8Y{{9A-ryxF|rf2GW7Sw?^Q;&-i}7^|h>6}>b) z%!{YR7l8dQ!?kp$ZlGcr9i13*Fpq#{hDJZ2>e$sd2^FA-+%{T(n`Rg>JKm(&jQGOT zVJ8v+HD$wzhJP=EWN0D#{1nZ$L_SHhsQC|u>$pofmD+NoQh#AyE6}HthzN(MS?Iyn z4D6~q{|2a+Lgn?hFUj(x7 z_X0;BLNGJH6(^>oayQYnCF)VTEg4AIUc^YNgucX32c`peDg~!=7X_Q$ng;1_4x@+Q z)t9;E{)R;8K|9Xv86BZ}eK5>;bX*Q84+Jo~s6p)W-SCo>;^!O~hS2G&zbKcpa5;9U z$RLNTgrQt1rv(RU_{@Ggj)H6(o871CxeJht2{JOkhBq=i5L?wyLz*pW(g+#GNDfqH z;Lh29IMyuqayI>GJ?bywwYg~}!_(f>!tb?VX9%u7v_H((pe78GxG0P;@GpwsSGv*y z2v_WgMpWL@@9k0Elf3pV597yum3ONQgfit_O?g}ive5LAj2!5Qv$u%ACp4MF5xw{f zuS+&)(q+`2FTQlWC$0Yby9gPNgxI=M(HnT$i~NNm4_9P`B76T;PSdI|ohkd953`F| zWds?r^S;=5!*j5E4r||KxR**)&t!P|jNb8g^OCLrw3;UirF0b%`{o8(AloyvhsI9N zTU5jHQI@t}kIY0U$yO5zZ2c9B5XOno<`-TVZeF}y_QCo)xVPr!XgHg3r})&!q>KIgEGznn&|x|VkVzIqk`_Jqd~8C)p= zf>w;tjQPRDz?gBI5h`m~X*B$4NWco2wWJIl4)a2Gv~5$}H{kjl|7ZV(w-hg?a)T@B zP!;?(vFRd1CH-1=bQR|fnMJwW>N7czDc~0rAl71P#w%Es{mA7eJ67-MP+G-FWbMA= zv9zTcw*zp6#ISkyKX|u{8N-hs4#P_rgT)xx6`xu$9V$kg`GxixiShZj*x0^26)x=v zmu{9Dky}d5P$5LxXxSB;=8iCXmi3qb8~fkwbG0!+==w4WfJQ42xt@Ck)q84(+ogzz z`8XJY@L{(#XPS)zJUFW#9}o3UoS)N2<*lm6Gb-I`$CC8mmm{R&##*q+t>(r)4(F1` z2B#k&H$iQ)R2*3GI0Y z8@4$!t+;5wwI}zAQ0*lgW zoz=3O5Xn{C%j}H9)J5IZQJ^}B_(w9k_A~f z2D_(-9>hm^m=#|@p;|E@6o1|*y5VgUP%3o4Uf0_c1F+!D=|{@L#q3j!I5E554aVAbuN={oJUjTswzl{E*Q~puy0or>FXJFEWVWIG zc$)^f#8=arH#>VGuJvO0UMCNKY( zza4fdzHQK1y5$`M9QzaRPKrcrPMF*F%tYQicZBgN)!|L#NCgu)Y$h_8rHR~wbTG%g zuNsBo_)Jg=2TxbXS7bXPUI6SgFkNap#(&?2W4J|@$qalawO5}6e7&aPlhd=B$H&a- z)QGuw)Dy%EZG%{`Nxq7?6eIecJ z9=$t%vu6gl zC*ALrudIjo*Ero~iCAadBHdU!{!noPV4jf}dAhA05vhzlW$AJhZ~~02cwPvFBPv#g zZnmu%gu=k<6;27VE5jLdpH>E)&TC~bTw^#fa)807tI~@@^yq<%*9POq_!+mBH(^(> zJ#S=R%=+ef0cLF#H8_x|pB%GK%sTsT>E)tuk2?DC=9MoU5Lj8YFl{%cOHs-|HyMv< zcLR~188ld+j>ue%4AZk+PBS8~HJQ_q?Q>atT!a%LLTF< zHKAa@JrOR|PB_EF80Az7@trP4+5LP1VP`>|PFGKVLS)5hM@f8gK2!ybBC%eZ5v}9z ziq0fq?vU8-oO)X4CCG~P6;ddoOhuR@*-vin=UZKFc!|w!v_0RKu`QWr;x@T6h|3z@ zGQsKojCy`{(ah3s^v5&$KubOl%pfd2NQ^ng%Xa+E;$_4MrDcJ{9Wn8|Vs|ryUB(g6 zgC0`ZH(HJ7!Yr}$K5TI;%6u$aC1~6e4JaU}H&eAW@u2Kq8xlXi zFn<0psDD6bwXbR1;Iaz-VnP@|Oez6vBG0GX^Esb8zq0xKi5-)wfgKKL5lfC)ZO%fr zTM%YXVaLy!j?gL(cStKL9S8Nc!=Y*{~y}k1wM-E?*C7+2}DSoAfR|FtHd@o z)TW|s;zGMic41a_A&OL5Z?Pby)oLoc5-MPD6Ula1#nwL6)>hl*RE%e_hulbe5X-)?ugv62+<6RmBkMZ*bLq-9l~&$J?%dnp~k$f6_O~O?TRua#d$r zeNOZwldl;VWMQXf>a!FC4f7hx`nGZr&c)}P(d=B;N-Js82fOa{vNF7;t(&?x)v9}M zY!xK$&dq3OqYBwE-Osa^5m_`s$kf)#+j$W1ihx5nx$SVjvutpA?QqA_0jKFKMv@cqZHI~~Wqc-w9N5`a#^0-7Z;!uSZ4$+$fU_ub8AymE@2r3fCUr zhs9vxl8`gKEL1(c*!i}=C)*L|TzOW=IlD9yDhyR0p|-PZ*;^4BR*|GY9inNPD^^E* zL|8P9mu7ng-|Oo!9o8%JZ;K+iO>LX7m3(5tz#y1M|H;h4b7ji6>kKh!&?dMr`rcm& zPrA0#z?Y1Yv?3-XXBZKiY5pcy^=Lc-Yb8SxpDpCNLJuM0J3J?6z^v^zm*BnU?63nD zR3*0ybJ|9>$E)YdQWAU`gkwmuLC&G=@_GvU!Q{PConMaSPAzwpCZShpU$D~qa{sG# z`b=x+V97Du%uKgkAK4UXeGS>(%vS)K=?1hC3*WV z>9fwanvnxG<~#{(JjGM)>9HJa=+i6Ars}C0WO~skr5mGb%O9)c+fw*u%2PU+0sN-g z&1@`XHaG2o32>V_%<41#z=kR4aqmCD5D?%%mKE_R;yjHn@3T_#vUaX|a0JKwX1#hb zRwjFGsH7p?bi|@`6Cqzk5rC;#cR~x;XMI8%V4rSKc6BK>+DsPAIHO>-{#wJq=L9ze znL79B`_!v}?w~qa&>bw(fkuAwgwQj=3s&;o%)5A7P$vWbuseHhDR^)tQlJZ)qUo#H zj-N>c?i0p#y4iK>&323>0VoU?Gq&SPeqpxbtIJZ^Lac{#Hv}=WxFb)FVsGgx?9m5Y zT0=%}%EUZz5>{ywG%*i;?$AY>gXh#HgG2%7+cf@INOz|J7%@J_He-2=_Vh;O&8NGG6G^0jvi zfP6&0Z~&*k_7peiV|10N8B^w-D8J{r09&76`Pfx_E4%gK{-_{XpelrsI5 z&izi06bm`*fFSvkM$*Z`t^!u8IMRAfsw|1}kW3a7qumY~9pg(dxYI6>h^9-O*~^{( zXyFB6Z+CHKG>6iKp>(u3ls>C8k`58zWOfan#YSi~X0i|Xxn8^PqEOoB7IM8P?E|`( zqI!4kH}Xz2kuj$Oj93(#(h*ASDMTdN#uJDIcSWZVe7o$%blGaz_N4Y#T)AtbfRfJ> zK~pLBbAL_*FH-3aJ*E!xZGL^5y^er;LD7y^x+keNQVyN+r+S7pU?vV3qPF`t){ zs>$?dmLO0(@CfKdvFF_<1|>3DViP?7j7DJPFT}seY2+H99;JAopT=>c&!p6Phi}$m zmXix`1|3ftzd~Xf1<*Ny^bz&~p@r&Rdja~{UaRdjjTdEMdqJ!+W>@#5kF*zH zG1X(Wy{loKT};ecT-Hf%H*GFMfSggokGwPF>?WJRA_&-&ArHa=KFTO#=OH`axF*ZRWw5k+uia9jc)D65Mu44Qh z-_@ezru%htj~`yO!mGM$u<937HQ$F5^)f{?c1!iL+&`mVQhvY&NuQkUX3`#J81Pg| z6j-hQ&8bIUKv=UU#>|=paDpEM-jK5;54#BzewnF9m=$e+_YDKQVV-8a4nZ)xiEn^* z^PuYs*N&frRy>L1hDAVLNLRFvzM(4cuoXK{m#Cba4p=cAmM|@J#IQWtu2Uu#BUR@! z6H|KmTm!sEM{+Zv;^S0&i$w+uW_`!+i6f<%1|cs+N4;SfW3h?7ba^fm( z5f=#&VO{wHkp5QNXSu6n3ntq@EZww+h)lJAD?{Ifp73Q&Kze>@G;<*=;$oC7mlBq; zaUhoYiB^6ry_g{O|22UoF!tLWcBXaxl`f+dZxydX{)YW)C9Z=+BX9uep5Z3o;#>A` zGdup1Kb4q!8KfqZ7LfMWeV#VqZ|ZN!S&|2gjOQdWdP;AE|NqIMPyHeH)Zg{g!wo!@ zQXcESB(F2D9?e{@?@xaQy7xy2>w$m2^v;No7K-G#4CyL+eFJ$74TZ)!tnNybV+CGJ zDDM&z6ddC3ssf_=oj$;?`^&RO0LTft=@XjN|zDC7wwE^%f)Oh?A_m*Ywr(g7^=Z!?vGNUrw9vMyCA>2yh76o6NOg=b7>0;c;K4t=8X+IrazI<&b*Q7x&Cl_ zePuX33r2D7WIJ77LtkbwfRRaD;0GG1<`@pQpBHPN6&ES_UD0H9(-y*fB)Ets2Ui z92l_LCUe4K_qM7=?N?3K7*Ft^qdro{+jGZt9P`2;0heNbGyLrLdV5$1j(ve`bcdk_ zxe~1d!x-}Qa8_$J5*8N11o+e*Q#e(M@EW5C56TuRXy`3rm`3-cNzit=k1>)FBdbz) zFX*(wt47`{QyElbVALjS!vw3MweniiReEG?Xs!GX7g8=Z#GH$e0nxboJUU*6tRvL9 zrvk&*@aPVN4^MPH&qdeh-l#)r9e9YKKRe$4V^{?YM^|mr@QSE950f$PNuKHaz@tS9 z(dz`Ovg2Q3Q3G6G6mtfQpa?D8{OQ@6x0ah}D?5H06~HohWOy^>shekP2QfB_OS%Lft+5^9Usdxs;9XQNEgH-H%smFVsJfX%)zH1;l?c?vy04-XtmRs4GMC zszcnKdWAXlsC3DfWZ7vL>c!ddlTE*pu&(UXyz_TGw0$G*1g%u{%~&i%hWWU`FGl|b zJCf&t&>=mQEN_{%g_lBd{DB@}#T!~z=w3cX_8%Tjt){`FDQ`VN zUJFNewQS^9S`gc*$7I_87_{#Ph?R4o5)HA^kYhk9Nnl+Bs0H-}hAR=wd5njtCHGG#|g@)q*#mXxQq|MUF%MOE2acQ~i6sl1(r4E>vvf>3U|XN(erS*?ew z5#tBU>g)HnOzVR#E0~!XcX%XIJW-S!YnP$mgQg}<47R?WJl?rMBB3x6p(C75UKb8k zcZ8iz-)_}GEiWmR>Q@(;w$EZsyD$B$RW7ARF>4h?KnXz0|1&2PRNd5_JhL;`j0RI zNi=oM)|i>i?(uC|a@@R*!HdD;b*uG3D@LTv5$?ZaBVw8k^~q#n`_nHyI!bGkS#Fd< zQS5-XmdtwMa}_#La+n~&oCH8d%^{$d=;)Ik$QI`AkrCY*W7c}EKi>4KXtn^ zqquHnvC7NpW|mRD&Lp?%uqx`CHBNe5nBA|R8h0;796;)H2-LTOe%u)ftk$2T>YnHV6oN3mO1=R9l!#b&Z^5kZQ7yI#VmMZp97#vuns3|Ee`F}I zYvqYfXV6;zcy-A;uRuTrI#!MjSC{{lb29CYs4jnzGt-S*dHbpZ{In!Tg>a#_TEEQ& zd~fLOcbp#6LGkdRp*jbt^NNbh8n30|!N5ac0#-QUe=CNe(unlo02fiaV)w&5vu;k% zY-pTs-GVvLrrXAn!G48Cd-9*(&2H4CDgW8;pZ+?T0-r=evi`diz%*g zKfW8(pBaBcD^sDH?!0Y79L1qk4?bzCE*z}-$&aks>s75AteQm&kY{NQZS_vC>fwV` zA5&HS3BTvpyP)L{-NT^8TmD+4EKab{I|6wmJ#R&2)8=WCKnW4>Q%%I_icjjy$?%6+ zGZJG@n2=!rHA+gr1sPENvFZ+k;3)&=@9du;uKfe62?~!n^41fK19i2ic+vY%?OxjJ z)H;h!>KroV@O6mJs*R0iD`a=usdWJ^rxo`xBGed1Zoei{)>Oag@Q~Bpn&!yUxG-+* z`zv4BGVQ`QSu&<2mIn2ov?7w%J3ARWuT#XOq&WmJ%RGl)np==-ZnK)(_td-DzMs)p zUK?c`2a+eZOj`-Z2G*w!m31^~&EcmmRykEoTXS^6o&IAq3W07b)~(KSF*Sd|0I5&f zCGwl1`o?Ehp&HT7m^j5y7uY21bTO(LM9BK)Ki%hj^Aqai7^PYo7ItSV}-05u> zEvDy~xwBae+bcZyNmP~^!*R_YI|VO`DL%(8ZMJ5xgV2&jvvUYkK+R~MH}hGanOgY1 z3C)u-=Dx2}jC?_?uH^U^K@PO-Y!}k{wuiK6B@B+Kj4qg48V+m+V{H!yc5&DhT`*ed z0Tz%@Vwcq>)Dc}Ut2n-(9u(CXUCSdiy|n1SFcUkP*Lm3@WzvA1Yxu z@-ef>uOWE1H&qeT5BZgQs64IzQB(Dt!K%lo>fk>^pNapSU{oDL`5H~$^@gx>Rx|52 z?A&7J(0R()qS4^c;qGP&775u;$V@EyP+(GA@PABIw5Vv#S@xEY4=v#CbYyq` z$;5%4LcPG2Yf5uPW5d3O?D*#|Js3HzQ<^R&>iVh<6SWm#6etNB>Su9YQ`>dyZ8 z>c$NvbVFLk_@Db{Ia_$qV{h*!bTzMnWux%3(=+3&P~eGcCTQD-tC8ehC@j#s0`8y0 zZ6W9Wkh2rvcKpwwY!6|I^)c*J%MOoJKdqjd4|6E$SXLgY2Iwz&jJmu8>an^j+d+qp z3Rmx@^E{=>A#Pc7wxlDyPA7g;rp9<4tnQ!q(tvw-MTv*=w6Qgha|?X zpWSnLB?Z@%4HaC2NF&003Hc(6@5MC#MO<7>v9jfp}bO z;D2w1teRg8HvI0V4Os;dH6gWZc>&?7ljlhqkrP4)xp6AF1gDebo{}yeR2|z+nK{?) z&w%HV8JnLR3_?!3h9}#J5C6z@ir_q9>!}^);O)mUMXeZ&-@fX#7HZ3?O2KYk+@z$> zivmwsDL=rQn_;}_tW<@$#`D)fX0m>x3}Ivj7}SsL87f46CX7Cyel<#8T5G_k$NgUM zVZZ@Aq9P^-@t9eNC_$TjxP7^tX|{U~g|ckh>F%FbL?gS^NVB-4oI*<<7k1tXS1(-- z(x@-V(!4%TtUtiX5J| zxCm>^Vs#r?&*wQV9F$yfu~-}6WkRKm?gKw6CGmv;>|&a_XGy8AW@CzK-*o5nb!is-#I3@&e&WG`R+nhL+{&;WtkcD0_a#sGq0Bj z#s0v3#;OL=q6$595xq6=IVfLQw}Jl8Q~$3b%CzAejrzDr+M^DhMo`njA#eLEQoxIk zCEk$j|IismAp{k|4A(Hj(Hi$264voa=lzdAsd@GAPm)60FMh}b-ohR-nm&)sj}sGu7J5TWJzp@@Q25FW6WOnrw2-*wX9ajTHNt*w9J4G@p8^#RTBRkeg*`aXbRQdBQ%=) zDks9Li3{V7L3ug+S{NrJt!UO7^;tw!O~|=X;2o;IQD`LOJ8L;!!Zq+{bN&i22uP^v zaW}#}g{E8Ru-qF)_#kI*fQBka9BrrW6LVi6Net`nVRscQr!&xhOzx6k(AeP&I9*5( zMs_HA+yFoA9u<2{LqXzWz|WwLa!FNQ!YJqK#)?Mzn#g z34jo+$&SA}eOQ5{7H4y7t8PV|l6&cuk=zl|u6zW%p`QJWC%LqzgmhMNc+#6eE z`21TrnEW5M8lcs{8;OzO^u1NIOpGxz4j8`xoNb@Nv_u?4P#ml+y-EW^U{#tg8X$(ZqeYeZXvp&?cIIZibBImBvU5w$>I^}R>(@@96$sOn<6Jy>D>t>T*JsK` z!DnP7kWdg73IjbWu0h&&HKMWlm7HujCJV%Lk1^#_q z_2Y@ec0^$w*?%gB>`!_hvcK?JB?;`RuMiPYBe^|K7V4V4GgsnC0CN{!ez-;${YN(p zp~$eas)ato=R3PXf!>uPF=DUo=(iB*26n9&;cS7>Ey9!AF=U-KPAznVHpSJu`YR&N zmzReSWR}1RQSAwaw33M^mC$G|<0<{QpGwVi$TFQ&kQ`h zqF&ea

yRH}+csv)mI&?`TH(E}=JbkD&r*opWh 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 z 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

NEIXl`zB5% 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Π|LacluCr6q{xz0&OD)Zyk^8-S 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 v8Q8l!>9slo!guzf! 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

i(vjx|1{!1Mv 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

#ZnvP>G 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 z zFqhEZ)=c$ruT~KMG}}^}Bq%kxJv~Lfx{6SBPjNRFoHB^Pga8;TO$}&s z8POT<+k04JH%EEP!&Op~$&tEnowVUIeC45vDlwl;j!mwcB~^NybiU>DeYDTx7YAty z$G6|wrm4rRQ%&>-=9c@VN0t$dxtdu^TgP>py`G`R2*gs`HKQwsy)vWAemdujx3kqm z#dxTwdLap;&zP?VXlMJD5Yx6?E26)bZh6UU^>bZ*<<)h*!uoK4!6Lb2y5lv9VhqkI z4^@{l$PCP!TpJ!STrEj79ZL=Km6NYmC7NS-7<=A$(?Hs79nEfP#w635PNv|b*vZ{G zYPgJ|`BL7vKuLMsf~oQoLuU30k)z`(s)~IzfrVsu*jHPpOE6bbB?D1A{+(GTcVD-d zDM_78-bu>!pj=-|?>XNzOXdE0GqQGx+4$P}8VanQaoG`!nPdPV_1x5=!Z4L~uCG)Y+lxu&*RkURx)F7B#lL6ir2yQGdXedTm{}Tn1Gx z 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 literal 0 HcmV?d00001