feat(tui): add undo support to Editor with the Ctrl+- hotkey

Undo snapshots are captured for all edit operations:

- Word insertion, backspace, forward delete
- Word/line deletion (Ctrl+W, Ctrl+U, Ctrl+K, Alt+D)
- Yank/yank-pop, paste, autocomplete completion
- Cursor movement starts a new undo unit
- setText() pushes snapshot when content changes

Additionally, history browsing captures the undo state on first entry.
This commit is contained in:
Sviatoslav Abakumov 2026-01-18 13:42:36 +04:00 committed by Mario Zechner
parent c8db8e613f
commit bacf334bc4
5 changed files with 595 additions and 8 deletions

View file

@ -3446,6 +3446,7 @@ export class InteractiveMode {
const deleteToLineEnd = this.getEditorKeyDisplay("deleteToLineEnd");
const yank = this.getEditorKeyDisplay("yank");
const yankPop = this.getEditorKeyDisplay("yankPop");
const undo = this.getEditorKeyDisplay("undo");
const tab = this.getEditorKeyDisplay("tab");
// App keybindings
@ -3481,6 +3482,7 @@ export class InteractiveMode {
| \`${deleteToLineEnd}\` | Delete to end of line |
| \`${yank}\` | Paste the most-recently-deleted text |
| \`${yankPop}\` | Cycle through the deleted text after pasting |
| \`${undo}\` | Undo |
**Other**
| Key | Action |