diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-08-14 16:47:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-14 16:47:46 +0200 |
| commit | a3ad621dc75ce71291a578f53b079fe18a79bc2b (patch) | |
| tree | 8f44347dfc824d5c35a838ea009903045c647d06 /zellij-utils/src | |
| parent | docs(changelog): rerun command pane plugin API (diff) | |
| download | sl0ppij-a3ad621dc75ce71291a578f53b079fe18a79bc2b.tar.gz sl0ppij-a3ad621dc75ce71291a578f53b079fe18a79bc2b.tar.xz sl0ppij-a3ad621dc75ce71291a578f53b079fe18a79bc2b.zip | |
feat(plugins): command pane re-run event (#3553)
Diffstat (limited to 'zellij-utils/src')
| -rw-r--r-- | zellij-utils/src/data.rs | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/event.proto | 7 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/event.rs | 30 |
3 files changed, 38 insertions, 0 deletions
diff --git a/zellij-utils/src/data.rs b/zellij-utils/src/data.rs index d7dd8973..f03c01cf 100644 --- a/zellij-utils/src/data.rs +++ b/zellij-utils/src/data.rs @@ -919,6 +919,7 @@ pub enum Event { PaneClosed(PaneId), EditPaneOpened(u32, Context), // u32 - terminal_pane_id EditPaneExited(u32, Option<i32>, Context), // u32 - terminal_pane_id, Option<i32> - exit code + CommandPaneReRun(u32, Context), // u32 - terminal_pane_id, Option<i32> - } #[derive( diff --git a/zellij-utils/src/plugin_api/event.proto b/zellij-utils/src/plugin_api/event.proto index 1be5ced6..610a3ac4 100644 --- a/zellij-utils/src/plugin_api/event.proto +++ b/zellij-utils/src/plugin_api/event.proto @@ -47,6 +47,7 @@ enum EventType { PaneClosed = 21; EditPaneOpened = 22; EditPaneExited = 23; + CommandPaneReRun = 24; } message EventNameList { @@ -75,9 +76,15 @@ message Event { PaneClosedPayload pane_closed_payload = 18; EditPaneOpenedPayload edit_pane_opened_payload = 19; EditPaneExitedPayload edit_pane_exited_payload = 20; + CommandPaneReRunPayload command_pane_rerun_payload = 21; } } +message CommandPaneReRunPayload { + uint32 terminal_pane_id = 1; + repeated ContextItem context = 3; +} + message PaneClosedPayload { PaneId pane_id = 1; } diff --git a/zellij-utils/src/plugin_api/event.rs b/zellij-utils/src/plugin_api/event.rs index 9dad19e9..b669a672 100644 --- a/zellij-utils/src/plugin_api/event.rs +++ b/zellij-utils/src/plugin_api/event.rs @@ -299,6 +299,19 @@ impl TryFrom<ProtobufEvent> for Event { }, _ => Err("Malformed payload for the EditPaneExited Event"), }, + Some(ProtobufEventType::CommandPaneReRun) => match protobuf_event.payload { + Some(ProtobufEventPayload::CommandPaneRerunPayload(command_pane_rerun_payload)) => { + Ok(Event::CommandPaneReRun( + command_pane_rerun_payload.terminal_pane_id, + command_pane_rerun_payload + .context + .into_iter() + .map(|c_i| (c_i.name, c_i.value)) + .collect(), + )) + }, + _ => Err("Malformed payload for the CommandPaneReRun Event"), + }, None => Err("Unknown Protobuf Event"), } } @@ -592,6 +605,21 @@ impl TryFrom<Event> for ProtobufEvent { )), }) }, + Event::CommandPaneReRun(terminal_pane_id, context) => { + let command_pane_rerun_payload = CommandPaneReRunPayload { + terminal_pane_id, + context: context + .into_iter() + .map(|(name, value)| ContextItem { name, value }) + .collect(), + }; + Ok(ProtobufEvent { + name: ProtobufEventType::CommandPaneReRun as i32, + payload: Some(event::Payload::CommandPaneRerunPayload( + command_pane_rerun_payload, + )), + }) + }, } } } @@ -1100,6 +1128,7 @@ impl TryFrom<ProtobufEventType> for EventType { ProtobufEventType::PaneClosed => EventType::PaneClosed, ProtobufEventType::EditPaneOpened => EventType::EditPaneOpened, ProtobufEventType::EditPaneExited => EventType::EditPaneExited, + ProtobufEventType::CommandPaneReRun => EventType::CommandPaneReRun, }) } } @@ -1132,6 +1161,7 @@ impl TryFrom<EventType> for ProtobufEventType { EventType::PaneClosed => ProtobufEventType::PaneClosed, EventType::EditPaneOpened => ProtobufEventType::EditPaneOpened, EventType::EditPaneExited => ProtobufEventType::EditPaneExited, + EventType::CommandPaneReRun => ProtobufEventType::CommandPaneReRun, }) } } |
