[Merged by Bors] - feat(ast,scanner): add end-pos support #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.
This adds end position support to the scanner and therefore the AST nodes. There's actually "two different" proposals in this PR for how this is implemented outside the scanner (in the two separate commits); the first is very light and definitely works, but is only implemented for
tactic
s,<|>
and;
(my usecase in Alectryon).The second commit hijacks
set_ast_pexpr
to also set the AST's positionm_end
, but I'm not sure in what variety of ways this method is used and so it may give (and as far as I can see, somewhat does) give some false results, but it's at least correct in the above 3 settings.I also modified
check_break_before
to use this new end-pos; this means that, for example, something like this:if you have the cursor anywhere between the
symmetry
and the comma, the tactic state will show the state the symmetry, and similarly after thesorry
token ends (although the "goals accomplished!" text can sometimes not show up). I think that I should do something similar forcheck_break_at_pos
, but I left it for now as I don't wanna accidentally break too much.