Benjamin Carlsson
9c7edd4bc3
Add Vim undo to the TUI composer ( #41941 )
...
## Why
Composer drafts include attachments, mention targets, and deferred paste payloads in addition to visible text. Vim undo needs to restore that complete state as a single edit.
## What changed
- Add bounded, draft-level Vim undo history, with `u` as the configurable default binding in normal mode.
- Group complete Vim commands and insert sessions into undo steps, including direct composer changes such as pastes and attachments.
- Preserve undo, repeat, and search state when a reverse-history preview is canceled, and start fresh history when another prompt is accepted.
## Testing
- Cover grouped edits, custom bindings, history and search interactions, attachments, and large paste payloads.
GitOrigin-RevId: 12ecdb3c34a2d66f5d856aa2f82dc15bd91b230b
2026-09-01 00:21:22 +00:00
..
2026-09-01 00:21:22 +00:00
2026-08-29 04:30:58 +00:00
2026-08-31 00:20:06 +00:00
2026-09-01 00:21:22 +00:00
2026-08-31 22:26:09 +00:00
2026-08-30 13:42:42 +00:00
2026-08-27 14:09:15 +00:00
2026-08-31 18:34:10 +00:00
2026-08-25 20:51:34 +00:00
2026-08-31 23:54:28 +00:00
2026-08-17 16:34:21 +00:00
2026-08-29 06:05:28 +00:00
2026-09-01 00:21:22 +00:00
2026-09-01 00:21:22 +00:00
2026-08-24 20:04:52 +00:00
2026-08-25 20:51:34 +00:00
2026-09-01 00:12:22 +00:00
2026-08-17 16:58:24 +00:00
2026-08-20 05:49:49 +00:00
2026-08-17 19:59:22 +00:00
2026-08-14 16:33:28 +00:00
2026-09-01 00:21:22 +00:00
2026-08-31 00:20:06 +00:00
2026-08-31 21:19:22 +00:00
2026-08-24 20:04:52 +00:00
2026-08-24 20:04:52 +00:00
2026-08-25 12:20:41 +00:00
2026-08-25 20:51:34 +00:00
2026-08-17 21:49:30 +00:00
2026-08-25 20:51:34 +00:00
2026-07-21 14:25:18 +00:00
2026-07-15 01:07:29 +00:00
2026-08-31 21:00:25 +00:00
2026-07-22 23:45:45 +00:00
2026-06-15 19:25:54 -07:00
2026-08-31 21:36:49 +00:00
2026-09-01 00:02:38 +00:00
2026-08-26 21:39:05 +00:00
2026-08-25 03:08:33 +00:00
2026-08-31 00:20:06 +00:00
2026-08-31 00:20:06 +00:00
2026-08-04 16:53:33 +00:00
2026-08-31 21:00:25 +00:00
2026-08-18 00:31:51 +00:00
2026-06-01 18:01:52 +02:00
2026-08-20 06:57:00 +00:00
2026-08-17 21:06:34 +00:00
2026-08-30 13:42:42 +00:00
2026-08-25 20:51:34 +00:00
2026-08-21 19:20:09 +00:00
2026-08-27 14:09:15 +00:00
2026-08-31 21:36:49 +00:00
2026-08-27 04:51:46 +00:00
2026-08-31 21:36:49 +00:00
2026-08-16 03:14:17 +00:00
2026-08-16 03:14:17 +00:00
2026-08-04 16:53:33 +00:00
2026-08-21 19:23:26 +00:00
2026-07-29 03:50:00 +00:00
2026-06-12 17:14:27 -07:00
2026-08-13 04:08:23 +00:00
2026-08-13 04:08:23 +00:00
2026-08-24 20:04:52 +00:00
2026-08-01 17:43:03 +00:00
2026-08-31 21:53:02 +00:00
2026-09-01 00:21:22 +00:00
2026-09-01 00:02:38 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-08-24 21:39:48 +00:00
2026-08-25 18:27:42 +00:00
2026-06-26 19:27:31 +00:00
2026-06-26 19:27:31 +00:00
2026-08-31 22:47:53 +00:00
2026-08-24 20:04:52 +00:00
2026-07-19 16:50:54 +00:00
2026-06-08 17:02:36 -07:00
2026-08-24 20:04:52 +00:00
2026-08-27 23:10:10 +00:00
2026-08-25 20:51:34 +00:00
2026-08-17 17:10:16 +00:00
2026-08-25 10:17:03 +00:00
2026-08-05 20:44:03 +00:00
2026-08-17 22:44:37 +00:00
2026-08-14 20:30:30 +00:00
2026-09-01 00:12:22 +00:00
2026-08-31 21:15:38 +00:00
2026-08-17 17:14:46 +00:00
2026-08-25 20:51:34 +00:00
2026-07-29 13:53:15 +00:00
2026-08-19 02:45:45 +00:00
2026-08-19 02:45:45 +00:00
2026-08-21 19:23:26 +00:00
2026-08-25 17:17:01 +00:00
2026-08-17 22:44:37 +00:00
2026-08-19 02:45:45 +00:00
2026-08-14 20:59:34 +00:00
2026-08-20 07:25:40 +00:00
2026-08-25 15:55:35 +00:00
2026-06-18 15:06:23 -07:00
2026-08-17 17:10:16 +00:00
2026-07-20 15:44:37 +00:00
2026-08-25 21:03:11 +00:00
2026-08-16 05:59:34 +00:00
2026-08-25 20:51:34 +00:00
2026-06-10 11:24:29 -07:00
2026-08-25 20:51:34 +00:00
2026-08-21 06:08:26 +00:00
2026-08-14 20:38:52 +00:00
2026-08-14 20:38:52 +00:00
2026-08-31 21:19:22 +00:00
2026-08-22 05:54:43 +00:00
2026-08-24 02:46:56 +00:00
2026-08-24 02:46:56 +00:00
2026-08-24 23:06:06 +00:00
2026-08-25 20:56:03 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 12:20:41 +00:00
2026-08-25 12:20:41 +00:00
2026-06-05 17:23:45 -07:00
2026-08-13 00:30:08 +00:00
2026-06-10 17:55:49 -07:00
2026-07-29 14:01:31 +00:00
2026-05-26 20:59:47 -07:00
2026-08-27 04:51:46 +00:00
2026-08-29 06:05:28 +00:00
2026-08-04 19:05:45 +00:00
2026-08-15 17:30:13 +00:00
2026-08-25 20:51:34 +00:00
2026-07-06 16:33:13 -04:00
2026-08-20 07:25:40 +00:00
2026-08-25 20:51:34 +00:00
2026-07-08 12:17:58 -04:00
2026-08-25 20:51:34 +00:00
2026-06-12 09:26:08 -07:00
2026-06-12 09:26:08 -07:00
2026-07-28 19:58:25 +00:00
2026-08-30 00:42:00 +00:00
2026-07-29 14:01:31 +00:00
2026-08-26 21:52:56 +00:00
2026-06-11 18:16:39 -07:00
2026-06-22 04:25:07 -07:00
2026-06-22 04:25:07 -07:00
2026-07-29 14:01:31 +00:00