slash_command_settings.rs

 1use anyhow::Result;
 2use gpui::App;
 3use schemars::JsonSchema;
 4use serde::{Deserialize, Serialize};
 5use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
 6
 7/// Settings for slash commands.
 8#[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema, SettingsUi, SettingsKey)]
 9#[settings_key(key = "slash_commands")]
10pub struct SlashCommandSettings {
11    /// Settings for the `/cargo-workspace` slash command.
12    #[serde(default)]
13    pub cargo_workspace: CargoWorkspaceCommandSettings,
14}
15
16/// Settings for the `/cargo-workspace` slash command.
17#[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema)]
18pub struct CargoWorkspaceCommandSettings {
19    /// Whether `/cargo-workspace` is enabled.
20    #[serde(default)]
21    pub enabled: bool,
22}
23
24impl Settings for SlashCommandSettings {
25    type FileContent = Self;
26
27    fn load(sources: SettingsSources<Self::FileContent>, _cx: &mut App) -> Result<Self> {
28        SettingsSources::<Self::FileContent>::json_merge_with(
29            [sources.default]
30                .into_iter()
31                .chain(sources.user)
32                .chain(sources.server),
33        )
34    }
35
36    fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut Self::FileContent) {}
37}