diff options
author | Aram Drevekenin <aram@poor.dev> | 2024-03-21 16:52:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-21 16:52:15 +0100 |
commit | 07b76ee610deb3a37082cf9a650f443fa579aa07 (patch) | |
tree | ff3d78914fbfb02001a38f2809aeb6c2619ec66d /zellij-utils/src/plugin_api/action.rs | |
parent | 8504881e4eeaa0dbc53203351c9529aed1068249 (diff) |
feat(pipes): allow piping messages to plugins from keybindings (#3212)
Diffstat (limited to 'zellij-utils/src/plugin_api/action.rs')
-rw-r--r-- | zellij-utils/src/plugin_api/action.rs | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index 1c35c8548..14d5ad090 100644 --- a/zellij-utils/src/plugin_api/action.rs +++ b/zellij-utils/src/plugin_api/action.rs @@ -689,6 +689,23 @@ impl TryFrom<ProtobufAction> for Action { }, _ => Err("Wrong payload for Action::RenameSession"), }, + Some(ProtobufActionName::KeybindPipe) => match protobuf_action.optional_payload { + Some(_) => Err("KeybindPipe should not have a payload"), + // TODO: at some point we might want to support a payload here + None => Ok(Action::KeybindPipe { + name: None, + payload: None, + args: None, + plugin: None, + configuration: None, + launch_new: false, + skip_cache: false, + floating: None, + in_place: None, + cwd: None, + pane_title: None, + }), + }, _ => Err("Unknown Action"), } } @@ -1181,25 +1198,16 @@ impl TryFrom<Action> for ProtobufAction { skip_plugin_cache, _cwd, _coordinates, - ) => { - // let plugin_url: Url = match run_plugin { - // RunPluginOrAlias::RunPlugin(run_plugin) => Url::from(&run_plugin.location), - // RunPluginOrAlias::Alias(plugin_alias) => { - // // TODO: support plugin alias - // unimplemented!() - // } - // }; - Ok(ProtobufAction { - name: ProtobufActionName::NewFloatingPluginPane as i32, - optional_payload: Some(OptionalPayload::NewFloatingPluginPanePayload( - NewPluginPanePayload { - plugin_url: run_plugin.location_string(), - pane_name, - skip_plugin_cache, - }, - )), - }) - }, + ) => Ok(ProtobufAction { + name: ProtobufActionName::NewFloatingPluginPane as i32, + optional_payload: Some(OptionalPayload::NewFloatingPluginPanePayload( + NewPluginPanePayload { + plugin_url: run_plugin.location_string(), + pane_name, + skip_plugin_cache, + }, + )), + }), Action::StartOrReloadPlugin(run_plugin) => Ok(ProtobufAction { name: ProtobufActionName::StartOrReloadPlugin as i32, optional_payload: Some(OptionalPayload::StartOrReloadPluginPayload( @@ -1273,6 +1281,10 @@ impl TryFrom<Action> for ProtobufAction { name: ProtobufActionName::RenameSession as i32, optional_payload: Some(OptionalPayload::RenameSessionPayload(session_name)), }), + Action::KeybindPipe { .. } => Ok(ProtobufAction { + name: ProtobufActionName::KeybindPipe as i32, + optional_payload: None, + }), Action::NoOp | Action::Confirm | Action::NewInPlacePane(..) |