Allow unfolding deleted buffers in project diff w/ keyboard (#25835)
Release Notes: - N/A
This commit is contained in:
parent
ec88a6886f
commit
1c4c568068
3 changed files with 32 additions and 10 deletions
|
@ -13018,11 +13018,11 @@ impl Editor {
|
|||
self.fold_creases(to_fold, true, window, cx);
|
||||
} else {
|
||||
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
||||
|
||||
let buffer_ids: HashSet<_> = multi_buffer_snapshot
|
||||
.ranges_to_buffer_ranges(self.selections.disjoint_anchor_ranges())
|
||||
.map(|(snapshot, _, _)| snapshot.remote_id())
|
||||
.collect();
|
||||
let buffer_ids = self
|
||||
.selections
|
||||
.disjoint_anchor_ranges()
|
||||
.flat_map(|range| multi_buffer_snapshot.buffer_ids_for_range(range))
|
||||
.collect::<HashSet<_>>();
|
||||
for buffer_id in buffer_ids {
|
||||
self.fold_buffer(buffer_id, cx);
|
||||
}
|
||||
|
@ -13195,10 +13195,11 @@ impl Editor {
|
|||
self.unfold_ranges(&ranges, true, true, cx);
|
||||
} else {
|
||||
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
||||
let buffer_ids: HashSet<_> = multi_buffer_snapshot
|
||||
.ranges_to_buffer_ranges(self.selections.disjoint_anchor_ranges())
|
||||
.map(|(snapshot, _, _)| snapshot.remote_id())
|
||||
.collect();
|
||||
let buffer_ids = self
|
||||
.selections
|
||||
.disjoint_anchor_ranges()
|
||||
.flat_map(|range| multi_buffer_snapshot.buffer_ids_for_range(range))
|
||||
.collect::<HashSet<_>>();
|
||||
for buffer_id in buffer_ids {
|
||||
self.unfold_buffer(buffer_id, cx);
|
||||
}
|
||||
|
|
|
@ -3541,7 +3541,9 @@ impl MultiBufferSnapshot {
|
|||
cursor.seek(&range.start);
|
||||
std::iter::from_fn(move || {
|
||||
let region = cursor.region()?;
|
||||
if region.range.start >= range.end {
|
||||
if region.range.start > range.end
|
||||
|| region.range.start == range.end && region.range.start > range.start
|
||||
{
|
||||
return None;
|
||||
}
|
||||
cursor.next_excerpt();
|
||||
|
|
|
@ -2035,6 +2035,25 @@ fn test_diff_hunks_with_multiple_excerpts(cx: &mut TestAppContext) {
|
|||
]
|
||||
);
|
||||
|
||||
let buffer_ids_by_range = [
|
||||
(Point::new(0, 0)..Point::new(0, 0), &[id_1] as &[_]),
|
||||
(Point::new(0, 0)..Point::new(2, 0), &[id_1]),
|
||||
(Point::new(2, 0)..Point::new(2, 0), &[id_1]),
|
||||
(Point::new(3, 0)..Point::new(3, 0), &[id_1]),
|
||||
(Point::new(8, 0)..Point::new(9, 0), &[id_1]),
|
||||
(Point::new(8, 0)..Point::new(10, 0), &[id_1, id_2]),
|
||||
(Point::new(9, 0)..Point::new(9, 0), &[id_2]),
|
||||
];
|
||||
for (range, buffer_ids) in buffer_ids_by_range {
|
||||
assert_eq!(
|
||||
snapshot
|
||||
.buffer_ids_for_range(range.clone())
|
||||
.collect::<Vec<_>>(),
|
||||
buffer_ids,
|
||||
"buffer_ids_for_range({range:?}"
|
||||
);
|
||||
}
|
||||
|
||||
assert_position_translation(&snapshot);
|
||||
assert_line_indents(&snapshot);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue