summaryrefslogtreecommitdiffstats
path: root/zellij-server/src/pty.rs
diff options
context:
space:
mode:
Diffstat (limited to 'zellij-server/src/pty.rs')
-rw-r--r--zellij-server/src/pty.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/zellij-server/src/pty.rs b/zellij-server/src/pty.rs
index cc219f372..c4e810536 100644
--- a/zellij-server/src/pty.rs
+++ b/zellij-server/src/pty.rs
@@ -2,7 +2,7 @@ use crate::background_jobs::BackgroundJob;
use crate::terminal_bytes::TerminalBytes;
use crate::{
panes::PaneId,
- plugins::PluginInstruction,
+ plugins::{PluginId, PluginInstruction},
screen::ScreenInstruction,
session_layout_metadata::SessionLayoutMetadata,
thread_bus::{Bus, ThreadSenders},
@@ -77,6 +77,7 @@ pub enum PtyInstruction {
ClientTabIndexOrPaneId,
), // String is an optional pane name
DumpLayout(SessionLayoutMetadata, ClientId),
+ DumpLayoutToPlugin(SessionLayoutMetadata, PluginId),
LogLayoutToHd(SessionLayoutMetadata),
FillPluginCwd(
Option<bool>, // should float
@@ -110,6 +111,7 @@ impl From<&PtyInstruction> for PtyContext {
PtyInstruction::DropToShellInPane { .. } => PtyContext::DropToShellInPane,
PtyInstruction::SpawnInPlaceTerminal(..) => PtyContext::SpawnInPlaceTerminal,
PtyInstruction::DumpLayout(..) => PtyContext::DumpLayout,
+ PtyInstruction::DumpLayoutToPlugin(..) => PtyContext::DumpLayoutToPlugin,
PtyInstruction::LogLayoutToHd(..) => PtyContext::LogLayoutToHd,
PtyInstruction::FillPluginCwd(..) => PtyContext::FillPluginCwd,
PtyInstruction::Exit => PtyContext::Exit,
@@ -630,6 +632,18 @@ pub(crate) fn pty_thread_main(mut pty: Pty, layout: Box<Layout>) -> Result<()> {
},
}
},
+ PtyInstruction::DumpLayoutToPlugin(mut session_layout_metadata, plugin_id) => {
+ let err_context = || format!("Failed to dump layout");
+ pty.populate_session_layout_metadata(&mut session_layout_metadata);
+ pty.bus
+ .senders
+ .send_to_plugin(PluginInstruction::DumpLayoutToPlugin(
+ session_layout_metadata,
+ plugin_id,
+ ))
+ .with_context(err_context)
+ .non_fatal();
+ },
PtyInstruction::LogLayoutToHd(mut session_layout_metadata) => {
let err_context = || format!("Failed to dump layout");
pty.populate_session_layout_metadata(&mut session_layout_metadata);