Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug fix when the prompt contains ESC chars #135

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

olegat
Copy link

@olegat olegat commented Feb 28, 2017

refreshSingleLine would use strlen to count the number of
"forward" operations to send to the cursor. This causes the
cursor to move too far off if the prompt contains ANSI
color codes. Example:

"\x1b[1mHello> \x1b[0m" contains 15 characters, but only 7
on rendered on the terminal, so refreshSingleLine would
move the cursor forward too much.

The function strlenPerceived counts the number of non
escaped characters which appears to fix this bug.

refreshSingleLine would use strlen to count the number of
"forward" operations to send to the cursor. This causes the
cursor to move too far off if the prompt contains ANSI
color codes. Example:

"\x1b[1mHello> \x1b[0m" contains 15 characters, but only 7
on rendered on the terminal, so refreshSingleLine would
move the cursor forward too much.

The function strlenPerceived counts the number of non
escaped characters which appears to fix this bug.
SquidDev added a commit to SquidDev/urn that referenced this pull request Aug 9, 2017
This prevents accessing history being slightly odd in readline based
inputs.

As antirez/linenoise#135 hasn't been merged,
linenoise will break on coloured inputs - sadly there isn't much
we can do about that, so let's strip them.
@rain-1
Copy link

rain-1 commented May 15, 2018

Merged rain-1@0e3cf08

apainintheneck added a commit to apainintheneck/crystal-linenoise that referenced this pull request Feb 6, 2024
The cursor based its offset on the literal length of the line not
the visual length of the line which caused problems when using
escape codes. This fix was pulled in from an upstream branch and
it fixes the calculation for the cursor.

Note: This bug is still present in the multiline version though.

- antirez/linenoise#135
- https://github.com/olegat
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants