Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 21 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,16 +209,17 @@ The default key bindings can be overridden. Please refer to [default-keybind.tom

#### Commit Detail

| Key | Description | Corresponding keybind |
| ----------------------------------- | ------------------------------- | ------------------------------- |
| <kbd>Esc</kbd> <kbd>Backspace</kbd> | Close commit details | `close` `cancel` |
| <kbd>Down/Up</kbd> <kbd>j/k</kbd> | Scroll down/up | `navigate_down` `navigate_up` |
| <kbd>Ctrl-f/b</kbd> | Scroll page down/up | `page_down` `page_up` |
| <kbd>Ctrl-d/u</kbd> | Scroll half page down/up | `half_page_down` `half_page_up` |
| <kbd>g/G</kbd> | Go to top/bottom | `go_to_top` `go_to_bottom` |
| <kbd>J/K</kbd> | Select older/newer commit | `select_down` `select_up` |
| <kbd>c/C</kbd> | Copy commit short/full hash | `short_copy` `full_copy` |
| <kbd>d</kbd> | Toggle custom user command view | `user_command_view_toggle_1` |
| Key | Description | Corresponding keybind |
| ------------------------------------ | ------------------------------- | ------------------------------- |
| <kbd>Esc</kbd> <kbd>Backspace</kbd> | Close commit details | `close` `cancel` |
| <kbd>Down/Up</kbd> <kbd>j/k</kbd> | Scroll down/up | `navigate_down` `navigate_up` |
| <kbd>Ctrl-f/b</kbd> | Scroll page down/up | `page_down` `page_up` |
| <kbd>Ctrl-d/u</kbd> | Scroll half page down/up | `half_page_down` `half_page_up` |
| <kbd>g/G</kbd> | Go to top/bottom | `go_to_top` `go_to_bottom` |
| <kbd>J/K</kbd> | Select older/newer commit | `select_down` `select_up` |
| <kbd>Alt-Down</kbd> <kbd>Alt-j</kbd> | Select parent commit | `go_to_parent` |
| <kbd>c/C</kbd> | Copy commit short/full hash | `short_copy` `full_copy` |
| <kbd>d</kbd> | Toggle custom user command view | `user_command_view_toggle_1` |

#### Refs List

Expand All @@ -233,15 +234,16 @@ The default key bindings can be overridden. Please refer to [default-keybind.tom

#### User Command

| Key | Description | Corresponding keybind |
| ------------------------------------------------ | --------------------------- | ------------------------------- |
| <kbd>Esc</kbd> <kbd>Backspace</kbd> <kbd>?</kbd> | Close user command | `close` `cancel` `help_toggle` |
| <kbd>Down/Up</kbd> <kbd>j/k</kbd> | Scroll down/up | `navigate_down` `navigate_up` |
| <kbd>J/K</kbd> | Scroll down/up | `select_down` `select_up` |
| <kbd>Ctrl-f/b</kbd> | Scroll page down/up | `page_down` `page_up` |
| <kbd>Ctrl-d/u</kbd> | Scroll half page down/up | `half_page_down` `half_page_up` |
| <kbd>g/G</kbd> | Go to top/bottom | `go_to_top` `go_to_bottom` |
| <kbd>J/K</kbd> | Select older/newer commit | `select_down` `select_up` |
| Key | Description | Corresponding keybind |
| ------------------------------------ | --------------------------- | ------------------------------- |
| <kbd>Esc</kbd> <kbd>Backspace</kbd> | Close user command | `close` `cancel` |
| <kbd>Down/Up</kbd> <kbd>j/k</kbd> | Scroll down/up | `navigate_down` `navigate_up` |
| <kbd>J/K</kbd> | Scroll down/up | `select_down` `select_up` |
| <kbd>Ctrl-f/b</kbd> | Scroll page down/up | `page_down` `page_up` |
| <kbd>Ctrl-d/u</kbd> | Scroll half page down/up | `half_page_down` `half_page_up` |
| <kbd>g/G</kbd> | Go to top/bottom | `go_to_top` `go_to_bottom` |
| <kbd>J/K</kbd> | Select older/newer commit | `select_down` `select_up` |
| <kbd>Alt-Down</kbd> <kbd>Alt-j</kbd> | Select parent commit | `go_to_parent` |

#### Help

Expand Down
11 changes: 11 additions & 0 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,9 @@ impl App<'_> {
AppEvent::SelectNewerCommit => {
self.select_newer_commit();
}
AppEvent::SelectParentCommit => {
self.select_parent_commit();
}
AppEvent::CopyToClipboard { name, value } => {
self.copy_to_clipboard(name, value);
}
Expand Down Expand Up @@ -553,6 +556,14 @@ impl App<'_> {
}
}

