diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-12-31 12:37:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-31 12:37:23 +0100 |
| commit | 42adc8cd048c03d52a9f33503d75e24364adbc68 (patch) | |
| tree | 943ee11e188e6512b336b603bdd5ea8eae38998b /zellij-utils/src/plugin_api | |
| parent | docs(changelog): cursor overflow fix (diff) | |
| download | sl0ppij-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')
| -rw-r--r-- | zellij-utils/src/plugin_api/action.rs | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.proto | 6 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 28 |
3 files changed, 32 insertions, 3 deletions
diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index 96385433..e3c05130 100644 --- a/zellij-utils/src/plugin_api/action.rs +++ b/zellij-utils/src/plugin_api/action.rs @@ -1301,6 +1301,7 @@ impl TryFrom<Action> for ProtobufAction { | Action::DumpLayout | Action::CliPipe { .. } | Action::ListClients + | Action::StackPanes(..) | Action::SkipConfirm(..) => Err("Unsupported action"), } } diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto index 14e8a286..7572476d 100644 --- a/zellij-utils/src/plugin_api/plugin_command.proto +++ b/zellij-utils/src/plugin_api/plugin_command.proto @@ -129,6 +129,7 @@ enum CommandName { ListClients = 113; ChangeHostFolder = 114; SetFloatingPanePinned = 115; + StackPanes = 116; } message PluginCommand { @@ -214,9 +215,14 @@ message PluginCommand { RebindKeysPayload rebind_keys_payload = 88; ChangeHostFolderPayload change_host_folder_payload = 89; SetFloatingPanePinnedPayload set_floating_pane_pinned_payload = 90; + StackPanesPayload stack_panes_payload = 91; } } +message StackPanesPayload { + repeated PaneId pane_ids = 1; +} + message SetFloatingPanePinnedPayload { PaneId pane_id = 1; bool should_be_pinned = 2; 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(), + })), + }), } } } |
