Improve FindMatchingBrace()
interface and implementation
#3319
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.
Rework
FindMatchingBrace()
interface and implementation: instead of passing a single brace pair toFindMatchingBrace()
, make it traverse all brace pairs inbuffer.BracePairs
on its own.This has the following advantages:
Makes
FindMatchingBrace()
easier to use, in particular much easier to use from Lua. See JumpToMatchingBrace inconsistent with adjacent unpaired braces e.g. )[ or }( or )( #3308)Lets
FindMatchingBrace()
ensure that we use just one matching brace - the higher-priority one. This fixes the following issues (first found in options: addmatchbracestyle
#2876 (comment)):when the cursor is on
[
:Both
[]
and()
pairs are highlighted, whereas the expected behavior is that only one pair is highlighted - the one that has higher priority, i.e. the one theJumpToMatchingBrace
action would jump to.JumpToMatchingBrace
incorrectly jumps to)
instead of]
(which should take higher priority in this case).In contrast, with
((foo)bar)
it works correctly.