settings.rs

 1use schemars::JsonSchema;
 2use serde::{Deserialize, Serialize};
 3
 4#[derive(Serialize, Deserialize, PartialEq, Default)]
 5pub(crate) struct TaskSettings {
 6    pub(crate) show_status_indicator: bool,
 7}
 8
 9/// Task-related settings.
10#[derive(Serialize, Deserialize, PartialEq, Default, Clone, JsonSchema)]
11pub(crate) struct TaskSettingsContent {
12    /// Whether to show task status indicator in the status bar. Default: true
13    show_status_indicator: Option<bool>,
14}
15
16impl settings::Settings for TaskSettings {
17    const KEY: Option<&'static str> = Some("task");
18
19    type FileContent = TaskSettingsContent;
20
21    fn load(
22        default_value: &Self::FileContent,
23        user_values: &[&Self::FileContent],
24        _: &mut gpui::AppContext,
25    ) -> gpui::Result<Self>
26    where
27        Self: Sized,
28    {
29        let this = Self::json_merge(default_value, user_values)?;
30        Ok(Self {
31            show_status_indicator: this.show_status_indicator.unwrap_or(true),
32        })
33    }
34}