From 5fc8d72ed65b4f64733419566dfd0798d235aab4 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sun, 10 May 2020 13:12:06 +0200 Subject: [PATCH] fix home/end buttons on diff and add home button on file list (#43) --- src/components/changes.rs | 6 ++++++ src/components/diff.rs | 12 ++++++++++-- src/components/statustree.rs | 8 ++++++-- src/keys.rs | 3 +++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/changes.rs b/src/components/changes.rs index 73ff0af3..53dec652 100644 --- a/src/components/changes.rs +++ b/src/components/changes.rs @@ -358,6 +358,12 @@ impl Component for ChangesComponent { keys::MOVE_UP => { self.move_selection(MoveSelection::Up) } + keys::HOME => { + self.move_selection(MoveSelection::Home) + } + keys::SHIFT_UP => { + self.move_selection(MoveSelection::Home) + } keys::MOVE_LEFT => { self.move_selection(MoveSelection::Left) } diff --git a/src/components/diff.rs b/src/components/diff.rs index 0949cc9f..ddf3575f 100644 --- a/src/components/diff.rs +++ b/src/components/diff.rs @@ -374,11 +374,19 @@ impl Component for DiffComponent { self.scroll(ScrollType::Down); true } - KeyCode::End | KeyCode::Down if has_shift => { + KeyCode::Down if has_shift => { self.scroll(ScrollType::End); true } - KeyCode::Home | KeyCode::Up if has_shift => { + KeyCode::End => { + self.scroll(ScrollType::End); + true + } + KeyCode::Up if has_shift => { + self.scroll(ScrollType::Home); + true + } + KeyCode::Home => { self.scroll(ScrollType::Home); true } diff --git a/src/components/statustree.rs b/src/components/statustree.rs index c657a426..47976bdc 100644 --- a/src/components/statustree.rs +++ b/src/components/statustree.rs @@ -18,8 +18,10 @@ pub enum MoveSelection { Down, Left, Right, + Home, } +#[derive(Copy, Clone, Debug)] struct SelectionChange { new_index: usize, changes: bool, @@ -70,13 +72,15 @@ impl StatusTree { MoveSelection::Right => { self.selection_right(selection) } + MoveSelection::Home => SelectionChange::new(0, false), }; - let changed = selection_change.new_index != selection; + let changed_index = + selection_change.new_index != selection; self.selection = Some(selection_change.new_index); - changed || selection_change.changes + changed_index || selection_change.changes } else { false } diff --git a/src/keys.rs b/src/keys.rs index 8b665715..f1003589 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -27,8 +27,11 @@ pub const OPEN_COMMIT: KeyEvent = no_mod(KeyCode::Char('c')); pub const OPEN_HELP: KeyEvent = no_mod(KeyCode::Char('h')); pub const MOVE_LEFT: KeyEvent = no_mod(KeyCode::Left); pub const MOVE_RIGHT: KeyEvent = no_mod(KeyCode::Right); +pub const HOME: KeyEvent = no_mod(KeyCode::Home); pub const MOVE_UP: KeyEvent = no_mod(KeyCode::Up); pub const MOVE_DOWN: KeyEvent = no_mod(KeyCode::Down); +pub const SHIFT_UP: KeyEvent = + with_mod(KeyCode::Up, KeyModifiers::SHIFT); pub const STATUS_STAGE_FILE: KeyEvent = no_mod(KeyCode::Enter); pub const STATUS_RESET_FILE: KeyEvent = with_mod(KeyCode::Char('D'), KeyModifiers::SHIFT);