diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-02-15 16:16:53 +0100 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2023-02-15 16:16:53 +0100 |
commit | c560f31b4552992ed29b3857cc65297f70047ed4 (patch) | |
tree | e9fb0847271a5b3c1a341b5cb5f6da53a92838e9 /zellij-utils | |
parent | 5dd319c8528ee5f25580baee94596e639513f3b9 (diff) |
fix(ux): move pane forward/backwards also with floating panes
Diffstat (limited to 'zellij-utils')
10 files changed, 45 insertions, 8 deletions
diff --git a/zellij-utils/assets/config/default.kdl b/zellij-utils/assets/config/default.kdl index df39c0de9..6131efc27 100644 --- a/zellij-utils/assets/config/default.kdl +++ b/zellij-utils/assets/config/default.kdl @@ -40,6 +40,7 @@ keybinds { move { bind "Ctrl h" { SwitchToMode "Normal"; } bind "n" "Tab" { MovePane; } + bind "p" { MovePaneBackwards; } bind "h" "Left" { MovePane "Left"; } bind "j" "Down" { MovePane "Down"; } bind "k" "Up" { MovePane "Up"; } diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs index 660dc6d3c..4facc6443 100644 --- a/zellij-utils/src/cli.rs +++ b/zellij-utils/src/cli.rs @@ -197,9 +197,11 @@ pub enum CliAction { /// Move focus to the pane or tab (if on screen edge) in the specified direction /// [right|left|up|down] MoveFocusOrTab { direction: Direction }, - /// Change the location of the focused pane in the specified direction + /// Change the location of the focused pane in the specified direction or rotate forwrads /// [right|left|up|down] - MovePane { direction: Direction }, + MovePane { direction: Option<Direction> }, + /// Rotate the location of the previous pane backwards + MovePaneBackwards, /// Dump the focused pane to a file DumpScreen { path: PathBuf, diff --git a/zellij-utils/src/errors.rs b/zellij-utils/src/errors.rs index 87f4ac3ec..0ea1190f6 100644 --- a/zellij-utils/src/errors.rs +++ b/zellij-utils/src/errors.rs @@ -285,6 +285,7 @@ pub enum ScreenContext { MoveFocusRight, MoveFocusRightOrNextTab, MovePane, + MovePaneBackwards, MovePaneDown, MovePaneUp, MovePaneRight, diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs index 2aca3107c..8183f3263 100644 --- a/zellij-utils/src/input/actions.rs +++ b/zellij-utils/src/input/actions.rs @@ -115,6 +115,7 @@ pub enum Action { /// If there is no pane in the direction, move to previous/next Tab. MoveFocusOrTab(Direction), MovePane(Option<Direction>), + MovePaneBackwards, /// Dumps the screen to a file DumpScreen(String, bool), /// Scroll up in focus pane. @@ -219,7 +220,8 @@ impl Action { CliAction::FocusPreviousPane => Ok(vec![Action::FocusPreviousPane]), CliAction::MoveFocus { direction } => Ok(vec![Action::MoveFocus(direction)]), CliAction::MoveFocusOrTab { direction } => Ok(vec![Action::MoveFocusOrTab(direction)]), - CliAction::MovePane { direction } => Ok(vec![Action::MovePane(Some(direction))]), + CliAction::MovePane { direction } => Ok(vec![Action::MovePane(direction)]), + CliAction::MovePaneBackwards => Ok(vec![Action::MovePaneBackwards]), CliAction::DumpScreen { path, full } => Ok(vec![Action::DumpScreen( path.as_os_str().to_string_lossy().into(), full, diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs index 8801f4612..cfe098cd6 100644 --- a/zellij-utils/src/kdl/mod.rs +++ b/zellij-utils/src/kdl/mod.rs @@ -453,6 +453,7 @@ impl Action { Ok(Action::MovePane(Some(direction))) } }, + "MovePaneBackwards" => Ok(Action::MovePaneBackwards), "DumpScreen" => Ok(Action::DumpScreen(string, false)), "NewPane" => { if string.is_empty() { @@ -727,6 +728,11 @@ impl TryFrom<&KdlNode> for Action { action_arguments, kdl_action ), + "MovePaneBackwards" => parse_kdl_action_char_or_string_arguments!( + action_name, + action_arguments, + kdl_action + ), "DumpScreen" => parse_kdl_action_char_or_string_arguments!( action_name, action_arguments, 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 056a687ca..2d5aea7b4 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 @@ -1,6 +1,6 @@ --- source: zellij-utils/src/setup.rs -assertion_line: 600 +assertion_line: 621 expression: "format!(\"{:#?}\", config)" --- Config { @@ -2737,6 +2737,11 @@ Config { None, ), ], + Char( + 'p', + ): [ + MovePaneBackwards, + ], Alt( Char( '+', 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 5e72b510f..8e94086a5 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 @@ -1,6 +1,6 @@ --- source: zellij-utils/src/setup.rs -assertion_line: 658 +assertion_line: 679 expression: "format!(\"{:#?}\", config)" --- Config { @@ -2737,6 +2737,11 @@ Config { None, ), ], + Char( + 'p', + ): [ + MovePaneBackwards, + ], Alt( Char( '+', 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 481357366..049208cab 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 @@ -1,6 +1,6 @@ --- source: zellij-utils/src/setup.rs -assertion_line: 686 +assertion_line: 707 expression: "format!(\"{:#?}\", config)" --- Config { @@ -2737,6 +2737,11 @@ Config { None, ), ], + Char( + 'p', + ): [ + MovePaneBackwards, + ], Alt( Char( '+', 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 c504f63ff..7b1a46071 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 @@ -1,6 +1,6 @@ --- source: zellij-utils/src/setup.rs -assertion_line: 700 +assertion_line: 721 expression: "format!(\"{:#?}\", config)" --- Config { @@ -2737,6 +2737,11 @@ Config { None, ), ], + Char( + 'p', + ): [ + MovePaneBackwards, + ], Alt( Char( '+', 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 0447ca8e3..d8694a0ee 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 @@ -1,6 +1,6 @@ --- source: zellij-utils/src/setup.rs -assertion_line: 672 +assertion_line: 693 expression: "format!(\"{:#?}\", config)" --- Config { @@ -2737,6 +2737,11 @@ Config { None, ), ], + Char( + 'p', + ): [ + MovePaneBackwards, + ], Alt( Char( '+', |