From ea165e134d0d0ae665acff0c60bdd9cf26ffe2e0 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:38:47 +0200 Subject: [PATCH] gpui-macros: Hide autogenerated action types/functions (#10417) I've found it a bit annoying that autogenerated code shows up in completions when working on Zed, so I've moved them into an associated function of a struct we're "implementing" Action on. That way, neither a generated function nor a static show up in completions. Note that this change only affects Zed codebase! I'm pushing it up right after last Preview to give it some time on Nightly. Before: ![image](https://github.com/zed-industries/zed/assets/24362066/7343201f-f05b-4342-a9f7-97f002d88a48) ![image](https://github.com/zed-industries/zed/assets/24362066/e67f9dcb-e090-40e0-873c-e51bd39e0c7e) After: ![image](https://github.com/zed-industries/zed/assets/24362066/0704211a-73f5-4f12-8583-9e47f092e5b7) ![image](https://github.com/zed-industries/zed/assets/24362066/c6fa00f5-fd8f-4f06-8be7-b74acedccd7c) Release Notes: - N/A --- crates/gpui/src/action.rs | 4 ++- crates/gpui_macros/src/register_action.rs | 32 ++++++++++++++--------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/crates/gpui/src/action.rs b/crates/gpui/src/action.rs index 44e6ec17ff..cf0ad7e598 100644 --- a/crates/gpui/src/action.rs +++ b/crates/gpui/src/action.rs @@ -182,7 +182,9 @@ impl ActionRegistry { macro_rules! actions { ($namespace:path, [ $($name:ident),* $(,)? ]) => { $( - /// The `$name` action see [`gpui::actions!`] + #[doc = "The `"] + #[doc = stringify!($name)] + #[doc = "` action, see [`gpui::actions!`]"] #[derive(::std::cmp::PartialEq, ::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug, gpui::private::serde_derive::Deserialize)] #[serde(crate = "gpui::private::serde")] pub struct $name; diff --git a/crates/gpui_macros/src/register_action.rs b/crates/gpui_macros/src/register_action.rs index 2772ec9634..7ec1d6dd4b 100644 --- a/crates/gpui_macros/src/register_action.rs +++ b/crates/gpui_macros/src/register_action.rs @@ -22,19 +22,27 @@ pub(crate) fn register_action(type_name: &Ident) -> proc_macro2::TokenStream { ); quote! { - #[doc(hidden)] - #[gpui::private::linkme::distributed_slice(gpui::__GPUI_ACTIONS)] - #[linkme(crate = gpui::private::linkme)] - static #static_slice_name: gpui::MacroActionBuilder = #action_builder_fn_name; - - /// This is an auto generated function, do not use. - #[doc(hidden)] - fn #action_builder_fn_name() -> gpui::ActionData { - gpui::ActionData { - name: <#type_name as gpui::Action>::debug_name(), - type_id: ::std::any::TypeId::of::<#type_name>(), - build: <#type_name as gpui::Action>::build, + impl #type_name { + /// This is an auto generated function, do not use. + #[automatically_derived] + #[doc(hidden)] + fn __autogenerated() { + /// This is an auto generated function, do not use. + #[doc(hidden)] + fn #action_builder_fn_name() -> gpui::ActionData { + gpui::ActionData { + name: <#type_name as gpui::Action>::debug_name(), + type_id: ::std::any::TypeId::of::<#type_name>(), + build: <#type_name as gpui::Action>::build, + } + } + #[doc(hidden)] + #[gpui::private::linkme::distributed_slice(gpui::__GPUI_ACTIONS)] + #[linkme(crate = gpui::private::linkme)] + static #static_slice_name: gpui::MacroActionBuilder = #action_builder_fn_name; } } + + } }