diff options
| author | Aram Drevekenin <aram@poor.dev> | 2025-09-24 12:56:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-24 12:56:56 +0200 |
| commit | 533140831d825829afaf864d940c435056788d3e (patch) | |
| tree | 9fe6b7da3955663c8373776499f85addfd044d40 /default-plugins | |
| parent | refactor(client-server-contract): config + layout (#4383) (diff) | |
| download | sl0ppij-533140831d825829afaf864d940c435056788d3e.tar.gz sl0ppij-533140831d825829afaf864d940c435056788d3e.tar.xz sl0ppij-533140831d825829afaf864d940c435056788d3e.zip | |
fix(ipc): make sessions compatible between versions (#4439)
* translate ipc tuple enum variants to struct enum variants
* initial client/server contract
* tests and missing types
* migrate web server and remove rmp_serde
* change socket folder
* fix crash on unknown messages
* fix client logout on unknown message
* fix web client logout on unknown message
* rustfmt
* add comment and change log level
* address compilation warnings
* style(fmt): rustfmt
* fix plugin system test assertions
* add pr
Diffstat (limited to 'default-plugins')
14 files changed, 850 insertions, 279 deletions
diff --git a/default-plugins/compact-bar/src/action_types.rs b/default-plugins/compact-bar/src/action_types.rs index ddc91ead..8a4de277 100644 --- a/default-plugins/compact-bar/src/action_types.rs +++ b/default-plugins/compact-bar/src/action_types.rs @@ -94,22 +94,35 @@ impl ActionType { pub fn from_action(action: &Action) -> Self { match action { - Action::MoveFocus(_) => ActionType::MoveFocus, - Action::MovePane(Some(_)) => ActionType::MovePaneWithDirection, - Action::MovePane(None) => ActionType::MovePaneWithoutDirection, - Action::Resize(Resize::Increase, Some(_)) => ActionType::ResizeIncrease, - Action::Resize(Resize::Decrease, Some(_)) => ActionType::ResizeDecrease, - Action::Resize(_, None) => ActionType::ResizeAny, - Action::Search(_) => ActionType::Search, - Action::NewPane(Some(_), _, _) => ActionType::NewPaneWithDirection, - Action::NewPane(None, _, _) => ActionType::NewPaneWithoutDirection, - Action::NewStackedPane(_, _) => ActionType::NewStackedPane, + Action::MoveFocus { .. } => ActionType::MoveFocus, + Action::MovePane { direction: Some(_) } => ActionType::MovePaneWithDirection, + Action::MovePane { direction: None } => ActionType::MovePaneWithoutDirection, + Action::Resize { + resize: Resize::Increase, + direction: Some(_), + } => ActionType::ResizeIncrease, + Action::Resize { + resize: Resize::Decrease, + direction: Some(_), + } => ActionType::ResizeDecrease, + Action::Resize { + resize: _, + direction: None, + } => ActionType::ResizeAny, + Action::Search { .. } => ActionType::Search, + Action::NewPane { + direction: Some(_), .. + } => ActionType::NewPaneWithDirection, + Action::NewPane { + direction: None, .. + } => ActionType::NewPaneWithoutDirection, + Action::NewStackedPane { .. } => ActionType::NewStackedPane, Action::BreakPaneLeft | Action::BreakPaneRight => ActionType::BreakPaneLeftOrRight, Action::GoToPreviousTab | Action::GoToNextTab => ActionType::GoToAdjacentTab, Action::ScrollUp | Action::ScrollDown => ActionType::Scroll, Action::PageScrollUp | Action::PageScrollDown => ActionType::PageScroll, Action::HalfPageScrollUp | Action::HalfPageScrollDown => ActionType::HalfPageScroll, - Action::SwitchToMode(input_mode) => ActionType::SwitchToMode(*input_mode), + Action::SwitchToMode { input_mode } => ActionType::SwitchToMode(*input_mode), Action::TogglePaneEmbedOrFloating => ActionType::TogglePaneEmbedOrFloating, Action::ToggleFocusFullscreen => ActionType::ToggleFocusFullscreen, Action::ToggleFloatingPanes => ActionType::ToggleFloatingPanes, @@ -125,7 +138,7 @@ impl ActionType { action if action.launches_plugin("configuration") => ActionType::Configuration, action if action.launches_plugin("plugin-manager") => ActionType::PluginManager, action if action.launches_plugin("zellij:about") => ActionType::About, - action if matches!(action, Action::NewTab(..)) => ActionType::NewTab, + action if matches!(action, Action::NewTab { .. }) => ActionType::NewTab, _ => ActionType::Other(format!("{:?}", action)), } } diff --git a/default-plugins/compact-bar/src/keybind_utils.rs b/default-plugins/compact-bar/src/keybind_utils.rs index 68014169..aeb862d1 100644 --- a/default-plugins/compact-bar/src/keybind_utils.rs +++ b/default-plugins/compact-bar/src/keybind_utils.rs @@ -50,8 +50,12 @@ impl KeybindProcessor { let should_add_brackets_to_keys = mode != InputMode::Normal; // Check if this is switching to normal mode - let is_switching_to_locked = - matches!(first_action, Action::SwitchToMode(InputMode::Locked)); + let is_switching_to_locked = matches!( + first_action, + Action::SwitchToMode { + input_mode: InputMode::Locked + } + ); let grouped_keys = Self::group_key_sets( &matching_keys, @@ -304,41 +308,161 @@ impl KeybindProcessor { match mode { InputMode::Locked => { let ordered_predicates = vec![|action: &Action| { - matches!(action, Action::SwitchToMode(InputMode::Normal)) + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Normal + } + ) }]; Self::find_predetermined_actions(mode_info, mode, ordered_predicates) }, InputMode::Normal => { let ordered_predicates = vec![ - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Locked)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Pane)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Tab)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Resize)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Move)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Scroll)), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::Session)), + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Locked + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Pane + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Tab + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Resize + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Move + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Scroll + } + ) + }, + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::Session + } + ) + }, |action: &Action| matches!(action, Action::Quit), ]; Self::find_predetermined_actions(mode_info, mode, ordered_predicates) }, InputMode::Pane => { let ordered_predicates = vec![ - |action: &Action| matches!(action, Action::NewPane(None, None, false)), - |action: &Action| matches!(action, Action::MoveFocus(Direction::Left)), - |action: &Action| matches!(action, Action::MoveFocus(Direction::Down)), - |action: &Action| matches!(action, Action::MoveFocus(Direction::Up)), - |action: &Action| matches!(action, Action::MoveFocus(Direction::Right)), + |action: &Action| { + matches!( + action, + Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MoveFocus { + direction: Direction::Left + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MoveFocus { + direction: Direction::Down + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MoveFocus { + direction: Direction::Up + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MoveFocus { + direction: Direction::Right + } + ) + }, |action: &Action| matches!(action, Action::CloseFocus), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::RenamePane)), + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::RenamePane + } + ) + }, |action: &Action| matches!(action, Action::ToggleFocusFullscreen), |action: &Action| matches!(action, Action::ToggleFloatingPanes), |action: &Action| matches!(action, Action::TogglePaneEmbedOrFloating), - |action: &Action| matches!(action, Action::NewStackedPane(None, None)), |action: &Action| { - matches!(action, Action::NewPane(Some(Direction::Right), None, false)) + matches!( + action, + Action::NewStackedPane { + command: None, + pane_name: None + } + ) }, |action: &Action| { - matches!(action, Action::NewPane(Some(Direction::Down), None, false)) + matches!( + action, + Action::NewPane { + direction: Some(Direction::Right), + pane_name: None, + start_suppressed: false + } + ) + }, + |action: &Action| { + matches!( + action, + Action::NewPane { + direction: Some(Direction::Down), + pane_name: None, + start_suppressed: false + } + ) }, ]; Self::find_predetermined_actions(mode_info, mode, ordered_predicates) @@ -350,12 +474,27 @@ impl KeybindProcessor { |action: &Action| { matches!( action, - Action::NewTab(None, _, None, None, None, true, None) + Action::NewTab { + tiled_layout: None, + floating_layouts: _, + swap_tiled_layouts: None, + swap_floating_layouts: None, + tab_name: None, + should_change_focus_to_new_tab: true, + cwd: None + } ) }, |action: &Action| matches!(action, Action::CloseTab), - |action: &Action| matches!(action, Action::SwitchToMode(InputMode::RenameTab)), - |action: &Action| matches!(action, Action::TabNameInput(_)), + |action: &Action| { + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::RenameTab + } + ) + }, + |action: &Action| matches!(action, Action::TabNameInput { .. }), |action: &Action| matches!(action, Action::ToggleActiveSyncTab), |action: &Action| matches!(action, Action::BreakPane), |action: &Action| matches!(action, Action::BreakPaneLeft), @@ -366,54 +505,94 @@ impl KeybindProcessor { }, InputMode::Resize => { let ordered_predicates = vec![ - |action: &Action| matches!(action, Action::Resize(Resize::Increase, None)), - |action: &Action| matches!(action, Action::Resize(Resize::Decrease, None)), |action: &Action| { matches!( action, - Action::Resize(Resize::Increase, Some(Direction::Left)) + Action::Resize { + resize: Resize::Increase, + direction: None + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Increase, Some(Direction::Down)) + Action::Resize { + resize: Resize::Decrease, + direction: None + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Increase, Some(Direction::Up)) + Action::Resize { + resize: Resize::Increase, + direction: Some(Direction::Left) + } + ) + }, + |action: &Action| { + matches!( + action, + Action::Resize { + resize: Resize::Increase, + direction: Some(Direction::Down) + } + ) + }, + |action: &Action| { + matches!( + action, + Action::Resize { + resize: Resize::Increase, + direction: Some(Direction::Up) + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Increase, Some(Direction::Right)) + Action::Resize { + resize: Resize::Increase, + direction: Some(Direction::Right) + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Decrease, Some(Direction::Left)) + Action::Resize { + resize: Resize::Decrease, + direction: Some(Direction::Left) + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Decrease, Some(Direction::Down)) + Action::Resize { + resize: Resize::Decrease, + direction: Some(Direction::Down) + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Decrease, Some(Direction::Up)) + Action::Resize { + resize: Resize::Decrease, + direction: Some(Direction::Up) + } ) }, |action: &Action| { matches!( action, - Action::Resize(Resize::Decrease, Some(Direction::Right)) + Action::Resize { + resize: Resize::Decrease, + direction: Some(Direction::Right) + } ) }, ]; @@ -421,10 +600,38 @@ impl KeybindProcessor { }, InputMode::Move => { let ordered_predicates = vec![ - |action: &Action| matches!(action, Action::MovePane(Some(Direction::Left))), - |action: &Action| matches!(action, Action::MovePane(Some(Direction::Down))), - |action: &Action| matches!(action, Action::MovePane(Some(Direction::Up))), - |action: &Action| matches!(action, Action::MovePane(Some(Direction::Right))), + |action: &Action| { + matches!( + action, + Action::MovePane { + direction: Some(Direction::Left) + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MovePane { + direction: Some(Direction::Down) + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MovePane { + direction: Some(Direction::Up) + } + ) + }, + |action: &Action| { + matches!( + action, + Action::MovePane { + direction: Some(Direction::Right) + } + ) + }, ]; Self::find_predetermined_actions(mode_info, mode, ordered_predicates) }, @@ -437,7 +644,12 @@ impl KeybindProcessor { |action: &Action| matches!(action, Action::PageScrollDown), |action: &Action| matches!(action, Action::PageScrollUp), |action: &Action| { - matches!(action, Action::SwitchToMode(InputMode::EnterSearch)) + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::EnterSearch + } + ) }, |action: &Action| matches!(action, Action::EditScrollback), ]; @@ -446,9 +658,14 @@ impl KeybindProcessor { InputMode::Search => { let ordered_predicates = vec![ |action: &Action| { - matches!(action, Action::SwitchToMode(InputMode::EnterSearch)) + matches!( + action, + Action::SwitchToMode { + input_mode: InputMode::EnterSearch + } + ) }, - |action: &Action| matches!(action, Action::SearchInput(_)), + |action: &Action| matches!(action, Action::SearchInput { .. }), |action: &Action| matches!(action, Action::ScrollDown), |action: &Action| matches!(action, Action::ScrollUp), |action: &Action| matches!(action, Action::PageScrollDown), @@ -456,27 +673,43 @@ impl KeybindProcessor { |action: &Action| matches!(action, Action::HalfPageScrollDown), |action: &Action| matches!(action, Action::HalfPageScrollUp), |action: &Action| { - matches!(action, Action::Search(actions::SearchDirection::Down)) + matches!( + action, + Action::Search { + direction: actions::SearchDirection::Down + } + ) }, |action: &Action| { - matches!(action, Action::Search(actions::SearchDirection::Up)) + matches!( + action, + Action::Search { + direction: actions::SearchDirection::Up + } + ) }, |action: &Action| { matches!( action, - Action::SearchToggleOption(actions::SearchOption::CaseSensitivity) + Action::SearchToggleOption { + option: actions::SearchOption::CaseSensitivity + } ) }, |action: &Action| { matches!( action, - Action::SearchToggleOption(actions::SearchOption::Wrap) + Action::SearchToggleOption { + option: actions::SearchOption::Wrap + } ) }, |action: &Action| { matches!( action, - Action::SearchToggleOption(actions::SearchOption::WholeWord) + Action::SearchToggleOption { + option: actions::SearchOption::WholeWord + } ) }, ]; diff --git a/default-plugins/configuration/src/rebind_leaders_screen.rs b/default-plugins/configuration/src/rebind_leaders_screen.rs index 4e177228..3014eb93 100644 --- a/default-plugins/configuration/src/rebind_leaders_screen.rs +++ b/default-plugins/configuration/src/rebind_leaders_screen.rs @@ -87,7 +87,9 @@ impl RebindLeadersScreen { }) .and_then(|k| { k.into_iter().find_map(|(k, a)| { - if a == &[actions::Action::SwitchToMode(InputMode::Normal)] { + if a == &[actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }] { Some(k) } else { None @@ -110,7 +112,9 @@ impl RebindLeadersScreen { }) .and_then(|k| { k.into_iter().find_map(|(k, a)| { - if a == &[actions::Action::SwitchToMode(InputMode::Normal)] { + if a == &[actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }] { Some(k.key_modifiers.clone()) } else { None @@ -132,7 +136,11 @@ impl RebindLeadersScreen { }) .and_then(|k| { k.into_iter().find_map(|(k, a)| { - if a == &[actions::Action::NewPane(None, None, false)] { + if a == &[actions::Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }] { Some(k.key_modifiers.clone()) } else { None @@ -895,7 +903,9 @@ impl RebindLeadersScreen { if mode == &target_mode { for current_keybind in self.get_current_keybinds( *mode, - &[actions::Action::SwitchToMode(InputMode::Normal)], + &[actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }], ) { if current_keybind.bare_key != BareKey::Enter && current_keybind.bare_key != BareKey::Esc @@ -904,9 +914,12 @@ impl RebindLeadersScreen { } } } else { - for current_keybind in - self.get_current_keybinds(*mode, &[actions::Action::SwitchToMode(target_mode)]) - { + for current_keybind in self.get_current_keybinds( + *mode, + &[actions::Action::SwitchToMode { + input_mode: target_mode, + }], + ) { keys_to_unbind.push((*mode, current_keybind)); } } @@ -916,13 +929,17 @@ impl RebindLeadersScreen { keys_to_bind.push(( *mode, new_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Normal)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )); } else if mode != &InputMode::Locked { keys_to_bind.push(( *mode, new_key.clone(), - vec![actions::Action::SwitchToMode(target_mode)], + vec![actions::Action::SwitchToMode { + input_mode: target_mode, + }], )); } } @@ -935,7 +952,11 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::NewPane(None, None, false)], + &[actions::Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('n'), self.secondary_modifier.clone(), @@ -953,7 +974,9 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveTab(Direction::Left)], + &[actions::Action::MoveTab { + direction: Direction::Left, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('i'), self.secondary_modifier.clone(), @@ -962,7 +985,9 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveTab(Direction::Right)], + &[actions::Action::MoveTab { + direction: Direction::Right, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('o'), self.secondary_modifier.clone(), @@ -971,7 +996,9 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocusOrTab(Direction::Left)], + &[actions::Action::MoveFocusOrTab { + direction: Direction::Left, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('h'), self.secondary_modifier.clone(), @@ -980,13 +1007,17 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocusOrTab(Direction::Left)], + &[actions::Action::MoveFocusOrTab { + direction: Direction::Left, + }], KeyWithModifier::new_with_modifiers(BareKey::Left, self.secondary_modifier.clone()), ); self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocusOrTab(Direction::Right)], + &[actions::Action::MoveFocusOrTab { + direction: Direction::Right, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('l'), self.secondary_modifier.clone(), @@ -995,13 +1026,17 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocusOrTab(Direction::Right)], + &[actions::Action::MoveFocusOrTab { + direction: Direction::Right, + }], KeyWithModifier::new_with_modifiers(BareKey::Right, self.secondary_modifier.clone()), ); self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocus(Direction::Down)], + &[actions::Action::MoveFocus { + direction: Direction::Down, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('j'), self.secondary_modifier.clone(), @@ -1010,13 +1045,17 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocus(Direction::Down)], + &[actions::Action::MoveFocus { + direction: Direction::Down, + }], KeyWithModifier::new_with_modifiers(BareKey::Down, self.secondary_modifier.clone()), ); self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocus(Direction::Up)], + &[actions::Action::MoveFocus { + direction: Direction::Up, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('k'), self.secondary_modifier.clone(), @@ -1025,13 +1064,18 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::MoveFocus(Direction::Up)], + &[actions::Action::MoveFocus { + direction: Direction::Up, + }], KeyWithModifier::new_with_modifiers(BareKey::Up, self.secondary_modifier.clone()), ); self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::Resize(Resize::Increase, None)], + &[actions::Action::Resize { + resize: Resize::Increase, + direction: None, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('+'), self.secondary_modifier.clone(), @@ -1040,7 +1084,10 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::Resize(Resize::Increase, None)], + &[actions::Action::Resize { + resize: Resize::Increase, + direction: None, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('='), self.secondary_modifier.clone(), @@ -1049,7 +1096,10 @@ impl RebindLeadersScreen { self.bind_actions( keys_to_unbind, keys_to_bind, - &[actions::Action::Resize(Resize::Decrease, None)], + &[actions::Action::Resize { + resize: Resize::Decrease, + direction: None, + }], KeyWithModifier::new_with_modifiers( BareKey::Char('-'), self.secondary_modifier.clone(), @@ -1098,7 +1148,9 @@ impl RebindLeadersScreen { ) { if let Some(previous_unlock_key) = self.get_current_keybind( InputMode::Locked, - &[actions::Action::SwitchToMode(InputMode::Normal)], + &[actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }], ) { keys_to_unbind.push((InputMode::Locked, previous_unlock_key.clone())); keys_to_unbind.push((InputMode::Normal, previous_unlock_key.clone())); @@ -1113,47 +1165,65 @@ impl RebindLeadersScreen { keys_to_bind.push(( InputMode::Locked, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Normal)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )); keys_to_bind.push(( InputMode::Normal, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Pane, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Tab, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Resize, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Move, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Search, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Scroll, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); keys_to_bind.push(( InputMode::Session, unlock_key.clone(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )); } fn get_current_keybind( diff --git a/default-plugins/fixture-plugin-for-tests/src/main.rs b/default-plugins/fixture-plugin-for-tests/src/main.rs index 8ca23557..01489860 100644 --- a/default-plugins/fixture-plugin-for-tests/src/main.rs +++ b/default-plugins/fixture-plugin-for-tests/src/main.rs @@ -490,42 +490,58 @@ impl ZellijPlugin for State { ( InputMode::Locked, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Normal)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Normal, + }], ), ( InputMode::Normal, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Pane, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Tab, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Resize, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Move, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Search, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ( InputMode::Session, KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![actions::Action::SwitchToMode(InputMode::Locked)], + vec![actions::Action::SwitchToMode { + input_mode: InputMode::Locked, + }], ), ]; rebind_keys(keys_to_unbind, keys_to_rebind, write_to_disk); diff --git a/default-plugins/status-bar/src/first_line.rs b/default-plugins/status-bar/src/first_line.rs index a67ef10b..b5c688ad 100644 --- a/default-plugins/status-bar/src/first_line.rs +++ b/default-plugins/status-bar/src/first_line.rs @@ -480,7 +480,7 @@ pub fn mode_switch_keys(mode_info: &ModeInfo) -> Vec<KeyWithModifier> { ) { return None; } - if let actions::Action::SwitchToMode(mode) = vac { + if let actions::Action::SwitchToMode { input_mode: mode } = vac { return match mode { // Store the keys that switch to displayed modes InputMode::Normal @@ -622,38 +622,59 @@ pub fn first_line( KeyAction::Lock, to_char(action_key( binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( KeyMode::UnselectedAlternate, KeyAction::Pane, - to_char(action_key(binds, &[Action::SwitchToMode(InputMode::Pane)])), + to_char(action_key( + binds, + &[Action::SwitchToMode { + input_mode: InputMode::Pane, + }], + )), ), KeyShortcut::new( KeyMode::Unselected, KeyAction::Tab, - to_char(action_key(binds, &[Action::SwitchToMode(InputMode::Tab)])), + to_char(action_key( + binds, + &[Action::SwitchToMode { + input_mode: InputMode::Tab, + }], + )), ), KeyShortcut::new( KeyMode::UnselectedAlternate, KeyAction::Resize, to_char(action_key( binds, - &[Action::SwitchToMode(InputMode::Resize)], + &[Action::SwitchToMode { + input_mode: InputMode::Resize, + }], )), ), KeyShortcut::new( KeyMode::Unselected, KeyAction::Move, - to_char(action_key(binds, &[Action::SwitchToMode(InputMode::Move)])), + to_char(action_key( + binds, + &[Action::SwitchToMode { + input_mode: InputMode::Move, + }], + )), ), KeyShortcut::new( KeyMode::UnselectedAlternate, KeyAction::Search, to_char(action_key( binds, - &[Action::SwitchToMode(InputMode::Scroll)], + &[Action::SwitchToMode { + input_mode: InputMode::Scroll, + }], )), ), KeyShortcut::new( @@ -661,7 +682,9 @@ pub fn first_line( KeyAction::Session, to_char(action_key( binds, - &[Action::SwitchToMode(InputMode::Session)], + &[Action::SwitchToMode { + input_mode: InputMode::Session, + }], )), ), KeyShortcut::new( @@ -1055,9 +1078,9 @@ mod tests { mode: InputMode::Normal, keybinds : vec![ (InputMode::Normal, vec![ - (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Pane)]), - (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Resize)]), - (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Move)]), + (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Pane}]), + (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Resize}]), + (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Move}]), ]), ], ..ModeInfo::default() @@ -1079,9 +1102,9 @@ mod tests { mode: InputMode::Normal, keybinds : vec![ (InputMode::Normal, vec![ - (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Pane)]), - (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Resize)]), - (KeyWithModifier::new(BareKey::Char('c')), vec![Action::SwitchToMode(InputMode::Move)]), + (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Pane}]), + (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Resize}]), + (KeyWithModifier::new(BareKey::Char('c')), vec![Action::SwitchToMode{input_mode: InputMode::Move}]), ]), ], ..ModeInfo::default() @@ -1103,11 +1126,11 @@ mod tests { mode: InputMode::Normal, keybinds : vec![ (InputMode::Normal, vec![ - (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Locked)]), - (KeyWithModifier::new(BareKey::Backspace), vec![Action::SwitchToMode(InputMode::Pane)]), - (KeyWithModifier::new(BareKey::Enter), vec![Action::SwitchToMode(InputMode::Tab)]), - (KeyWithModifier::new(BareKey::Tab), vec![Action::SwitchToMode(InputMode::Resize)]), - (KeyWithModifier::new(BareKey::Left), vec![Action::SwitchToMode(InputMode::Move)]), + (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Locked}]), + (KeyWithModifier::new(BareKey::Backspace), vec![Action::SwitchToMode{input_mode: InputMode::Pane}]), + (KeyWithModifier::new(BareKey::Enter), vec![Action::SwitchToMode{input_mode: InputMode::Tab}]), + (KeyWithModifier::new(BareKey::Tab), vec![Action::SwitchToMode{input_mode: InputMode::Resize}]), + (KeyWithModifier::new(BareKey::Left), vec![Action::SwitchToMode{input_mode: InputMode::Move}]), ]), ], ..ModeInfo::default() @@ -1130,11 +1153,11 @@ mod tests { mode: InputMode::Normal, keybinds : vec![ (InputMode::Normal, vec![ - (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Locked)]), - (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Pane)]), - (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Tab)]), - (KeyWithModifier::new(BareKey::Char('d')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Resize)]), - (KeyWithModifier::new(BareKey::Char('e')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Move)]), + (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Locked}]), + (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Pane}]), + (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Tab}]), + (KeyWithModifier::new(BareKey::Char('d')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Resize}]), + (KeyWithModifier::new(BareKey::Char('e')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Move}]), ]), ], ..ModeInfo::default() @@ -1153,9 +1176,9 @@ mod tests { mode: InputMode::Normal, keybinds : vec![ (InputMode::Normal, vec![ - (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Pane)]), - (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Resize)]), - (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode(InputMode::Move)]), + (KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Pane}]), + (KeyWithModifier::new(BareKey::Char('b')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Resize}]), + (KeyWithModifier::new(BareKey::Char('c')).with_ctrl_modifier(), vec![Action::SwitchToMode{input_mode: InputMode::Move}]), ]), ], ..ModeInfo::default() diff --git a/default-plugins/status-bar/src/main.rs b/default-plugins/status-bar/src/main.rs index 0c1b9c88..aa86d4d1 100644 --- a/default-plugins/status-bar/src/main.rs +++ b/default-plugins/status-bar/src/main.rs @@ -27,8 +27,10 @@ use tip::utils::get_cached_tip_name; // for more of these, copy paste from: https://en.wikipedia.org/wiki/Box-drawing_character static ARROW_SEPARATOR: &str = "î‚°"; static MORE_MSG: &str = " ... "; -/// Shorthand for `Action::SwitchToMode(InputMode::Normal)`. -const TO_NORMAL: Action = Action::SwitchToMode(InputMode::Normal); +/// Shorthand for `Action::SwitchToMode{input_mode: InputMode::Normal}`. +const TO_NORMAL: Action = Action::SwitchToMode { + input_mode: InputMode::Normal, +}; #[derive(Default)] struct State { @@ -588,11 +590,21 @@ pub mod tests { ), ( KeyWithModifier::new(BareKey::Char('c')).with_alt_modifier(), - vec![Action::ScrollDown, Action::SwitchToMode(InputMode::Normal)], + vec![ + Action::ScrollDown, + Action::SwitchToMode { + input_mode: InputMode::Normal, + }, + ], ), ( KeyWithModifier::new(BareKey::Char('1')), - vec![TO_NORMAL, Action::SwitchToMode(InputMode::Locked)], + vec![ + TO_NORMAL, + Action::SwitchToMode { + input_mode: InputMode::Locked, + }, + ], ), ] } diff --git a/default-plugins/status-bar/src/one_line_ui.rs b/default-plugins/status-bar/src/one_line_ui.rs index 564bdc83..a3fdec77 100644 --- a/default-plugins/status-bar/src/one_line_ui.rs +++ b/default-plugins/status-bar/src/one_line_ui.rs @@ -49,7 +49,9 @@ pub fn one_line_ui( } fn to_base_mode(base_mode: InputMode) -> Action { - Action::SwitchToMode(base_mode) + Action::SwitchToMode { + input_mode: base_mode, + } } fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<KeyShortcut>> { @@ -69,7 +71,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( locked_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -81,7 +85,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -89,7 +95,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Pane, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Pane)], + &[Action::SwitchToMode { + input_mode: InputMode::Pane, + }], )), ), KeyShortcut::new( @@ -97,7 +105,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Tab, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Tab)], + &[Action::SwitchToMode { + input_mode: InputMode::Tab, + }], )), ), KeyShortcut::new( @@ -105,7 +115,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Resize, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Resize)], + &[Action::SwitchToMode { + input_mode: InputMode::Resize, + }], )), ), KeyShortcut::new( @@ -113,7 +125,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Move, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Move)], + &[Action::SwitchToMode { + input_mode: InputMode::Move, + }], )), ), KeyShortcut::new( @@ -121,7 +135,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Search, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Scroll)], + &[Action::SwitchToMode { + input_mode: InputMode::Scroll, + }], )), ), KeyShortcut::new( @@ -129,7 +145,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Session, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Session)], + &[Action::SwitchToMode { + input_mode: InputMode::Session, + }], )), ), KeyShortcut::new( @@ -147,7 +165,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( pane_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -155,7 +175,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Pane, to_char(action_key( pane_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -168,7 +190,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( tab_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -176,7 +200,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Tab, to_char(action_key( tab_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -189,7 +215,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( resize_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -197,7 +225,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Resize, to_char(action_key( resize_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -210,7 +240,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( move_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -218,7 +250,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Move, to_char(action_key( move_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -231,7 +265,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( scroll_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -239,7 +275,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Search, to_char(action_key( scroll_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -252,7 +290,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Unlock, to_char(action_key( session_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -260,7 +300,9 @@ fn base_mode_locked_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Session, to_char(action_key( session_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), ), ], @@ -285,7 +327,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Lock, to_char(action_key( locked_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -297,7 +341,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Lock, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Locked)], + &[Action::SwitchToMode { + input_mode: InputMode::Locked, + }], )), ), KeyShortcut::new( @@ -305,7 +351,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Pane, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Pane)], + &[Action::SwitchToMode { + input_mode: InputMode::Pane, + }], )), ), KeyShortcut::new( @@ -313,7 +361,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Tab, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Tab)], + &[Action::SwitchToMode { + input_mode: InputMode::Tab, + }], )), ), KeyShortcut::new( @@ -321,7 +371,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Resize, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Resize)], + &[Action::SwitchToMode { + input_mode: InputMode::Resize, + }], )), ), KeyShortcut::new( @@ -329,7 +381,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Move, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Move)], + &[Action::SwitchToMode { + input_mode: InputMode::Move, + }], )), ), KeyShortcut::new( @@ -337,7 +391,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Search, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Scroll)], + &[Action::SwitchToMode { + input_mode: InputMode::Scroll, + }], )), ), KeyShortcut::new( @@ -345,7 +401,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Session, to_char(action_key( normal_binds, - &[Action::SwitchToMode(InputMode::Session)], + &[Action::SwitchToMode { + input_mode: InputMode::Session, + }], )), ), KeyShortcut::new( @@ -362,7 +420,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Pane, to_char(action_key( pane_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -373,7 +433,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Tab, to_char(action_key( tab_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -384,7 +446,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Resize, to_char(action_key( resize_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -395,7 +459,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Move, to_char(action_key( move_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -406,7 +472,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Search, to_char(action_key( scroll_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -417,7 +485,9 @@ fn base_mode_normal_mode_indicators(help: &ModeInfo) -> HashMap<InputMode, Vec<K KeyAction::Session, to_char(action_key( session_binds, - &[Action::SwitchToMode(InputMode::Normal)], + &[Action::SwitchToMode { + input_mode: InputMode::Normal, + }], )), )], ), @@ -699,7 +769,14 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz let binds = &help.get_mode_keybinds(); let should_show_focus_and_resize_shortcuts = should_show_focus_and_resize_shortcuts(tab_info); // New Pane - let new_pane_action_key = action_key(binds, &[Action::NewPane(None, None, false)]); + let new_pane_action_key = action_key( + binds, + &[Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }], + ); let mut new_pane_key_to_display = new_pane_action_key .iter() .find(|k| k.is_key_with_alt_modifier(BareKey::Char('n'))) @@ -712,12 +789,24 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz }; // Resize - let resize_increase_action_key = action_key(binds, &[Action::Resize(Resize::Increase, None)]); + let resize_increase_action_key = action_key( + binds, + &[Action::Resize { + resize: Resize::Increase, + direction: None, + }], + ); let resize_increase_key = resize_increase_action_key .iter() .find(|k| k.bare_key == BareKey::Char('+')) .or_else(|| resize_increase_action_key.iter().next()); - let resize_decrease_action_key = action_key(binds, &[Action::Resize(Resize::Decrease, None)]); + let resize_decrease_action_key = action_key( + binds, + &[Action::Resize { + resize: Resize::Decrease, + direction: None, + }], + ); let resize_decrease_key = resize_decrease_action_key .iter() .find(|k| k.bare_key == BareKey::Char('-')) @@ -734,7 +823,12 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz let mut move_focus_shortcuts: Vec<KeyWithModifier> = vec![]; // Left - let move_focus_left_action_key = action_key(binds, &[Action::MoveFocusOrTab(Direction::Left)]); + let move_focus_left_action_key = action_key( + binds, + &[Action::MoveFocusOrTab { + direction: Direction::Left, + }], + ); let move_focus_left_key = move_focus_left_action_key .iter() .find(|k| k.bare_key == BareKey::Left) @@ -743,7 +837,12 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz move_focus_shortcuts.push(move_focus_left_key.clone()); } // Down - let move_focus_left_action_key = action_key(binds, &[Action::MoveFocus(Direction::Down)]); + let move_focus_left_action_key = action_key( + binds, + &[Action::MoveFocus { + direction: Direction::Down, + }], + ); let move_focus_left_key = move_focus_left_action_key .iter() .find(|k| k.bare_key == BareKey::Down) @@ -752,7 +851,12 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz move_focus_shortcuts.push(move_focus_left_key.clone()); } // Up - let move_focus_left_action_key = action_key(binds, &[Action::MoveFocus(Direction::Up)]); + let move_focus_left_action_key = action_key( + binds, + &[Action::MoveFocus { + direction: Direction::Up, + }], + ); let move_focus_left_key = move_focus_left_action_key .iter() .find(|k| k.bare_key == BareKey::Up) @@ -761,7 +865,12 @@ fn secondary_keybinds(help: &ModeInfo, tab_info: Option<&TabInfo>, max_len: usiz move_focus_shortcuts.push(move_focus_left_key.clone()); } // Right - let move_focus_left_action_key = action_key(binds, &[Action::MoveFocusOrTab(Direction::Right)]); + let move_focus_left_action_key = action_key( + binds, + &[Action::MoveFocusOrTab { + direction: Direction::Right, + }], + ); let move_focus_left_key = move_focus_left_action_key .iter() .find(|k| k.bare_key == BareKey::Right) @@ -1264,20 +1373,20 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier } if mi.mode == IM::Pane { vec![ - (s("New"), s("New"), single_action_key(&km, &[A::NewPane(None, None, false), TO_NORMAL])), + (s("New"), s("New"), single_action_key(&km, &[A::NewPane{direction: None, pane_name: None, start_suppressed: false}, TO_NORMAL])), (s("Change Focus"), s("Move"), - action_key_group(&km, &[&[A::MoveFocus(Dir::Left)], &[A::MoveFocus(Dir::Down)], - &[A::MoveFocus(Dir::Up)], &[A::MoveFocus(Dir::Right)]])), + action_key_group(&km, &[&[A::MoveFocus{direction: Dir::Left}], &[A::MoveFocus{direction: Dir::Down}], + &[A::MoveFocus{direction: Dir::Up}], &[A::MoveFocus{direction: Dir::Right}]])), (s("Close"), s("Close"), single_action_key(&km, &[A::CloseFocus, TO_NORMAL])), (s("Rename"), s("Rename"), - single_action_key(&km, &[A::SwitchToMode(IM::RenamePane), A::PaneNameInput(vec![0])])), + single_action_key(&km, &[A::SwitchToMode{input_mode: IM::RenamePane}, A::PaneNameInput{input: vec![0]}])), (s("Toggle Fullscreen"), s("Fullscreen"), single_action_key(&km, &[A::ToggleFocusFullscreen, TO_NORMAL])), (s("Toggle Floating"), s("Floating"), single_action_key(&km, &[A::ToggleFloatingPanes, TO_NORMAL])), (s("Toggle Embed"), s("Embed"), single_action_key(&km, &[A::TogglePaneEmbedOrFloating, TO_NORMAL])), - (s("Split Right"), s("Right"), single_action_key(&km, &[A::NewPane(Some(Direction::Right), None, false), TO_NORMAL])), - (s("Split Down"), s("Down"), single_action_key(&km, &[A::NewPane(Some(Direction::Down), None, false), TO_NORMAL])), - (s("Stack"), s("Stack"), single_action_key(&km, &[A::NewStackedPane(None, None), TO_NORMAL])), + (s("Split Right"), s("Right"), single_action_key(&km, &[A::NewPane{direction: Some(Direction::Right), pane_name: None, start_suppressed: false}, TO_NORMAL])), + (s("Split Down"), s("Down"), single_action_key(&km, &[A::NewPane{direction: Some(Direction::Down), pane_name: None, start_suppressed: false}, TO_NORMAL])), + (s("Stack"), s("Stack"), single_action_key(&km, &[A::NewStackedPane{command: None, pane_name: None}, TO_NORMAL])), (s("Select pane"), s("Select"), to_basemode_key), ]} else if mi.mode == IM::Tab { // With the default bindings, "Move focus" for tabs is tricky: It binds all the arrow keys @@ -1297,11 +1406,11 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier }; vec![ - (s("New"), s("New"), single_action_key(&km, &[A::NewTab(None, vec![], None, None, None, true, None), TO_NORMAL])), + (s("New"), s("New"), single_action_key(&km, &[A::NewTab{tiled_layout: None, floating_layouts: vec![], swap_tiled_layouts: None, swap_floating_layouts: None, tab_name: None, should_change_focus_to_new_tab: true, cwd: None}, TO_NORMAL])), (s("Change focus"), s("Move"), focus_keys), (s("Close"), s("Close"), single_action_key(&km, &[A::CloseTab, TO_NORMAL])), (s("Rename"), s("Rename"), - single_action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])), + single_action_key(&km, &[A::SwitchToMode{input_mode: IM::RenameTab}, A::TabNameInput{input: vec![0]}])), (s("Sync"), s("Sync"), single_action_key(&km, &[A::ToggleActiveSyncTab, TO_NORMAL])), (s("Break pane to new tab"), s("Break out"), single_action_key(&km, &[A::BreakPane, TO_NORMAL])), (s("Break pane left/right"), s("Break"), action_key_group(&km, &[ @@ -1313,30 +1422,30 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier ]} else if mi.mode == IM::Resize { vec![ (s("Increase/Decrease size"), s("Increase/Decrease"), action_key_group(&km, &[ - &[A::Resize(Resize::Increase, None)], - &[A::Resize(Resize::Decrease, None)] + &[A::Resize{resize: Resize::Increase, direction: None}], + &[A::Resize{resize: Resize::Decrease, direction: None}] ])), (s("Increase to"), s("Increase"), action_key_group(&km, &[ - &[A::Resize(Resize::Increase, Some(Dir::Left))], - &[A::Resize(Resize::Increase, Some(Dir::Down))], - &[A::Resize(Resize::Increase, Some(Dir::Up))], - &[A::Resize(Resize::Increase, Some(Dir::Right))] + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Left)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Down)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Up)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Right)}] ])), (s("Decrease from"), s("Decrease"), action_key_group(&km, &[ - &[A::Resize(Resize::Decrease, Some(Dir::Left))], - &[A::Resize(Resize::Decrease, Some(Dir::Down))], - &[A::Resize(Resize::Decrease, Some(Dir::Up))], - &[A::Resize(Resize::Decrease, Some(Dir::Right))] + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Left)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Down)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Up)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Right)}] ])), (s("Select pane"), s("Select"), to_basemode_key), ]} else if mi.mode == IM::Move { vec![ (s("Switch Location"), s("Move"), action_key_group(&km, &[ - &[Action::MovePane(Some(Dir::Left))], &[Action::MovePane(Some(Dir::Down))], - &[Action::MovePane(Some(Dir::Up))], &[Action::MovePane(Some(Dir::Right))]])), + &[Action::MovePane{direction: Some(Dir::Left)}], &[Action::MovePane{direction: Some(Dir::Down)}], + &[Action::MovePane{direction: Some(Dir::Up)}], &[Action::MovePane{direction: Some(Dir::Right)}]])), (s("When done"), s("Back"), to_basemode_key), ]} else if mi.mode == IM::Scroll { vec![ (s("Enter search term"), s("Search"), - action_key(&km, &[A::SwitchToMode(IM::EnterSearch), A::SearchInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::EnterSearch}, A::SearchInput{input: vec![0]}])), (s("Scroll"), s("Scroll"), action_key_group(&km, &[&[Action::ScrollDown], &[Action::ScrollUp]])), (s("Scroll page"), s("Scroll"), @@ -1347,26 +1456,26 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier single_action_key(&km, &[Action::EditScrollback, TO_NORMAL])), (s("Select pane"), s("Select"), to_basemode_key), ]} else if mi.mode == IM::EnterSearch { vec![ - (s("When done"), s("Done"), action_key(&km, &[A::SwitchToMode(IM::Search)])), + (s("When done"), s("Done"), action_key(&km, &[A::SwitchToMode{input_mode: IM::Search}])), (s("Cancel"), s("Cancel"), - action_key(&km, &[A::SearchInput(vec![27]), A::SwitchToMode(IM::Scroll)])), + action_key(&km, &[A::SearchInput{input: vec![27]}, A::SwitchToMode{input_mode: IM::Scroll}])), ]} else if mi.mode == IM::Search { vec![ (s("Enter Search term"), s("Search"), - action_key(&km, &[A::SwitchToMode(IM::EnterSearch), A::SearchInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::EnterSearch}, A::SearchInput{input: vec![0]}])), (s("Scroll"), s("Scroll"), action_key_group(&km, &[&[Action::ScrollDown], &[Action::ScrollUp]])), (s("Scroll page"), s("Scroll"), action_key_group(&km, &[&[Action::PageScrollDown], &[Action::PageScrollUp]])), (s("Scroll half page"), s("Scroll"), action_key_group(&km, &[&[Action::HalfPageScrollDown], &[Action::HalfPageScrollUp]])), - (s("Search down"), s("Down"), action_key(&km, &[A::Search(SDir::Down)])), - (s("Search up"), s("Up"), action_key(&km, &[A::Search(SDir::Up)])), + (s("Search down"), s("Down"), action_key(&km, &[A::Search{direction: SDir::Down}])), + (s("Search up"), s("Up"), action_key(&km, &[A::Search{direction: SDir::Up}])), (s("Case sensitive"), s("Case"), - action_key(&km, &[A::SearchToggleOption(SOpt::CaseSensitivity)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::CaseSensitivity}])), (s("Wrap"), s("Wrap"), - action_key(&km, &[A::SearchToggleOption(SOpt::Wrap)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::Wrap}])), (s("Whole words"), s("Whole"), - action_key(&km, &[A::SearchToggleOption(SOpt::WholeWord)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::WholeWord}])), ]} else if mi.mode == IM::Session { vec![ (s("Detach"), s("Detach"), action_key(&km, &[Action::Detach])), (s("Session Manager"), s("Manager"), session_manager_key(&km)), @@ -1377,14 +1486,14 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier (s("Select pane"), s("Select"), to_basemode_key), ]} else if mi.mode == IM::Tmux { vec![ (s("Move focus"), s("Move"), action_key_group(&km, &[ - &[A::MoveFocus(Dir::Left)], &[A::MoveFocus(Dir::Down)], - &[A::MoveFocus(Dir::Up)], &[A::MoveFocus(Dir::Right)]])), - (s("Split down"), s("Down"), action_key(&km, &[A::NewPane(Some(Dir::Down), None, false), TO_NORMAL])), - (s("Split right"), s("Right"), action_key(&km, &[A::NewPane(Some(Dir::Right), None, false), TO_NORMAL])), + &[A::MoveFocus{direction: Dir::Left}], &[A::MoveFocus{direction: Dir::Down}], + &[A::MoveFocus{direction: Dir::Up}], &[A::MoveFocus{direction: Dir::Right}]])), + (s("Split down"), s("Down"), action_key(&km, &[A::NewPane{direction: Some(Dir::Down), pane_name: None, start_suppressed: false}, TO_NORMAL])), + (s("Split right"), s("Right"), action_key(&km, &[A::NewPane{direction: Some(Dir::Right), pane_name: None, start_suppressed: false}, TO_NORMAL])), (s("Fullscreen"), s("Fullscreen"), action_key(&km, &[A::ToggleFocusFullscreen, TO_NORMAL])), - (s("New tab"), s("New"), action_key(&km, &[A::NewTab(None, vec![], None, None, None, true, None), TO_NORMAL])), + (s("New tab"), s("New"), action_key(&km, &[A::NewTab{tiled_layout: None, floating_layouts: vec![], swap_tiled_layouts: None, swap_floating_layouts: None, tab_name: None, should_change_focus_to_new_tab: true, cwd: None}, TO_NORMAL])), (s("Rename tab"), s("Rename"), - action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::RenameTab}, A::TabNameInput{input: vec![0]}])), (s("Previous Tab"), s("Previous"), action_key(&km, &[A::GoToPreviousTab, TO_NORMAL])), (s("Next Tab"), s("Next"), action_key(&km, &[A::GoToNextTab, TO_NORMAL])), (s("Select pane"), s("Select"), to_basemode_key), diff --git a/default-plugins/status-bar/src/second_line.rs b/default-plugins/status-bar/src/second_line.rs index b5ba8292..6f3fb02c 100644 --- a/default-plugins/status-bar/src/second_line.rs +++ b/default-plugins/status-bar/src/second_line.rs @@ -143,13 +143,13 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier } if mi.mode == IM::Pane { vec![ - (s("New"), s("New"), action_key(&km, &[A::NewPane(None, None, false), TO_NORMAL])), + (s("New"), s("New"), action_key(&km, &[A::NewPane{direction: None, pane_name: None, start_suppressed: false}, TO_NORMAL])), (s("Change Focus"), s("Move"), - action_key_group(&km, &[&[A::MoveFocus(Dir::Left)], &[A::MoveFocus(Dir::Down)], - &[A::MoveFocus(Dir::Up)], &[A::MoveFocus(Dir::Right)]])), + action_key_group(&km, &[&[A::MoveFocus{direction: Dir::Left}], &[A::MoveFocus{direction: Dir::Down}], + &[A::MoveFocus{direction: Dir::Up}], &[A::MoveFocus{direction: Dir::Right}]])), (s("Close"), s("Close"), action_key(&km, &[A::CloseFocus, TO_NORMAL])), (s("Rename"), s("Rename"), - action_key(&km, &[A::SwitchToMode(IM::RenamePane), A::PaneNameInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::RenamePane}, A::PaneNameInput{input: vec![0]}])), (s("Toggle Fullscreen"), s("Fullscreen"), action_key(&km, &[A::ToggleFocusFullscreen, TO_NORMAL])), (s("Toggle Floating"), s("Floating"), action_key(&km, &[A::ToggleFloatingPanes, TO_NORMAL])), @@ -173,11 +173,11 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier }; vec![ - (s("New"), s("New"), action_key(&km, &[A::NewTab(None, vec![], None, None, None, true, None), TO_NORMAL])), + (s("New"), s("New"), action_key(&km, &[A::NewTab{tiled_layout: None, floating_layouts: vec![], swap_tiled_layouts: None, swap_floating_layouts: None, tab_name: None, should_change_focus_to_new_tab: true, cwd: None}, TO_NORMAL])), (s("Change focus"), s("Move"), focus_keys), (s("Close"), s("Close"), action_key(&km, &[A::CloseTab, TO_NORMAL])), (s("Rename"), s("Rename"), - action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::RenameTab}, A::TabNameInput{input: vec![0]}])), (s("Sync"), s("Sync"), action_key(&km, &[A::ToggleActiveSyncTab, TO_NORMAL])), (s("Break pane to new tab"), s("Break out"), action_key(&km, &[A::BreakPane, TO_NORMAL])), (s("Break pane left/right"), s("Break"), action_key_group(&km, &[ @@ -189,29 +189,29 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier ]} else if mi.mode == IM::Resize { vec![ (s("Increase/Decrease size"), s("Increase/Decrease"), action_key_group(&km, &[ - &[A::Resize(Resize::Increase, None)], - &[A::Resize(Resize::Decrease, None)] + &[A::Resize{resize: Resize::Increase, direction: None}], + &[A::Resize{resize: Resize::Decrease, direction: None}] ])), (s("Increase to"), s("Increase"), action_key_group(&km, &[ - &[A::Resize(Resize::Increase, Some(Dir::Left))], - &[A::Resize(Resize::Increase, Some(Dir::Down))], - &[A::Resize(Resize::Increase, Some(Dir::Up))], - &[A::Resize(Resize::Increase, Some(Dir::Right))] + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Left)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Down)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Up)}], + &[A::Resize{resize: Resize::Increase, direction: Some(Dir::Right)}] ])), (s("Decrease from"), s("Decrease"), action_key_group(&km, &[ - &[A::Resize(Resize::Decrease, Some(Dir::Left))], - &[A::Resize(Resize::Decrease, Some(Dir::Down))], - &[A::Resize(Resize::Decrease, Some(Dir::Up))], - &[A::Resize(Resize::Decrease, Some(Dir::Right))] + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Left)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Down)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Up)}], + &[A::Resize{resize: Resize::Decrease, direction: Some(Dir::Right)}] ])), (s("Select pane"), s("Select"), to_normal_key), ]} else if mi.mode == IM::Move { vec![ (s("Switch Location"), s("Move"), action_key_group(&km, &[ - &[Action::MovePane(Some(Dir::Left))], &[Action::MovePane(Some(Dir::Down))], - &[Action::MovePane(Some(Dir::Up))], &[Action::MovePane(Some(Dir::Right))]])), + &[Action::MovePane{direction: Some(Dir::Left)}], &[Action::MovePane{direction: Some(Dir::Down)}], + &[Action::MovePane{direction: Some(Dir::Up)}], &[Action::MovePane{direction: Some(Dir::Right)}]])), ]} else if mi.mode == IM::Scroll { vec![ (s("Enter search term"), s("Search"), - action_key(&km, &[A::SwitchToMode(IM::EnterSearch), A::SearchInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::EnterSearch}, A::SearchInput{input: vec![0]}])), (s("Scroll"), s("Scroll"), action_key_group(&km, &[&[Action::ScrollDown], &[Action::ScrollUp]])), (s("Scroll page"), s("Scroll"), @@ -222,48 +222,48 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<KeyWithModifier action_key(&km, &[Action::EditScrollback, TO_NORMAL])), (s("Select pane"), s("Select"), to_normal_key), ]} else if mi.mode == IM::EnterSearch { vec![ - (s("When done"), s("Done"), action_key(&km, &[A::SwitchToMode(IM::Search)])), + (s("When done"), s("Done"), action_key(&km, &[A::SwitchToMode{input_mode: IM::Search}])), (s("Cancel"), s("Cancel"), - action_key(&km, &[A::SearchInput(vec![27]), A::SwitchToMode(IM::Scroll)])), + action_key(&km, &[A::SearchInput{input: vec![27]}, A::SwitchToMode{input_mode: IM::Scroll}])), ]} else if mi.mode == IM::Search { vec![ (s("Enter Search term"), s("Search"), - action_key(&km, &[A::SwitchToMode(IM::EnterSearch), A::SearchInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::EnterSearch}, A::SearchInput{input: vec![0]}])), (s("Scroll"), s("Scroll"), action_key_group(&km, &[&[Action::ScrollDown], &[Action::ScrollUp]])), (s("Scroll page"), s("Scroll"), action_key_group(&km, &[&[Action::PageScrollDown], &[Action::PageScrollUp]])), (s("Scroll half page"), s("Scroll"), action_key_group(&km, &[&[Action::HalfPageScrollDown], &[Action::HalfPageScrollUp]])), - (s("Search down"), s("Down"), action_key(&km, &[A::Search(SDir::Down)])), - (s("Search up"), s("Up"), action_key(&km, &[A::Search(SDir::Up)])), + (s("Search down"), s("Down"), action_key(&km, &[A::Search{direction: SDir::Down}])), + (s("Search up"), s("Up"), action_key(&km, &[A::Search{direction: SDir::Up}])), (s("Case sensitive"), s("Case"), - action_key(&km, &[A::SearchToggleOption(SOpt::CaseSensitivity)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::CaseSensitivity}])), (s("Wrap"), s("Wrap"), - action_key(&km, &[A::SearchToggleOption(SOpt::Wrap)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::Wrap}])), (s("Whole words"), s("Whole"), - action_key(&km, &[A::SearchToggleOption(SOpt::WholeWord)])), + action_key(&km, &[A::SearchToggleOption{option: SOpt::WholeWord}])), ]} else if mi.mode == IM::Session { vec![ (s("Detach"), s("Detach"), action_key(&km, &[Action::Detach])), - (s("Session Manager"), s("Manager"), action_key(&km, &[A::LaunchOrFocusPlugin(Default::default(), true, true, false, false), TO_NORMAL])), // not entirely accurate + (s("Session Manager"), s("Manager"), action_key(&km, &[A::LaunchOrFocusPlugin{plugin: Default::default(), should_float: true, move_to_focused_tab: true, should_open_in_place: false, skip_cache: false}, TO_NORMAL])), // not entirely accurate (s("Select pane"), s("Select"), to_normal_key), ]} else if mi.mode == IM::Tmux { vec![ (s("Move focus"), s("Move"), action_key_group(&km, &[ - &[A::MoveFocus(Dir::Left)], &[A::MoveFocus(Dir::Down)], - &[A::MoveFocus(Dir::Up)], &[A::MoveFocus(Dir::Right)]])), - (s("Split down"), s("Down"), action_key(&km, &[A::NewPane(Some(Dir::Down), None, false), TO_NORMAL])), - (s("Split right"), s("Right"), action_key(&km, &[A::NewPane(Some(Dir::Right), None, false), TO_NORMAL])), + &[A::MoveFocus{direction: Dir::Left}], &[A::MoveFocus{direction: Dir::Down}], + &[A::MoveFocus{direction: Dir::Up}], &[A::MoveFocus{direction: Dir::Right}]])), + (s("Split down"), s("Down"), action_key(&km, &[A::NewPane{direction: Some(Dir::Down), pane_name: None, start_suppressed: false}, TO_NORMAL])), + (s("Split right"), s("Right"), action_key(&km, &[A::NewPane{direction: Some(Dir::Right), pane_name: None, start_suppressed: false}, TO_NORMAL])), (s("Fullscreen"), s("Fullscreen"), action_key(&km, &[A::ToggleFocusFullscreen, TO_NORMAL])), - (s("New tab"), s("New"), action_key(&km, &[A::NewTab(None, vec![], None, None, None, true, None), TO_NORMAL])), + (s("New tab"), s("New"), action_key(&km, &[A::NewTab{tiled_layout: None, floating_layouts: vec![], swap_tiled_layouts: None, swap_floating_layouts: None, tab_name: None, should_change_focus_to_new_tab: true, cwd: None}, TO_NORMAL])), (s("Rename tab"), s("Rename"), - action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])), + action_key(&km, &[A::SwitchToMode{input_mode: IM::RenameTab}, A::TabNameInput{input: vec![0]}])), (s("Previous Tab"), s("Previous"), action_key(&km, &[A::GoToPreviousTab, TO_NORMAL])), (s("Next Tab"), s("Next"), action_key(&km, &[A::GoToNextTab, TO_NORMAL])), (s("Select pane"), s("Select"), to_normal_key), ]} else if matches!(mi.mode, IM::RenamePane | IM::RenameTab) { vec![ (s("When done"), s("Done"), to_normal_key), (s("Select pane"), s("Select"), action_key_group(&km, &[ - &[A::MoveFocus(Dir::Left)], &[A::MoveFocus(Dir::Down)], - &[A::MoveFocus(Dir::Up)], &[A::MoveFocus(Dir::Right)]])), + &[A::MoveFocus{direction: Dir::Left}], &[A::MoveFocus{direction: Dir::Down}], + &[A::MoveFocus{direction: Dir::Up}], &[A::MoveFocus{direction: Dir::Right}]])), ]} else { vec![] } } @@ -413,9 +413,14 @@ pub fn floating_panes_are_visible(mode_info: &ModeInfo) -> LinePart { let press = "Press "; let pane_mode = format!( "{}", - action_key(km, &[Action::SwitchToMode(InputMode::Pane)]) - .first() - .unwrap_or(&KeyWithModifier::new(BareKey::Char('?'))) + action_key( + km, + &[Action::SwitchToMode { + input_mode: InputMode::Pane + }] + ) + .first() + .unwrap_or(&KeyWithModifier::new(BareKey::Char('?'))) ); let plus = ", "; let p_left_separator = "<"; @@ -665,23 +670,38 @@ mod tests { vec![ ( KeyWithModifier::new(BareKey::Left), - vec![Action::MoveFocus(Direction::Left)], + vec![Action::MoveFocus { + direction: Direction::Left, + }], ), ( KeyWithModifier::new(BareKey::Down), - vec![Action::MoveFocus(Direction::Down)], + vec![Action::MoveFocus { + direction: Direction::Down, + }], ), ( KeyWithModifier::new(BareKey::Up), - vec![Action::MoveFocus(Direction::Up)], + vec![Action::MoveFocus { + direction: Direction::Up, + }], ), ( KeyWithModifier::new(BareKey::Right), - vec![Action::MoveFocus(Direction::Right)], + vec![Action::MoveFocus { + direction: Direction::Right, + }], ), ( KeyWithModifier::new(BareKey::Char('n')), - vec![Action::NewPane(None, None, false), TO_NORMAL], + vec![ + Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }, + TO_NORMAL, + ], ), ( KeyWithModifier::new(BareKey::Char('x')), @@ -715,23 +735,38 @@ mod tests { vec![ ( KeyWithModifier::new(BareKey::Left), - vec![Action::MoveFocus(Direction::Left)], + vec![Action::MoveFocus { + direction: Direction::Left, + }], ), ( KeyWithModifier::new(BareKey::Down), - vec![Action::MoveFocus(Direction::Down)], + vec![Action::MoveFocus { + direction: Direction::Down, + }], ), ( KeyWithModifier::new(BareKey::Up), - vec![Action::MoveFocus(Direction::Up)], + vec![Action::MoveFocus { + direction: Direction::Up, + }], ), ( KeyWithModifier::new(BareKey::Right), - vec![Action::MoveFocus(Direction::Right)], + vec![Action::MoveFocus { + direction: Direction::Right, + }], ), ( KeyWithModifier::new(BareKey::Char('n')), - vec![Action::NewPane(None, None, false), TO_NORMAL], + vec![ + Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }, + TO_NORMAL, + ], ), ( KeyWithModifier::new(BareKey::Char('x')), @@ -761,23 +796,38 @@ mod tests { vec![ ( KeyWithModifier::new(BareKey::Char('a')).with_ctrl_modifier(), - vec![Action::MoveFocus(Direction::Left)], + vec![Action::MoveFocus { + direction: Direction::Left, + }], ), ( KeyWithModifier::new(BareKey::Enter).with_ctrl_modifier(), - vec![Action::MoveFocus(Direction::Down)], + vec![Action::MoveFocus { + direction: Direction::Down, + }], ), ( KeyWithModifier::new(BareKey::Char('1')).with_ctrl_modifier(), - vec![Action::MoveFocus(Direction::Up)], + vec![Action::MoveFocus { + direction: Direction::Up, + }], ), ( KeyWithModifier::new(BareKey::Char(' ')).with_ctrl_modifier(), - vec![Action::MoveFocus(Direction::Right)], + vec![Action::MoveFocus { + direction: Direction::Right, + }], ), ( KeyWithModifier::new(BareKey::Backspace), - vec![Action::NewPane(None, None, false), TO_NORMAL], + vec![ + Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }, + TO_NORMAL, + ], ), ( KeyWithModifier::new(BareKey::Esc), diff --git a/default-plugins/status-bar/src/tip/data/compact_layout.rs b/default-plugins/status-bar/src/tip/data/compact_layout.rs index 6da1a155..e8ee5e16 100644 --- a/default-plugins/status-bar/src/tip/data/compact_layout.rs +++ b/default-plugins/status-bar/src/tip/data/compact_layout.rs @@ -78,13 +78,17 @@ pub fn compact_layout_short(help: &ModeInfo) -> LinePart { fn add_keybinds(help: &ModeInfo) -> Vec<ANSIString> { let to_pane = action_key( &help.get_mode_keybinds(), - &[Action::SwitchToMode(InputMode::Pane)], + &[Action::SwitchToMode { + input_mode: InputMode::Pane, + }], ); let pane_frames = action_key( &help.get_keybinds_for_mode(InputMode::Pane), &[ Action::TogglePaneFrames, - Action::SwitchToMode(InputMode::Normal), + Action::SwitchToMode { + input_mode: InputMode::Normal, + }, ], ); diff --git a/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs b/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs index 033dd61d..cbc38f28 100644 --- a/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs +++ b/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs @@ -68,13 +68,17 @@ pub fn edit_scrollbuffer_short(help: &ModeInfo) -> LinePart { fn add_keybinds(help: &ModeInfo) -> Vec<ANSIString> { let to_pane = action_key( &help.get_mode_keybinds(), - &[Action::SwitchToMode(InputMode::Scroll)], + &[Action::SwitchToMode { + input_mode: InputMode::Scroll, + }], ); let edit_buffer = action_key( &help.get_keybinds_for_mode(InputMode::Scroll), &[ Action::EditScrollback, - Action::SwitchToMode(InputMode::Normal), + Action::SwitchToMode { + input_mode: InputMode::Normal, + }, ], ); diff --git a/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs b/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs index 4bf4a143..8e20a49c 100644 --- a/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs +++ b/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs @@ -47,13 +47,17 @@ pub fn floating_panes_mouse_short(help: &ModeInfo) -> LinePart { fn add_keybinds(help: &ModeInfo) -> Vec<ANSIString> { let to_pane = action_key( &help.get_mode_keybinds(), - &[Action::SwitchToMode(InputMode::Pane)], + &[Action::SwitchToMode { + input_mode: InputMode::Pane, + }], ); let floating_toggle = action_key( &help.get_keybinds_for_mode(InputMode::Pane), &[ Action::ToggleFloatingPanes, - Action::SwitchToMode(InputMode::Normal), + Action::SwitchToMode { + input_mode: InputMode::Normal, + }, ], ); diff --git a/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs b/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs index c39ea302..5afcc6ec 100644 --- a/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs +++ b/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs @@ -50,8 +50,12 @@ fn add_keybinds(help: &ModeInfo) -> Vec<ANSIString> { let move_focus_keys = action_key_group( &pane_keymap, &[ - &[Action::MoveFocusOrTab(Direction::Left)], - &[Action::MoveFocusOrTab(Direction::Right)], + &[Action::MoveFocusOrTab { + direction: Direction::Left, + }], + &[Action::MoveFocusOrTab { + direction: Direction::Right, + }], ], ); diff --git a/default-plugins/status-bar/src/tip/data/quicknav.rs b/default-plugins/status-bar/src/tip/data/quicknav.rs index ef83bbd7..a33afc18 100644 --- a/default-plugins/status-bar/src/tip/data/quicknav.rs +++ b/default-plugins/status-bar/src/tip/data/quicknav.rs @@ -62,7 +62,14 @@ struct Keygroups<'a> { fn add_keybinds(help: &ModeInfo) -> Keygroups { let normal_keymap = help.get_mode_keybinds(); - let new_pane_keys = action_key(&normal_keymap, &[Action::NewPane(None, None, false)]); + let new_pane_keys = action_key( + &normal_keymap, + &[Action::NewPane { + direction: None, + pane_name: None, + start_suppressed: false, + }], + ); let new_pane = if new_pane_keys.is_empty() { vec![Style::new().bold().paint("UNBOUND")] } else { @@ -72,8 +79,14 @@ fn add_keybinds(help: &ModeInfo) -> Keygroups { let mut resize_keys = action_key_group( &normal_keymap, &[ - &[Action::Resize(Resize::Increase, None)], - &[Action::Resize(Resize::Decrease, None)], + &[Action::Resize { + resize: Resize::Increase, + direction: None, + }], + &[Action::Resize { + resize: Resize::Decrease, + direction: None, + }], ], ); if resize_keys.contains(&KeyWithModifier::new(BareKey::Char('=')).with_alt_modifier()) @@ -90,12 +103,24 @@ fn add_keybinds(help: &ModeInfo) -> Keygroups { let move_focus_keys = action_key_group( &normal_keymap, &[ - &[Action::MoveFocus(Direction::Left)], - &[Action::MoveFocusOrTab(Direction::Left)], - &[Action::MoveFocus(Direction::Down)], - &[Action::MoveFocus(Direction::Up)], - &[Action::MoveFocus(Direction::Right)], - &[Action::MoveFocusOrTab(Direction::Right)], + &[Action::MoveFocus { + direction: Direction::Left, + }], + &[Action::MoveFocusOrTab { + direction: Direction::Left, + }], + &[Action::MoveFocus { + direction: Direction::Down, + }], + &[Action::MoveFocus { + direction: Direction::Up, + }], + &[Action::MoveFocus { + direction: Direction::Right, + }], + &[Action::MoveFocusOrTab { + direction: Direction::Right, + }], ], ); // Let's see if we have some pretty groups in common here diff --git a/default-plugins/status-bar/src/tip/data/sync_tab.rs b/default-plugins/status-bar/src/tip/data/sync_tab.rs index 486e2aa2..b319ee0b 100644 --- a/default-plugins/status-bar/src/tip/data/sync_tab.rs +++ b/default-plugins/status-bar/src/tip/data/sync_tab.rs @@ -46,13 +46,17 @@ pub fn sync_tab_short(help: &ModeInfo) -> LinePart { fn add_keybinds(help: &ModeInfo) -> Vec<ANSIString> { let to_tab = action_key( &help.get_mode_keybinds(), - &[Action::SwitchToMode(InputMode::Tab)], + &[Action::SwitchToMode { + input_mode: InputMode::Tab, + }], ); let sync_tabs = action_key( &help.get_keybinds_for_mode(InputMode::Tab), &[ Action::ToggleActiveSyncTab, - Action::SwitchToMode(InputMode::Normal), + Action::SwitchToMode { + input_mode: InputMode::Normal, + }, ], ); |
