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 | |
| parent | docs(changelog): zpipe alias (diff) | |
| download | sl0ppij-07b76ee610deb3a37082cf9a650f443fa579aa07.tar.gz sl0ppij-07b76ee610deb3a37082cf9a650f443fa579aa07.tar.xz sl0ppij-07b76ee610deb3a37082cf9a650f443fa579aa07.zip | |
feat(pipes): allow piping messages to plugins from keybindings (#3212)
Diffstat (limited to 'zellij-utils/src/plugin_api')
| -rw-r--r-- | zellij-utils/src/plugin_api/action.proto | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/action.rs | 50 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/pipe_message.proto | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/pipe_message.rs | 2 |
4 files changed, 35 insertions, 19 deletions
diff --git a/zellij-utils/src/plugin_api/action.proto b/zellij-utils/src/plugin_api/action.proto index d59da4ad..d78d5e69 100644 --- a/zellij-utils/src/plugin_api/action.proto +++ b/zellij-utils/src/plugin_api/action.proto @@ -243,6 +243,7 @@ enum ActionName { LaunchPlugin = 81; CliPipe = 82; MoveTab = 83; + KeybindPipe = 84; } message Position { diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index 1c35c854..14d5ad09 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(..) diff --git a/zellij-utils/src/plugin_api/pipe_message.proto b/zellij-utils/src/plugin_api/pipe_message.proto index 5f488a75..a1d02732 100644 --- a/zellij-utils/src/plugin_api/pipe_message.proto +++ b/zellij-utils/src/plugin_api/pipe_message.proto @@ -15,6 +15,7 @@ message PipeMessage { enum PipeSource { Cli = 0; Plugin = 1; + Keybind = 2; } message Arg { diff --git a/zellij-utils/src/plugin_api/pipe_message.rs b/zellij-utils/src/plugin_api/pipe_message.rs index dbfe4930..b1e32209 100644 --- a/zellij-utils/src/plugin_api/pipe_message.rs +++ b/zellij-utils/src/plugin_api/pipe_message.rs @@ -19,6 +19,7 @@ impl TryFrom<ProtobufPipeMessage> for PipeMessage { (Some(ProtobufPipeSource::Plugin), _, Some(plugin_source_id)) => { PipeSource::Plugin(plugin_source_id) }, + (Some(ProtobufPipeSource::Keybind), _, _) => PipeSource::Keybind, _ => return Err("Invalid PipeSource or payload"), }; let name = protobuf_pipe_message.name; @@ -49,6 +50,7 @@ impl TryFrom<PipeMessage> for ProtobufPipeMessage { PipeSource::Plugin(plugin_id) => { (ProtobufPipeSource::Plugin as i32, None, Some(plugin_id)) }, + PipeSource::Keybind => (ProtobufPipeSource::Keybind as i32, None, None), }; let name = pipe_message.name; let payload = pipe_message.payload; |
