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.BracePairson 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 theJumpToMatchingBraceaction would jump to.JumpToMatchingBraceincorrectly jumps to)instead of](which should take higher priority in this case).In contrast, with
((foo)bar)it works correctly.