From dd5ea26cc72f3c39e9f8b4d8452a42c9c2f85442 Mon Sep 17 00:00:00 2001 From: Bartosz Zbytniewski <50180524+devzbysiu@users.noreply.github.com> Date: Sun, 18 Feb 2024 19:40:03 +0100 Subject: feat: add moving tab to other position (#3047) * feat: add moving tab to other position * docs(changelog): revert changes * test: update config snapshots * refactor: get rid of HorizontalDirection enum * refactor: cleanup code order * refactor: use debug! instead of info! * refactor: use more defensive way to switch tabs * refactor: revert tip changes * refactor: code formatting * refactor: improve invalid input notification * refactor: inline fns for calculating target index --------- Co-authored-by: Jae-Heon Ji --- zellij-utils/src/errors.rs | 2 + zellij-utils/src/input/actions.rs | 1 + zellij-utils/src/kdl/mod.rs | 23 ++ zellij-utils/src/plugin_api/action.proto | 7 + zellij-utils/src/plugin_api/action.rs | 52 ++++- ...test__default_config_with_no_cli_arguments.snap | 234 +++++++++++++++++++++ ...__layout_env_vars_override_config_env_vars.snap | 234 +++++++++++++++++++++ ...st__layout_plugins_override_config_plugins.snap | 234 +++++++++++++++++++++ ...test__layout_themes_override_config_themes.snap | 234 +++++++++++++++++++++ ...ayout_ui_config_overrides_config_ui_config.snap | 234 +++++++++++++++++++++ 10 files changed, 1249 insertions(+), 6 deletions(-) (limited to 'zellij-utils/src') diff --git a/zellij-utils/src/errors.rs b/zellij-utils/src/errors.rs index 5b3233998..0677f611f 100644 --- a/zellij-utils/src/errors.rs +++ b/zellij-utils/src/errors.rs @@ -291,6 +291,8 @@ pub enum ScreenContext { GoToTabName, UpdateTabName, UndoRenameTab, + MoveTabLeft, + MoveTabRight, TerminalResize, TerminalPixelDimensions, TerminalBackgroundColor, diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs index bb97a6eb9..b19529e48 100644 --- a/zellij-utils/src/input/actions.rs +++ b/zellij-utils/src/input/actions.rs @@ -209,6 +209,7 @@ pub enum Action { ToggleTab, TabNameInput(Vec), UndoRenameTab, + MoveTab(Direction), /// Run specified command in new pane. Run(RunCommandAction), /// Detach session and exit diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs index 36d05aff0..1d7210907 100644 --- a/zellij-utils/src/kdl/mod.rs +++ b/zellij-utils/src/kdl/mod.rs @@ -453,6 +453,24 @@ impl Action { })?; Ok(Action::MoveFocusOrTab(direction)) }, + "MoveTab" => { + let direction = Direction::from_str(string.as_str()).map_err(|_| { + ConfigError::new_kdl_error( + format!("Invalid direction: '{}'", string), + action_node.span().offset(), + action_node.span().len(), + ) + })?; + if direction.is_vertical() { + Err(ConfigError::new_kdl_error( + format!("Invalid horizontal direction: '{}'", string), + action_node.span().offset(), + action_node.span().len(), + )) + } else { + Ok(Action::MoveTab(direction)) + } + }, "MovePane" => { if string.is_empty() { return Ok(Action::MovePane(None)); @@ -738,6 +756,11 @@ impl TryFrom<(&KdlNode, &Options)> for Action { action_arguments, kdl_action ), + "MoveTab" => parse_kdl_action_char_or_string_arguments!( + action_name, + action_arguments, + kdl_action + ), "MoveFocusOrTab" => parse_kdl_action_char_or_string_arguments!( action_name, action_arguments, diff --git a/zellij-utils/src/plugin_api/action.proto b/zellij-utils/src/plugin_api/action.proto index 0ed5b3b7a..d59da4ad6 100644 --- a/zellij-utils/src/plugin_api/action.proto +++ b/zellij-utils/src/plugin_api/action.proto @@ -54,6 +54,7 @@ message Action { string rename_session_payload = 45; LaunchOrFocusPluginPayload launch_plugin_payload = 46; CliPipePayload message_payload = 47; + MoveTabDirection move_tab_payload = 48; } } @@ -91,6 +92,11 @@ enum SearchOption { Wrap = 2; } +enum MoveTabDirection { + Left = 0; + Right = 1; +} + message LaunchOrFocusPluginPayload { string plugin_url = 1; bool should_float = 2; @@ -236,6 +242,7 @@ enum ActionName { RenameSession = 80; LaunchPlugin = 81; CliPipe = 82; + MoveTab = 83; } message Position { diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs index be54e6172..ed6578977 100644 --- a/zellij-utils/src/plugin_api/action.rs +++ b/zellij-utils/src/plugin_api/action.rs @@ -2,12 +2,13 @@ pub use super::generated_api::api::{ action::{ action::OptionalPayload, Action as ProtobufAction, ActionName as ProtobufActionName, DumpScreenPayload, EditFilePayload, GoToTabNamePayload, IdAndName, - LaunchOrFocusPluginPayload, MovePanePayload, NameAndValue as ProtobufNameAndValue, - NewFloatingPanePayload, NewPanePayload, NewPluginPanePayload, NewTiledPanePayload, - PaneIdAndShouldFloat, PluginConfiguration as ProtobufPluginConfiguration, - Position as ProtobufPosition, RunCommandAction as ProtobufRunCommandAction, - ScrollAtPayload, SearchDirection as ProtobufSearchDirection, - SearchOption as ProtobufSearchOption, SwitchToModePayload, WriteCharsPayload, WritePayload, + LaunchOrFocusPluginPayload, MovePanePayload, MoveTabDirection as ProtobufMoveTabDirection, + NameAndValue as ProtobufNameAndValue, NewFloatingPanePayload, NewPanePayload, + NewPluginPanePayload, NewTiledPanePayload, PaneIdAndShouldFloat, + PluginConfiguration as ProtobufPluginConfiguration, Position as ProtobufPosition, + RunCommandAction as ProtobufRunCommandAction, ScrollAtPayload, + SearchDirection as ProtobufSearchDirection, SearchOption as ProtobufSearchOption, + SwitchToModePayload, WriteCharsPayload, WritePayload, }, input_mode::InputMode as ProtobufInputMode, resize::{Resize as ProtobufResize, ResizeDirection as ProtobufResizeDirection}, @@ -358,6 +359,15 @@ impl TryFrom for Action { Some(_) => Err("UndoRenameTab should not have a payload"), None => Ok(Action::UndoRenameTab), }, + Some(ProtobufActionName::MoveTab) => match protobuf_action.optional_payload { + Some(OptionalPayload::MoveTabPayload(move_tab_payload)) => { + let direction: Direction = ProtobufMoveTabDirection::from_i32(move_tab_payload) + .ok_or("Malformed move tab direction for Action::MoveTab")? + .try_into()?; + Ok(Action::MoveTab(direction)) + }, + _ => Err("Wrong payload for Action::MoveTab"), + }, Some(ProtobufActionName::Run) => match protobuf_action.optional_payload { Some(OptionalPayload::RunPayload(run_command_action)) => { let run_command_action = run_command_action.try_into()?; @@ -994,6 +1004,13 @@ impl TryFrom for ProtobufAction { name: ProtobufActionName::UndoRenameTab as i32, optional_payload: None, }), + Action::MoveTab(direction) => { + let direction: ProtobufMoveTabDirection = direction.try_into()?; + Ok(ProtobufAction { + name: ProtobufActionName::MoveTab as i32, + optional_payload: Some(OptionalPayload::MoveTabPayload(direction as i32)), + }) + }, Action::Run(run_command_action) => { let run_command_action: ProtobufRunCommandAction = run_command_action.try_into()?; Ok(ProtobufAction { @@ -1311,6 +1328,29 @@ impl TryFrom for ProtobufSearchDirection { } } +impl TryFrom for Direction { + type Error = &'static str; + fn try_from( + protobuf_move_tab_direction: ProtobufMoveTabDirection, + ) -> Result { + match protobuf_move_tab_direction { + ProtobufMoveTabDirection::Left => Ok(Direction::Left), + ProtobufMoveTabDirection::Right => Ok(Direction::Right), + } + } +} + +impl TryFrom for ProtobufMoveTabDirection { + type Error = &'static str; + fn try_from(direction: Direction) -> Result { + match direction { + Direction::Left => Ok(ProtobufMoveTabDirection::Left), + Direction::Right => Ok(ProtobufMoveTabDirection::Right), + _ => Err("Wrong direction for ProtobufMoveTabDirection"), + } + } +} + impl TryFrom for RunCommandAction { type Error = &'static str; fn try_from( diff --git a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__default_config_with_no_cli_arguments.snap b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__default_config_with_no_cli_arguments.snap index 35aa55a40..f73b753ef 100644 --- a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__default_config_with_no_cli_arguments.snap +++ b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__default_config_with_no_cli_arguments.snap @@ -59,6 +59,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -96,6 +105,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -400,6 +418,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -437,6 +464,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -743,6 +779,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -780,6 +825,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1132,6 +1186,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1169,6 +1232,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1404,6 +1476,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1441,6 +1522,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1616,6 +1706,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1653,6 +1752,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1907,6 +2015,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1944,6 +2061,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2119,6 +2245,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2156,6 +2291,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2328,6 +2472,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2365,6 +2518,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2566,6 +2728,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2603,6 +2774,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2843,6 +3023,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2880,6 +3069,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3049,6 +3247,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3086,6 +3293,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3423,6 +3639,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3460,6 +3685,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, diff --git a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_env_vars_override_config_env_vars.snap b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_env_vars_override_config_env_vars.snap index 636b8d0d5..b5c185c83 100644 --- a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_env_vars_override_config_env_vars.snap +++ b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_env_vars_override_config_env_vars.snap @@ -59,6 +59,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -96,6 +105,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -400,6 +418,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -437,6 +464,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -743,6 +779,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -780,6 +825,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1132,6 +1186,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1169,6 +1232,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1404,6 +1476,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1441,6 +1522,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1616,6 +1706,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1653,6 +1752,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1907,6 +2015,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1944,6 +2061,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2119,6 +2245,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2156,6 +2291,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2328,6 +2472,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2365,6 +2518,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2566,6 +2728,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2603,6 +2774,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2843,6 +3023,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2880,6 +3069,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3049,6 +3247,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3086,6 +3293,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3423,6 +3639,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3460,6 +3685,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, diff --git a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_plugins_override_config_plugins.snap b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_plugins_override_config_plugins.snap index f183a0fa1..e055135e0 100644 --- a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_plugins_override_config_plugins.snap +++ b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_plugins_override_config_plugins.snap @@ -59,6 +59,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -96,6 +105,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -400,6 +418,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -437,6 +464,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -743,6 +779,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -780,6 +825,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1132,6 +1186,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1169,6 +1232,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1404,6 +1476,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1441,6 +1522,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1616,6 +1706,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1653,6 +1752,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1907,6 +2015,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1944,6 +2061,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2119,6 +2245,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2156,6 +2291,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2328,6 +2472,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2365,6 +2518,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2566,6 +2728,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2603,6 +2774,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2843,6 +3023,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2880,6 +3069,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3049,6 +3247,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3086,6 +3293,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3423,6 +3639,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3460,6 +3685,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, diff --git a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_themes_override_config_themes.snap b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_themes_override_config_themes.snap index f70502e6e..ba5df24df 100644 --- a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_themes_override_config_themes.snap +++ b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_themes_override_config_themes.snap @@ -59,6 +59,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -96,6 +105,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -400,6 +418,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -437,6 +464,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -743,6 +779,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -780,6 +825,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1132,6 +1186,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1169,6 +1232,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1404,6 +1476,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1441,6 +1522,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1616,6 +1706,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1653,6 +1752,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1907,6 +2015,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1944,6 +2061,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2119,6 +2245,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2156,6 +2291,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2328,6 +2472,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2365,6 +2518,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2566,6 +2728,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2603,6 +2774,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2843,6 +3023,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2880,6 +3069,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3049,6 +3247,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3086,6 +3293,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3423,6 +3639,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3460,6 +3685,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, diff --git a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_ui_config_overrides_config_ui_config.snap b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_ui_config_overrides_config_ui_config.snap index b0329b324..a6e7350ee 100644 --- a/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_ui_config_overrides_config_ui_config.snap +++ b/zellij-utils/src/snapshots/zellij_utils__setup__setup_test__layout_ui_config_overrides_config_ui_config.snap @@ -59,6 +59,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -96,6 +105,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -400,6 +418,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -437,6 +464,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -743,6 +779,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -780,6 +825,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1132,6 +1186,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1169,6 +1232,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1404,6 +1476,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1441,6 +1522,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1616,6 +1706,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1653,6 +1752,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -1907,6 +2015,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -1944,6 +2061,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2119,6 +2245,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2156,6 +2291,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2328,6 +2472,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2365,6 +2518,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2566,6 +2728,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2603,6 +2774,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -2843,6 +3023,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -2880,6 +3069,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3049,6 +3247,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3086,6 +3293,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, @@ -3423,6 +3639,15 @@ Config { Left, ), ], + Alt( + Char( + 'i', + ), + ): [ + MoveTab( + Left, + ), + ], Alt( Char( 'j', @@ -3460,6 +3685,15 @@ Config { None, ), ], + Alt( + Char( + 'o', + ), + ): [ + MoveTab( + Right, + ), + ], Alt( Direction( Left, -- cgit v1.2.3