Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add width awareness to fix wrapping of strings with full width chars#839

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

Merged
sebastinas merged 1 commit intobpython:masterfromrybarczykj:wrapping
Sep 6, 2020

Conversation

@rybarczykj
Copy link
Contributor

This is a redux of#731 which was put on hold until a need for width awareness was found. I'd say this is a decent justification for bringing it back

Wrapping strings with fullwidth chars
Here's the same string being typed before and after width awareness:
image

image

New method to fix cursor position:
When we put a 2-column character at the end of the line where there's only 1 column of room, curtsies adds a padding character (space) so we can kick it down to the line below. Therefore, in order to get the right cursor position, I had to add a method that determines how many padding chars there are (number_of_padding_chars_on_current_cursor_line).

Note on this method: Right now, to determine the amount of padding, it callsdisplay_linize, doubling the amount of times we call that function. It's definitely possible to keep track of this as a variable in the repl class instead, or to do some changes other to ensure less redundant work is done. Feedback appreciated.

Runtime
One of the barriers stopping us from implementing this before was runtime . I did not find any noticeable difference when pasting, printing, or moving my cursor around large strings.

@rybarczykjrybarczykj marked this pull request as ready for reviewAugust 11, 2020 18:59
@sebastinas
Copy link
Contributor

Could you please rebase this PR?

rybarczykj reacted with thumbs up emoji

@rybarczykj
Copy link
ContributorAuthor

rybarczykj commentedAug 17, 2020
edited
Loading

Just noticed a bug with this; maybe don't accept yet.

width_aware_splitlines throws an error and bpython crashes when the user printes format strings by importing curtsies. This is because wcswidth can't parse strings that look like this'\x1b[36m\x1b[42ma\x1b[49m\x1b[39m'. Maybe we should just try to use the old method if an error like this is thrown.

@rybarczykj
Copy link
ContributorAuthor

That bug I mentioned ^^ is fixed now, as of that last push. Now, if wcswidth throws an error, we catch it and use the old display_linize.

I also added some relevant tests.

- update display_linize to use curtsies 3.0 width functionality- correct cursor positioning on wrapped fullwidth chars by adding new method- add test coverage
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@sebastinassebastinassebastinas left review comments

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@rybarczykj@sebastinas

[8]ページ先頭

©2009-2025 Movatter.jp