Fix display of special characters in finder popups #4215
Merged
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.
PR Prelude
Thank you for working on YCM! :)
Please complete these steps and check these boxes (by putting an
x
insidethe brackets) before filing your PR:
rationale for why I haven't.
actually perform all of these steps.
Why this change is necessary and useful
Previously len( desc ) and len( path ) counted bytes, which was wrong for non-ascii characters. A string like
čđš
should have the length of 3 when calculating the number of spaces between the identifier and the file path.That brings us to choosing the right string length function. The choices are:
čđš
is 3,čđ\tš
is 4. Not sure what happens in the face of zero width joiners.čđš
is 3 andčđ\tš
is 9 (assumingtabstop
is 8).Tabs do not appear in identifier names, but double width emojis might? Tabs can appear in file names though. If there's more than one tab in the file name, using
strcharlen
will push the file path text off screen.I do not know if there's a performance penalty for using
strdisplaywidth
overstrcharlen
.This change is