Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-130273: Fix incorrectly colored error locations when wide unicode characters exists#130277
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
for i in range(start, len(line)): | ||
if width <= 0: | ||
return i, line[start:i] | ||
width -= 2 if east_asian_width(line[i]) in _WIDE_CHAR_SPECIFIERS else 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
does this correctly handle zero-width characters? e.g. the '\u0301' from 'cafe\u0301'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
No.
However,_display_width()
does not correctly handle zero-width characters for carets positions either.
>>> café = 1/0Traceback (most recent call last): File"<python-input-0>", line1, in<module> café=1/0~^~ZeroDivisionError:division by zero>>>
They can be fixed in the same way. I wonder how I can find all the zero-width characters.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
It looks like there are many zero-width characters:https://wcwidth.readthedocs.io/en/latest/specs.html#width-of-0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This is howwcwidth
implementswcswidth()
andwcwidth()
:https://wcwidth.readthedocs.io/en/latest/_modules/wcwidth/wcwidth.html#wcswidth
Maybe it is too complicated for our traceback? Could we have a simple way that can handle most of the cases?
Uh oh!
There was an error while loading.Please reload this page.