diff options
| author | Aram Drevekenin <aram@poor.dev> | 2025-10-09 11:29:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-09 11:29:55 +0200 |
| commit | 7e66ae3125bf5031b6c013dee8038c838b42bbc5 (patch) | |
| tree | 061c2311461cbe52b40b8ad433023085cfae67bf /zellij-utils/src/plugin_api/plugin_command.rs | |
| parent | build(cargo): Update Rust toolchain to 1.90.0 (#4457) (diff) | |
| download | sl0ppij-7e66ae3125bf5031b6c013dee8038c838b42bbc5.tar.gz sl0ppij-7e66ae3125bf5031b6c013dee8038c838b42bbc5.tar.xz sl0ppij-7e66ae3125bf5031b6c013dee8038c838b42bbc5.zip | |
Give plugins the ability to read pane contents (#4465)
* initial implementation
* add Selection and better types
* event to plugins
* only send viewport diff
* simplify data structure sent over the wire
* cleanups
* rustfmt
* remove dead code and fix tests
* commit tests
* get pane scrollback plugin command without implementation
* add lines above and lines below to pane contents
* implement get scrollback plugin command
* selection => selected_text
* add convenience method to get the selected text
* move Selection back to zellij-server
* rustfmt
* bring back client id to get contents command
* rustfmt
* add pr
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs index 4fc9d939..c1ba877e 100644 --- a/zellij-utils/src/plugin_api/plugin_command.rs +++ b/zellij-utils/src/plugin_api/plugin_command.rs @@ -12,14 +12,14 @@ pub use super::generated_api::api::{ FixedOrPercent as ProtobufFixedOrPercent, FixedOrPercentValue as ProtobufFixedOrPercentValue, FloatMultiplePanesPayload, FloatingPaneCoordinates as ProtobufFloatingPaneCoordinates, GenerateWebLoginTokenPayload, - GroupAndUngroupPanesPayload, HidePaneWithIdPayload, HighlightAndUnhighlightPanesPayload, - HttpVerb as ProtobufHttpVerb, IdAndNewName, KeyToRebind, KeyToUnbind, KillSessionsPayload, - ListTokensResponse, LoadNewPluginPayload, MessageToPluginPayload, - MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, MovePayload, - NewPluginArgs as ProtobufNewPluginArgs, NewTabPayload, NewTabsWithLayoutInfoPayload, - OpenCommandPaneFloatingNearPluginPayload, OpenCommandPaneInPlaceOfPluginPayload, - OpenCommandPaneNearPluginPayload, OpenCommandPanePayload, - OpenFileFloatingNearPluginPayload, OpenFileInPlaceOfPluginPayload, + GetPaneScrollbackPayload, GroupAndUngroupPanesPayload, HidePaneWithIdPayload, + HighlightAndUnhighlightPanesPayload, HttpVerb as ProtobufHttpVerb, IdAndNewName, + KeyToRebind, KeyToUnbind, KillSessionsPayload, ListTokensResponse, LoadNewPluginPayload, + MessageToPluginPayload, MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, + MovePayload, NewPluginArgs as ProtobufNewPluginArgs, NewTabPayload, + NewTabsWithLayoutInfoPayload, OpenCommandPaneFloatingNearPluginPayload, + OpenCommandPaneInPlaceOfPluginPayload, OpenCommandPaneNearPluginPayload, + OpenCommandPanePayload, OpenFileFloatingNearPluginPayload, OpenFileInPlaceOfPluginPayload, OpenFileNearPluginPayload, OpenFilePayload, OpenTerminalFloatingNearPluginPayload, OpenTerminalInPlaceOfPluginPayload, OpenTerminalNearPluginPayload, PageScrollDownInPaneIdPayload, PageScrollUpInPaneIdPayload, PaneId as ProtobufPaneId, @@ -1109,6 +1109,18 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand { }, _ => Err("Mismatched payload for EditScrollback"), }, + Some(CommandName::GetPaneScrollback) => match protobuf_plugin_command.payload { + Some(Payload::GetPaneScrollbackPayload(get_pane_scrollback_payload)) => { + match get_pane_scrollback_payload.pane_id { + Some(pane_id) => Ok(PluginCommand::GetPaneScrollback { + pane_id: pane_id.try_into()?, + get_full_scrollback: get_pane_scrollback_payload.get_full_scrollback, + }), + _ => Err("Malformed get_pane_scrollback_payload"), + } + }, + _ => Err("Mismatched payload for GetPaneScrollback"), + }, Some(CommandName::WriteToPaneId) => match protobuf_plugin_command.payload { Some(Payload::WriteToPaneIdPayload(write_to_pane_id_payload)) => { match write_to_pane_id_payload.pane_id { @@ -2373,6 +2385,18 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand { }, )), }), + PluginCommand::GetPaneScrollback { + pane_id, + get_full_scrollback, + } => Ok(ProtobufPluginCommand { + name: CommandName::GetPaneScrollback as i32, + payload: Some(Payload::GetPaneScrollbackPayload( + GetPaneScrollbackPayload { + pane_id: Some(pane_id.try_into()?), + get_full_scrollback, + }, + )), + }), PluginCommand::WriteToPaneId(bytes_to_write, pane_id) => Ok(ProtobufPluginCommand { name: CommandName::WriteToPaneId as i32, payload: Some(Payload::WriteToPaneIdPayload(WriteToPaneIdPayload { |
