aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/plugin_command.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-04-26 11:38:39 +0200
committerGitHub <noreply@github.com>2024-04-26 11:38:39 +0200
commit7562a81f0d13563054214f5b47e5b5557a3156e5 (patch)
tree9ec7fe66df079fa5deaa95d6447785caaa1007da /zellij-utils/src/plugin_api/plugin_command.rs
parentdocs(changelog): move tab fix (diff)
downloadsl0ppij-7562a81f0d13563054214f5b47e5b5557a3156e5.tar.gz
sl0ppij-7562a81f0d13563054214f5b47e5b5557a3156e5.tar.xz
sl0ppij-7562a81f0d13563054214f5b47e5b5557a3156e5.zip
feat(plugins): add API to open new tabs with a LayoutInfo (#3305)
* feat(plugins): add api to open new tabs with a layout info * fix tests
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs29
1 files changed, 26 insertions, 3 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 080dd9e2..771b6151 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -8,9 +8,9 @@ pub use super::generated_api::api::{
FixedOrPercentValue as ProtobufFixedOrPercentValue,
FloatingPaneCoordinates as ProtobufFloatingPaneCoordinates, HttpVerb as ProtobufHttpVerb,
IdAndNewName, KillSessionsPayload, MessageToPluginPayload, MovePayload,
- NewPluginArgs as ProtobufNewPluginArgs, OpenCommandPanePayload, OpenFilePayload,
- PaneId as ProtobufPaneId, PaneType as ProtobufPaneType,
- PluginCommand as ProtobufPluginCommand, PluginMessagePayload,
+ NewPluginArgs as ProtobufNewPluginArgs, NewTabsWithLayoutInfoPayload,
+ OpenCommandPanePayload, OpenFilePayload, PaneId as ProtobufPaneId,
+ PaneType as ProtobufPaneType, PluginCommand as ProtobufPluginCommand, PluginMessagePayload,
RequestPluginPermissionPayload, ResizePayload, RunCommandPayload, SetTimeoutPayload,
SubscribePayload, SwitchSessionPayload, SwitchTabToPayload, UnsubscribePayload,
WebRequestPayload,
@@ -875,6 +875,19 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
Some(_) => Err("CloseSelf should have no payload, found a payload"),
None => Ok(PluginCommand::CloseSelf),
},
+ Some(CommandName::NewTabsWithLayoutInfo) => match protobuf_plugin_command.payload {
+ Some(Payload::NewTabsWithLayoutInfoPayload(new_tabs_with_layout_info_payload)) => {
+ new_tabs_with_layout_info_payload
+ .layout_info
+ .and_then(|layout_info| {
+ Some(PluginCommand::NewTabsWithLayoutInfo(
+ layout_info.try_into().ok()?,
+ ))
+ })
+ .ok_or("Failed to parse NewTabsWithLayoutInfo command")
+ },
+ _ => Err("Mismatched payload for NewTabsWithLayoutInfo"),
+ },
None => Err("Unrecognized plugin command"),
}
}
@@ -1397,6 +1410,16 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
name: CommandName::CloseSelf as i32,
payload: None,
}),
+ PluginCommand::NewTabsWithLayoutInfo(new_tabs_with_layout_info_payload) => {
+ Ok(ProtobufPluginCommand {
+ name: CommandName::NewTabsWithLayoutInfo as i32,
+ payload: Some(Payload::NewTabsWithLayoutInfoPayload(
+ NewTabsWithLayoutInfoPayload {
+ layout_info: new_tabs_with_layout_info_payload.try_into().ok(),
+ },
+ )),
+ })
+ },
}
}
}