@@ -50,6 +50,10 @@ fn find_pair(syntax: &Syntax, doc: &Rope, pos: usize, traverse_parents: bool) ->
50
50
let tree = syntax. tree ( ) ;
51
51
let pos = doc. char_to_byte ( pos) ;
52
52
53
+ if is_valid_bracket ( doc. char ( pos) ) {
54
+ return find_matching_bracket_plaintext ( doc, pos) ;
55
+ }
56
+
53
57
let mut node = tree. root_node ( ) . named_descendant_for_byte_range ( pos, pos) ?;
54
58
55
59
loop {
@@ -85,10 +89,7 @@ fn find_pair(syntax: &Syntax, doc: &Rope, pos: usize, traverse_parents: bool) ->
85
89
///
86
90
/// If no matching bracket is found, `None` is returned.
87
91
#[ must_use]
88
- pub fn find_matching_bracket_current_line_plaintext (
89
- doc : & Rope ,
90
- cursor_pos : usize ,
91
- ) -> Option < usize > {
92
+ pub fn find_matching_bracket_plaintext ( doc : & Rope , cursor_pos : usize ) -> Option < usize > {
92
93
// Don't do anything when the cursor is not on top of a bracket.
93
94
let bracket = doc. char ( cursor_pos) ;
94
95
if !is_valid_bracket ( bracket) {
@@ -169,10 +170,10 @@ mod tests {
169
170
fn test_find_matching_bracket_current_line_plaintext ( ) {
170
171
let assert = |input : & str , pos, expected| {
171
172
let input = & Rope :: from ( input) ;
172
- let actual = find_matching_bracket_current_line_plaintext ( input, pos) ;
173
+ let actual = find_matching_bracket_plaintext ( input, pos) ;
173
174
assert_eq ! ( expected, actual. unwrap( ) ) ;
174
175
175
- let actual = find_matching_bracket_current_line_plaintext ( input, expected) ;
176
+ let actual = find_matching_bracket_plaintext ( input, expected) ;
176
177
assert_eq ! ( pos, actual. unwrap( ) , "expected symmetrical behaviour" ) ;
177
178
} ;
178
179
0 commit comments