summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-08-06 02:22:23 +0000
committerBlaž Hrastnik2021-08-06 02:22:23 +0000
commitb20a5c4c0ef16bb0298d072ac7ac8450796b5954 (patch)
tree380861e48aefa1e59b8026caaefbaddcc8d54874
parent66a90130a5f99d769e9f6034025297f78ecaa3ec (diff)
ui: menu: Allow wrapping around on ctrl-p/shift tab
-rw-r--r--helix-term/src/ui/menu.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/helix-term/src/ui/menu.rs b/helix-term/src/ui/menu.rs
index 5a6f6256..1e1c5427 100644
--- a/helix-term/src/ui/menu.rs
+++ b/helix-term/src/ui/menu.rs
@@ -89,14 +89,15 @@ impl<T: Item> Menu<T> {
}
pub fn move_up(&mut self) {
- // TODO: wrap around to end
- let pos = self.cursor.map_or(0, |i| i.saturating_sub(1)) % self.matches.len();
+ let len = self.matches.len();
+ let pos = self.cursor.map_or(0, |i| (i + len.saturating_sub(1)) % len) % len;
self.cursor = Some(pos);
self.adjust_scroll();
}
pub fn move_down(&mut self) {
- let pos = self.cursor.map_or(0, |i| i + 1) % self.matches.len();
+ let len = self.matches.len();
+ let pos = self.cursor.map_or(0, |i| i + 1) % len;
self.cursor = Some(pos);
self.adjust_scroll();
}