feat: improve scope detection and calculation #805
+31
−8
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.
This uses the exact cursor position to find the treesitter node used when finding the scope, which improves scope detection in Python, Lua and presumably some other languages too.
New behavior:
Old wrong behavior that the above fixes:
Importantly, it doesn't change the
language_for_range
calculation, which from what I can tell is the reason the other range was starting at column 0 of the current row.I also added an early exit to the scope calculation if the node didn't change (
TSNode:equal(TSNode)
tests that the nodes are in the same tree and the ids are equal), so we can skip the slightly slower calculations after that step (joining and going through tables). This should slightly speed up the calculation in a lot of cases (given all the auto commands used), but it is less important than the other change.This should close #799.