aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/plugin_command.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-12-31 12:37:23 +0100
committerGitHub <noreply@github.com>2024-12-31 12:37:23 +0100
commit42adc8cd048c03d52a9f33503d75e24364adbc68 (patch)
tree943ee11e188e6512b336b603bdd5ea8eae38998b /zellij-utils/src/plugin_api/plugin_command.rs
parentdocs(changelog): cursor overflow fix (diff)
downloadsl0ppij-42adc8cd048c03d52a9f33503d75e24364adbc68.tar.gz
sl0ppij-42adc8cd048c03d52a9f33503d75e24364adbc68.tar.xz
sl0ppij-42adc8cd048c03d52a9f33503d75e24364adbc68.zip
feat(ux): stack panes command (#3905)
* working across tabs and floating panes through the cli * finalize cli command * plugin api * style(fmt): rustfmt * fix: re-focus pane in stack if it was focused * style(fmt): rustfmt * remove outdated comment
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs28
1 files changed, 25 insertions, 3 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 9d92f260..2621502a 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -19,9 +19,10 @@ pub use super::generated_api::api::{
RerunCommandPanePayload, ResizePaneIdWithDirectionPayload, ResizePayload,
RunCommandPayload, ScrollDownInPaneIdPayload, ScrollToBottomInPaneIdPayload,
ScrollToTopInPaneIdPayload, ScrollUpInPaneIdPayload, SetFloatingPanePinnedPayload,
- SetTimeoutPayload, ShowPaneWithIdPayload, SubscribePayload, SwitchSessionPayload,
- SwitchTabToPayload, TogglePaneEmbedOrEjectForPaneIdPayload, TogglePaneIdFullscreenPayload,
- UnsubscribePayload, WebRequestPayload, WriteCharsToPaneIdPayload, WriteToPaneIdPayload,
+ SetTimeoutPayload, ShowPaneWithIdPayload, StackPanesPayload, SubscribePayload,
+ SwitchSessionPayload, SwitchTabToPayload, TogglePaneEmbedOrEjectForPaneIdPayload,
+ TogglePaneIdFullscreenPayload, UnsubscribePayload, WebRequestPayload,
+ WriteCharsToPaneIdPayload, WriteToPaneIdPayload,
},
plugin_permission::PermissionType as ProtobufPermissionType,
resize::ResizeAction as ProtobufResizeAction,
@@ -1328,6 +1329,18 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
},
_ => Err("Mismatched payload for SetFloatingPanePinned"),
},
+ Some(CommandName::StackPanes) => match protobuf_plugin_command.payload {
+ Some(Payload::StackPanesPayload(stack_panes_payload)) => {
+ Ok(PluginCommand::StackPanes(
+ stack_panes_payload
+ .pane_ids
+ .into_iter()
+ .filter_map(|p_id| p_id.try_into().ok())
+ .collect(),
+ ))
+ },
+ _ => Err("Mismatched payload for SetFloatingPanePinned"),
+ },
None => Err("Unrecognized plugin command"),
}
}
@@ -2172,6 +2185,15 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
)),
})
},
+ PluginCommand::StackPanes(pane_ids) => Ok(ProtobufPluginCommand {
+ name: CommandName::StackPanes as i32,
+ payload: Some(Payload::StackPanesPayload(StackPanesPayload {
+ pane_ids: pane_ids
+ .into_iter()
+ .filter_map(|p_id| p_id.try_into().ok())
+ .collect(),
+ })),
+ }),
}
}
}