diff --git a/crates/zed/src/menus.rs b/crates/zed/src/menus.rs index faedbe9d45..cc5f128bc0 100644 --- a/crates/zed/src/menus.rs +++ b/crates/zed/src/menus.rs @@ -247,10 +247,25 @@ pub fn menus() -> Vec> { }, Menu { name: "Help", - items: vec![MenuItem::Action { - name: "Command Palette", - action: Box::new(command_palette::Toggle), - }], + items: vec![ + MenuItem::Action { + name: "Command Palette", + action: Box::new(command_palette::Toggle), + }, + MenuItem::Separator, + MenuItem::Action { + name: "Zed.dev", + action: Box::new(crate::OpenBrowser { + url: "https://zed.dev".into(), + }), + }, + MenuItem::Action { + name: "Zed Twitter", + action: Box::new(crate::OpenBrowser { + url: "https://twitter.com/zeddotdev".into(), + }), + }, + ], }, ] } diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index aeba7551eb..6ebe3dc35d 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -14,6 +14,7 @@ use editor::Editor; use gpui::{ actions, geometry::vector::vec2f, + impl_actions, platform::{WindowBounds, WindowOptions}, AsyncAppContext, ViewContext, }; @@ -23,6 +24,7 @@ use project::Project; pub use project::{self, fs}; use project_panel::ProjectPanel; use search::{BufferSearchBar, ProjectSearchBar}; +use serde::Deserialize; use serde_json::to_string_pretty; use settings::{keymap_file_json_schema, settings_file_json_schema, Settings}; use std::{ @@ -33,6 +35,13 @@ use util::ResultExt; pub use workspace; use workspace::{AppState, Workspace}; +#[derive(Deserialize, Clone)] +struct OpenBrowser { + url: Arc, +} + +impl_actions!(zed, [OpenBrowser]); + actions!( zed, [ @@ -61,6 +70,7 @@ lazy_static! { pub fn init(app_state: &Arc, cx: &mut gpui::MutableAppContext) { cx.add_action(about); cx.add_global_action(quit); + cx.add_global_action(move |action: &OpenBrowser, cx| cx.platform().open_url(&action.url)); cx.add_global_action(move |_: &IncreaseBufferFontSize, cx| { cx.update_global::(|settings, cx| { settings.buffer_font_size = (settings.buffer_font_size + 1.0).max(MIN_FONT_SIZE);