Skip to content

Commit 32bd4e2

Browse files
author
Stephan Dilly
committed
support reverse tabbing (#92)
1 parent 55f9dd4 commit 32bd4e2

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
### Added
10+
- support reverse tabbing using shift+tab ([#92](https://github.com/extrawurst/gitui/issues/92))
11+
912
## [0.4.0] - 2020-05-25
1013

1114
### Added

src/app.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,11 @@ impl App {
128128
} else if let Event::Key(k) = ev {
129129
let new_flags = match k {
130130
keys::TAB_TOGGLE => {
131-
self.toggle_tabs()?;
131+
self.toggle_tabs(false)?;
132+
NeedsUpdate::COMMANDS
133+
}
134+
keys::TAB_TOGGLE_REVERSE => {
135+
self.toggle_tabs(true)?;
132136
NeedsUpdate::COMMANDS
133137
}
134138

@@ -235,12 +239,14 @@ impl App {
235239
]
236240
}
237241

238-
fn toggle_tabs(&mut self) -> Result<()> {
239-
let mut new_tab = self.tab + 1;
240-
{
241-
let tabs = self.get_tabs();
242-
new_tab %= tabs.len();
243-
}
242+
fn toggle_tabs(&mut self, reverse: bool) -> Result<()> {
243+
let tabs_len = self.get_tabs().len();
244+
let new_tab = if reverse {
245+
self.tab.wrapping_sub(1).min(tabs_len.saturating_sub(1))
246+
} else {
247+
self.tab.saturating_add(1) % tabs_len
248+
};
249+
244250
self.set_tab(new_tab)
245251
}
246252

src/keys.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const fn with_mod(
1515
}
1616

1717
pub const TAB_TOGGLE: KeyEvent = no_mod(KeyCode::Tab);
18+
pub const TAB_TOGGLE_REVERSE: KeyEvent = no_mod(KeyCode::BackTab);
1819
pub const FOCUS_WORKDIR: KeyEvent = no_mod(KeyCode::Char('1'));
1920
pub const FOCUS_STAGE: KeyEvent = no_mod(KeyCode::Char('2'));
2021
pub const FOCUS_RIGHT: KeyEvent = no_mod(KeyCode::Right);

0 commit comments

Comments
 (0)