diff options
Diffstat (limited to 'zellij-server/src/pty.rs')
-rw-r--r-- | zellij-server/src/pty.rs | 16 |
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); |