aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-03-21 16:52:15 +0100
committerGitHub <noreply@github.com>2024-03-21 16:52:15 +0100
commit07b76ee610deb3a37082cf9a650f443fa579aa07 (patch)
treeff3d78914fbfb02001a38f2809aeb6c2619ec66d /zellij-utils/src/plugin_api
parentdocs(changelog): zpipe alias (diff)
downloadsl0ppij-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.proto1
-rw-r--r--zellij-utils/src/plugin_api/action.rs50
-rw-r--r--zellij-utils/src/plugin_api/pipe_message.proto1
-rw-r--r--zellij-utils/src/plugin_api/pipe_message.rs2
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;