mod agent;mod editor;mod extension;mod language;mod language_model;mod project;mod terminal;mod theme;mod workspace; pub use agent::*;pub use editor::*;pub use extension::*;pub use language::*;pub use language_model::*;pub use project::*;pub use terminal::*;pub use theme::*;pub use workspace::*; use collections::{HashMap, IndexMap};use gpui::{App, SharedString};use release_channel::ReleaseChannel;use schemars::JsonSchema;use serde::{Deserialize, Serialize};use settings_macros::{MergeFrom, with_fallible_options};use std::collections::BTreeSet;use std::env;use std::sync::Arc;pub use util::serde::default_true; use crate::{ActiveSettingsProfileName, merge_from}; #[with_fallible_options]#[derive(Debug, PartialEq, Default, Clone, Serialize, Deserialize, JsonSchema, MergeFrom)]pub struct SettingsContent { #[serde(flatten)] pub project: ProjectSettingsContent, #[serde(flatten)] pub theme: Box<ThemeSettingsContent>, #[serde(flatten)] pub extension: ExtensionSettingsContent, #[serde(flatten)] pub workspace: WorkspaceSettingsContent, #[serde(flatten)] pub editor: EditorSettingsContent, #[serde(flatten)] pub remote: RemoteSettingsContent, /// Settings related to the file finder. pub file_finder: Option<FileFinderSettingsContent>, pub git_panel: Option<GitPanelSettingsContent>, pub tabs: Option<ItemSettingsContent>, pub tab_bar: Option<TabBarSettingsContent>, pub status_bar: Option<StatusBarSettingsContent>, pub preview_tabs: Option<PreviewTabsSettingsContent>, pub agent: Option<AgentSettingsContent>, pub agent_servers: Option<AllAgentServersSettings>, /// Configuration of audio in Zed. pub audio: Option<AudioSettingsContent>, /// Whether or not to automatically check for updates. /// /// Default: true pub auto_update: Option<bool>, /// This base keymap settings adjusts the default keybindings in Zed to be similar /// to other common code editors. By default, Zed's keymap closely follows VSCode's /// keymap, with minor adjustments, this corresponds to the "VSCode" setting. /// /// Default: VSCode pub base_keymap: Option<BaseKeymapContent>, /// Configuration for the collab panel visual settings. pub collaboration_panel: Option<PanelSettingsContent>, pub debugger: Option<DebuggerSettingsContent>, /// Configuration for Diagnostics-related features. pub diagnostics: Option<DiagnosticsSettingsContent>, /// Configuration for Git-related features pub git: Option<GitSettings>, /// Common language server settings. pub global_lsp_settings: Option<GlobalLspSettingsContent>, /// The settings for the image viewer. pub image_viewer: Option<ImageViewerSettingsContent>, pub repl: Option<ReplSettingsContent>, /// Whether or not to enable Helix mode. /// /// Default: false pub helix_mode: Option<bool>, pub journal: Option<JournalSettingsContent>, /// A map of log scopes to the desired log level. /// Useful for filtering out noisy logs or enabling more verbose logging. /// /// Example: {"log": {"client": "warn"}} pub log: Option<HashMap<String, String>>, pub line_indicator_format: Option<LineIndicatorFormat>, pub language_models: Option<AllLanguageModelSettingsContent>, pub outline_panel: Option<OutlinePanelSettingsContent>, pub project_panel: Option<ProjectPanelSettingsContent>, /// Configuration for the Message Editor pub message_editor: Option<MessageEditorSettings>, /// Configuration for Node-related features pub node: Option<NodeBinarySettings>, /// Configuration for the Notification Panel pub notification_panel: Option<NotificationPanelSettingsContent>, pub proxy: Option<String>, /// The URL of the Zed server to connect to. pub server_url: Option<String>, /// Configuration for session-related features pub session: Option<SessionSettingsContent>, /// Control what info is collected by Zed. pub telemetry: Option<TelemetrySettingsContent>, /// Configuration of the terminal in Zed. pub terminal: Option<TerminalSettingsContent>, pub title_bar: Option<TitleBarSettingsContent>, /// Whether or not to enable Vim mode. /// /// Default: false pub vim_mode: Option<bool>, // Settings related to calls in Zed pub calls: Option<CallSettingsContent>, /// Whether to disable all AI features in Zed. /// /// Default: false pub disable_ai: Option<SaturatingBool>, /// Settings related to Vim mode in Zed. pub vim: Option<VimSettingsContent>,} impl SettingsContent { pub fn languages_mut(&mut self) -> &mut HashMap<SharedString, LanguageSettingsContent> { &mut self.project.all_languages.languages.0 }} #[with_fallible_options]#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize, JsonSchema, MergeFrom)]pub struct UserSettingsContent { #[serde(flatten)] pub content: Box<SettingsContent>, pub dev: Option<Box<SettingsContent>>, pub nightly: Option<Box<SettingsContent>>, pub preview: Option<Box<SettingsContent>>, pub stable: Option<Box<SettingsContent>>, pub macos: Option<Box<SettingsContent>>, pub windows: Option<Box<SettingsContent>>, pub linux: Option<Box<SettingsContent>>, #[serde(default)] pub profiles: IndexMap<String, SettingsContent>,} pub struct ExtensionsSettingsContent { pub all_languages: AllLanguageSettingsContent,} impl UserSettingsContent { pub fn for_release_channel(&self) -> Option<&SettingsContent> { match *release_channel::RELEASE_CHANNEL { ReleaseChannel::Dev => self.dev.as_deref(), ReleaseChannel::Nightly => self.nightly.as_deref(), ReleaseChannel::Preview => self.preview.as_deref(), ReleaseChannel::Stable => self.stable.as_deref(), } } pub fn for_os(&self) -> Option<&SettingsContent> { match env::consts::OS { "macos" => self.macos.as_deref(), "linux" => self.linux.as_deref(), "windows" => self.windows.as_deref(), _ => None, } } pub fn for_profile(&self, cx: &App) -> Option<&SettingsContent> { let Some(active_profile) = cx.try_global::<ActiveSettingsProfileName>() else { return None; }; self.profiles.get(&active_profile.0) }} /// Base key bindings scheme. Base keymaps can be overridden with user keymaps.////// Default: VSCode#[derive( Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, MergeFrom, PartialEq, Eq, Default, strum::VariantArray,)]pub enum BaseKeymapContent { #[default] VSCode, JetBrains, SublimeText, Atom, TextMate, Emacs, Cursor, None,} impl strum::VariantNames for BaseKeymapContent { const VARIANTS: &'static [&'static str] = &[ "VSCode", "JetBrains", "Sublime Text", "Atom", "TextMate", "Emacs", "Cursor", "None", ];} #[with_fallible_options]#[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)]pub struct TitleBarSettingsContent { /// Whether to show the branch icon beside branch switcher in the title bar. /// /// Default: false pub show_branch_icon: Option<bool>, /// Whether to show onboarding banners in the title bar. /// /// Default: true pub show_onboarding_banner: Option<bool>, /// Whether to show user avatar in the title bar. /// /// Default: true pub show_user_picture: Option<bool>, /// Whether to show the branch name button in the titlebar. /// /// Default: true pub show_branch_name: Option<bool>, /// Whether to show the project host and name in the titlebar. /// /// Default: true pub show_project_items: Option<bool>, /// Whether to show the sign in button in the title bar. /// /// Default: true pub show_sign_in: Option<bool>, /// Whether to show the menus in the title bar. /// /// Default: false pub show_menus: Option<bool>,} /// Configuration of audio in Zed.#[with_fallible_options]#[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)]pub struct AudioSettingsContent { /// Opt into the new audio system. /// /// You need to rejoin a call for this setting to apply #[serde(rename = "experimental.rodio_audio")] pub rodio_audio: Option<bool>, // default is false /// Requires 'rodio_audio: true' /// /// Automatically increase or decrease you microphone's volume. This affects how /// loud you sound to others. /// /// Recommended: off (default) /// Microphones are too quite in zed, until everyone is on experimental /// audio and has auto speaker volume on this will make you very loud /// compared to other speakers. #[serde(rename = "experimental.auto_microphone_volume")] pub auto_microphone_volume: Option<bool>, /// Requires 'rodio_audio: true' /// /// Automatically increate or decrease the volume of other call members. /// This only affects how things sound for you. #[serde(rename = "experimental.auto_speaker_volume")] pub auto_speaker_volume: Option<bool>, /// Requires 'rodio_audio: true' /// /// Remove background noises. Works great for typing, cars, dogs, AC. Does /// not work well on music. #[serde(rename = "experimental.denoise")] pub denoise: Option<bool>, /// Requires 'rodio_audio: true' /// /// Use audio parameters compatible with the previous versions of /// experimental audio and non-experimental audio. When this is false you /// will sound strange to anyone not on the latest experimental audio. In /// the future we will migrate by setting this to false /// /// You need to rejoin a call for this setting to apply #[serde(rename = "experimental.legacy_audio_compatible")] pub legacy_audio_compatible: Option<bool>,} /// Control what info is collected by Zed.#[with_fallible_options]#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Debug, MergeFrom)]pub struct TelemetrySettingsContent { /// Send debug info like crash reports. /// /// Default: true pub diagnostics: Option<bool>, /// Send anonymized usage data like what languages you're using Zed with. /// /// Default: true pub metrics: Option<bool>,} impl Default for TelemetrySettingsContent { fn default() -> Self { Self { diagnostics: Some(true), metrics: Some(true), } }} #[with_fallible_options]#[derive(Default, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Clone, MergeFrom)]pub struct DebuggerSettingsContent { /// Determines the stepping granularity. /// /// Default: line pub stepping_granularity: Option<SteppingGranularity>, /// Whether the breakpoints should be reused across Zed sessions. /// /// Default: true pub save_breakpoints: Option<bool>, /// Whether to show the debug button in the status bar. /// /// Default: true pub button: Option<bool>, /// Time in milliseconds until timeout error when connecting to a TCP debug adapter /// /// Default: 2000ms pub timeout: Option<u64>, /// Whether to log messages between active debug adapters and Zed /// /// Default: true pub log_dap_communications: Option<bool>, /// Whether to format dap messages in when adding them to debug adapter logger /// /// Default: true pub format_dap_log_messages: Option<bool>, /// The dock position of the debug panel /// /// Default: Bottom pub dock: Option<DockPosition>,} /// The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`.#[derive( PartialEq, Eq, Debug, Hash, Clone, Copy, Deserialize, Serialize, JsonSchema, MergeFrom, strum::VariantArray, strum::VariantNames,)]#[serde(rename_all = "snake_case")]pub enum SteppingGranularity { /// The step should allow the program to run until the current statement has finished executing. /// The meaning of a statement is determined by the adapter and it may be considered equivalent to a line. /// For example 'for(int i = 0; i < 10; i++)' could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'. Statement, /// The step should allow the program to run until the current source line has executed. Line, /// The step should allow one instruction to execute (e.g. one x86 instruction). Instruction,} #[derive( Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, MergeFrom, PartialEq, Eq, strum::VariantArray, strum::VariantNames,)]#[serde(rename_all = "snake_case")]pub enum DockPosition { Left, Bottom, Right,} /// Settings for slash commands.#[with_fallible_options]#[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema, MergeFrom, PartialEq, Eq)]pub struct SlashCommandSettings { /// Settings for the `/cargo-workspace` slash command. pub cargo_workspace: Option<CargoWorkspaceCommandSettings>,} /// Settings for the `/cargo-workspace` slash command.#[with_fallible_options]#[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema, MergeFrom, PartialEq, Eq)]pub struct CargoWorkspaceCommandSettings { /// Whether `/cargo-workspace` is enabled. pub enabled: Option<bool>,} /// Configuration of voice calls in Zed.#[with_fallible_options]#[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)]pub struct CallSettingsContent { /// Whether the microphone should be muted when joining a channel or a call. /// /// Default: false pub mute_on_join: Option<bool>, /// Whether your current project should be shared when joining an empty channel. /// /// Default: false pub share_on_join: Option<bool>,} #[with_fallible_options]#[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)]pub struct GitPanelSettingsContent { /// Whether to show the panel button in the status bar. /// /// Default: true pub button: Option<bool>, /// Where to dock the panel. /// /// Default: left pub dock: Option<DockPosition>, /// Default width of the panel in pixels. /// /// Default: 360 #[serde(serialize_with = "crate::serialize_optional_f32_with_two_decimal_places")] pub default_width: Option<f32>, /// How entry statuses are displayed. /// /// Default: icon pub status_style: Option<StatusStyle>, /// How and when the scrollbar should be displayed. /// /// Default: inherits editor scrollbar settings pub scrollbar: Option<ScrollbarSettings>, /// What the default branch name should be when /// `init.defaultBranch` is not set in git ///Lines 1–500 of 1038. Load more
mod agent; mod editor; mod extension; mod language; mod language_model; mod project; mod terminal; mod theme; mod workspace; pub use agent::*; pub use editor::*; pub use extension::*; pub use language::*; pub use language_model::*; pub use project::*; pub use terminal::*; pub use theme::*; pub use workspace::*; use collections::{HashMap, IndexMap}; use gpui::{App, SharedString}; use release_channel::ReleaseChannel; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use settings_macros::{MergeFrom, with_fallible_options}; use std::collections::BTreeSet; use std::env; use std::sync::Arc; pub use util::serde::default_true; use crate::{ActiveSettingsProfileName, merge_from}; #[with_fallible_options] #[derive(Debug, PartialEq, Default, Clone, Serialize, Deserialize, JsonSchema, MergeFrom)] pub struct SettingsContent { #[serde(flatten)] pub project: ProjectSettingsContent, #[serde(flatten)] pub theme: Box<ThemeSettingsContent>, #[serde(flatten)] pub extension: ExtensionSettingsContent, #[serde(flatten)] pub workspace: WorkspaceSettingsContent, #[serde(flatten)] pub editor: EditorSettingsContent, #[serde(flatten)] pub remote: RemoteSettingsContent, /// Settings related to the file finder. pub file_finder: Option<FileFinderSettingsContent>, pub git_panel: Option<GitPanelSettingsContent>, pub tabs: Option<ItemSettingsContent>, pub tab_bar: Option<TabBarSettingsContent>, pub status_bar: Option<StatusBarSettingsContent>, pub preview_tabs: Option<PreviewTabsSettingsContent>, pub agent: Option<AgentSettingsContent>, pub agent_servers: Option<AllAgentServersSettings>, /// Configuration of audio in Zed. pub audio: Option<AudioSettingsContent>, /// Whether or not to automatically check for updates. /// /// Default: true pub auto_update: Option<bool>, /// This base keymap settings adjusts the default keybindings in Zed to be similar /// to other common code editors. By default, Zed's keymap closely follows VSCode's /// keymap, with minor adjustments, this corresponds to the "VSCode" setting. /// /// Default: VSCode pub base_keymap: Option<BaseKeymapContent>, /// Configuration for the collab panel visual settings. pub collaboration_panel: Option<PanelSettingsContent>, pub debugger: Option<DebuggerSettingsContent>, /// Configuration for Diagnostics-related features. pub diagnostics: Option<DiagnosticsSettingsContent>, /// Configuration for Git-related features pub git: Option<GitSettings>, /// Common language server settings. pub global_lsp_settings: Option<GlobalLspSettingsContent>, /// The settings for the image viewer. pub image_viewer: Option<ImageViewerSettingsContent>, pub repl: Option<ReplSettingsContent>, /// Whether or not to enable Helix mode. /// /// Default: false pub helix_mode: Option<bool>, pub journal: Option<JournalSettingsContent>, /// A map of log scopes to the desired log level. /// Useful for filtering out noisy logs or enabling more verbose logging. /// /// Example: {"log": {"client": "warn"}} pub log: Option<HashMap<String, String>>, pub line_indicator_format: Option<LineIndicatorFormat>, pub language_models: Option<AllLanguageModelSettingsContent>, pub outline_panel: Option<OutlinePanelSettingsContent>, pub project_panel: Option<ProjectPanelSettingsContent>, /// Configuration for the Message Editor pub message_editor: Option<MessageEditorSettings>, /// Configuration for Node-related features pub node: Option<NodeBinarySettings>, /// Configuration for the Notification Panel pub notification_panel: Option<NotificationPanelSettingsContent>, pub proxy: Option<String>, /// The URL of the Zed server to connect to. pub server_url: Option<String>, /// Configuration for session-related features pub session: Option<SessionSettingsContent>, /// Control what info is collected by Zed. pub telemetry: Option<TelemetrySettingsContent>, /// Configuration of the terminal in Zed. pub terminal: Option<TerminalSettingsContent>, pub title_bar: Option<TitleBarSettingsContent>, /// Whether or not to enable Vim mode. /// /// Default: false pub vim_mode: Option<bool>, // Settings related to calls in Zed pub calls: Option<CallSettingsContent>, /// Whether to disable all AI features in Zed. /// /// Default: false pub disable_ai: Option<SaturatingBool>, /// Settings related to Vim mode in Zed. pub vim: Option<VimSettingsContent>, } impl SettingsContent { pub fn languages_mut(&mut self) -> &mut HashMap<SharedString, LanguageSettingsContent> { &mut self.project.all_languages.languages.0 } } #[with_fallible_options] #[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize, JsonSchema, MergeFrom)] pub struct UserSettingsContent { #[serde(flatten)] pub content: Box<SettingsContent>, pub dev: Option<Box<SettingsContent>>, pub nightly: Option<Box<SettingsContent>>, pub preview: Option<Box<SettingsContent>>, pub stable: Option<Box<SettingsContent>>, pub macos: Option<Box<SettingsContent>>, pub windows: Option<Box<SettingsContent>>, pub linux: Option<Box<SettingsContent>>, #[serde(default)] pub profiles: IndexMap<String, SettingsContent>, } pub struct ExtensionsSettingsContent { pub all_languages: AllLanguageSettingsContent, } impl UserSettingsContent { pub fn for_release_channel(&self) -> Option<&SettingsContent> { match *release_channel::RELEASE_CHANNEL { ReleaseChannel::Dev => self.dev.as_deref(), ReleaseChannel::Nightly => self.nightly.as_deref(), ReleaseChannel::Preview => self.preview.as_deref(), ReleaseChannel::Stable => self.stable.as_deref(), } } pub fn for_os(&self) -> Option<&SettingsContent> { match env::consts::OS { "macos" => self.macos.as_deref(), "linux" => self.linux.as_deref(), "windows" => self.windows.as_deref(), _ => None, } } pub fn for_profile(&self, cx: &App) -> Option<&SettingsContent> { let Some(active_profile) = cx.try_global::<ActiveSettingsProfileName>() else { return None; }; self.profiles.get(&active_profile.0) } } /// Base key bindings scheme. Base keymaps can be overridden with user keymaps. /// /// Default: VSCode #[derive( Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, MergeFrom, PartialEq, Eq, Default, strum::VariantArray, )] pub enum BaseKeymapContent { #[default] VSCode, JetBrains, SublimeText, Atom, TextMate, Emacs, Cursor, None, } impl strum::VariantNames for BaseKeymapContent { const VARIANTS: &'static [&'static str] = &[ "VSCode", "JetBrains", "Sublime Text", "Atom", "TextMate", "Emacs", "Cursor", "None", ]; } #[with_fallible_options] #[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)] pub struct TitleBarSettingsContent { /// Whether to show the branch icon beside branch switcher in the title bar. /// /// Default: false pub show_branch_icon: Option<bool>, /// Whether to show onboarding banners in the title bar. /// /// Default: true pub show_onboarding_banner: Option<bool>, /// Whether to show user avatar in the title bar. /// /// Default: true pub show_user_picture: Option<bool>, /// Whether to show the branch name button in the titlebar. /// /// Default: true pub show_branch_name: Option<bool>, /// Whether to show the project host and name in the titlebar. /// /// Default: true pub show_project_items: Option<bool>, /// Whether to show the sign in button in the title bar. /// /// Default: true pub show_sign_in: Option<bool>, /// Whether to show the menus in the title bar. /// /// Default: false pub show_menus: Option<bool>, } /// Configuration of audio in Zed. #[with_fallible_options] #[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)] pub struct AudioSettingsContent { /// Opt into the new audio system. /// /// You need to rejoin a call for this setting to apply #[serde(rename = "experimental.rodio_audio")] pub rodio_audio: Option<bool>, // default is false /// Requires 'rodio_audio: true' /// /// Automatically increase or decrease you microphone's volume. This affects how /// loud you sound to others. /// /// Recommended: off (default) /// Microphones are too quite in zed, until everyone is on experimental /// audio and has auto speaker volume on this will make you very loud /// compared to other speakers. #[serde(rename = "experimental.auto_microphone_volume")] pub auto_microphone_volume: Option<bool>, /// Requires 'rodio_audio: true' /// /// Automatically increate or decrease the volume of other call members. /// This only affects how things sound for you. #[serde(rename = "experimental.auto_speaker_volume")] pub auto_speaker_volume: Option<bool>, /// Requires 'rodio_audio: true' /// /// Remove background noises. Works great for typing, cars, dogs, AC. Does /// not work well on music. #[serde(rename = "experimental.denoise")] pub denoise: Option<bool>, /// Requires 'rodio_audio: true' /// /// Use audio parameters compatible with the previous versions of /// experimental audio and non-experimental audio. When this is false you /// will sound strange to anyone not on the latest experimental audio. In /// the future we will migrate by setting this to false /// /// You need to rejoin a call for this setting to apply #[serde(rename = "experimental.legacy_audio_compatible")] pub legacy_audio_compatible: Option<bool>, } /// Control what info is collected by Zed. #[with_fallible_options] #[derive(Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Debug, MergeFrom)] pub struct TelemetrySettingsContent { /// Send debug info like crash reports. /// /// Default: true pub diagnostics: Option<bool>, /// Send anonymized usage data like what languages you're using Zed with. /// /// Default: true pub metrics: Option<bool>, } impl Default for TelemetrySettingsContent { fn default() -> Self { Self { diagnostics: Some(true), metrics: Some(true), } } } #[with_fallible_options] #[derive(Default, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Clone, MergeFrom)] pub struct DebuggerSettingsContent { /// Determines the stepping granularity. /// /// Default: line pub stepping_granularity: Option<SteppingGranularity>, /// Whether the breakpoints should be reused across Zed sessions. /// /// Default: true pub save_breakpoints: Option<bool>, /// Whether to show the debug button in the status bar. /// /// Default: true pub button: Option<bool>, /// Time in milliseconds until timeout error when connecting to a TCP debug adapter /// /// Default: 2000ms pub timeout: Option<u64>, /// Whether to log messages between active debug adapters and Zed /// /// Default: true pub log_dap_communications: Option<bool>, /// Whether to format dap messages in when adding them to debug adapter logger /// /// Default: true pub format_dap_log_messages: Option<bool>, /// The dock position of the debug panel /// /// Default: Bottom pub dock: Option<DockPosition>, } /// The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`. #[derive( PartialEq, Eq, Debug, Hash, Clone, Copy, Deserialize, Serialize, JsonSchema, MergeFrom, strum::VariantArray, strum::VariantNames, )] #[serde(rename_all = "snake_case")] pub enum SteppingGranularity { /// The step should allow the program to run until the current statement has finished executing. /// The meaning of a statement is determined by the adapter and it may be considered equivalent to a line. /// For example 'for(int i = 0; i < 10; i++)' could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'. Statement, /// The step should allow the program to run until the current source line has executed. Line, /// The step should allow one instruction to execute (e.g. one x86 instruction). Instruction, } #[derive( Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, MergeFrom, PartialEq, Eq, strum::VariantArray, strum::VariantNames, )] #[serde(rename_all = "snake_case")] pub enum DockPosition { Left, Bottom, Right, } /// Settings for slash commands. #[with_fallible_options] #[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema, MergeFrom, PartialEq, Eq)] pub struct SlashCommandSettings { /// Settings for the `/cargo-workspace` slash command. pub cargo_workspace: Option<CargoWorkspaceCommandSettings>, } /// Settings for the `/cargo-workspace` slash command. #[with_fallible_options] #[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema, MergeFrom, PartialEq, Eq)] pub struct CargoWorkspaceCommandSettings { /// Whether `/cargo-workspace` is enabled. pub enabled: Option<bool>, } /// Configuration of voice calls in Zed. #[with_fallible_options] #[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)] pub struct CallSettingsContent { /// Whether the microphone should be muted when joining a channel or a call. /// /// Default: false pub mute_on_join: Option<bool>, /// Whether your current project should be shared when joining an empty channel. /// /// Default: false pub share_on_join: Option<bool>, } #[with_fallible_options] #[derive(Clone, PartialEq, Default, Serialize, Deserialize, JsonSchema, MergeFrom, Debug)] pub struct GitPanelSettingsContent { /// Whether to show the panel button in the status bar. /// /// Default: true pub button: Option<bool>, /// Where to dock the panel. /// /// Default: left pub dock: Option<DockPosition>, /// Default width of the panel in pixels. /// /// Default: 360 #[serde(serialize_with = "crate::serialize_optional_f32_with_two_decimal_places")] pub default_width: Option<f32>, /// How entry statuses are displayed. /// /// Default: icon pub status_style: Option<StatusStyle>, /// How and when the scrollbar should be displayed. /// /// Default: inherits editor scrollbar settings pub scrollbar: Option<ScrollbarSettings>, /// What the default branch name should be when /// `init.defaultBranch` is not set in git ///