diff options
| author | Aram Drevekenin <aram@poor.dev> | 2026-03-20 17:28:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-20 17:28:36 +0100 |
| commit | 4ba41c085ab9207ed31e72a1ba331bff2bebed99 (patch) | |
| tree | af832d3e2b1c4577525f0276bda83fc9a12612b3 /zellij-utils/src/plugin_api | |
| parent | adjust badges location in readme (diff) | |
| download | sl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.tar.gz sl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.tar.xz sl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.zip | |
Release notes and fixes (#4879)
* release notes
* fix some link issues
* rustfmt
* fix click wording
Diffstat (limited to 'zellij-utils/src/plugin_api')
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.proto | 13 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 68 |
2 files changed, 79 insertions, 2 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto index 0634d63e..f00ffdd1 100644 --- a/zellij-utils/src/plugin_api/plugin_command.proto +++ b/zellij-utils/src/plugin_api/plugin_command.proto @@ -201,6 +201,7 @@ enum CommandName { SetPaneColor = 206; SetPaneRegexHighlights = 207; ClearPaneHighlights = 208; + OpenPluginPaneFloating = 209; } message PluginCommand { @@ -351,6 +352,7 @@ message PluginCommand { SetPaneColorPayload set_pane_color_payload = 157; SetPaneRegexHighlightsPayload set_pane_regex_highlights_payload = 158; ClearPaneHighlightsPayload clear_pane_highlights_payload = 159; + OpenPluginPaneFloatingPayload open_plugin_pane_floating_payload = 160; } } @@ -1281,3 +1283,14 @@ message SetPaneRegexHighlightsPayload { message ClearPaneHighlightsPayload { PaneId pane_id = 1; } + +message OpenPluginPaneFloatingPayload { + string plugin_url = 1; + map<string, string> configuration = 2; + optional FloatingPaneCoordinates floating_pane_coordinates = 3; + repeated ContextItem context = 4; +} + +message OpenPluginPaneFloatingResponse { + optional PaneId pane_id = 1; +} diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs index 00acb760..fc55dd91 100644 --- a/zellij-utils/src/plugin_api/plugin_command.rs +++ b/zellij-utils/src/plugin_api/plugin_command.rs @@ -81,6 +81,8 @@ pub use super::generated_api::api::{ OpenFileNearPluginResponse as ProtobufOpenFileNearPluginResponse, OpenFilePayload, OpenFileResponse as ProtobufOpenFileResponse, OpenPaneInNewTabResponse as ProtobufOpenPaneInNewTabResponse, + OpenPluginPaneFloatingPayload, + OpenPluginPaneFloatingResponse as ProtobufOpenPluginPaneFloatingResponse, OpenPluginPaneInNewTabPayload as ProtobufOpenPluginPaneInNewTabPayload, OpenTerminalFloatingNearPluginPayload, OpenTerminalFloatingNearPluginResponse as ProtobufOpenTerminalFloatingNearPluginResponse, @@ -2543,6 +2545,26 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand { }, _ => Err("Mismatched payload for ClearPaneHighlights"), }, + Some(CommandName::OpenPluginPaneFloating) => match protobuf_plugin_command.payload { + Some(Payload::OpenPluginPaneFloatingPayload(payload)) => { + let configuration: BTreeMap<String, String> = + payload.configuration.into_iter().collect(); + let floating_pane_coordinates = + payload.floating_pane_coordinates.map(|f| f.into()); + let context: BTreeMap<String, String> = payload + .context + .into_iter() + .map(|e| (e.name, e.value)) + .collect(); + Ok(PluginCommand::OpenPluginPaneFloating { + plugin_url: payload.plugin_url, + configuration, + floating_pane_coordinates, + context, + }) + }, + _ => Err("Mismatched payload for OpenPluginPaneFloating"), + }, None => Err("Unrecognized plugin command"), } } @@ -4202,6 +4224,30 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand { }, )), }), + PluginCommand::OpenPluginPaneFloating { + plugin_url, + configuration, + floating_pane_coordinates, + context, + } => { + let context: Vec<_> = context + .into_iter() + .map(|(name, value)| ContextItem { name, value }) + .collect(); + let configuration: std::collections::HashMap<String, String> = + configuration.into_iter().collect(); + Ok(ProtobufPluginCommand { + name: CommandName::OpenPluginPaneFloating as i32, + payload: Some(Payload::OpenPluginPaneFloatingPayload( + OpenPluginPaneFloatingPayload { + plugin_url, + configuration, + floating_pane_coordinates: floating_pane_coordinates.map(|f| f.into()), + context, + }, + )), + }) + }, } } } @@ -4216,8 +4262,8 @@ use crate::data::{ OpenEditPaneInPlaceOfPaneIdResponse, OpenFileFloatingNearPluginResponse, OpenFileFloatingResponse, OpenFileInPlaceOfPluginResponse, OpenFileInPlaceResponse, OpenFileNearPluginResponse, OpenFileResponse, OpenPaneInNewTabResponse, - OpenTerminalFloatingNearPluginResponse, OpenTerminalFloatingResponse, - OpenTerminalInPlaceOfPluginResponse, OpenTerminalInPlaceResponse, + OpenPluginPaneFloatingResponse, OpenTerminalFloatingNearPluginResponse, + OpenTerminalFloatingResponse, OpenTerminalInPlaceOfPluginResponse, OpenTerminalInPlaceResponse, OpenTerminalNearPluginResponse, OpenTerminalPaneInPlaceOfPaneIdResponse, OpenTerminalResponse, }; @@ -4811,3 +4857,21 @@ impl From<OpenEditPaneInPlaceOfPaneIdResponse> for ProtobufOpenEditPaneInPlaceOf } } } + +impl TryFrom<ProtobufOpenPluginPaneFloatingResponse> for OpenPluginPaneFloatingResponse { + type Error = &'static str; + fn try_from(protobuf: ProtobufOpenPluginPaneFloatingResponse) -> Result<Self, Self::Error> { + match protobuf.pane_id { + Some(pane_id) => Ok(Some(pane_id.try_into()?)), + None => Ok(None), + } + } +} + +impl From<OpenPluginPaneFloatingResponse> for ProtobufOpenPluginPaneFloatingResponse { + fn from(response: OpenPluginPaneFloatingResponse) -> Self { + ProtobufOpenPluginPaneFloatingResponse { + pane_id: response.map(|p| p.try_into().unwrap()), + } + } +} |
