From a71cc6a1e7e3831729cf8d94a64646a32e555fb3 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:27:44 -0300 Subject: [PATCH] settings_ui: Add some design tweaks (#40818) - Improves the UI for subfields of dynamic items - Makes description writing more consistent (add period at the end of every sentence, fix capitalization of proper names, ensure description is always in sentence case) - Other small details, mostly around spacing/padding Release Notes: - N/A --- crates/settings_ui/src/page_data.rs | 644 +++++++++++++------------- crates/settings_ui/src/settings_ui.rs | 124 +++-- 2 files changed, 396 insertions(+), 372 deletions(-) diff --git a/crates/settings_ui/src/page_data.rs b/crates/settings_ui/src/page_data.rs index 7bcddfbfbf2d3638140c0ad35dcc9e1130e42d31..7838c99989b625f8c87c0264482dcf36cd6c46d8 100644 --- a/crates/settings_ui/src/page_data.rs +++ b/crates/settings_ui/src/page_data.rs @@ -28,7 +28,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: LOCAL, title: "Project Name", - description: "The Displayed Name Of This Project. If Left Empty, The Root Directory Name Will Be Displayed", + description: "The displayed name of this project. If left empty, the root directory name will be displayed.", field: Box::new( SettingField { pick: |settings_content| { @@ -43,7 +43,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "When Closing With No Tabs", - description: "What to do when using the 'close active item' action with no tabs", + description: "What to do when using the 'close active item' action with no tabs.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -60,7 +60,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "On Last Window Closed", - description: "What to do when the last window is closed", + description: "What to do when the last window is closed.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.on_last_window_closed.as_ref() @@ -74,7 +74,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Use System Path Prompts", - description: "Use native OS dialogs for 'Open' and 'Save As'", + description: "Use native OS dialogs for 'Open' and 'Save As'.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.use_system_path_prompts.as_ref() @@ -88,7 +88,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Use System Prompts", - description: "Use native OS dialogs for confirmations", + description: "Use native OS dialogs for confirmations.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.use_system_prompts.as_ref() @@ -102,7 +102,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Redact Private Values", - description: "Hide the values of variables in private files", + description: "Hide the values of variables in private files.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.redact_private_values.as_ref() @@ -116,7 +116,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Private Files", - description: "Globs to match against file paths to determine if a file is private", + description: "Globs to match against file paths to determine if a file is private.", field: Box::new( SettingField { pick: |settings_content| { @@ -134,7 +134,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Workspace Restoration"), SettingsPageItem::SettingItem(SettingItem { title: "Restore Unsaved Buffers", - description: "Whether or not to restore unsaved buffers on restart", + description: "Whether or not to restore unsaved buffers on restart.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -154,7 +154,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Restore On Startup", - description: "What to restore from the previous session when opening Zed", + description: "What to restore from the previous session when opening Zed.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.restore_on_startup.as_ref() @@ -171,7 +171,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // todo(settings_ui): Implement another setting item type that just shows an edit in settings.json files: USER, title: "Preview Channel", - description: "Which settings should be activated only in Preview build of Zed", + description: "Which settings should be activated only in Preview build of Zed.", field: Box::new( SettingField { pick: |settings_content| { @@ -188,7 +188,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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", + description: "Any number of settings profiles that are temporarily applied on top of your existing user settings.", field: Box::new( SettingField { pick: |settings_content| { @@ -205,7 +205,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Privacy"), SettingsPageItem::SettingItem(SettingItem { title: "Telemetry Diagnostics", - description: "Send debug information like crash reports", + description: "Send debug information like crash reports.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -225,7 +225,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Telemetry Metrics", - description: "Send anonymized usage data like what languages you're using Zed with", + description: "Send anonymized usage data like what languages you're using Zed with.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -243,7 +243,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Auto Update"), SettingsPageItem::SettingItem(SettingItem { title: "Auto Update", - description: "Whether or not to automatically check for updates", + description: "Whether or not to automatically check for updates.", field: Box::new(SettingField { pick: |settings_content| settings_content.auto_update.as_ref(), write: |settings_content, value| { @@ -263,7 +263,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER, title: "Theme Mode", - description: "How to select the theme", + description: "Choose a static, fixed theme or dynamically select themes based on appearance and light/dark modes.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -320,7 +320,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Theme Name", - description: "The Name Of The Theme To Use", + description: "The name of your selected theme.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.theme.theme.as_ref() { @@ -347,7 +347,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Mode", - description: "How To Determine Whether to Use a Light or Dark Theme", + description: "Choose whether to use the selected light or dark theme or to follow your OS appearance configuration.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.theme.theme.as_ref() { @@ -372,7 +372,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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 The System Is In Light Mode", + 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 { pick: |settings_content| { match settings_content.theme.theme.as_ref() { @@ -397,7 +397,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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 The System Is In Dark Mode", + 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 { pick: |settings_content| { match settings_content.theme.theme.as_ref() { @@ -427,7 +427,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER, title: "Icon Theme", - description: "The Icon Theme Zed Will Associate With Files And Directories", + description: "The custom set of icons Zed will associate with files and directories.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -484,7 +484,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Icon Theme Name", - description: "The Name Of The Icon Theme To Use", + description: "The name of your selected icon theme.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.theme.icon_theme.as_ref() { @@ -511,7 +511,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Mode", - description: "How To Determine Whether to Use a Light or Dark Icon Theme", + description: "Choose whether to use the selected light or dark icon theme or to follow your OS appearance configuration.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.theme.icon_theme.as_ref() { @@ -536,7 +536,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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 The System Is In Light Mode", + 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 { pick: |settings_content| { match settings_content.theme.icon_theme.as_ref() { @@ -561,7 +561,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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 The System Is In Dark Mode", + 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 { pick: |settings_content| { match settings_content.theme.icon_theme.as_ref() { @@ -590,7 +590,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Buffer Font"), SettingsPageItem::SettingItem(SettingItem { title: "Font Family", - description: "Font family for editor text", + description: "Font family for editor text.", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.buffer_font_family.as_ref(), write: |settings_content, value|{ settings_content.theme.buffer_font_family = value;}, @@ -600,7 +600,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Size", - description: "Font size for editor text", + description: "Font size for editor text.", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.buffer_font_size.as_ref(), write: |settings_content, value|{ settings_content.theme.buffer_font_size = value;}, @@ -610,7 +610,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Weight", - description: "Font weight for editor text (100-900)", + description: "Font weight for editor text (100-900).", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.buffer_font_weight.as_ref(), write: |settings_content, value|{ settings_content.theme.buffer_font_weight = value;}, @@ -622,7 +622,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER, title: "Line Height", - description: "Line height for editor text", + description: "Line height for editor text.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -666,7 +666,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Custom Line Height", - description: "Custom line height value (must be at least 1.0)", + description: "Custom line height value (must be at least 1.0).", field: Box::new(SettingField { pick: |settings_content| { match settings_content.theme.buffer_line_height.as_ref() { @@ -731,7 +731,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("UI Font"), SettingsPageItem::SettingItem(SettingItem { title: "Font Family", - description: "Font family for UI elements", + description: "Font family for UI elements.", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.ui_font_family.as_ref(), write: |settings_content, value|{ settings_content.theme.ui_font_family = value;}, @@ -741,7 +741,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Size", - description: "Font size for UI elements", + description: "Font size for UI elements.", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.ui_font_size.as_ref(), write: |settings_content, value|{ settings_content.theme.ui_font_size = value;}, @@ -751,7 +751,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Weight", - description: "Font weight for UI elements (100-900)", + description: "Font weight for UI elements (100-900).", field: Box::new(SettingField { pick: |settings_content| settings_content.theme.ui_font_weight.as_ref(), write: |settings_content, value|{ settings_content.theme.ui_font_weight = value;}, @@ -762,7 +762,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Font Features", - description: "The OpenType features to enable for rendering in UI elements.", + description: "The Opentype features to enable for rendering in UI elements.", field: Box::new( SettingField { pick: |settings_content| { @@ -814,7 +814,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Buffer Font Size", - description: "Font size for user messages text in the agent panel", + description: "Font size for user messages text in the agent panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -834,7 +834,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Cursor"), SettingsPageItem::SettingItem(SettingItem { title: "Multi Cursor Modifier", - description: "Modifier key for adding multiple cursors", + description: "Modifier key for adding multiple cursors.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.multi_cursor_modifier.as_ref() @@ -849,7 +849,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursor Blink", - description: "Whether the cursor blinks in the editor", + description: "Whether the cursor blinks in the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.cursor_blink.as_ref(), write: |settings_content, value|{ settings_content.editor.cursor_blink = value;}, @@ -859,7 +859,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursor Shape", - description: "Cursor shape for the editor", + description: "Cursor shape for the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.cursor_shape.as_ref(), write: |settings_content, value|{ settings_content.editor.cursor_shape = value;}, @@ -869,7 +869,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Hide Mouse", - description: "When to hide the mouse cursor", + description: "When to hide the mouse cursor.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.hide_mouse.as_ref(), write: |settings_content, value|{ settings_content.editor.hide_mouse = value;}, @@ -880,7 +880,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Highlighting"), SettingsPageItem::SettingItem(SettingItem { title: "Unnecessary Code Fade", - description: "How much to fade out unused code (0.0 - 0.9)", + description: "How much to fade out unused code (0.0 - 0.9).", field: Box::new(SettingField { pick: |settings_content| { settings_content.theme.unnecessary_code_fade.as_ref() @@ -895,7 +895,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Current Line Highlight", - description: "How to highlight the current line", + description: "How to highlight the current line.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.current_line_highlight.as_ref() @@ -910,7 +910,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Selection Highlight", - description: "Highlight all occurrences of selected text", + description: "Highlight all occurrences of selected text.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.selection_highlight.as_ref() @@ -925,7 +925,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Rounded Selection", - description: "Whether the text selection should have rounded corners", + description: "Whether the text selection should have rounded corners.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.rounded_selection.as_ref(), write: |settings_content, value|{ settings_content.editor.rounded_selection = value;}, @@ -935,7 +935,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Minimum Contrast For Highlights", - description: "The minimum APCA perceptual contrast to maintain when rendering text over highlight backgrounds", + description: "The minimum APCA perceptual contrast to maintain when rendering text over highlight backgrounds.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -954,7 +954,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Guides"), SettingsPageItem::SettingItem(SettingItem { title: "Show Wrap Guides", - description: "Show wrap guides (vertical rulers)", + description: "Show wrap guides (vertical rulers).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -979,7 +979,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // todo(settings_ui): This needs a custom component SettingsPageItem::SettingItem(SettingItem { title: "Wrap Guides", - description: "Character counts at which to show wrap guides", + description: "Character counts at which to show wrap guides.", field: Box::new( SettingField { pick: |settings_content| { @@ -1008,7 +1008,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Base Keymap"), SettingsPageItem::SettingItem(SettingItem { title: "Base Keymap", - description: "The name of a base set of key bindings to use", + description: "The name of a base set of key bindings to use.", field: Box::new(SettingField { pick: |settings_content| settings_content.base_keymap.as_ref(), write: |settings_content, value| { @@ -1026,7 +1026,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // behavior to have them both enabled at the same time SettingsPageItem::SettingItem(SettingItem { title: "Vim Mode", - description: "Enable vim modes and key bindings", + description: "Enable Vim mode and key bindings.", field: Box::new(SettingField { pick: |settings_content| settings_content.vim_mode.as_ref(), write: |settings_content, value| { @@ -1038,7 +1038,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Helix Mode", - description: "Enable helix modes and key bindings", + description: "Enable Helix mode and key bindings.", field: Box::new(SettingField { pick: |settings_content| settings_content.helix_mode.as_ref(), write: |settings_content, value| { @@ -1059,7 +1059,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER, title: "Auto Save Mode", - description: "When to Auto Save Buffer Changes", + description: "When to auto save buffer changes.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -1108,7 +1108,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER, title: "Delay (milliseconds)", - description: "Save after inactivity period (in milliseconds)", + description: "Save after inactivity period (in milliseconds).", field: Box::new(SettingField { pick: |settings_content| { match settings_content.workspace.autosave.as_ref() { @@ -1139,7 +1139,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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", + description: "What to do when multibuffer is double-clicked in some of its excerpts.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.double_click_in_multibuffer.as_ref() @@ -1153,7 +1153,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Expand Excerpt Lines", - description: "How many lines to expand the multibuffer excerpts by default", + description: "How many lines to expand the multibuffer excerpts by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.expand_excerpt_lines.as_ref() @@ -1167,7 +1167,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Excerpt Context Lines", - description: "How many lines of context to provide in multibuffer excerpts by default", + description: "How many lines of context to provide in multibuffer excerpts by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.excerpt_context_lines.as_ref() @@ -1181,7 +1181,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Expand Outlines With Depth", - description: "Default depth to expand outline items in the current file", + description: "Default depth to expand outline items in the current file.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1204,7 +1204,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Scrolling"), SettingsPageItem::SettingItem(SettingItem { title: "Scroll Beyond Last Line", - description: "Whether the editor will scroll beyond the last line", + description: "Whether the editor will scroll beyond the last line.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.scroll_beyond_last_line.as_ref() @@ -1218,7 +1218,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Vertical Scroll Margin", - description: "The number of lines to keep above/below the cursor when auto-scrolling", + description: "The number of lines to keep above/below the cursor when auto-scrolling.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.vertical_scroll_margin.as_ref() @@ -1232,7 +1232,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Horizontal Scroll Margin", - description: "The number of characters to keep on either side when scrolling with the mouse", + description: "The number of characters to keep on either side when scrolling with the mouse.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.horizontal_scroll_margin.as_ref() @@ -1246,7 +1246,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Scroll Sensitivity", - description: "Scroll sensitivity multiplier for both horizontal and vertical scrolling", + description: "Scroll sensitivity multiplier for both horizontal and vertical scrolling.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.scroll_sensitivity.as_ref() @@ -1260,7 +1260,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Fast Scroll Sensitivity", - description: "Fast Scroll sensitivity multiplier for both horizontal and vertical scrolling", + description: "Fast scroll sensitivity multiplier for both horizontal and vertical scrolling.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.fast_scroll_sensitivity.as_ref() @@ -1274,7 +1274,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Autoscroll On Clicks", - description: "Whether to scroll when clicking near the edge of the visible text area", + description: "Whether to scroll when clicking near the edge of the visible text area.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.autoscroll_on_clicks.as_ref() @@ -1289,7 +1289,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Signature Help"), SettingsPageItem::SettingItem(SettingItem { title: "Auto Signature Help", - description: "Automatically show a signature help pop-up", + description: "Automatically show a signature help pop-up.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.auto_signature_help.as_ref() @@ -1303,7 +1303,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Signature Help After Edits", - description: "Show the signature help pop-up after completions or bracket pairs are inserted", + description: "Show the signature help pop-up after completions or bracket pairs are inserted.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1320,7 +1320,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Snippet Sort Order", - description: "Determines how snippets are sorted relative to other completion items", + description: "Determines how snippets are sorted relative to other completion items.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.snippet_sort_order.as_ref() @@ -1335,7 +1335,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Hover Popover"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Show the informational hover box when moving the mouse over symbols in the editor", + description: "Show the informational hover box when moving the mouse over symbols in the editor.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.hover_popover_enabled.as_ref() @@ -1350,7 +1350,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // 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", + description: "Time to wait in milliseconds before showing the informational hover box.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.hover_popover_delay.as_ref() @@ -1365,7 +1365,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Drag And Drop Selection"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Enable drag and drop selection", + description: "Enable drag and drop selection.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1387,7 +1387,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Delay", - description: "Delay in milliseconds before drag and drop selection starts", + description: "Delay in milliseconds before drag and drop selection starts.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1410,7 +1410,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Gutter"), SettingsPageItem::SettingItem(SettingItem { title: "Show Line Numbers", - description: "Show line numbers in the gutter", + description: "Show line numbers in the gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1432,7 +1432,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Relative Line Numbers", - description: "Whether the line numbers in the editor's gutter are relative or not", + description: "Whether the line numbers in the editor's gutter are relative or not.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.relative_line_numbers.as_ref() @@ -1446,7 +1446,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Runnables", - description: "Show runnable buttons in the gutter", + description: "Show runnable buttons in the gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1468,7 +1468,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Breakpoints", - description: "Show breakpoints in the gutter", + description: "Show breakpoints in the gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1490,7 +1490,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Folds", - description: "Show code folding controls in the gutter", + description: "Show code folding controls in the gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1509,7 +1509,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Min Line Number Digits", - description: "Minimum number of characters to reserve space for in the gutter", + description: "Minimum number of characters to reserve space for in the gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1531,7 +1531,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Inline Code Actions", - description: "Show code action button at start of buffer line", + description: "Show code action button at start of buffer line.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.inline_code_actions.as_ref() @@ -1546,7 +1546,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Scrollbar"), SettingsPageItem::SettingItem(SettingItem { title: "Show", - description: "When to show the scrollbar in the editor", + description: "When to show the scrollbar in the editor.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.scrollbar.as_ref()?.show.as_ref() @@ -1564,7 +1564,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursors", - description: "Show cursor positions in the scrollbar", + description: "Show cursor positions in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.scrollbar.as_ref()?.cursors.as_ref() @@ -1582,7 +1582,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Diff", - description: "Show git diff indicators in the scrollbar", + description: "Show Git diff indicators in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1605,7 +1605,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Search Results", - description: "Show buffer search result indicators in the scrollbar", + description: "Show buffer search result indicators in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1628,7 +1628,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Selected Text", - description: "Show selected text occurrences in the scrollbar", + description: "Show selected text occurrences in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1651,7 +1651,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Selected Symbol", - description: "Show selected symbol occurrences in the scrollbar", + description: "Show selected symbol occurrences in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1674,7 +1674,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Diagnostics", - description: "Which diagnostic indicators to show in the scrollbar", + description: "Which diagnostic indicators to show in the scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1697,7 +1697,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Horizontal Scrollbar", - description: "When false, forcefully disables the horizontal scrollbar", + description: "When false, forcefully disables the horizontal scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1724,7 +1724,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Vertical Scrollbar", - description: "When false, forcefully disables the vertical scrollbar", + description: "When false, forcefully disables the vertical scrollbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1752,7 +1752,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Minimap"), SettingsPageItem::SettingItem(SettingItem { title: "Show", - description: "When to show the minimap in the editor", + description: "When to show the minimap in the editor.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.minimap.as_ref()?.show.as_ref() @@ -1767,7 +1767,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Display In", - description: "Where to show the minimap in the editor", + description: "Where to show the minimap in the editor.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1790,7 +1790,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Thumb", - description: "When to show the minimap thumb", + description: "When to show the minimap thumb.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.minimap.as_ref()?.thumb.as_ref() @@ -1808,7 +1808,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Thumb Border", - description: "Border style for the minimap's scrollbar thumb", + description: "Border style for the minimap's scrollbar thumb.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1831,7 +1831,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Current Line Highlight", - description: "How to highlight the current line in the minimap", + description: "How to highlight the current line in the minimap.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1854,7 +1854,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Max Width Columns", - description: "Maximum number of columns to display in the minimap", + description: "Maximum number of columns to display in the minimap.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1878,7 +1878,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Toolbar"), SettingsPageItem::SettingItem(SettingItem { title: "Breadcrumbs", - description: "Show breadcrumbs", + description: "Show breadcrumbs.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1901,7 +1901,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Quick Actions", - description: "Show quick action buttons (e.g., search, selection, editor controls, etc.)", + description: "Show quick action buttons (e.g., search, selection, editor controls, etc.).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1924,7 +1924,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Selections Menu", - description: "Show the selections menu in the editor toolbar", + description: "Show the selections menu in the editor toolbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1947,7 +1947,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Agent Review", - description: "Show agent review buttons in the editor toolbar", + description: "Show agent review buttons in the editor toolbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -1970,7 +1970,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Code Actions", - description: "Show code action buttons in the editor toolbar", + description: "Show code action buttons in the editor toolbar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2005,7 +2005,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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", + description: "A mapping from languages to files and file extensions that should be treated as that language.", field: Box::new( SettingField { pick: |settings_content| { @@ -2027,7 +2027,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Diagnostics"), SettingsPageItem::SettingItem(SettingItem { title: "Max Severity", - description: "Which level to use to filter out diagnostics displayed in the editor", + description: "Which level to use to filter out diagnostics displayed in the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.diagnostics_max_severity.as_ref(), write: |settings_content, value| { @@ -2040,7 +2040,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Include Warnings", - description: "Whether to show warnings or not by default", + description: "Whether to show warnings or not by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.include_warnings.as_ref() @@ -2060,7 +2060,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Inline Diagnostics"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Whether to show diagnostics inline or not", + description: "Whether to show diagnostics inline or not.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.inline.as_ref()?.enabled.as_ref() @@ -2081,7 +2081,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Update Debounce", - description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update", + description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.inline.as_ref()?.update_debounce_ms.as_ref() @@ -2102,7 +2102,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Padding", - description: "The amount of padding between the end of the source line and the start of the inline diagnostic", + description: "The amount of padding between the end of the source line and the start of the inline diagnostic.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.inline.as_ref()?.padding.as_ref() @@ -2123,7 +2123,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Minimum Column", - description: "The minimum column at which to display inline diagnostics", + description: "The minimum column at which to display inline diagnostics.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.inline.as_ref()?.min_column.as_ref() @@ -2145,7 +2145,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("LSP Pull Diagnostics"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Whether to pull for language server-powered diagnostics or not", + description: "Whether to pull for language server-powered diagnostics or not.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.enabled.as_ref() @@ -2167,7 +2167,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // todo(settings_ui): Needs unit SettingsPageItem::SettingItem(SettingItem { title: "Debounce", - description: "Minimum time to wait before pulling diagnostics from the language server(s)", + description: "Minimum time to wait before pulling diagnostics from the language server(s).", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.debounce_ms.as_ref() @@ -2189,7 +2189,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("LSP Highlights"), SettingsPageItem::SettingItem(SettingItem { title: "Debounce", - description: "The debounce delay before querying highlights from the language", + description: "The debounce delay before querying highlights from the language.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.lsp_highlight_debounce.as_ref(), write: |settings_content, value| { @@ -2232,7 +2232,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Search"), SettingsPageItem::SettingItem(SettingItem { title: "Whole Word", - description: "Search for whole words by default", + description: "Search for whole words by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.search.as_ref()?.whole_word.as_ref() @@ -2250,7 +2250,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Case Sensitive", - description: "Search case-sensitively by default", + description: "Search case-sensitively by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2273,7 +2273,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Use Smartcase Search", - description: "Whether to automatically enable case-sensitive search based on the search query", + description: "Whether to automatically enable case-sensitive search based on the search query.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.use_smartcase_search.as_ref() @@ -2287,7 +2287,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Include Ignored", - description: "Include ignored files in search results by default", + description: "Include ignored files in search results by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2310,7 +2310,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Regex", - description: "Use regex search by default", + description: "Use regex search by default.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.search.as_ref()?.regex.as_ref() @@ -2324,7 +2324,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Search Wrap", - description: "Whether the editor search results will loop", + description: "Whether the editor search results will loop.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.search_wrap.as_ref(), write: |settings_content, value| { @@ -2336,7 +2336,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "When to populate a new search's query based on the text under the cursor.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2355,7 +2355,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // todo: null by default SettingsPageItem::SettingItem(SettingItem { title: "Include Ignored in Search", - description: "Use gitignored files when searching", + description: "Use gitignored files when searching.", field: Box::new( SettingField { pick: |settings_content| { @@ -2378,7 +2378,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "File Icons", - description: "Show file icons in the file finder", + description: "Show file icons in the file finder.", field: Box::new(SettingField { pick: |settings_content| { settings_content.file_finder.as_ref()?.file_icons.as_ref() @@ -2395,7 +2395,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Determines how much space the file finder can take up in relation to the available window width.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2416,7 +2416,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Whether the file finder should skip focus for the active file in search results.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2437,7 +2437,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Status", - description: "Show the git status in the file finder", + description: "Show the Git status in the file finder.", field: Box::new(SettingField { pick: |settings_content| { settings_content.file_finder.as_ref()?.git_status.as_ref() @@ -2497,7 +2497,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Restore File State", - description: "Restore previous file state when reopening", + description: "Restore previous file state when reopening.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.restore_on_file_reopen.as_ref() @@ -2511,7 +2511,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Close on File Delete", - description: "Automatically close files that have been deleted", + description: "Automatically close files that have been deleted.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.close_on_file_delete.as_ref() @@ -2531,7 +2531,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Status Bar"), SettingsPageItem::SettingItem(SettingItem { title: "Project Panel Button", - description: "Show the project panel button in the status bar", + description: "Show the project panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.project_panel.as_ref()?.button.as_ref() @@ -2548,7 +2548,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Active Language Button", - description: "Show the active language button in the status bar", + description: "Show the active language button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2569,7 +2569,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursor Position Button", - description: "Show the cursor position button in the status bar", + description: "Show the cursor position button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2590,7 +2590,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Terminal Button", - description: "Show the terminal button in the status bar", + description: "Show the terminal button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.button.as_ref() @@ -2604,7 +2604,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Diagnostics Button", - description: "Show the project diagnostics button in the status bar", + description: "Show the project diagnostics button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.diagnostics.as_ref()?.button.as_ref() @@ -2618,7 +2618,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Project Search Button", - description: "Show the project search button in the status bar", + description: "Show the project search button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.editor.search.as_ref()?.button.as_ref() @@ -2636,7 +2636,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Debugger Button", - description: "Show the debugger button in the status bar", + description: "Show the debugger button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.debugger.as_ref()?.button.as_ref() @@ -2651,7 +2651,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Title Bar"), SettingsPageItem::SettingItem(SettingItem { title: "Show Branch Icon", - description: "Show the branch icon beside branch switcher in the titlebar", + description: "Show the branch icon beside branch switcher in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2672,7 +2672,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Branch Name", - description: "Show the branch name button in the titlebar", + description: "Show the branch name button in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2693,7 +2693,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Project Items", - description: "Show the project host and name in the titlebar", + description: "Show the project host and name in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2714,7 +2714,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Onboarding Banner", - description: "Show banners announcing new features in the titlebar", + description: "Show banners announcing new features in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2735,7 +2735,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show User Picture", - description: "Show user picture in the titlebar", + description: "Show user picture in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2756,7 +2756,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Sign In", - description: "Show the sign in button in the titlebar", + description: "Show the sign in button in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.title_bar.as_ref()?.show_sign_in.as_ref() @@ -2773,7 +2773,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Menus", - description: "Show the menus in the titlebar", + description: "Show the menus in the titlebar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.title_bar.as_ref()?.show_menus.as_ref() @@ -2791,7 +2791,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Tab Bar"), SettingsPageItem::SettingItem(SettingItem { title: "Show Tab Bar", - description: "Show the tab bar in the editor", + description: "Show the tab bar in the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.tab_bar.as_ref()?.show.as_ref(), write: |settings_content, value| { @@ -2803,7 +2803,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Git Status In Tabs", - description: "Show the Git file status on a tab item", + description: "Show the Git file status on a tab item.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.git_status.as_ref() @@ -2817,7 +2817,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show File Icons In Tabs", - description: "Show the file icon for a tab", + description: "Show the file icon for a tab.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.file_icons.as_ref() @@ -2831,7 +2831,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Tab Close Position", - description: "Position of the close button in a tab", + description: "Position of the close button in a tab.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.close_position.as_ref() @@ -2846,7 +2846,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Maximum Tabs", - description: "Maximum open tabs in a pane. Will not close an unsaved tab", + 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( @@ -2862,7 +2862,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Navigation History Buttons", - description: "Show the navigation history buttons in the tab bar", + description: "Show the navigation history buttons in the tab bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2884,7 +2884,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Tab Settings"), SettingsPageItem::SettingItem(SettingItem { title: "Activate On Close", - description: "What to do after closing the current tab", + description: "What to do after closing the current tab.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.activate_on_close.as_ref() @@ -2901,7 +2901,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Tab Show Diagnostics", - description: "Which files containing diagnostic errors/warnings to mark in the tabs", + description: "Which files containing diagnostic errors/warnings to mark in the tabs.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.show_diagnostics.as_ref() @@ -2918,7 +2918,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Close Button", - description: "Controls the appearance behavior of the tab's close button", + description: "Controls the appearance behavior of the tab's close button.", field: Box::new(SettingField { pick: |settings_content| { settings_content.tabs.as_ref()?.show_close_button.as_ref() @@ -2936,7 +2936,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Preview Tabs"), SettingsPageItem::SettingItem(SettingItem { title: "Preview Tabs Enabled", - description: "Show opened editors as preview tabs", + description: "Show opened editors as Preview tabs.", field: Box::new(SettingField { pick: |settings_content| { settings_content.preview_tabs.as_ref()?.enabled.as_ref() @@ -2953,7 +2953,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Enable Preview From File Finder", - description: "Whether to open tabs in preview mode when selected from the file finder", + description: "Whether to open tabs in Preview mode when selected from the file finder.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2974,7 +2974,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Enable Preview From Code Navigation", - description: "Whether a preview tab gets replaced when code navigation is used to navigate away from the tab", + description: "Whether a preview tab gets replaced when code navigation is used to navigate away from the tab.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -2996,7 +2996,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Layout"), SettingsPageItem::SettingItem(SettingItem { title: "Bottom Dock Layout", - description: "Layout mode for the bottom dock", + description: "Layout mode for the bottom dock.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.bottom_dock_layout.as_ref() @@ -3011,7 +3011,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Centered Layout Left Padding", - description: "Left padding for centered layout", + description: "Left padding for centered layout.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3034,7 +3034,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Centered Layout Right Padding", - description: "Right padding for centered layout", + description: "Right padding for centered layout.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3058,7 +3058,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // 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", + description: "(macOS only) whether to allow Windows to tab together.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.use_system_window_tabs.as_ref() @@ -3073,7 +3073,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Pane Modifiers"), SettingsPageItem::SettingItem(SettingItem { title: "Inactive Opacity", - description: "Opacity of inactive panels (0.0 - 1.0)", + description: "Opacity of inactive panels (0.0 - 1.0).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3096,7 +3096,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Border Size", - description: "Size of the border surrounding the active pane", + description: "Size of the border surrounding the active pane.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3119,7 +3119,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Zoomed Padding", - description: "Show padding for zoomed panes", + description: "Show padding for zoomed panes.", field: Box::new(SettingField { pick: |settings_content| settings_content.workspace.zoomed_padding.as_ref(), write: |settings_content, value| { @@ -3132,7 +3132,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Pane Split Direction"), SettingsPageItem::SettingItem(SettingItem { title: "Vertical Split Direction", - description: "Direction to split vertically", + description: "Direction to split vertically.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3149,7 +3149,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Horizontal Split Direction", - description: "Direction to split horizontally", + description: "Direction to split horizontally.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3172,7 +3172,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Project Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Project Panel Dock", - description: "Where to dock the project panel", + description: "Where to dock the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.project_panel.as_ref()?.dock.as_ref() @@ -3186,7 +3186,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Project Panel Default Width", - description: "Default width of the project panel in pixels", + description: "Default width of the project panel in pixels.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3207,7 +3207,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Hide .gitignore", - description: "Whether to hide the gitignore entries in the project panel", + description: "Whether to hide the gitignore entries in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3228,7 +3228,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Entry Spacing", - description: "Spacing between worktree entries in the project panel", + description: "Spacing between worktree entries in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3249,7 +3249,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "File Icons", - description: "Show file icons in the project panel", + description: "Show file icons in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.project_panel.as_ref()?.file_icons.as_ref() @@ -3266,7 +3266,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Folder Icons", - description: "Whether to show folder icons or chevrons for directories in the project panel", + description: "Whether to show folder icons or chevrons for directories in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3287,7 +3287,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Status", - description: "Show the git status in the project panel", + description: "Show the Git status in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.project_panel.as_ref()?.git_status.as_ref() @@ -3304,7 +3304,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Indent Size", - description: "Amount of indentation for nested items", + description: "Amount of indentation for nested items.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3325,7 +3325,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Reveal Entries", - description: "Whether to reveal entries in the project panel automatically when a corresponding project entry becomes active", + description: "Whether to reveal entries in the project panel automatically when a corresponding project entry becomes active.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3346,7 +3346,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Starts Open", - description: "Whether the project panel should open on startup", + description: "Whether the project panel should open on startup.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3367,7 +3367,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Whether to fold directories automatically and show compact folders when a directory has only one subdirectory inside.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3388,7 +3388,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Scrollbar", - description: "Show the scrollbar in the project panel", + description: "Show the scrollbar in the project panel.", field: Box::new(SettingField { pick: |settings_content| { show_scrollbar_or_editor(settings_content, |settings_content| { @@ -3415,7 +3415,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Diagnostics", - description: "Which files containing diagnostic errors/warnings to mark in the project panel", + description: "Which files containing diagnostic errors/warnings to mark in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3436,7 +3436,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Sticky Scroll", - description: "Whether to stick parent directories at top of the project panel", + description: "Whether to stick parent directories at top of the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3458,7 +3458,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Show Indent Guides", - description: "Show Indent Guides In The Project Panel", + description: "Show indent guides in the project panel.", field: Box::new( SettingField { pick: |settings_content| { @@ -3484,7 +3484,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Drag and Drop", - description: "Whether to enable drag-and-drop operations in the project panel", + description: "Whether to enable drag-and-drop operations in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3505,7 +3505,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Hide Root", - description: "Whether to hide the root entry when only one folder is open in the window", + description: "Whether to hide the root entry when only one folder is open in the window.", field: Box::new(SettingField { pick: |settings_content| { settings_content.project_panel.as_ref()?.hide_root.as_ref() @@ -3522,7 +3522,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Hide Hidden", - description: "Whether to hide the hidden entries in the project panel", + description: "Whether to hide the hidden entries in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3543,7 +3543,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Open File on Paste", - description: "Whether to automatically open files when pasting them in the project panel", + description: "Whether to automatically open files when pasting them in the project panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3565,7 +3565,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Terminal Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Terminal Dock", - description: "Where to dock the terminal panel", + description: "Where to dock the terminal panel.", field: Box::new(SettingField { pick: |settings_content| settings_content.terminal.as_ref()?.dock.as_ref(), write: |settings_content, value| { @@ -3578,7 +3578,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Outline Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Outline Panel Button", - description: "Show the outline panel button in the status bar", + description: "Show the outline panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.outline_panel.as_ref()?.button.as_ref() @@ -3595,7 +3595,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Outline Panel Dock", - description: "Where to dock the outline panel", + description: "Where to dock the outline panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.outline_panel.as_ref()?.dock.as_ref() @@ -3609,7 +3609,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Outline Panel Default Width", - description: "Default width of the outline panel in pixels", + description: "Default width of the outline panel in pixels.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3630,7 +3630,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "File Icons", - description: "Show file icons in the outline panel", + description: "Show file icons in the outline panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.outline_panel.as_ref()?.file_icons.as_ref() @@ -3647,7 +3647,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Folder Icons", - description: "Whether to show folder icons or chevrons for directories in the outline panel", + description: "Whether to show folder icons or chevrons for directories in the outline panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3668,7 +3668,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Status", - description: "Show the git status in the outline panel", + description: "Show the Git status in the outline panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.outline_panel.as_ref()?.git_status.as_ref() @@ -3685,7 +3685,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Indent Size", - description: "Amount of indentation for nested items", + description: "Amount of indentation for nested items.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3706,7 +3706,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Reveal Entries", - description: "Whether to reveal when a corresponding outline entry becomes active", + description: "Whether to reveal when a corresponding outline entry becomes active.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3727,7 +3727,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Fold Directories", - description: "Whether to fold directories automatically when a directory contains only one subdirectory", + description: "Whether to fold directories automatically when a directory contains only one subdirectory.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3749,7 +3749,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SettingItem(SettingItem { files: USER, title: "Show Indent Guides", - description: "When To Show Indent Guides In The Outline Panel", + description: "When to show indent guides in the outline panel.", field: Box::new( SettingField { pick: |settings_content| { @@ -3776,7 +3776,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Git Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Git Panel Button", - description: "Show the Git panel button in the status bar", + description: "Show the Git panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content.git_panel.as_ref()?.button.as_ref() @@ -3790,7 +3790,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Panel Dock", - description: "Where to dock the Git panel", + description: "Where to dock the Git panel.", field: Box::new(SettingField { pick: |settings_content| settings_content.git_panel.as_ref()?.dock.as_ref(), write: |settings_content, value| { @@ -3802,7 +3802,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Panel Default Width", - description: "Default width of the Git panel in pixels", + description: "Default width of the Git panel in pixels.", field: Box::new(SettingField { pick: |settings_content| { settings_content.git_panel.as_ref()?.default_width.as_ref() @@ -3819,7 +3819,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Git Panel Status Style", - description: "How entry statuses are displayed", + description: "How entry statuses are displayed.", field: Box::new(SettingField { pick: |settings_content| { settings_content.git_panel.as_ref()?.status_style.as_ref() @@ -3836,7 +3836,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Fallback Branch Name", - description: "Default branch name will be when init.defaultBranch is not set in git", + description: "Default branch name will be when init.defaultbranch is not set in Git.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3857,7 +3857,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Sort By Path", - description: "Enable to sort entries in the panel by path, disable to sort by status", + description: "Enable to sort entries in the panel by path, disable to sort by status.", field: Box::new(SettingField { pick: |settings_content| { settings_content.git_panel.as_ref()?.sort_by_path.as_ref() @@ -3874,7 +3874,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Collapse Untracked Diff", - description: "Whether to collapse untracked files in the diff panel", + description: "Whether to collapse untracked files in the diff panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3895,7 +3895,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Scroll Bar", - description: "How and when the scrollbar should be displayed", + description: "How and when the scrollbar should be displayed.", field: Box::new(SettingField { pick: |settings_content| { show_scrollbar_or_editor(settings_content, |settings_content| { @@ -3923,7 +3923,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Debugger Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Debugger Panel Dock", - description: "The dock position of the debug panel", + description: "The dock position of the debug panel.", field: Box::new(SettingField { pick: |settings_content| settings_content.debugger.as_ref()?.dock.as_ref(), write: |settings_content, value| { @@ -3936,7 +3936,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Notification Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Notification Panel Button", - description: "Show the notification panel button in the status bar", + description: "Show the notification panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3957,7 +3957,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Notification Panel Dock", - description: "Where to dock the notification panel", + description: "Where to dock the notification panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.notification_panel.as_ref()?.dock.as_ref() @@ -3974,7 +3974,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Notification Panel Default Width", - description: "Default width of the notification panel in pixels", + description: "Default width of the notification panel in pixels.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -3996,7 +3996,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Collaboration Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Collaboration Panel Button", - description: "Show the collaboration panel button in the status bar", + description: "Show the collaboration panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4017,7 +4017,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Collaboration Panel Dock", - description: "Where to dock the collaboration panel", + description: "Where to dock the collaboration panel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.collaboration_panel.as_ref()?.dock.as_ref() @@ -4034,7 +4034,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Collaboration Panel Default Width", - description: "Default width of the collaboration panel in pixels", + description: "Default width of the collaboration panel in pixels.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4056,7 +4056,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Agent Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Agent Panel Button", - description: "Whether to show the agent panel button in the status bar", + description: "Whether to show the agent panel button in the status bar.", field: Box::new(SettingField { pick: |settings_content| settings_content.agent.as_ref()?.button.as_ref(), write: |settings_content, value| { @@ -4080,7 +4080,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Agent Panel Default Width", - description: "Default width when the agent panel is docked to the left or right", + description: "Default width when the agent panel is docked to the left or right.", field: Box::new(SettingField { pick: |settings_content| { settings_content.agent.as_ref()?.default_width.as_ref() @@ -4094,7 +4094,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Agent Panel Default Height", - description: "Default height when the agent panel is docked to the bottom", + description: "Default height when the agent panel is docked to the bottom.", field: Box::new(SettingField { pick: |settings_content| { settings_content.agent.as_ref()?.default_height.as_ref() @@ -4117,7 +4117,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("General"), SettingsPageItem::SettingItem(SettingItem { title: "Stepping Granularity", - description: "Determines the stepping granularity for debug operations", + description: "Determines the stepping granularity for debug operations.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4138,7 +4138,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Save Breakpoints", - description: "Whether breakpoints should be reused across Zed sessions", + description: "Whether breakpoints should be reused across Zed sessions.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4159,7 +4159,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Timeout", - description: "Time in milliseconds until timeout error when connecting to a TCP debug adapter", + description: "Time in milliseconds until timeout error when connecting to a TCP debug adapter.", field: Box::new(SettingField { pick: |settings_content| { settings_content.debugger.as_ref()?.timeout.as_ref() @@ -4173,7 +4173,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Log DAP Communications", - description: "Whether to log messages between active debug adapters and Zed", + description: "Whether to log messages between active debug adapters and Zed.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4194,7 +4194,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Format DAP Log Messages", - description: "Whether to format DAP messages when adding them to debug adapter logger", + description: "Whether to format DAP messages when adding them to debug adapter logger.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4223,7 +4223,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER | LOCAL, title: "Shell", - description: "What shell to use when opening a terminal", + description: "What shell to use when opening a terminal.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -4286,7 +4286,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER | LOCAL, title: "Program", - description: "The shell program to use", + description: "The shell program to use.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { @@ -4315,7 +4315,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER | LOCAL, title: "Program", - description: "The shell program to run", + description: "The shell program to run.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { @@ -4342,7 +4342,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER | LOCAL, title: "Arguments", - description: "The arguments to pass to the shell program", + description: "The arguments to pass to the shell program.", field: Box::new( SettingField { pick: |settings_content| { @@ -4372,7 +4372,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER | LOCAL, title: "Title Override", - description: "An optional string to override the title of the terminal tab", + description: "An optional string to override the title of the terminal tab.", field: Box::new(SettingField { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.shell.as_ref() { @@ -4401,7 +4401,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { discriminant: SettingItem { files: USER | LOCAL, title: "Working Directory", - description: "What working directory to use when launching the terminal", + description: "What working directory to use when launching the terminal.", field: Box::new(SettingField { pick: |settings_content| { Some(&dynamic_variants::()[ @@ -4457,7 +4457,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingItem { files: USER | LOCAL, title: "Directory", - description: "The directory path to use (will be shell expanded)", + description: "The directory path to use (will be shell expanded).", field: Box::new(SettingField { pick: |settings_content| { match settings_content.terminal.as_ref()?.project.working_directory.as_ref() { @@ -4485,7 +4485,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Environment Variables", - description: "Key-value pairs to add to the terminal's environment", + description: "Key-value pairs to add to the terminal's environment.", field: Box::new( SettingField { pick: |settings_content| { @@ -4506,7 +4506,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Detect Virtual Environment", - description: "Activates the python virtual environment, if one is found, in the terminal's working directory", + description: "Activates the Python virtual environment, if one is found, in the terminal's working directory.", field: Box::new( SettingField { pick: |settings_content| { @@ -4533,7 +4533,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Font"), SettingsPageItem::SettingItem(SettingItem { title: "Font Size", - description: "Font size for terminal text. If not set, defaults to buffer font size", + description: "Font size for terminal text. If not set, defaults to buffer font size.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4551,7 +4551,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Family", - description: "Font family for terminal text. If not set, defaults to buffer font family", + description: "Font family for terminal text. If not set, defaults to buffer font family.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4572,7 +4572,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Fallbacks", - description: "Font fallbacks for terminal text. If not set, defaults to buffer font fallbacks", + description: "Font fallbacks for terminal text. If not set, defaults to buffer font fallbacks.", field: Box::new( SettingField { pick: |settings_content| { @@ -4596,7 +4596,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Weight", - description: "Font weight for terminal text in CSS weight units (100-900)", + description: "Font weight for terminal text in CSS weight units (100-900).", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.font_weight.as_ref() @@ -4613,7 +4613,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Font Features", - description: "Font features for terminal text", + description: "Font features for terminal text.", field: Box::new( SettingField { pick: |settings_content| { @@ -4638,7 +4638,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Display Settings"), SettingsPageItem::SettingItem(SettingItem { title: "Line Height", - description: "Line height for terminal text", + description: "Line height for terminal text.", field: Box::new( SettingField { pick: |settings_content| { @@ -4658,7 +4658,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursor Shape", - description: "Default cursor shape for the terminal (bar, block, underline, or hollow)", + description: "Default cursor shape for the terminal (bar, block, underline, or hollow).", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.cursor_shape.as_ref() @@ -4675,7 +4675,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Cursor Blinking", - description: "Sets the cursor blinking behavior in the terminal", + description: "Sets the cursor blinking behavior in the terminal.", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.blinking.as_ref() @@ -4689,7 +4689,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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)", + description: "Whether alternate scroll mode is active by default (converts mouse scroll to arrow keys in apps like Vim).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4710,7 +4710,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Minimum Contrast", - description: "The minimum APCA perceptual contrast between foreground and background colors (0-106)", + description: "The minimum APCA perceptual contrast between foreground and background colors (0-106).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4732,7 +4732,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Behavior Settings"), SettingsPageItem::SettingItem(SettingItem { title: "Option As Meta", - description: "Whether the option key behaves as the meta key", + description: "Whether the option key behaves as the meta key.", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.option_as_meta.as_ref() @@ -4749,7 +4749,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Copy On Select", - description: "Whether selecting text in the terminal automatically copies to the system clipboard", + description: "Whether selecting text in the terminal automatically copies to the system clipboard.", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.copy_on_select.as_ref() @@ -4766,7 +4766,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Keep Selection On Copy", - description: "Whether to keep the text selection after copying it to the clipboard", + description: "Whether to keep the text selection after copying it to the clipboard.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4788,7 +4788,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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)", + description: "Default width when the terminal is docked to the left or right (in pixels).", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.default_width.as_ref() @@ -4805,7 +4805,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Default Height", - description: "Default height when the terminal is docked to the bottom (in pixels)", + description: "Default height when the terminal is docked to the bottom (in pixels).", field: Box::new(SettingField { pick: |settings_content| { settings_content.terminal.as_ref()?.default_height.as_ref() @@ -4823,7 +4823,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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)", + description: "Maximum number of lines to keep in scrollback history (max: 100,000; 0 disables scrolling).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4845,7 +4845,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Toolbar"), SettingsPageItem::SettingItem(SettingItem { title: "Breadcrumbs", - description: "Display the terminal title in breadcrumbs inside the terminal pane", + description: "Display the terminal title in breadcrumbs inside the terminal pane.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4871,7 +4871,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Scrollbar"), SettingsPageItem::SettingItem(SettingItem { title: "Show Scrollbar", - description: "When to show the scrollbar in the terminal", + description: "When to show the scrollbar in the terminal.", field: Box::new(SettingField { pick: |settings_content| { show_scrollbar_or_editor(settings_content, |settings_content| { @@ -4904,7 +4904,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Git Gutter"), SettingsPageItem::SettingItem(SettingItem { title: "Visibility", - description: "Control whether git status is shown in the editor's gutter", + description: "Control whether Git status is shown in the editor's gutter.", field: Box::new(SettingField { pick: |settings_content| settings_content.git.as_ref()?.git_gutter.as_ref(), write: |settings_content, value| { @@ -4917,7 +4917,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // 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", + description: "Debounce threshold in milliseconds after which changes are reflected in the Git gutter.", field: Box::new(SettingField { pick: |settings_content| { settings_content.git.as_ref()?.gutter_debounce.as_ref() @@ -4932,7 +4932,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { 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", + description: "Whether or not to show Git blame data inline in the currently focused line.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4957,7 +4957,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Delay", - description: "The delay after which the inline blame information is shown", + description: "The delay after which the inline blame information is shown.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -4982,7 +4982,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Padding", - description: "Padding between the end of the source line and the start of the inline blame in columns", + description: "Padding between the end of the source line and the start of the inline blame in columns.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5007,7 +5007,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Minimum Column", - description: "The minimum column number at which to show the inline blame information", + description: "The minimum column number at which to show the inline blame information.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5032,7 +5032,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Commit Summary", - description: "Show commit summary as part of the inline blame", + description: "Show commit summary as part of the inline blame.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5058,7 +5058,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Git Blame View"), SettingsPageItem::SettingItem(SettingItem { title: "Show Avatar", - description: "Show the avatar of the author of the commit", + description: "Show the avatar of the author of the commit.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5084,7 +5084,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Branch Picker"), SettingsPageItem::SettingItem(SettingItem { title: "Show Author Name", - description: "Show author name as part of the commit information in branch picker", + description: "Show author name as part of the commit information in branch picker.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5110,7 +5110,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Git Hunks"), SettingsPageItem::SettingItem(SettingItem { title: "Hunk Style", - description: "How git hunks are displayed visually in the editor", + description: "How Git hunks are displayed visually in the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.git.as_ref()?.hunk_style.as_ref(), write: |settings_content, value| { @@ -5128,7 +5128,7 @@ pub(crate) fn settings_data(cx: &App) -> 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", + description: "Whether the microphone should be muted when joining a channel or a call.", field: Box::new(SettingField { pick: |settings_content| { settings_content.calls.as_ref()?.mute_on_join.as_ref() @@ -5142,7 +5142,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Share On Join", - description: "Whether your current project should be shared when joining an empty channel", + description: "Whether your current project should be shared when joining an empty channel.", field: Box::new(SettingField { pick: |settings_content| { settings_content.calls.as_ref()?.share_on_join.as_ref() @@ -5157,7 +5157,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("Experimental"), SettingsPageItem::SettingItem(SettingItem { title: "Rodio Audio", - description: "Opt into the new audio system", + description: "Opt into the new audio system.", field: Box::new(SettingField { pick: |settings_content| { settings_content.audio.as_ref()?.rodio_audio.as_ref() @@ -5171,7 +5171,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Microphone Volume", - description: "Automatically adjust microphone volume (requires Rodio Audio)", + description: "Automatically adjust microphone volume (requires rodio audio).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5192,7 +5192,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Speaker Volume", - description: "Automatically adjust volume of other call members (requires Rodio Audio)", + description: "Automatically adjust volume of other call members (requires rodio audio).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5213,7 +5213,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Denoise", - description: "Remove background noises (requires Rodio Audio)", + description: "Remove background noises (requires rodio audio).", field: Box::new(SettingField { pick: |settings_content| settings_content.audio.as_ref()?.denoise.as_ref(), write: |settings_content, value| { @@ -5225,7 +5225,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Legacy Audio Compatible", - description: "Use audio parameters compatible with previous versions (requires Rodio Audio)", + description: "Use audio parameters compatible with previous versions (requires rodio audio).", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5252,7 +5252,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { SettingsPageItem::SectionHeader("General"), SettingsPageItem::SettingItem(SettingItem { title: "Disable AI", - description: "Whether to disable all AI features in Zed", + description: "Whether to disable all AI features in Zed.", field: Box::new(SettingField { pick: |settings_content| settings_content.disable_ai.as_ref(), write: |settings_content, value| { @@ -5286,7 +5286,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Single File Review", - description: "When enabled, agent edits will also be displayed in single-file buffers for review", + description: "When enabled, agent edits will also be displayed in single-file buffers for review.", field: Box::new(SettingField { pick: |settings_content| { settings_content.agent.as_ref()?.single_file_review.as_ref() @@ -5303,7 +5303,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Enable Feedback", - description: "Show voting thumbs up/down icon buttons for feedback on agent edits", + description: "Show voting thumbs up/down icon buttons for feedback on agent edits.", field: Box::new(SettingField { pick: |settings_content| { settings_content.agent.as_ref()?.enable_feedback.as_ref() @@ -5320,7 +5320,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Where to show notifications when the agent has completed its response or needs confirmation before running a tool action.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5341,7 +5341,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Whether to play a sound when the agent has either completed its response, or needs user input.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5362,7 +5362,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Expand Edit Card", - description: "Whether to have edit cards in the agent panel expanded, showing a preview of the diff", + description: "Whether to have edit cards in the agent panel expanded, showing a Preview of the diff.", field: Box::new(SettingField { pick: |settings_content| { settings_content.agent.as_ref()?.expand_edit_card.as_ref() @@ -5379,7 +5379,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Expand Terminal Card", - description: "Whether to have terminal cards in the agent panel expanded, showing the whole command output", + description: "Whether to have terminal cards in the agent panel expanded, showing the whole command output.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5400,7 +5400,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), 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", + description: "Whether to always use cmd-enter (or ctrl-enter on Linux or Windows) to send messages.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5421,7 +5421,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Message Editor Min Lines", - description: "Minimum number of lines to display in the agent message editor", + description: "Minimum number of lines to display in the agent message editor.", field: Box::new(SettingField { pick: |settings_content| { settings_content @@ -5449,7 +5449,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { // todo(settings_ui): Proxy needs a default SettingsPageItem::SettingItem(SettingItem { title: "Proxy", - description: "The proxy to use for network requests", + description: "The proxy to use for network requests.", field: Box::new( SettingField { pick: |settings_content| settings_content.proxy.as_ref(), @@ -5467,7 +5467,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Server URL", - description: "The URL of the Zed server to connect to", + description: "The URL of the Zed server to connect to.", field: Box::new(SettingField { pick: |settings_content| settings_content.server_url.as_ref(), write: |settings_content, value| { @@ -5533,7 +5533,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Indentation"), SettingsPageItem::SettingItem(SettingItem { title: "Tab Size", - description: "How many columns a tab should occupy", + description: "How many columns a tab should occupy.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| language.tab_size.as_ref()) @@ -5549,7 +5549,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Hard Tabs", - description: "Whether to indent lines using tab characters, as opposed to multiple spaces", + description: "Whether to indent lines using tab characters, as opposed to multiple spaces.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5567,7 +5567,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Indent", - description: "Whether indentation should be adjusted based on the context whilst typing", + description: "Whether indentation should be adjusted based on the context whilst typing.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5585,7 +5585,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Indent On Paste", - description: "Whether indentation of pasted content should be adjusted based on the context", + description: "Whether indentation of pasted content should be adjusted based on the context.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5604,7 +5604,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Wrapping"), SettingsPageItem::SettingItem(SettingItem { title: "Soft Wrap", - description: "How to soft-wrap long lines of text", + description: "How to soft-wrap long lines of text.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5622,7 +5622,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Wrap Guides", - description: "Show wrap guides in the editor", + description: "Show wrap guides in the editor.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5640,7 +5640,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Preferred Line Length", - description: "The column at which to soft-wrap lines, for buffers where soft-wrap is enabled", + description: "The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5658,7 +5658,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Wrap Guides", - description: "Character counts at which to show wrap guides in the editor", + description: "Character counts at which to show wrap guides in the editor.", field: Box::new( SettingField { pick: |settings_content| { @@ -5679,7 +5679,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Allow Rewrap", - description: "Controls where the `editor::Rewrap` action is allowed for this language", + description: "Controls where the `editor::rewrap` action is allowed for this language.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5698,7 +5698,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Indent Guides"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Display indent guides in the editor", + description: "Display indent guides in the editor.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5719,7 +5719,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Line Width", - description: "The width of the indent guides in pixels, between 1 and 10", + description: "The width of the indent guides in pixels, between 1 and 10.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5740,7 +5740,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Active Line Width", - description: "The width of the active indent guide in pixels, between 1 and 10", + description: "The width of the active indent guide in pixels, between 1 and 10.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5764,7 +5764,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Coloring", - description: "Determines how indent guides are colored", + description: "Determines how indent guides are colored.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5785,7 +5785,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Background Coloring", - description: "Determines how indent guide backgrounds are colored", + description: "Determines how indent guide backgrounds are colored.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5810,7 +5810,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Formatting"), SettingsPageItem::SettingItem(SettingItem { title: "Format On Save", - description: "Whether or not to perform a buffer format before saving", + 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 { @@ -5831,7 +5831,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "Whether or not to remove any trailing whitespace from lines of a buffer before saving it.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5849,7 +5849,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "Whether or not to ensure there's a single newline at the end of a buffer when saving it.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5867,7 +5867,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Formatter", - description: "How to perform a buffer format", + description: "How to perform a buffer format.", field: Box::new( SettingField { pick: |settings_content| { @@ -5906,7 +5906,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Code Actions On Format", - description: "Additional Code Actions To Run When Formatting", + description: "Additional code actions to run when formatting.", field: Box::new( SettingField { pick: |settings_content| { @@ -5928,7 +5928,7 @@ fn language_settings_data() -> Vec { 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", + 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 { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5946,7 +5946,7 @@ fn language_settings_data() -> Vec { }), 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 ()", + 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 { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5964,7 +5964,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "Controls whether the closing characters are always skipped over and auto-removed no matter how they were inserted.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -5982,7 +5982,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Jsx Tag Auto Close", - description: "Whether to automatically close JSX tags", + description: "Whether to automatically close JSX tags.", field: Box::new(SettingField { // TODO(settings_ui): this setting should just be a bool pick: |settings_content| { @@ -6002,7 +6002,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Edit Predictions"), SettingsPageItem::SettingItem(SettingItem { title: "Show Edit Predictions", - description: "Controls whether edit predictions are shown immediately (true) or manually by triggering `editor::ShowEditPrediction` (false)", + description: "Controls whether edit predictions are shown immediately (true) or manually by triggering `editor::showeditprediction` (false).", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6020,7 +6020,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Edit Predictions Disabled In", - description: "Controls whether edit predictions are shown in the given language scopes", + description: "Controls whether edit predictions are shown in the given language scopes.", field: Box::new( SettingField { pick: |settings_content| { @@ -6042,7 +6042,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Whitespace"), SettingsPageItem::SettingItem(SettingItem { title: "Show Whitespaces", - description: "Whether to show tabs and spaces in the editor", + description: "Whether to show tabs and spaces in the editor.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6103,7 +6103,7 @@ fn language_settings_data() -> Vec { 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", + description: "Whether to pop the completions menu while typing in an editor without explicitly requesting it.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6121,7 +6121,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Completion Documentation", - description: "Whether to display inline and alongside documentation for items in the completions menu", + description: "Whether to display inline and alongside documentation for items in the completions menu.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6139,7 +6139,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Words", - description: "Controls how words are completed", + description: "Controls how words are completed.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6157,7 +6157,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "How many characters has to be in the completions query to automatically show the words-based completions.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6179,7 +6179,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Inlay Hints"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Global switch to toggle hints on and off", + description: "Global switch to toggle hints on and off.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6197,7 +6197,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Value Hints", - description: "Global switch to toggle inline values on and off when debugging", + description: "Global switch to toggle inline values on and off when debugging.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6218,7 +6218,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Type Hints", - description: "Whether type hints should be shown", + description: "Whether type hints should be shown.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6236,7 +6236,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Parameter Hints", - description: "Whether parameter hints should be shown", + description: "Whether parameter hints should be shown.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6257,7 +6257,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Other Hints", - description: "Whether other hints should be shown", + description: "Whether other hints should be shown.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6278,7 +6278,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Show Background", - description: "Show a background for inlay hints", + description: "Show a background for inlay hints.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6296,7 +6296,7 @@ fn language_settings_data() -> Vec { }), 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)", + description: "Whether or not to debounce inlay hints updates after buffer edits (set to 0 to disable debouncing).", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6317,7 +6317,7 @@ fn language_settings_data() -> Vec { }), 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)", + description: "Whether or not to debounce inlay hints updates after buffer scrolls (set to 0 to disable debouncing).", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6338,7 +6338,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Toggle On Modifiers Press", - description: "Toggles inlay hints (hides or shows) when the user presses the modifiers specified", + description: "Toggles inlay hints (hides or shows) when the user presses the modifiers specified.", field: Box::new( SettingField { pick: |settings_content| { @@ -6368,7 +6368,7 @@ fn language_settings_data() -> Vec { if current_language().is_none() { items.push(SettingsPageItem::SettingItem(SettingItem { title: "LSP Document Colors", - description: "How to render LSP color previews in the editor", + description: "How to render LSP color previews in the editor.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.lsp_document_colors.as_ref(), write: |settings_content, value| { @@ -6383,7 +6383,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Tasks"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Whether tasks are enabled for this language", + description: "Whether tasks are enabled for this language.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6402,7 +6402,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Variables", - description: "Extra task variables to set for a particular language", + description: "Extra task variables to set for a particular language.", field: Box::new( SettingField { pick: |settings_content| { @@ -6424,7 +6424,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Prefer LSP", - description: "Use LSP tasks over Zed language extension tasks", + description: "Use LSP tasks over Zed language extension tasks.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6444,7 +6444,7 @@ fn language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Miscellaneous"), SettingsPageItem::SettingItem(SettingItem { title: "Debuggers", - description: "Preferred debuggers for this language", + description: "Preferred debuggers for this language.", field: Box::new( SettingField { pick: |settings_content| { @@ -6464,7 +6464,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Middle Click Paste", - description: "Enable middle-click paste on Linux", + description: "Enable middle-click paste on Linux.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.middle_click_paste.as_ref(), write: |settings_content, value| {settings_content.editor.middle_click_paste = value;}, @@ -6474,7 +6474,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "Whether to start a new line with a comment when a previous line is a comment as well.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6497,7 +6497,7 @@ fn language_settings_data() -> Vec { items.extend([ SettingsPageItem::SettingItem(SettingItem { title: "Image Viewer", - description: "The unit for image file sizes", + description: "The unit for image file sizes.", field: Box::new(SettingField { pick: |settings_content| { settings_content.image_viewer.as_ref().and_then(|image_viewer| image_viewer.unit.as_ref()) @@ -6512,7 +6512,7 @@ fn language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Auto Replace Emoji Shortcode", - description: "Whether to automatically replace emoji shortcodes with emoji characters", + description: "Whether to automatically replace emoji shortcodes with emoji characters.", field: Box::new(SettingField { pick: |settings_content| { settings_content.message_editor.as_ref().and_then(|message_editor| message_editor.auto_replace_emoji_shortcode.as_ref()) @@ -6527,7 +6527,7 @@ fn language_settings_data() -> Vec { }), 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", + description: "Relative size of the drop target in the editor that will open dropped file as a split pane.", field: Box::new(SettingField { pick: |settings_content| { settings_content.workspace.drop_target_size.as_ref() @@ -6552,7 +6552,7 @@ fn non_editor_language_settings_data() -> Vec { SettingsPageItem::SectionHeader("LSP"), SettingsPageItem::SettingItem(SettingItem { title: "Enable Language Server", - description: "Whether to use language servers to provide code intelligence", + description: "Whether to use language servers to provide code intelligence.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6570,7 +6570,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Language Servers", - description: "The list of language servers to use (or disable) for this language", + description: "The list of language servers to use (or disable) for this language.", field: Box::new( SettingField { pick: |settings_content| { @@ -6591,7 +6591,7 @@ fn non_editor_language_settings_data() -> Vec { }), 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", + 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 { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6609,7 +6609,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Go To Definition Fallback", - description: "Whether to follow-up empty go to definition responses from the language server", + description: "Whether to follow-up empty Go to definition responses from the language server.", field: Box::new(SettingField { pick: |settings_content| settings_content.editor.go_to_definition_fallback.as_ref(), write: |settings_content, value| { @@ -6622,7 +6622,7 @@ fn non_editor_language_settings_data() -> Vec { SettingsPageItem::SectionHeader("LSP Completions"), SettingsPageItem::SettingItem(SettingItem { title: "Enabled", - description: "Whether to fetch LSP completions or not", + description: "Whether to fetch LSP completions or not.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6640,7 +6640,7 @@ fn non_editor_language_settings_data() -> Vec { }), 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)", + 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 { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6661,7 +6661,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Insert Mode", - description: "Controls how LSP completions are inserted", + description: "Controls how LSP completions are inserted.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6680,7 +6680,7 @@ fn non_editor_language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Debuggers"), SettingsPageItem::SettingItem(SettingItem { title: "Debuggers", - description: "Preferred debuggers for this language", + description: "Preferred debuggers for this language.", field: Box::new( SettingField { pick: |settings_content| { @@ -6702,7 +6702,7 @@ fn non_editor_language_settings_data() -> Vec { SettingsPageItem::SectionHeader("Prettier"), SettingsPageItem::SettingItem(SettingItem { title: "Allowed", - description: "Enables or disables formatting with Prettier for a given language", + description: "Enables or disables formatting with Prettier for a given language.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6720,7 +6720,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Parser", - description: "Forces Prettier integration to use a specific parser name when formatting files with the language", + description: "Forces Prettier integration to use a specific parser name when formatting files with the language.", field: Box::new(SettingField { pick: |settings_content| { language_settings_field(settings_content, |language| { @@ -6738,7 +6738,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Plugins", - description: "Forces Prettier integration to use specific plugins when formatting files with the language", + description: "Forces Prettier integration to use specific plugins when formatting files with the language.", field: Box::new( SettingField { pick: |settings_content| { @@ -6759,7 +6759,7 @@ fn non_editor_language_settings_data() -> Vec { }), SettingsPageItem::SettingItem(SettingItem { title: "Options", - description: "Default Prettier options, in the format as in package.json section for Prettier", + description: "Default Prettier options, in the format as in package.json section for Prettier.", field: Box::new( SettingField { pick: |settings_content| { diff --git a/crates/settings_ui/src/settings_ui.rs b/crates/settings_ui/src/settings_ui.rs index 9c1b3f2e561d420b7022a467b86f0368e2330bbd..0c287a16fa6fce5182eb01040571ee8ac68624b7 100644 --- a/crates/settings_ui/src/settings_ui.rs +++ b/crates/settings_ui/src/settings_ui.rs @@ -630,6 +630,7 @@ impl SettingsPageItem { cx: &mut Context, ) -> AnyElement { let file = settings_window.current_file.clone(); + let border_variant = cx.theme().colors().border_variant; let apply_padding = |element: Stateful
| -> Stateful
{ let element = element.pt_4(); @@ -639,12 +640,14 @@ impl SettingsPageItem { element.pb_4().border_b_1().border_color(border_variant) } }; + let mut render_setting_item_inner = - |setting_item: &SettingItem, cx: &mut Context| { + |setting_item: &SettingItem, padding: bool, cx: &mut Context| { let renderer = cx.default_global::().clone(); let (_, found) = setting_item.field.file_set_in(file.clone(), cx); let renderers = renderer.renderers.borrow(); + let field_renderer = renderers.get(&AnySettingField::type_id(setting_item.field.as_ref())); let field_renderer_or_warning = @@ -683,8 +686,15 @@ impl SettingsPageItem { ), }; - (field.map(apply_padding), field_renderer_or_warning.is_ok()) + let field = if padding { + field.map(apply_padding) + } else { + field + }; + + (field, field_renderer_or_warning.is_ok()) }; + match self { SettingsPageItem::SectionHeader(header) => v_flex() .w_full() @@ -698,15 +708,13 @@ impl SettingsPageItem { .child(Divider::horizontal().color(DividerColor::BorderFaded)) .into_any_element(), SettingsPageItem::SettingItem(setting_item) => { - render_setting_item_inner(setting_item, cx) - .0 - .into_any_element() + let (field_with_padding, _) = render_setting_item_inner(setting_item, true, cx); + field_with_padding.into_any_element() } SettingsPageItem::SubPageLink(sub_page_link) => h_flex() .id(sub_page_link.title.clone()) .w_full() .min_w_0() - .gap_2() .justify_between() .map(apply_padding) .child( @@ -725,7 +733,7 @@ impl SettingsPageItem { .icon_position(IconPosition::End) .icon_color(Color::Muted) .icon_size(IconSize::Small) - .style(ButtonStyle::Outlined) + .style(ButtonStyle::OutlinedGhost) .size(ButtonSize::Medium) .on_click({ let sub_page_link = sub_page_link.clone(); @@ -760,18 +768,42 @@ impl SettingsPageItem { let discriminant = SettingsStore::global(cx) .get_value_from_file(file, *pick_discriminant) .1; + let (discriminant_element, rendered_ok) = - render_setting_item_inner(discriminant_setting_item, cx); - let mut content = v_flex() - .gap_2() - .id("dynamic-item") - .child(discriminant_element); + render_setting_item_inner(discriminant_setting_item, true, cx); + + let has_sub_fields = + rendered_ok && discriminant.map(|d| !fields[d].is_empty()).unwrap_or(false); + + let discriminant_element = if has_sub_fields { + discriminant_element.pb_4().border_b_0() + } else { + discriminant_element + }; + + let mut content = v_flex().id("dynamic-item").child(discriminant_element); + if rendered_ok { let discriminant = discriminant.expect("This should be Some if rendered_ok is true"); let sub_fields = &fields[discriminant]; - for field in sub_fields { - content = content.child(render_setting_item_inner(field, cx).0.pl_6()); + let sub_field_count = sub_fields.len(); + + for (index, field) in sub_fields.iter().enumerate() { + let is_last_sub_field = index == sub_field_count - 1; + let (raw_field, _) = render_setting_item_inner(field, false, cx); + + content = content.child( + raw_field + .p_4() + .border_x_1() + .border_t_1() + .when(is_last_sub_field, |this| this.border_b_1()) + .when(is_last_sub_field && is_last, |this| this.mb_8()) + .border_dashed() + .border_color(cx.theme().colors().border_variant) + .bg(cx.theme().colors().element_background.opacity(0.2)), + ); } } @@ -795,7 +827,6 @@ fn render_settings_item( h_flex() .id(setting_item.title) .min_w_0() - .gap_2() .justify_between() .child( v_flex() @@ -1831,12 +1862,6 @@ impl SettingsWindow { }; v_flex() - .w_56() - .p_2p5() - .when(cfg!(target_os = "macos"), |c| c.pt_10()) - .h_full() - .flex_none() - .border_r_1() .key_context("NavigationMenu") .on_action(cx.listener(|this, _: &CollapseNavEntry, window, cx| { let Some(focused_entry) = this.focused_nav_entry(window, cx) else { @@ -1954,6 +1979,12 @@ impl SettingsWindow { cx, ); })) + .w_56() + .h_full() + .p_2p5() + .when(cfg!(target_os = "macos"), |this| this.pt_10()) + .flex_none() + .border_r_1() .border_color(cx.theme().colors().border) .bg(cx.theme().colors().panel_background) .child(self.render_search(window, cx)) @@ -2194,6 +2225,20 @@ impl SettingsWindow { .child(Label::new(last)) } + fn render_empty_state(&self, search_query: SharedString) -> impl IntoElement { + v_flex() + .size_full() + .items_center() + .justify_center() + .gap_1() + .child(Label::new("No Results")) + .child( + Label::new(search_query) + .size(LabelSize::Small) + .color(Color::Muted), + ) + } + fn render_page_items( &mut self, page_index: usize, @@ -2208,18 +2253,7 @@ impl SettingsWindow { if has_no_results { let search_query = self.search_bar.read(cx).text(cx); page_content = page_content.child( - v_flex() - .size_full() - .items_center() - .justify_center() - .gap_1() - .child(div().child("No Results")) - .child( - div() - .text_sm() - .text_color(cx.theme().colors().text_muted) - .child(format!("No settings match \"{}\"", search_query)), - ), + self.render_empty_state(format!("No settings match \"{}\"", search_query).into()), ) } else { let last_non_header_index = self @@ -2249,6 +2283,7 @@ impl SettingsWindow { }) .into_any_element(); } + let mut visible_items = this.visible_page_items(); let Some((actual_item_index, item)) = visible_items.nth(index - 1) else { return gpui::Empty.into_any_element(); @@ -2258,6 +2293,7 @@ impl SettingsWindow { .next() .map(|(_, item)| matches!(item, SettingsPageItem::SectionHeader(_))) .unwrap_or(false); + let is_last = Some(actual_item_index) == last_non_header_index; let item_focus_handle = @@ -2307,18 +2343,7 @@ impl SettingsWindow { if has_no_results { let search_query = self.search_bar.read(cx).text(cx); page_content = page_content.child( - v_flex() - .size_full() - .items_center() - .justify_center() - .gap_1() - .child(div().child("No Results")) - .child( - div() - .text_sm() - .text_color(cx.theme().colors().text_muted) - .child(format!("No settings match \"{}\"", search_query)), - ), + self.render_empty_state(format!("No settings match \"{}\"", search_query).into()), ) } else { let last_non_header_index = items @@ -2412,11 +2437,6 @@ impl SettingsWindow { return v_flex() .id("Settings-ui-page") - .flex_1() - .pt_6() - .pb_8() - .px_8() - .bg(cx.theme().colors().editor_background) .on_action(cx.listener(|this, _: &menu::SelectNext, window, cx| { if !sub_page_stack().is_empty() { window.focus_next(); @@ -2484,6 +2504,10 @@ impl SettingsWindow { this.vertical_scrollbar_for(self.sub_page_scroll_handle.clone(), window, cx) }) .track_focus(&self.content_focus_handle.focus_handle(cx)) + .flex_1() + .pt_6() + .px_8() + .bg(cx.theme().colors().editor_background) .child( div() .size_full()