fn select_parent_commit(&mut self) {
if let View::Detail(ref mut view) = self.view {
view.select_parent_commit(self.repository);
} else if let View::UserCommand(ref mut view) = self.view {
view.select_parent_commit(self.repository, self.view_area);
}
}

fn clear_status_line(&mut self) {
self.status_line = StatusLine::None;
}
Expand Down
1 change: 1 addition & 0 deletions src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub enum AppEvent {
ClearHelp,
SelectNewerCommit,
SelectOlderCommit,
SelectParentCommit,
CopyToClipboard { name: String, value: String },
ClearStatusLine,
UpdateStatusInput(String, Option<u16>, Option<String>),
Expand Down
7 changes: 7 additions & 0 deletions src/view/detail.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ impl<'a> DetailView<'a> {
UserEvent::SelectUp => {
self.tx.send(AppEvent::SelectNewerCommit);
}
UserEvent::GoToParent => {
self.tx.send(AppEvent::SelectParentCommit);
}
UserEvent::ShortCopy => {
self.copy_commit_short_hash();
}
Expand Down Expand Up @@ -171,6 +174,10 @@ impl<'a> DetailView<'a> {
self.update_selected_commit(repository, |state| state.select_prev());
}

pub fn select_parent_commit(&mut self, repository: &Repository) {
self.update_selected_commit(repository, |state| state.select_parent());
}

fn update_selected_commit<F>(&mut self, repository: &Repository, update_commit_list_state: F)
where
F: FnOnce(&mut CommitListState<'a>),
Expand Down
2 changes: 2 additions & 0 deletions src/view/help.rs
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ fn build_lines(
(vec![UserEvent::GoToBottom], "Go to bottom".into()),
(vec![UserEvent::SelectDown], "Select older commit".into()),
(vec![UserEvent::SelectUp], "Select newer commit".into()),
(vec![UserEvent::GoToParent], "Select parent commit".into()),
(vec![UserEvent::ShortCopy], "Copy commit short hash".into()),
(vec![UserEvent::FullCopy], "Copy commit hash".into()),
];
Expand Down Expand Up @@ -320,6 +321,7 @@ fn build_lines(
(vec![UserEvent::GoToBottom], "Go to bottom".into()),
(vec![UserEvent::SelectDown], "Select older commit".into()),
(vec![UserEvent::SelectUp], "Select newer commit".into()),
(vec![UserEvent::GoToParent], "Select parent commit".into()),
];
user_command_helps.extend(user_command_view_toggle_helps);
let (user_command_key_lines, user_command_value_lines) = build_block_lines("User Command:", user_command_helps, color_theme, keybind);
Expand Down
7 changes: 7 additions & 0 deletions src/view/user_command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ impl<'a> UserCommandView<'a> {
UserEvent::SelectUp => {
self.tx.send(AppEvent::SelectNewerCommit);
}
UserEvent::GoToParent => {
self.tx.send(AppEvent::SelectParentCommit);
}
UserEvent::HelpToggle => {
self.tx.send(AppEvent::OpenHelp);
}
Expand Down Expand Up @@ -194,6 +197,10 @@ impl<'a> UserCommandView<'a> {
self.update_selected_commit(repository, view_area, |state| state.select_prev());
}

pub fn select_parent_commit(&mut self, repository: &Repository, view_area: Rect) {
self.update_selected_commit(repository, view_area, |state| state.select_parent());
}

fn update_selected_commit<F>(
&mut self,
repository: &Repository,
Expand Down