diff options
author | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-08 04:12:58 +0530 |
---|---|---|
committer | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-08 05:04:40 +0530 |
commit | f9a9cdf9f827a5e08b1bcc6035f908fdb971c9fd (patch) | |
tree | 63ce753de98a285c69e8ae4837c771cc5c17ab9a | |
parent | eae992fbf0b0f0adaf8feffcb0e4903deabc562e (diff) |
Pune/India: Don't try to go down as marked items are removed
-rw-r--r-- | src/interactive/app/eventloop.rs | 2 | ||||
-rw-r--r-- | src/interactive/widgets/help.rs | 12 | ||||
-rw-r--r-- | src/interactive/widgets/mark.rs | 19 |
3 files changed, 18 insertions, 15 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs index 56a2bd9..92c1dee 100644 --- a/src/interactive/app/eventloop.rs +++ b/src/interactive/app/eventloop.rs @@ -112,7 +112,7 @@ impl TerminalApp { Char('d') => self.mark_entry(true), Char('u') | Backspace | Left => self.exit_node(), Char('o') | Char('\n') | Right => self.enter_node(), - Ctrl('u') => self.change_entry_selection(CursorDirection::PageUp), + Ctrl('u') => self.change_entry_selection(CursorDirection::PageUp), Char('k') | Up => self.change_entry_selection(CursorDirection::Up), Char('j') | Down => self.change_entry_selection(CursorDirection::Down), Ctrl('d') => self.change_entry_selection(CursorDirection::PageDown), diff --git a/src/interactive/widgets/help.rs b/src/interactive/widgets/help.rs index bfe5563..ef04c51 100644 --- a/src/interactive/widgets/help.rs +++ b/src/interactive/widgets/help.rs @@ -103,8 +103,16 @@ impl HelpPane { { hotkey("j/<down>", "move down an entry", None); hotkey("k/<up>", "move up an entry", None); - hotkey("o/<enter>/<right>", "descent into the selected directory", None); - hotkey("u/<left>", "ascent one level into the parent directory", None); + hotkey( + "o/<enter>/<right>", + "descent into the selected directory", + None, + ); + hotkey( + "u/<left>", + "ascent one level into the parent directory", + None, + ); hotkey("<backspace>", "^", None); hotkey("Ctrl + d", "move down 10 entries at once", None); hotkey("<Page Down>", "^", None); diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs index 3156ad3..a25465c 100644 --- a/src/interactive/widgets/mark.rs +++ b/src/interactive/widgets/mark.rs @@ -95,22 +95,17 @@ impl MarkPane { fn remove_selected_and_move_down(&mut self) { if let Some(selected) = self.selected { - let idx = { - self.marked - .iter() - .sorted_by_key(|(_, v)| &v.index) - .skip(selected) - .map(|(k, _)| k) - .next() - .cloned() - }; - if let Some(idx) = idx { + let sorted_entries: Vec<_> = self + .marked + .iter() + .sorted_by_key(|(_, v)| &v.index) + .collect(); + if let Some(idx) = sorted_entries.get(selected).map(|(k, _)| *k.to_owned()) { self.marked.remove(&idx); - self.change_selection(CursorDirection::Down); } } } - + fn change_selection(&mut self, direction: CursorDirection) { self.selected = self.selected.map(|selected| { direction |