support more keys in textarea (#1820)

Added:
* C-m for newline (not sure if this is actually treated differently to
Enter, but tui-textarea handles it and it doesn't hurt)
* C-d to delete one char forwards (same as Del)
* A-bksp to delete backwards one word
* A-arrows to navigate by word
This commit is contained in:
Jeremy Rose
2025-08-04 11:25:01 -07:00
committed by GitHub
parent a6139aa003
commit 64cfbbd3c8

View File

@@ -210,7 +210,7 @@ impl TextArea {
..
} => self.insert_str(&c.to_string()),
KeyEvent {
code: KeyCode::Char('j'),
code: KeyCode::Char('j' | 'm'),
modifiers: KeyModifiers::CONTROL,
..
}
@@ -220,11 +220,22 @@ impl TextArea {
} => self.insert_str("\n"),
KeyEvent {
code: KeyCode::Backspace,
modifiers: KeyModifiers::ALT,
..
} => self.delete_backward_word(),
KeyEvent {
code: KeyCode::Backspace,
modifiers: KeyModifiers::NONE,
..
} => self.delete_backward(1),
KeyEvent {
code: KeyCode::Delete,
..
}
| KeyEvent {
code: KeyCode::Char('d'),
modifiers: KeyModifiers::CONTROL,
..
} => self.delete_forward(1),
KeyEvent {
@@ -303,14 +314,14 @@ impl TextArea {
}
KeyEvent {
code: KeyCode::Left,
modifiers: KeyModifiers::CONTROL,
modifiers: KeyModifiers::CONTROL | KeyModifiers::ALT,
..
} => {
self.set_cursor(self.beginning_of_previous_word());
}
KeyEvent {
code: KeyCode::Right,
modifiers: KeyModifiers::CONTROL,
modifiers: KeyModifiers::CONTROL | KeyModifiers::ALT,
..
} => {
self.set_cursor(self.end_of_next_word());