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);
|
self.fold_creases(to_fold, true, window, cx);
|
||||||
} else {
|
} else {
|
||||||
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
||||||
|
let buffer_ids = self
|
||||||
let buffer_ids: HashSet<_> = multi_buffer_snapshot
|
.selections
|
||||||
.ranges_to_buffer_ranges(self.selections.disjoint_anchor_ranges())
|
.disjoint_anchor_ranges()
|
||||||
.map(|(snapshot, _, _)| snapshot.remote_id())
|
.flat_map(|range| multi_buffer_snapshot.buffer_ids_for_range(range))
|
||||||
.collect();
|
.collect::<HashSet<_>>();
|
||||||
for buffer_id in buffer_ids {
|
for buffer_id in buffer_ids {
|
||||||
self.fold_buffer(buffer_id, cx);
|
self.fold_buffer(buffer_id, cx);
|
||||||
}
|
}
|
||||||
|
@ -13195,10 +13195,11 @@ impl Editor {
|
||||||
self.unfold_ranges(&ranges, true, true, cx);
|
self.unfold_ranges(&ranges, true, true, cx);
|
||||||
} else {
|
} else {
|
||||||
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
let multi_buffer_snapshot = self.buffer.read(cx).snapshot(cx);
|
||||||
let buffer_ids: HashSet<_> = multi_buffer_snapshot
|
let buffer_ids = self
|
||||||
.ranges_to_buffer_ranges(self.selections.disjoint_anchor_ranges())
|
.selections
|
||||||
.map(|(snapshot, _, _)| snapshot.remote_id())
|
.disjoint_anchor_ranges()
|
||||||
.collect();
|
.flat_map(|range| multi_buffer_snapshot.buffer_ids_for_range(range))
|
||||||
|
.collect::<HashSet<_>>();
|
||||||
for buffer_id in buffer_ids {
|
for buffer_id in buffer_ids {
|
||||||
self.unfold_buffer(buffer_id, cx);
|
self.unfold_buffer(buffer_id, cx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3541,7 +3541,9 @@ impl MultiBufferSnapshot {
|
||||||
cursor.seek(&range.start);
|
cursor.seek(&range.start);
|
||||||
std::iter::from_fn(move || {
|
std::iter::from_fn(move || {
|
||||||
let region = cursor.region()?;
|
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;
|
return None;
|
||||||
}
|
}
|
||||||
cursor.next_excerpt();
|
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_position_translation(&snapshot);
|
||||||
assert_line_indents(&snapshot);
|
assert_line_indents(&snapshot);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue