aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-08-14 16:47:46 +0200
committerGitHub <noreply@github.com>2024-08-14 16:47:46 +0200
commita3ad621dc75ce71291a578f53b079fe18a79bc2b (patch)
tree8f44347dfc824d5c35a838ea009903045c647d06 /zellij-utils/src
parentdocs(changelog): rerun command pane plugin API (diff)
downloadsl0ppij-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.rs1
-rw-r--r--zellij-utils/src/plugin_api/event.proto7
-rw-r--r--zellij-utils/src/plugin_api/event.rs30
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,
})
}
}