diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-04-26 11:38:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-26 11:38:39 +0200 |
| commit | 7562a81f0d13563054214f5b47e5b5557a3156e5 (patch) | |
| tree | 9ec7fe66df079fa5deaa95d6447785caaa1007da /zellij-utils/src/plugin_api/plugin_command.rs | |
| parent | docs(changelog): move tab fix (diff) | |
| download | sl0ppij-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.rs | 29 |
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(), + }, + )), + }) + }, } } } |
