Fix cursor position for chars where char-width disagrees with terminal#90
Merged
Fix cursor position for chars where char-width disagrees with terminal#90
Conversation
…erminal Emacs' move-to-column uses char-width for column counting, which can disagree with libghostty's wcwidth-based columns for certain characters (e.g. box-drawing glyphs like ┃ on CJK/pgtk systems where char-width returns 2 but the terminal treats them as single-width). This caused the cursor to land on the wrong character. Replace move-to-column with a new positionCursorByCell helper that iterates the cursor row's terminal cells to compute the exact Emacs character offset for the target column, then uses goto-char. This is both correct (independent of char-width) and faster (avoids Elisp display-width scanning). Fixes #86
|
I tried this, and it is fixed by this PR. |
Owner
Author
|
Great. Thanks for testing and the wide-character hint :) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
┃) or other characters where Emacs'char-widthdisagrees with the terminal's column widthmove-to-column(which relies onchar-width) with a newpositionCursorByCellhelper that iterates the cursor row's terminal cells to compute the exact Emacs character offset, then usesgoto-charFixes #86
Test plan
zig build checkcompiles cleanly