diff options
author | Michael Davis | 2024-01-25 19:05:42 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2024-01-28 09:13:33 +0000 |
commit | 5e0b3cc28b8ae6da1f41b47080a695c99bbc844a (patch) | |
tree | 9c20789f2d2aaa2ec691f3b3790c3eabf8b92955 /helix-core/src/match_brackets.rs | |
parent | 9978d421fe7237c74932c34263d91445728d65d1 (diff) |
Use injection syntax trees for bracket matching
Previously we used the root syntax tree for bracket matching. We can use
the new functionality in `Syntax` for finding the correct syntax tree
for a given byte range though so we use the correct syntax tree within
injections. This improves bracket matching behavior within HTML
injections like script or style tags for example.
Diffstat (limited to 'helix-core/src/match_brackets.rs')
-rw-r--r-- | helix-core/src/match_brackets.rs | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/helix-core/src/match_brackets.rs b/helix-core/src/match_brackets.rs index 150679b5..b8bcc28c 100644 --- a/helix-core/src/match_brackets.rs +++ b/helix-core/src/match_brackets.rs @@ -57,10 +57,10 @@ fn find_pair( pos_: usize, traverse_parents: bool, ) -> Option<usize> { - let tree = syntax.tree(); let pos = doc.char_to_byte(pos_); - let mut node = tree.root_node().descendant_for_byte_range(pos, pos + 1)?; + let root = syntax.tree_for_byte_range(pos, pos + 1).root_node(); + let mut node = root.descendant_for_byte_range(pos, pos + 1)?; loop { if node.is_named() { @@ -118,9 +118,7 @@ fn find_pair( }; node = parent; } - let node = tree - .root_node() - .named_descendant_for_byte_range(pos, pos + 1)?; + let node = root.named_descendant_for_byte_range(pos, pos + 1)?; if node.child_count() != 0 { return None; } |