From 735264bb3d673c943e2e8c4898dba0609f49b3f4 Mon Sep 17 00:00:00 2001 From: lukeflo Date: Sun, 20 Oct 2024 18:14:17 +0200 Subject: Implement Sorting, jumping multiple entries - Select a column with `j` and `l` - Sort selected column with `s` (toggles regular and reversed order) - Jump list up/down by 5 entries Vim-style using `C-d` and `C-u` --- src/frontend/handler.rs | 49 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) (limited to 'src/frontend/handler.rs') diff --git a/src/frontend/handler.rs b/src/frontend/handler.rs index ec1647e..39ec7a2 100644 --- a/src/frontend/handler.rs +++ b/src/frontend/handler.rs @@ -49,23 +49,33 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App, tui: &mut Tui) -> R // Keycodes for the tag area CurrentArea::TagArea => match key_event.code { KeyCode::Down => { - app.select_next_tag(); + app.select_next_tag(1); } KeyCode::Up => { - app.select_previous_tag(); + app.select_previous_tag(1); } KeyCode::Char('j') => { if key_event.modifiers == KeyModifiers::ALT { app.scroll_info_down(); } else { - app.select_next_tag(); + app.select_next_tag(1); } } KeyCode::Char('k') => { if key_event.modifiers == KeyModifiers::ALT { app.scroll_info_up(); } else { - app.select_previous_tag(); + app.select_previous_tag(1); + } + } + KeyCode::Char('d') => { + if key_event.modifiers == KeyModifiers::CONTROL { + app.select_next_tag(5) + } + } + KeyCode::Char('u') => { + if key_event.modifiers == KeyModifiers::CONTROL { + app.select_previous_tag(5) } } KeyCode::Char('g') | KeyCode::Home => { @@ -96,23 +106,35 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App, tui: &mut Tui) -> R // Keycodes for the entry area CurrentArea::EntryArea => match key_event.code { KeyCode::Down => { - app.select_next_entry(); + app.select_next_entry(1); } KeyCode::Up => { - app.select_previous_entry(); + app.select_previous_entry(1); } KeyCode::Char('j') => { if key_event.modifiers == KeyModifiers::ALT { app.scroll_info_down(); } else { - app.select_next_entry(); + app.select_next_entry(1); } } KeyCode::Char('k') => { if key_event.modifiers == KeyModifiers::ALT { app.scroll_info_up(); } else { - app.select_previous_entry(); + app.select_previous_entry(1); + } + } + KeyCode::Char('d') => { + if key_event.modifiers == KeyModifiers::CONTROL { + app.select_next_entry(5); + } + } + KeyCode::Char('u') => { + if key_event.modifiers == KeyModifiers::CONTROL { + app.select_previous_entry(5); + } else { + app.open_doi_url()?; } } KeyCode::Char('g') | KeyCode::Home => { @@ -121,8 +143,14 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App, tui: &mut Tui) -> R KeyCode::Char('G') | KeyCode::End => { app.select_last_entry(); } + KeyCode::Char('h') => { + app.select_prev_column(); + } + KeyCode::Char('l') => { + app.select_next_column(); + } KeyCode::Char('s') => { - app.entry_table.sort_entry_table("author", true); + app.entry_table.sort_entry_table(true); } KeyCode::Char('y') => { App::yank_text(&app.get_selected_citekey()); @@ -133,9 +161,6 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App, tui: &mut Tui) -> R KeyCode::Char('o') => { app.open_connected_file()?; } - KeyCode::Char('u') => { - app.open_doi_url()?; - } KeyCode::Char('/') => { app.enter_search_area(); } -- cgit v1.2.3