aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author依云 <lilydjwg@gmail.com>2024-01-08 17:40:23 +0800
committerGitHub <noreply@github.com>2024-01-08 09:40:23 +0000
commit5bd0eed6c5b86cda85888d80f1b344bcb8ad1c2b (patch)
tree1d6caa0349d04561d5ff2312ab6a88b59f79a1cf
parentfeat: include atuin login in secret patterns (#1518) (diff)
downloadatuin-5bd0eed6c5b86cda85888d80f1b344bcb8ad1c2b.zip
feat(ui): add redraw (#1519)
replace old Ctrl-L shortcut and remove the opposite one (Ctrl-H). fixes #1507.
-rw-r--r--atuin/src/command/client/search/interactive.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/atuin/src/command/client/search/interactive.rs b/atuin/src/command/client/search/interactive.rs
index 14b80f78..a6275aac 100644
--- a/atuin/src/command/client/search/interactive.rs
+++ b/atuin/src/command/client/search/interactive.rs
@@ -44,6 +44,7 @@ enum InputAction {
ReturnOriginal,
ReturnQuery,
Continue,
+ Redraw,
}
#[allow(clippy::struct_field_names)]
@@ -169,9 +170,6 @@ impl State {
KeyCode::Left => {
self.search.input.left();
}
- KeyCode::Char('h') if ctrl => {
- self.search.input.left();
- }
KeyCode::Char('b') if ctrl => {
self.search.input.left();
}
@@ -184,7 +182,6 @@ impl State {
.input
.next_word(&settings.word_chars, settings.word_jump_mode),
KeyCode::Right => self.search.input.right(),
- KeyCode::Char('l') if ctrl => self.search.input.right(),
KeyCode::Char('f') if ctrl => self.search.input.right(),
KeyCode::Char('a') if ctrl => self.search.input.start(),
KeyCode::Home => self.search.input.start(),
@@ -286,6 +283,9 @@ impl State {
KeyCode::Char('p' | 'k') if ctrl && settings.invert => {
self.scroll_down(1);
}
+ KeyCode::Char('l') if ctrl => {
+ return InputAction::Redraw;
+ }
KeyCode::Char(c) => self.search.input.insert(c),
KeyCode::PageDown if !settings.invert => {
let scroll_len = self.results_state.max_entries() - settings.scroll_context_lines;
@@ -693,6 +693,10 @@ pub async fn history(
loop {
match app.handle_input(settings, &event::read()?, &mut std::io::stdout())? {
InputAction::Continue => {},
+ InputAction::Redraw => {
+ terminal.clear()?;
+ terminal.draw(|f| app.draw(f, &results, settings))?;
+ },
r => {
accept = app.accept;
break 'render r;
@@ -743,7 +747,7 @@ pub async fn history(
// * out of bounds -> usually implies no selected entry so we return the input
Ok(app.search.input.into_inner())
}
- InputAction::Continue => {
+ InputAction::Continue | InputAction::Redraw => {
unreachable!("should have been handled!")
}
}