aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/plugin_command.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2025-07-08 11:06:03 +0200
committerGitHub <noreply@github.com>2025-07-08 11:06:03 +0200
commit358caa180ce7c60b8923caa98cf339f897d14feb (patch)
treebb14df05b46d907a7af55ae98095abd8e9f4e7b4 /zellij-utils/src/plugin_api/plugin_command.rs
parentfix(plugins): use the terminal title when spawning terminals (#4272) (diff)
downloadsl0ppij-358caa180ce7c60b8923caa98cf339f897d14feb.tar.gz
sl0ppij-358caa180ce7c60b8923caa98cf339f897d14feb.tar.xz
sl0ppij-358caa180ce7c60b8923caa98cf339f897d14feb.zip
fix(tabs): allow setting cwd without a layout (#4273)
* working for cli and keybinding * working for plugin API * style(fmt): rustfmt * docs(changelog): add PR
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 296a8a74..073284bc 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -16,7 +16,7 @@ pub use super::generated_api::api::{
HttpVerb as ProtobufHttpVerb, IdAndNewName, KeyToRebind, KeyToUnbind, KillSessionsPayload,
ListTokensResponse, LoadNewPluginPayload, MessageToPluginPayload,
MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, MovePayload,
- NewPluginArgs as ProtobufNewPluginArgs, NewTabsWithLayoutInfoPayload,
+ NewPluginArgs as ProtobufNewPluginArgs, NewTabPayload, NewTabsWithLayoutInfoPayload,
OpenCommandPaneFloatingNearPluginPayload, OpenCommandPaneInPlaceOfPluginPayload,
OpenCommandPaneNearPluginPayload, OpenCommandPanePayload,
OpenFileFloatingNearPluginPayload, OpenFileInPlaceOfPluginPayload,
@@ -474,11 +474,18 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
},
_ => Err("Mismatched payload for NewTabsWithLayout"),
},
- Some(CommandName::NewTab) => {
- if protobuf_plugin_command.payload.is_some() {
- return Err("NewTab should not have a payload");
- }
- Ok(PluginCommand::NewTab)
+ Some(CommandName::NewTab) => match protobuf_plugin_command.payload {
+ Some(Payload::NewTabPayload(protobuf_new_tab_payload)) => {
+ Ok(PluginCommand::NewTab {
+ name: protobuf_new_tab_payload.name,
+ cwd: protobuf_new_tab_payload.cwd,
+ })
+ },
+ None => Ok(PluginCommand::NewTab {
+ name: None,
+ cwd: None,
+ }),
+ _ => Err("Mismatched payload for NewTab"),
},
Some(CommandName::GoToNextTab) => {
if protobuf_plugin_command.payload.is_some() {
@@ -1886,9 +1893,9 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
name: CommandName::NewTabsWithLayout as i32,
payload: Some(Payload::NewTabsWithLayoutPayload(raw_layout)),
}),
- PluginCommand::NewTab => Ok(ProtobufPluginCommand {
+ PluginCommand::NewTab { name, cwd } => Ok(ProtobufPluginCommand {
name: CommandName::NewTab as i32,
- payload: None,
+ payload: Some(Payload::NewTabPayload(NewTabPayload { name, cwd })),
}),
PluginCommand::GoToNextTab => Ok(ProtobufPluginCommand {
name: CommandName::GoToNextTab as i32,