# editor: Fix columnar selection coordinates \(\#63723\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/3d91988e46c481bc70813d6b55cd3d6b112c63d3)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 3d91988e46c481bc70813d6b55cd3d6b112c63d3

Requested commit: 3d91988e46c481bc70813d6b55cd3d6b112c63d3

Commit: 3d91988e46c481bc70813d6b55cd3d6b112c63d3

Tree: 2731a34c6bc9097838e2d07b5df2c3c3a52c9224

Author: itsfuad

Committer: GitHub

## Message

```
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>
```

## Parents

- [0dea8c63d9a5d747b3d0903adb110a9def1d1020](https://git.cafe/gitcafe/zed/commit/0dea8c63d9a5d747b3d0903adb110a9def1d1020?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/3d91988e46c481bc70813d6b55cd3d6b112c63d3?format=markdown)
