9f1587c697
editor: Fix columnar selection coordinates ( #63723 )
...
Closes #63712
## Summary
- Use tab-expanded grapheme columns for Add Selection Above/Below when
`skip_soft_wrap` is enabled, rather than UTF-8 byte offsets or Unicode
scalar counts.
- Keep mouse rectangles pixel-based and preserve logical selection goals
across short rows, direction changes, and selection/text undo and redo.
- Reconcile columnar groups when selections change, while preserving
committed groups during cancellable mouse previews.
- Batch source and destination queries by row and skip fully replaced
input rows without a persistent row cache.
- Handle folds, inlays, and replacement blocks with small map-query
additions, and fix the tab bitmap boundary at a tab size of 128.
## Validation
- Full editor library suite: 1,109 passed, one ignored.
- Editor Clippy and scoped formatting passed.
- Regression checks failed without the corresponding lifecycle and
batching fixes, then passed with them restored.
- The three related sync/history tests were rerun and passed after the
final callback-variable renames.
Release Notes:
- Fixed columnar selections landing in the wrong column around non-ASCII
text, tabs, soft wraps, and collapsed content.
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev >
Co-authored-by: Kirill Bulatov <mail4score@gmail.com >
2026-09-16 16:40:28 +00:00
..
2026-09-14 14:04:09 +00:00
2026-08-20 10:08:48 +00:00
2026-09-01 15:52:33 +00:00
2026-09-04 10:39:14 +00:00
2026-09-16 16:03:50 +00:00
2026-09-16 16:03:09 +00:00
2026-09-16 16:03:50 +00:00
2026-09-07 16:34:18 +00:00
2026-09-16 16:03:50 +00:00
2026-09-09 14:50:23 +00:00
2026-09-15 14:52:14 +00:00
2026-08-20 10:08:48 +00:00
2026-08-31 17:37:00 +00:00
2026-08-20 10:08:48 +00:00
2026-08-19 14:32:19 +00:00
2026-08-19 14:32:19 +00:00
2026-08-20 10:08:48 +00:00
2026-08-24 20:32:44 +00:00
2026-09-09 14:31:14 +00:00
2026-06-01 04:40:13 +00:00
2026-09-01 15:52:33 +00:00
2026-08-09 22:29:52 +00:00
2026-08-28 11:51:00 +00:00
2026-08-31 11:58:50 +00:00
2026-08-26 14:33:13 +00:00
2026-09-03 14:38:23 +00:00
2026-09-09 09:30:38 +00:00
2026-09-03 14:38:23 +00:00
2026-08-20 17:53:44 +00:00
2026-09-04 22:54:09 +00:00
2026-09-11 09:13:44 +00:00
2026-08-27 16:21:41 +00:00
2026-06-05 10:32:57 +00:00
2026-09-15 09:58:45 +00:00
2026-06-05 10:32:57 +00:00
2026-05-29 07:06:57 +00:00
2026-09-07 19:01:41 +00:00
2026-08-29 22:33:39 +00:00
2026-08-28 18:06:41 +00:00
2026-09-15 23:25:47 +00:00
2026-07-30 10:34:16 +00:00
2026-08-31 15:29:14 +00:00
2026-08-20 10:08:48 +00:00
2026-08-26 14:33:13 +00:00
2026-08-20 10:08:48 +00:00
2026-04-24 10:29:51 +00:00
2026-05-13 23:35:10 +00:00
2026-09-08 07:12:28 +00:00
2026-09-16 09:49:13 +00:00
2026-09-04 03:02:13 +00:00
2026-08-27 12:55:42 +00:00
2026-08-09 22:29:52 +00:00
2026-09-11 09:13:44 +00:00
2026-09-07 19:01:41 +00:00
2026-08-31 12:04:06 +00:00
2026-08-20 10:08:48 +00:00
2026-08-20 16:42:42 +00:00
2026-09-07 16:23:05 +00:00
2026-09-16 16:40:28 +00:00
2026-06-05 19:24:28 +00:00
2026-08-27 16:21:41 +00:00
2026-09-02 18:21:25 +00:00
2026-09-11 09:13:44 +00:00
2026-08-20 10:08:48 +00:00
2026-09-02 18:21:25 +00:00
2026-09-09 15:16:15 +00:00
2026-08-20 10:08:48 +00:00
2026-09-07 19:01:41 +00:00
2026-09-07 19:01:41 +00:00
2026-09-09 12:27:32 +00:00
2026-08-04 15:35:05 +00:00
2026-05-04 06:30:47 +00:00
2026-08-27 16:21:41 +00:00
2026-08-27 20:11:28 +00:00
2026-09-15 20:04:06 +00:00
2026-09-07 15:18:49 +00:00
2026-07-30 12:59:16 +00:00
2026-09-03 11:14:41 +00:00
2026-08-21 21:31:55 +00:00
2026-09-14 20:15:15 +00:00
2026-09-07 16:23:05 +00:00
2026-08-20 10:08:48 +00:00
2026-09-15 21:04:22 +00:00
2026-09-16 16:04:28 +00:00
2026-09-11 21:09:33 +00:00
2026-09-12 18:16:10 +00:00
2026-09-16 13:41:43 +00:00
2026-09-07 15:18:49 +00:00
2026-09-16 16:02:58 +00:00
2026-09-01 21:39:47 +00:00
2026-06-16 13:47:55 +00:00
2026-09-07 15:18:49 +00:00
2026-09-16 13:17:03 +00:00
2026-09-14 21:18:17 +00:00
2026-09-16 06:30:27 +00:00
2026-09-14 07:33:49 +00:00
2026-09-07 15:18:49 +00:00
2026-08-11 15:16:03 +00:00
2026-08-26 14:33:13 +00:00
2026-07-14 15:29:30 +00:00
2026-08-31 14:36:04 +00:00
2026-08-26 21:36:59 +00:00
2026-09-16 16:00:19 +00:00
2026-09-16 16:02:58 +00:00
2026-06-22 18:20:57 +00:00
2026-08-20 10:08:48 +00:00
2026-08-27 17:09:28 +00:00
2026-09-07 16:23:05 +00:00
2026-09-14 20:29:36 +00:00
2026-09-09 14:31:14 +00:00
2026-08-28 13:19:29 +00:00
2026-09-02 18:23:27 +00:00
2026-09-16 16:03:30 +00:00
2026-09-16 09:00:29 +00:00
2026-09-16 09:49:13 +00:00
2026-09-15 21:04:22 +00:00
2026-08-27 16:21:41 +00:00
2026-09-09 14:31:14 +00:00
2026-09-09 14:31:14 +00:00
2026-08-27 16:21:41 +00:00
2026-08-26 14:33:13 +00:00
2026-09-09 13:49:13 +00:00
2026-09-02 15:41:05 +00:00
2026-09-02 15:41:05 +00:00
2026-09-16 16:02:58 +00:00
2026-09-09 13:47:28 +00:00
2026-09-16 16:04:13 +00:00
2026-09-09 14:31:14 +00:00
2026-09-04 10:54:29 +00:00
2026-09-02 18:21:25 +00:00
2026-09-02 18:21:25 +00:00
2026-09-11 21:33:11 +00:00
2026-08-21 07:28:05 +00:00
2026-08-25 09:46:30 +00:00
2026-09-16 16:04:24 +00:00
2026-08-20 10:08:48 +00:00
2026-09-08 21:44:06 +00:00
2026-08-20 10:08:48 +00:00
2026-05-14 21:03:56 +00:00
2026-09-16 09:00:29 +00:00
2026-08-27 16:21:41 +00:00
2026-09-15 14:52:14 +00:00
2026-08-27 16:21:41 +00:00
2026-09-02 15:41:05 +00:00
2026-09-02 13:50:06 +00:00
2026-09-16 09:49:13 +00:00
2026-08-28 03:28:04 +00:00
2026-09-12 19:03:48 +00:00
2026-08-19 12:16:37 +00:00
2026-07-15 08:33:25 +00:00
2026-09-16 16:03:09 +00:00
2026-07-14 17:18:23 +00:00
2026-08-18 07:00:34 +00:00
2026-06-13 05:21:05 +00:00
2026-09-16 16:04:28 +00:00
2026-09-07 19:01:41 +00:00
2026-09-15 16:33:57 +00:00
2026-08-28 11:51:00 +00:00
2026-08-27 12:55:42 +00:00
2026-09-09 14:55:56 +00:00
2026-07-23 22:46:06 +00:00
2026-09-10 17:54:38 +00:00
2026-07-27 18:20:35 +00:00
2026-09-07 15:18:49 +00:00
2026-08-18 10:02:20 +00:00
2026-09-16 16:03:26 +00:00
2026-09-07 19:01:41 +00:00
2026-08-20 10:08:48 +00:00
2026-08-20 10:08:48 +00:00
2026-09-11 09:13:44 +00:00
2026-09-02 18:21:25 +00:00
2026-08-31 13:35:07 +00:00
2026-08-20 10:08:48 +00:00
2026-08-31 11:41:34 +00:00
2026-08-24 10:41:04 +00:00
2026-09-15 11:49:56 +00:00
2026-09-16 16:03:50 +00:00
2026-09-04 15:28:40 +00:00
2026-06-23 09:33:47 +00:00
2026-09-16 16:03:50 +00:00
2026-05-05 16:25:56 +00:00
2026-09-15 14:53:12 +00:00
2026-07-20 11:17:43 +00:00
2026-09-16 15:58:12 +00:00
2026-08-27 16:21:41 +00:00
2026-09-09 15:11:24 +00:00
2026-08-09 22:29:52 +00:00
2026-05-27 19:33:04 +00:00
2026-08-20 10:08:48 +00:00
2026-07-20 04:08:28 +00:00
2026-08-28 03:28:04 +00:00
2026-05-04 06:30:47 +00:00
2026-09-09 09:09:25 +00:00
2026-08-31 12:04:06 +00:00
2026-08-18 07:58:21 +00:00
2026-08-20 10:08:48 +00:00
2026-08-20 10:08:48 +00:00
2026-08-27 06:40:50 +00:00
2026-09-07 15:18:49 +00:00
2026-08-28 18:05:57 +00:00
2026-09-11 15:19:53 +00:00
2026-07-29 20:59:24 +00:00
2026-08-27 16:21:41 +00:00
2026-09-11 15:19:53 +00:00
2026-05-28 19:43:30 +00:00
2026-09-04 17:19:04 +00:00
2026-08-28 17:31:36 +00:00
2026-09-16 16:03:09 +00:00
2026-07-01 04:25:40 +00:00
2026-05-29 07:06:57 +00:00
2026-06-08 14:59:39 +00:00
2026-09-16 16:03:18 +00:00
2026-09-15 15:27:26 +00:00
2026-09-10 06:33:43 +00:00
2026-08-20 10:08:48 +00:00
2026-08-20 10:08:48 +00:00
2026-09-03 09:35:53 +00:00
2026-05-01 22:33:54 +00:00
2026-09-16 16:03:50 +00:00
2026-09-15 11:49:56 +00:00
2026-09-07 19:01:41 +00:00
2026-08-28 14:06:27 +00:00
2026-09-16 07:01:45 +00:00
2026-09-16 16:00:19 +00:00
2026-09-03 09:35:53 +00:00
2026-08-20 10:08:48 +00:00
2026-08-09 22:29:52 +00:00
2026-09-01 21:39:47 +00:00
2026-09-01 21:39:47 +00:00
2026-09-01 21:39:47 +00:00