Don't seek FilterCursor
upon creation
This lets us use `next` or `prev` to decide whether to park the cursor at the first or last filtered item. Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
f10fd6c419
commit
a6d0caf557
5 changed files with 58 additions and 50 deletions
|
@ -819,19 +819,18 @@ where
|
|||
{
|
||||
let start = buffer.anchor_before(range.start.to_offset(buffer));
|
||||
let end = buffer.anchor_after(range.end.to_offset(buffer));
|
||||
folds.filter::<_, usize>(
|
||||
move |summary| {
|
||||
let start_cmp = start.cmp(&summary.max_end, buffer).unwrap();
|
||||
let end_cmp = end.cmp(&summary.min_start, buffer).unwrap();
|
||||
let mut cursor = folds.filter::<_, usize>(move |summary| {
|
||||
let start_cmp = start.cmp(&summary.max_end, buffer).unwrap();
|
||||
let end_cmp = end.cmp(&summary.min_start, buffer).unwrap();
|
||||
|
||||
if inclusive {
|
||||
start_cmp <= Ordering::Equal && end_cmp >= Ordering::Equal
|
||||
} else {
|
||||
start_cmp == Ordering::Less && end_cmp == Ordering::Greater
|
||||
}
|
||||
},
|
||||
buffer,
|
||||
)
|
||||
if inclusive {
|
||||
start_cmp <= Ordering::Equal && end_cmp >= Ordering::Equal
|
||||
} else {
|
||||
start_cmp == Ordering::Less && end_cmp == Ordering::Greater
|
||||
}
|
||||
});
|
||||
cursor.next(buffer);
|
||||
cursor
|
||||
}
|
||||
|
||||
fn consolidate_buffer_edits(edits: &mut Vec<text::Edit<usize>>) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue