Add new argument
vim text object (#7791)
This PR adds a new `argument` vim text object, inspired by [targets.vim](https://github.com/wellle/targets.vim). As it's the first vim text object to use the syntax tree, it needed to operate on the `Buffer` level, not the `MultiBuffer` level, then map the buffer coordinates to `DisplayPoint` as necessary. This required two main changes: 1. `innermost_enclosing_bracket_ranges` and `enclosing_bracket_ranges` were moved into `Buffer`. The `MultiBuffer` implementations were updated to map to/from these. 2. `MultiBuffer::excerpt_containing` was made public, returning a new `MultiBufferExcerpt` type that contains a reference to the excerpt and methods for mapping to/from `Buffer` and `MultiBuffer` offsets and ranges. Release Notes: - Added new `argument` vim text object, inspired by [targets.vim](https://github.com/wellle/targets.vim).
This commit is contained in:
parent
dc7e14f888
commit
2e616f8388
5 changed files with 392 additions and 93 deletions
|
@ -17,7 +17,7 @@ pub fn refresh_matching_bracket_highlights(editor: &mut Editor, cx: &mut ViewCon
|
|||
let snapshot = editor.snapshot(cx);
|
||||
if let Some((opening_range, closing_range)) = snapshot
|
||||
.buffer_snapshot
|
||||
.innermost_enclosing_bracket_ranges(head..head)
|
||||
.innermost_enclosing_bracket_ranges(head..head, None)
|
||||
{
|
||||
editor.highlight_background::<MatchingBracketHighlight>(
|
||||
vec![
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue