304 lines · 7.8 KB · Rust
RawDownload
use gpui::{actions, impl_actions};use schemars::JsonSchema;use serde::{Deserialize, Serialize}; // If the zed binary doesn't use anything in this crate, it will be optimized away// and the actions won't initialize. So we just provide an empty initialization function// to be called from main.//// These may provide relevant context:// https://github.com/rust-lang/rust/issues/47384// https://github.com/mmastrac/rust-ctor/issues/280pub fn init() {} #[derive(Clone, PartialEq, Deserialize, JsonSchema)]#[serde(deny_unknown_fields)]pub struct OpenBrowser {    pub url: String,} #[derive(Clone, PartialEq, Deserialize, JsonSchema)]#[serde(deny_unknown_fields)]pub struct OpenZedUrl {    pub url: String,} impl_actions!(zed, [OpenBrowser, OpenZedUrl]); actions!(    zed,    [        OpenSettings,        OpenDefaultKeymap,        OpenAccountSettings,        OpenServerSettings,        Quit,        OpenKeymap,        About,        OpenLicenses,        OpenTelemetryLog,    ]); #[derive(PartialEq, Clone, Copy, Debug, Deserialize, JsonSchema)]#[serde(rename_all = "snake_case")]pub enum ExtensionCategoryFilter {    Themes,    IconThemes,    Languages,    Grammars,    LanguageServers,    ContextServers,    SlashCommands,    IndexedDocsProviders,    Snippets,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct Extensions {    /// Filters the extensions page down to extensions that are in the specified category.    #[serde(default)]    pub category_filter: Option<ExtensionCategoryFilter>,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct DecreaseBufferFontSize {    #[serde(default)]    pub persist: bool,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct IncreaseBufferFontSize {    #[serde(default)]    pub persist: bool,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct ResetBufferFontSize {    #[serde(default)]    pub persist: bool,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct DecreaseUiFontSize {    #[serde(default)]    pub persist: bool,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct IncreaseUiFontSize {    #[serde(default)]    pub persist: bool,} #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]pub struct ResetUiFontSize {    #[serde(default)]    pub persist: bool,} impl_actions!(    zed,    [        Extensions,        DecreaseBufferFontSize,        IncreaseBufferFontSize,        ResetBufferFontSize,        DecreaseUiFontSize,        IncreaseUiFontSize,        ResetUiFontSize,    ]); pub mod workspace {    use gpui::action_with_deprecated_aliases;     action_with_deprecated_aliases!(        workspace,        CopyPath,        [            "editor::CopyPath",            "outline_panel::CopyPath",            "project_panel::CopyPath"        ]    );     action_with_deprecated_aliases!(        workspace,        CopyRelativePath,        [            "editor::CopyRelativePath",            "outline_panel::CopyRelativePath",            "project_panel::CopyRelativePath"        ]    );} pub mod git {    use gpui::{action_with_deprecated_aliases, actions};     actions!(git, [CheckoutBranch, Switch, SelectRepo]);    action_with_deprecated_aliases!(git, Branch, ["branches::OpenRecent"]);} pub mod command_palette {    use gpui::actions;     actions!(command_palette, [Toggle]);} pub mod feedback {    use gpui::actions;     actions!(feedback, [GiveFeedback]);} pub mod theme_selector {    use gpui::impl_actions;    use schemars::JsonSchema;    use serde::Deserialize;     #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]    #[serde(deny_unknown_fields)]    pub struct Toggle {        /// A list of theme names to filter the theme selector down to.        pub themes_filter: Option<Vec<String>>,    }     impl_actions!(theme_selector, [Toggle]);} pub mod icon_theme_selector {    use gpui::impl_actions;    use schemars::JsonSchema;    use serde::Deserialize;     #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema)]    #[serde(deny_unknown_fields)]    pub struct Toggle {        /// A list of icon theme names to filter the theme selector down to.        pub themes_filter: Option<Vec<String>>,    }     impl_actions!(icon_theme_selector, [Toggle]);} pub mod agent {    use gpui::actions;     actions!(agent, [OpenConfiguration]);} pub mod assistant {    use gpui::{action_with_deprecated_aliases, actions, impl_actions};    use schemars::JsonSchema;    use serde::Deserialize;     actions!(assistant, [ToggleFocus, ShowConfiguration]);     action_with_deprecated_aliases!(        assistant,        OpenPromptLibrary,        ["assistant::DeployPromptLibrary"]    );     #[derive(Clone, Default, Deserialize, PartialEq, JsonSchema)]    #[serde(deny_unknown_fields)]    pub struct InlineAssist {        pub prompt: Option<String>,    }     impl_actions!(assistant, [InlineAssist]);} #[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]#[serde(deny_unknown_fields)]pub struct OpenRecent {    #[serde(default)]    pub create_new_window: bool,} impl_actions!(projects, [OpenRecent]);actions!(projects, [OpenRemote]); /// Where to spawn the task in the UI.#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]#[serde(rename_all = "snake_case")]pub enum RevealTarget {    /// In the central pane group, "main" editor area.    Center,    /// In the terminal dock, "regular" terminal items' place.    #[default]    Dock,} /// Spawn a task with name or open tasks modal.#[derive(Debug, PartialEq, Clone, Deserialize, JsonSchema)]#[serde(untagged)]pub enum Spawn {    /// Spawns a task by the name given.    ByName {        task_name: String,        #[serde(default)]        reveal_target: Option<RevealTarget>,    },    /// Spawns a task by the name given.    ByTag {        task_tag: String,        #[serde(default)]        reveal_target: Option<RevealTarget>,    },    /// Spawns a task via modal's selection.    ViaModal {        /// Selected task's `reveal_target` property override.        #[serde(default)]        reveal_target: Option<RevealTarget>,    },} impl Spawn {    pub fn modal() -> Self {        Self::ViaModal {            reveal_target: None,        }    }} /// Rerun the last task.#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]#[serde(deny_unknown_fields)]pub struct Rerun {    /// Controls whether the task context is reevaluated prior to execution of a task.    /// If it is not, environment variables such as ZED_COLUMN, ZED_FILE are gonna be the same as in the last execution of a task    /// If it is, these variables will be updated to reflect current state of editor at the time task::Rerun is executed.    /// default: false    #[serde(default)]    pub reevaluate_context: bool,    /// Overrides `allow_concurrent_runs` property of the task being reran.    /// Default: null    #[serde(default)]    pub allow_concurrent_runs: Option<bool>,    /// Overrides `use_new_terminal` property of the task being reran.    /// Default: null    #[serde(default)]    pub use_new_terminal: Option<bool>,     /// If present, rerun the task with this ID, otherwise rerun the last task.    #[serde(skip)]    pub task_id: Option<String>,} impl_actions!(task, [Spawn, Rerun]); pub mod outline {    use std::sync::OnceLock;     use gpui::{AnyView, App, Window, action_as};     action_as!(outline, ToggleOutline as Toggle);    /// A pointer to outline::toggle function, exposed here to sewer the breadcrumbs <-> outline dependency.    pub static TOGGLE_OUTLINE: OnceLock<fn(AnyView, &mut Window, &mut App)> = OnceLock::new();} actions!(zed_predict_onboarding, [OpenZedPredictOnboarding]);actions!(git_onboarding, [OpenGitIntegrationOnboarding]);