feat: gopls allow fuzzy matching with spelling errors #612
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.
Description
Before the fuzzy matching was skipped when not all characters could be matched. Now it's changed in favor of getting the score for the number of characters that match.
By debugging and trying to understand the current scoring mechanism I think I've understood
m.scoresis a matrix [length-candidate][length-pattern][another-dim].Before it was getting the score always from len(candidate) and len(pattern), but this is wrong in case we know the pattern has
xamount of char actually matching.So:
matchrequires full matching chars for short candidateUnit tests
I've added a few unit tests I thought showed the improvement.
Without my patch the failures in the new test cases are:
Manual QA
By trying to use the examples in the issue are satisfied, and in general it seems to match broader. I'm not entirely sure how to test false positives.
Fix: golang/go#74793