Skip to content

Commit

Permalink
feat: right Arrow to modify selected command (#2453)
Browse files Browse the repository at this point in the history
* right arrow functionality

* use or within match

* handles cursor not at end of line

* left cursor exits at start

* cargo fmt
  • Loading branch information
bboynton97 authored Nov 19, 2024
1 parent 6ab61e4 commit 4f0084a
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
4 changes: 4 additions & 0 deletions crates/atuin/src/command/client/search/cursor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ impl Cursor {
pub fn start(&mut self) {
self.index = 0;
}

pub fn position(&self) -> usize {
self.index
}
}

#[cfg(test)]
Expand Down
9 changes: 7 additions & 2 deletions crates/atuin/src/command/client/search/interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,9 @@ impl State {

let ctrl = input.modifiers.contains(KeyModifiers::CONTROL);
let esc_allow_exit = !(self.tab_index == 0 && self.keymap_mode == KeymapMode::VimInsert);
let cursor_at_end_of_line =
self.search.input.position() == UnicodeWidthStr::width(self.search.input.as_str());
let cursor_at_start_of_line = self.search.input.position() == 0;

// support ctrl-a prefix, like screen or tmux
if !self.prefix
Expand All @@ -221,12 +224,14 @@ impl State {
KeyCode::Esc if esc_allow_exit => Some(Self::handle_key_exit(settings)),
KeyCode::Char('[') if ctrl && esc_allow_exit => Some(Self::handle_key_exit(settings)),
KeyCode::Tab => Some(InputAction::Accept(self.results_state.selected())),
KeyCode::Right if cursor_at_end_of_line => {
Some(InputAction::Accept(self.results_state.selected()))
}
KeyCode::Left if cursor_at_start_of_line => Some(Self::handle_key_exit(settings)),
KeyCode::Char('o') if ctrl => {
self.tab_index = (self.tab_index + 1) % TAB_TITLES.len();

Some(InputAction::Continue)
}

_ => None,
};

Expand Down

0 comments on commit 4f0084a

Please sign in to comment.