Skip to content

Commit 9f4a1e8

Browse files
authored
objdiff-cli diff: Reduce duplicate key event code (#51)
1 parent ed5d092 commit 9f4a1e8

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

objdiff-cli/src/cmd/diff.rs

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -408,39 +408,28 @@ impl FunctionDiffUi {
408408
// Quit
409409
KeyCode::Esc | KeyCode::Char('q') => return FunctionDiffResult::Break,
410410
// Page up
411-
KeyCode::PageUp => {
412-
self.scroll_y = self.scroll_y.saturating_sub(self.per_page);
413-
self.redraw = true;
414-
}
411+
KeyCode::PageUp => self.page_up(false),
415412
// Page up (shift + space)
416413
KeyCode::Char(' ') if event.modifiers.contains(KeyModifiers::SHIFT) => {
417-
self.scroll_y = self.scroll_y.saturating_sub(self.per_page);
418-
self.redraw = true;
414+
self.page_up(false)
419415
}
420416
// Page down
421-
KeyCode::Char(' ') | KeyCode::PageDown => {
422-
self.scroll_y += self.per_page;
423-
self.redraw = true;
424-
}
417+
KeyCode::Char(' ') | KeyCode::PageDown => self.page_down(false),
425418
// Page down (ctrl + f)
426419
KeyCode::Char('f') if event.modifiers.contains(KeyModifiers::CONTROL) => {
427-
self.scroll_y += self.per_page;
428-
self.redraw = true;
420+
self.page_down(false)
429421
}
430422
// Page up (ctrl + b)
431423
KeyCode::Char('b') if event.modifiers.contains(KeyModifiers::CONTROL) => {
432-
self.scroll_y = self.scroll_y.saturating_sub(self.per_page);
433-
self.redraw = true;
424+
self.page_up(false)
434425
}
435426
// Half page down (ctrl + d)
436427
KeyCode::Char('d') if event.modifiers.contains(KeyModifiers::CONTROL) => {
437-
self.scroll_y += self.per_page / 2;
438-
self.redraw = true;
428+
self.page_down(true)
439429
}
440430
// Half page up (ctrl + u)
441431
KeyCode::Char('u') if event.modifiers.contains(KeyModifiers::CONTROL) => {
442-
self.scroll_y = self.scroll_y.saturating_sub(self.per_page / 2);
443-
self.redraw = true;
432+
self.page_up(true)
444433
}
445434
// Scroll down
446435
KeyCode::Down | KeyCode::Char('j') => {
@@ -517,6 +506,16 @@ impl FunctionDiffUi {
517506
FunctionDiffResult::Continue
518507
}
519508

509+
fn page_up(&mut self, half: bool) {
510+
self.scroll_y = self.scroll_y.saturating_sub(self.per_page / if half { 2 } else { 1 });
511+
self.redraw = true;
512+
}
513+
514+
fn page_down(&mut self, half: bool) {
515+
self.scroll_y += self.per_page / if half { 2 } else { 1 };
516+
self.redraw = true;
517+
}
518+
520519
fn print_sym(
521520
&self,
522521
out: &mut Text,

0 commit comments

Comments
 (0)