Handle multibyte characters in RubyDocument #2669
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.
Motivation
Close #1251
In Shopify/ruby-lsp#2619, we modified the Index creation to handle multibyte characters. However, when processing requests from the LSP to calculate the target node, the character positions are calculated based on the PrismResult rather than the Index, so adjustments are needed in this part of the code as well.
Implementation
This Pull Request updates the
locate
function in RubyDocument to handle multibyte characters .Automated Tests
I added simple test cases for it and the definition request.
Manual Tests
I have tested this on multiple projects (including those with Japanese) and confirmed that the definition jump and hover functions work as intended.