diff --git a/default-plugins/status-bar/src/first_line.rs b/default-plugins/status-bar/src/first_line.rs index 68ee1bcaf5..24d82067e5 100644 --- a/default-plugins/status-bar/src/first_line.rs +++ b/default-plugins/status-bar/src/first_line.rs @@ -252,141 +252,33 @@ pub fn superkey(palette: ColoredElements, separator: &str) -> LinePart { pub fn ctrl_keys(help: &ModeInfo, max_len: usize, separator: &str) -> LinePart { let colored_elements = color_elements(help.palette); + // Unselect all by default + let mut default_keys = [ + KeyShortcut::new(KeyMode::Unselected, KeyAction::Lock), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Pane), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Tab), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Resize), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Move), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Scroll), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Session), + KeyShortcut::new(KeyMode::Unselected, KeyAction::Quit), + ]; + match &help.mode { - InputMode::Locked => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Disabled, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Resize => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Pane | InputMode::RenamePane => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Tab | InputMode::RenameTab => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Scroll => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Move => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Normal | InputMode::Prompt => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Session => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Selected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), - InputMode::Tmux => key_indicators( - max_len, - &[ - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Lock), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Pane), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Tab), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Resize), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Move), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Scroll), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Session), - CtrlKeyShortcut::new(CtrlKeyMode::Unselected, CtrlKeyAction::Quit), - ], - colored_elements, - separator, - ), + InputMode::Normal | InputMode::Prompt | InputMode::Tmux => (), + InputMode::Locked => { + default_keys[0].mode = KeyMode::Selected; + for idx in 1..=7 { + default_keys[idx].mode = KeyMode::Disabled; + } + } + InputMode::Pane | InputMode::RenamePane => default_keys[1].mode = KeyMode::Selected, + InputMode::Tab | InputMode::RenameTab => default_keys[2].mode = KeyMode::Selected, + InputMode::Resize => default_keys[3].mode = KeyMode::Selected, + InputMode::Move => default_keys[4].mode = KeyMode::Selected, + InputMode::Scroll => default_keys[5].mode = KeyMode::Selected, + InputMode::Session => default_keys[6].mode = KeyMode::Selected, } + + key_indicators(max_len, &default_keys, colored_elements, separator) }