feat: Enable CTRL-n and CTRL-p for navigating slash commands, files, history (#1994)
Adds CTRL-n and CTRL-p navigation for slash commands, files, and history. Closes #1992 Co-authored-by: Eric Traut <etraut@openai.com>
This commit is contained in:
@@ -410,6 +410,11 @@ impl ChatComposer {
|
|||||||
match key_event {
|
match key_event {
|
||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Up, ..
|
code: KeyCode::Up, ..
|
||||||
|
}
|
||||||
|
| KeyEvent {
|
||||||
|
code: KeyCode::Char('p'),
|
||||||
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
popup.move_up();
|
popup.move_up();
|
||||||
(InputResult::None, true)
|
(InputResult::None, true)
|
||||||
@@ -417,6 +422,11 @@ impl ChatComposer {
|
|||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Down,
|
code: KeyCode::Down,
|
||||||
..
|
..
|
||||||
|
}
|
||||||
|
| KeyEvent {
|
||||||
|
code: KeyCode::Char('n'),
|
||||||
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
popup.move_down();
|
popup.move_down();
|
||||||
(InputResult::None, true)
|
(InputResult::None, true)
|
||||||
@@ -584,6 +594,11 @@ impl ChatComposer {
|
|||||||
match key_event {
|
match key_event {
|
||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Up, ..
|
code: KeyCode::Up, ..
|
||||||
|
}
|
||||||
|
| KeyEvent {
|
||||||
|
code: KeyCode::Char('p'),
|
||||||
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
popup.move_up();
|
popup.move_up();
|
||||||
(InputResult::None, true)
|
(InputResult::None, true)
|
||||||
@@ -591,6 +606,11 @@ impl ChatComposer {
|
|||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Down,
|
code: KeyCode::Down,
|
||||||
..
|
..
|
||||||
|
}
|
||||||
|
| KeyEvent {
|
||||||
|
code: KeyCode::Char('n'),
|
||||||
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
popup.move_down();
|
popup.move_down();
|
||||||
(InputResult::None, true)
|
(InputResult::None, true)
|
||||||
@@ -870,6 +890,11 @@ impl ChatComposer {
|
|||||||
KeyEvent {
|
KeyEvent {
|
||||||
code: KeyCode::Up | KeyCode::Down,
|
code: KeyCode::Up | KeyCode::Down,
|
||||||
..
|
..
|
||||||
|
}
|
||||||
|
| KeyEvent {
|
||||||
|
code: KeyCode::Char('p') | KeyCode::Char('n'),
|
||||||
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
if self
|
if self
|
||||||
.history
|
.history
|
||||||
@@ -878,6 +903,8 @@ impl ChatComposer {
|
|||||||
let replace_text = match key_event.code {
|
let replace_text = match key_event.code {
|
||||||
KeyCode::Up => self.history.navigate_up(&self.app_event_tx),
|
KeyCode::Up => self.history.navigate_up(&self.app_event_tx),
|
||||||
KeyCode::Down => self.history.navigate_down(&self.app_event_tx),
|
KeyCode::Down => self.history.navigate_down(&self.app_event_tx),
|
||||||
|
KeyCode::Char('p') => self.history.navigate_up(&self.app_event_tx),
|
||||||
|
KeyCode::Char('n') => self.history.navigate_down(&self.app_event_tx),
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
if let Some(text) = replace_text {
|
if let Some(text) = replace_text {
|
||||||
|
|||||||
Reference in New Issue
Block a user