use anyhow::Result; use schemars::JsonSchema; use serde_derive::{Deserialize, Serialize}; use settings::{Settings, SettingsSources}; #[derive(Deserialize, Debug, Clone, Copy, PartialEq)] pub struct FileFinderSettings { pub file_icons: bool, pub modal_max_width: Option, pub skip_focus_for_active_in_search: bool, pub include_ignored: Option, } #[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)] pub struct FileFinderSettingsContent { /// Whether to show file icons in the file finder. /// /// Default: true pub file_icons: Option, /// Determines how much space the file finder can take up in relation to the available window width. /// /// Default: small pub modal_max_width: Option, /// Determines whether the file finder should skip focus for the active file in search results. /// /// Default: true pub skip_focus_for_active_in_search: Option, /// Determines whether to show the git status in the file finder /// /// Default: true pub git_status: Option, /// Whether to use gitignored files when searching. /// Only the file Zed had indexed will be used, not necessary all the gitignored files. /// /// Can accept 3 values: /// * `Some(true)`: Use all gitignored files /// * `Some(false)`: Use only the files Zed had indexed /// * `None`: Be smart and search for ignored when called from a gitignored worktree /// /// Default: None pub include_ignored: Option>, } impl Settings for FileFinderSettings { const KEY: Option<&'static str> = Some("file_finder"); type FileContent = FileFinderSettingsContent; fn load(sources: SettingsSources, _: &mut gpui::App) -> Result { sources.json_merge() } fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut Self::FileContent) {} } #[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "lowercase")] pub enum FileFinderWidth { #[default] Small, Medium, Large, XLarge, Full, }