diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-11-05 15:32:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-05 15:32:05 +0100 |
commit | 28a165a969a9e1ee9f1fe66e4d63134b895b2ef7 (patch) | |
tree | 678ec1cd9d536d9cb7fcdb071e27cf12caf43afb /zellij-utils/src | |
parent | 9eb9734bcca3cb0dcdff592da4d7a536d860c363 (diff) |
feat(ux): allow renaming sessions (#2903)
* change session name through the cli
* change session name from the session-manager
* style(fmt): rustfmt
Diffstat (limited to 'zellij-utils/src')
-rw-r--r-- | zellij-utils/src/cli.rs | 3 | ||||
-rw-r--r-- | zellij-utils/src/data.rs | 1 | ||||
-rw-r--r-- | zellij-utils/src/errors.rs | 2 | ||||
-rw-r--r-- | zellij-utils/src/input/actions.rs | 2 | ||||
-rw-r--r-- | zellij-utils/src/ipc.rs | 1 | ||||
-rw-r--r-- | zellij-utils/src/kdl/mod.rs | 6 | ||||
-rw-r--r-- | zellij-utils/src/plugin_api/action.proto | 2 | ||||
-rw-r--r-- | zellij-utils/src/plugin_api/action.rs | 10 | ||||
-rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.proto | 2 | ||||
-rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 10 |
10 files changed, 39 insertions, 0 deletions
diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs index c196c17d1..02380ba4b 100644 --- a/zellij-utils/src/cli.rs +++ b/zellij-utils/src/cli.rs @@ -527,4 +527,7 @@ pub enum CliAction { #[clap(short, long, value_parser)] configuration: Option<PluginUserConfiguration>, }, + RenameSession { + name: String, + }, } diff --git a/zellij-utils/src/data.rs b/zellij-utils/src/data.rs index 82daf118d..bed6f4747 100644 --- a/zellij-utils/src/data.rs +++ b/zellij-utils/src/data.rs @@ -1104,4 +1104,5 @@ pub enum PluginCommand { Vec<u8>, // body BTreeMap<String, String>, // context ), + RenameSession(String), // String -> new session name } diff --git a/zellij-utils/src/errors.rs b/zellij-utils/src/errors.rs index 1e4eab8a2..536b3bfba 100644 --- a/zellij-utils/src/errors.rs +++ b/zellij-utils/src/errors.rs @@ -347,6 +347,7 @@ pub enum ScreenContext { ReplacePane, NewInPlacePluginPane, DumpLayoutToHd, + RenameSession, } /// Stack call representations corresponding to the different types of [`PtyInstruction`]s. @@ -404,6 +405,7 @@ pub enum ClientContext { Connected, ActiveClients, Log, + LogError, OwnClientId, StartedParsingStdinQuery, DoneParsingStdinQuery, diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs index c0714e59f..c36579c37 100644 --- a/zellij-utils/src/input/actions.rs +++ b/zellij-utils/src/input/actions.rs @@ -250,6 +250,7 @@ pub enum Action { BreakPane, BreakPaneRight, BreakPaneLeft, + RenameSession(String), } impl Action { @@ -537,6 +538,7 @@ impl Action { in_place, )]) }, + CliAction::RenameSession { name } => Ok(vec![Action::RenameSession(name)]), } } } diff --git a/zellij-utils/src/ipc.rs b/zellij-utils/src/ipc.rs index a60ecc615..b6e837228 100644 --- a/zellij-utils/src/ipc.rs +++ b/zellij-utils/src/ipc.rs @@ -101,6 +101,7 @@ pub enum ServerToClientMsg { Connected, ActiveClients(Vec<ClientId>), Log(Vec<String>), + LogError(Vec<String>), SwitchSession(ConnectToSession), } diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs index 0c32bfacb..061e24ebc 100644 --- a/zellij-utils/src/kdl/mod.rs +++ b/zellij-utils/src/kdl/mod.rs @@ -505,6 +505,7 @@ impl Action { })?; Ok(Action::Search(search_direction)) }, + "RenameSession" => Ok(Action::RenameSession(string)), _ => Err(ConfigError::new_kdl_error( format!("Unsupported action: {}", action_name), action_node.span().offset(), @@ -957,6 +958,11 @@ impl TryFrom<(&KdlNode, &Options)> for Action { "BreakPane" => Ok(Action::BreakPane), "BreakPaneRight" => Ok(Action::BreakPaneRight), "BreakPaneLeft" => Ok(Action::BreakPaneLeft), + "RenameSession" => parse_kdl_action_char_or_string_arguments!( + action_name, + action_arguments, + kdl_action + ), _ => Err(ConfigError::new_kdl_error( format!("Unsupported action: {}", action_name).into(), kdl_action.span().offset(), diff --git a/zellij-utils/src/plugin_api/action.proto b/zellij-utils/src/plugin_api/action.proto index 1545b9bf4..59eea7af1 100644 --- a/zellij-utils/src/plugin_api/action.proto +++ b/zellij-utils/src/plugin_api/action.proto @@ -51,6 +51,7 @@ message Action { IdAndName rename_terminal_pane_payload = 42; IdAndName rename_plugin_pane_payload = 43; IdAndName rename_tab_payload = 44; + string rename_session_payload = 45; } } @@ -221,6 +222,7 @@ enum ActionName { BreakPane = 77; BreakPaneRight = 78; BreakPaneLeft = 79; + RenameSession = 80; } message Position { diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index 0addb0dcc..1048d91f6 100644 --- a/zellij-utils/src/plugin_api/action.rs +++ b/zellij-utils/src/plugin_api/action.rs @@ -626,6 +626,12 @@ impl TryFrom<ProtobufAction> for Action { Some(_) => Err("BreakPaneLeft should not have a payload"), None => Ok(Action::BreakPaneLeft), }, + Some(ProtobufActionName::RenameSession) => match protobuf_action.optional_payload { + Some(OptionalPayload::RenameSessionPayload(name)) => { + Ok(Action::RenameSession(name)) + }, + _ => Err("Wrong payload for Action::RenameSession"), + }, _ => Err("Unknown Action"), } } @@ -1164,6 +1170,10 @@ impl TryFrom<Action> for ProtobufAction { name: ProtobufActionName::BreakPaneLeft as i32, optional_payload: None, }), + Action::RenameSession(session_name) => Ok(ProtobufAction { + name: ProtobufActionName::RenameSession as i32, + optional_payload: Some(OptionalPayload::RenameSessionPayload(session_name)), + }), Action::NoOp | Action::Confirm | Action::NewInPlacePane(..) diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto index 0b950ff0e..53994a88c 100644 --- a/zellij-utils/src/plugin_api/plugin_command.proto +++ b/zellij-utils/src/plugin_api/plugin_command.proto @@ -86,6 +86,7 @@ enum CommandName { WebRequest = 72; DeleteDeadSession = 73; DeleteAllDeadSessions = 74; + RenameSession = 75; } message PluginCommand { @@ -135,6 +136,7 @@ message PluginCommand { RunCommandPayload run_command_payload = 43; WebRequestPayload web_request_payload = 44; string delete_dead_session_payload = 45; + string rename_session_payload = 46; } } diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs index 6b70b18eb..ed476687c 100644 --- a/zellij-utils/src/plugin_api/plugin_command.rs +++ b/zellij-utils/src/plugin_api/plugin_command.rs @@ -635,6 +635,12 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand { _ => Err("Mismatched payload for DeleteDeadSession"), }, Some(CommandName::DeleteAllDeadSessions) => Ok(PluginCommand::DeleteAllDeadSessions), + Some(CommandName::RenameSession) => match protobuf_plugin_command.payload { + Some(Payload::RenameSessionPayload(new_session_name)) => { + Ok(PluginCommand::RenameSession(new_session_name)) + }, + _ => Err("Mismatched payload for RenameSession"), + }, None => Err("Unrecognized plugin command"), } } @@ -1059,6 +1065,10 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand { name: CommandName::DeleteAllDeadSessions as i32, payload: None, }), + PluginCommand::RenameSession(new_session_name) => Ok(ProtobufPluginCommand { + name: CommandName::RenameSession as i32, + payload: Some(Payload::RenameSessionPayload(new_session_name)), + }), } } } |