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, } #[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, } 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() } } #[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "lowercase")] pub enum FileFinderWidth { #[default] Small, Medium, Large, XLarge, Full, }