@@ -81,8 +81,8 @@ mod wrap_map;
pub use crate::display_map::{fold_map::FoldMap, inlay_map::InlayMap, tab_map::TabMap};
pub use block_map::{
Block, BlockChunks as DisplayChunks, BlockContext, BlockId, BlockMap, BlockPlacement,
- BlockPoint, BlockProperties, BlockRows, BlockStyle, CustomBlockId, EditorMargins, RenderBlock,
- StickyHeaderExcerpt,
+ BlockPoint, BlockProperties, BlockRows, BlockStyle, CompanionView, CustomBlockId,
+ EditorMargins, RenderBlock, StickyHeaderExcerpt,
};
pub use crease_map::*;
pub use fold_map::{
@@ -357,7 +357,7 @@ impl DisplayMap {
old: WrapRow(0)..snapshot.max_point().row(),
new: WrapRow(0)..snapshot.max_point().row(),
}]);
- self.block_map.read(snapshot, edits, None, None);
+ self.block_map.read(snapshot, edits, None);
return;
};
@@ -381,11 +381,14 @@ impl DisplayMap {
let companion_wrap_data = companion_display_map
.update(cx, |dm, cx| dm.sync_through_wrap(cx))
.ok();
-
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view =
+ companion_wrap_data
+ .as_ref()
+ .zip(companion)
+ .map(|((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ });
let edits = Patch::new(
[text::Edit {
@@ -395,12 +398,8 @@ impl DisplayMap {
.into_iter()
.collect(),
);
- self.block_map.read(
- snapshot.clone(),
- edits.clone(),
- companion_wrap_edits,
- companion.map(|c| (c, self.entity_id)),
- );
+ self.block_map
+ .read(snapshot.clone(), edits.clone(), companion_view);
if let Some((companion_dm, _)) = &self.companion {
let _ = companion_dm.update(cx, |dm, _cx| {
@@ -409,8 +408,8 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&snapshot, &edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref
+ .map(|c| CompanionView::new(dm.entity_id, &snapshot, &edits, c)),
);
}
});
@@ -453,19 +452,19 @@ impl DisplayMap {
.update(cx, |dm, cx| dm.sync_through_wrap(cx))
.ok()
});
-
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let block_snapshot = self
.block_map
.read(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
)
.snapshot;
@@ -476,8 +475,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -508,7 +513,7 @@ impl DisplayMap {
let block_snapshot = self
.block_map
- .read(wrap_snapshot, wrap_edits, None, None)
+ .read(wrap_snapshot, wrap_edits, None)
.snapshot;
DisplaySnapshot {
@@ -558,10 +563,6 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
-
let (snapshot, edits) = self.inlay_map.sync(buffer_snapshot.clone(), edits);
let (mut fold_map, snapshot, edits) = self.fold_map.write(snapshot, edits);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -569,13 +570,15 @@ impl DisplayMap {
.wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
- self.block_map.read(
- snapshot,
- edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.read(snapshot, edits, companion_view);
+ }
let inline = creases.iter().filter_map(|crease| {
if let Crease::Inline {
@@ -597,17 +600,16 @@ impl DisplayMap {
let (self_wrap_snapshot, self_wrap_edits) =
(self_new_wrap_snapshot.clone(), self_new_wrap_edits.clone());
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
-
- let mut block_map = self.block_map.write(
- self_new_wrap_snapshot,
- self_new_wrap_edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ let mut block_map = {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map
+ .write(self_new_wrap_snapshot, self_new_wrap_edits, companion_view)
+ };
let blocks = creases.into_iter().filter_map(|crease| {
if let Crease::Block {
range,
@@ -652,8 +654,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -678,10 +686,6 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
-
let (snapshot, edits) = self.inlay_map.sync(snapshot, edits);
let (mut fold_map, snapshot, edits) = self.fold_map.write(snapshot, edits);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -689,13 +693,15 @@ impl DisplayMap {
.wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
- self.block_map.read(
- snapshot,
- edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.read(snapshot, edits, companion_view);
+ }
let (snapshot, edits) = fold_map.remove_folds(ranges, type_id);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -706,17 +712,16 @@ impl DisplayMap {
let (self_wrap_snapshot, self_wrap_edits) =
(self_new_wrap_snapshot.clone(), self_new_wrap_edits.clone());
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
-
- self.block_map.write(
- self_new_wrap_snapshot,
- self_new_wrap_edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map
+ .write(self_new_wrap_snapshot, self_new_wrap_edits, companion_view);
+ }
if let Some((companion_dm, _)) = &self.companion {
let _ = companion_dm.update(cx, |dm, cx| {
@@ -725,8 +730,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -755,10 +766,6 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
-
let (snapshot, edits) = self.inlay_map.sync(snapshot, edits);
let (mut fold_map, snapshot, edits) = self.fold_map.write(snapshot, edits);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -766,13 +773,15 @@ impl DisplayMap {
.wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
- self.block_map.read(
- snapshot,
- edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.read(snapshot, edits, companion_view);
+ }
let (snapshot, edits) =
fold_map.unfold_intersecting(offset_ranges.iter().cloned(), inclusive);
@@ -784,17 +793,19 @@ impl DisplayMap {
let (self_wrap_snapshot, self_wrap_edits) =
(self_new_wrap_snapshot.clone(), self_new_wrap_edits.clone());
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
-
- let mut block_map = self.block_map.write(
- self_new_wrap_snapshot.clone(),
- self_new_wrap_edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ let mut block_map = {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.write(
+ self_new_wrap_snapshot.clone(),
+ self_new_wrap_edits,
+ companion_view,
+ )
+ };
block_map.remove_intersecting_replace_blocks(offset_ranges, inclusive);
if let Some((companion_dm, _)) = &self.companion {
@@ -804,8 +815,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -824,16 +841,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
block_map.disable_header_for_buffer(buffer_id);
@@ -844,8 +862,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -883,16 +907,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
block_map.fold_buffers(buffer_ids.iter().copied(), self.buffer.read(cx), cx);
@@ -911,8 +936,14 @@ impl DisplayMap {
let mut block_map = dm.block_map.write(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
if !their_buffer_ids.is_empty() {
block_map.fold_buffers(their_buffer_ids, dm.buffer.read(cx), cx);
@@ -954,16 +985,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
block_map.unfold_buffers(buffer_ids.iter().copied(), self.buffer.read(cx), cx);
@@ -982,8 +1014,14 @@ impl DisplayMap {
let mut block_map = dm.block_map.write(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
if !their_buffer_ids.is_empty() {
block_map.unfold_buffers(their_buffer_ids, dm.buffer.read(cx), cx);
@@ -1037,16 +1075,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
let result = block_map.insert(blocks);
@@ -1057,8 +1096,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -1077,16 +1122,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
block_map.resize(heights);
@@ -1097,8 +1143,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -1120,16 +1172,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let mut block_map = self.block_map.write(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
block_map.remove(ids);
@@ -1140,8 +1193,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -1162,16 +1221,17 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
let block_map = self.block_map.read(
self_wrap_snapshot.clone(),
self_wrap_edits.clone(),
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
+ companion_view,
);
let block_row = block_map.row_for_block(block_id)?;
@@ -1182,8 +1242,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -1298,10 +1364,6 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
-
let (snapshot, edits) = self.inlay_map.sync(snapshot, edits);
let (mut fold_map, snapshot, edits) = self.fold_map.write(snapshot, edits);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -1309,13 +1371,15 @@ impl DisplayMap {
.wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
- self.block_map.read(
- snapshot,
- edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.read(snapshot, edits, companion_view);
+ }
let (snapshot, edits) = fold_map.update_fold_widths(widths);
let widths_changed = !edits.is_empty();
@@ -1327,17 +1391,16 @@ impl DisplayMap {
let (self_wrap_snapshot, self_wrap_edits) =
(self_new_wrap_snapshot.clone(), self_new_wrap_edits.clone());
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
-
- self.block_map.read(
- self_new_wrap_snapshot,
- self_new_wrap_edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map
+ .read(self_new_wrap_snapshot, self_new_wrap_edits, companion_view);
+ }
if let Some((companion_dm, _)) = &self.companion {
let _ = companion_dm.update(cx, |dm, cx| {
@@ -1346,8 +1409,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -1380,10 +1449,6 @@ impl DisplayMap {
.ok()
});
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
-
let (snapshot, edits) = self.inlay_map.sync(buffer_snapshot, edits);
let (snapshot, edits) = self.fold_map.read(snapshot, edits);
let (snapshot, edits) = self.tab_map.sync(snapshot, edits, tab_size);
@@ -1391,13 +1456,15 @@ impl DisplayMap {
.wrap_map
.update(cx, |map, cx| map.sync(snapshot, edits, cx));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
- self.block_map.read(
- snapshot,
- edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map.read(snapshot, edits, companion_view);
+ }
let (snapshot, edits) = self.inlay_map.splice(to_remove, to_insert);
let (snapshot, edits) = self.fold_map.read(snapshot, edits);
@@ -1409,17 +1476,16 @@ impl DisplayMap {
let (self_wrap_snapshot, self_wrap_edits) =
(self_new_wrap_snapshot.clone(), self_new_wrap_edits.clone());
- let companion_wrap_edits = companion_wrap_data
- .as_ref()
- .map(|(snapshot, edits)| (snapshot, edits));
- let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
-
- self.block_map.read(
- self_new_wrap_snapshot,
- self_new_wrap_edits,
- companion_wrap_edits,
- companion_ref.map(|c| (c, self.entity_id)),
- );
+ {
+ let companion_ref = self.companion.as_ref().map(|(_, c)| c.read(cx));
+ let companion_view = companion_wrap_data.as_ref().zip(companion_ref).map(
+ |((snapshot, edits), companion)| {
+ CompanionView::new(self.entity_id, snapshot, edits, companion)
+ },
+ );
+ self.block_map
+ .read(self_new_wrap_snapshot, self_new_wrap_edits, companion_view);
+ }
if let Some((companion_dm, _)) = &self.companion {
let _ = companion_dm.update(cx, |dm, cx| {
@@ -1428,8 +1494,14 @@ impl DisplayMap {
dm.block_map.read(
companion_snapshot,
companion_edits,
- Some((&self_wrap_snapshot, &self_wrap_edits)),
- their_companion_ref.map(|c| (c, dm.entity_id)),
+ their_companion_ref.map(|c| {
+ CompanionView::new(
+ dm.entity_id,
+ &self_wrap_snapshot,
+ &self_wrap_edits,
+ c,
+ )
+ }),
);
}
});
@@ -57,10 +57,14 @@ pub struct BlockMapWriter<'a> {
companion: Option<BlockMapWriterCompanion<'a>>,
}
-struct BlockMapWriterCompanion<'a> {
- companion: &'a Companion,
- snapshot: &'a WrapSnapshot,
- entity: EntityId,
+struct BlockMapWriterCompanion<'a>(CompanionView<'a>);
+
+impl<'a> Deref for BlockMapWriterCompanion<'a> {
+ type Target = CompanionView<'a>;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
}
#[derive(Clone)]
@@ -514,6 +518,30 @@ pub struct BlockRows<'a> {
started: bool,
}
+#[derive(Clone, Copy)]
+pub struct CompanionView<'a> {
+ entity_id: EntityId,
+ wrap_snapshot: &'a WrapSnapshot,
+ wrap_edits: &'a WrapPatch,
+ companion: &'a Companion,
+}
+
+impl<'a> CompanionView<'a> {
+ pub(crate) fn new(
+ entity_id: EntityId,
+ wrap_snapshot: &'a WrapSnapshot,
+ wrap_edits: &'a WrapPatch,
+ companion: &'a Companion,
+ ) -> Self {
+ Self {
+ entity_id,
+ wrap_snapshot,
+ wrap_edits,
+ companion,
+ }
+ }
+}
+
impl BlockMap {
#[ztracing::instrument(skip_all)]
pub fn new(
@@ -542,7 +570,6 @@ impl BlockMap {
new: WrapRow(0)..row_count,
}]),
None,
- None,
);
map
}
@@ -552,10 +579,9 @@ impl BlockMap {
&self,
wrap_snapshot: WrapSnapshot,
edits: WrapPatch,
- companion_wrap_edits: Option<(&WrapSnapshot, &WrapPatch)>,
- companion: Option<(&Companion, EntityId)>,
+ companion_view: Option<CompanionView>,
) -> BlockMapReader<'_> {
- self.sync(&wrap_snapshot, edits, companion_wrap_edits, companion);
+ self.sync(&wrap_snapshot, edits, companion_view);
*self.wrap_snapshot.borrow_mut() = wrap_snapshot.clone();
BlockMapReader {
blocks: &self.custom_blocks,
@@ -574,23 +600,13 @@ impl BlockMap {
&'a mut self,
wrap_snapshot: WrapSnapshot,
edits: WrapPatch,
- companion_wrap_edits: Option<(&'a WrapSnapshot, &'a WrapPatch)>,
- companion: Option<(&'a Companion, EntityId)>,
+ companion_view: Option<CompanionView<'a>>,
) -> BlockMapWriter<'a> {
- self.sync(&wrap_snapshot, edits, companion_wrap_edits, companion);
+ self.sync(&wrap_snapshot, edits, companion_view);
*self.wrap_snapshot.borrow_mut() = wrap_snapshot;
- let companion = match (companion_wrap_edits, companion) {
- (Some(_), None) | (None, Some(_)) => unreachable!(),
- (None, None) => None,
- (Some(companion_wrap_edits), Some(companion)) => Some(BlockMapWriterCompanion {
- companion: companion.0,
- snapshot: companion_wrap_edits.0,
- entity: companion.1,
- }),
- };
BlockMapWriter {
block_map: self,
- companion,
+ companion: companion_view.map(BlockMapWriterCompanion),
}
}
@@ -599,8 +615,7 @@ impl BlockMap {
&self,
wrap_snapshot: &WrapSnapshot,
mut edits: WrapPatch,
- companion_wrap_edits: Option<(&WrapSnapshot, &WrapPatch)>,
- companion: Option<(&Companion, EntityId)>,
+ companion_view: Option<CompanionView>,
) {
let buffer = wrap_snapshot.buffer_snapshot();
@@ -622,8 +637,13 @@ impl BlockMap {
}
// Pull in companion edits to ensure we recompute spacers in ranges that have changed in the companion.
- if let Some((companion_new_snapshot, companion_edits)) = companion_wrap_edits
- && let Some((companion, display_map_id)) = companion
+ if let Some(CompanionView {
+ wrap_snapshot: companion_new_snapshot,
+ wrap_edits: companion_edits,
+ companion,
+ entity_id: display_map_id,
+ ..
+ }) = companion_view
{
let mut companion_edits_in_my_space: Vec<WrapEdit> = companion_edits
.clone()
@@ -893,8 +913,12 @@ impl BlockMap {
},
));
- if let Some((companion_snapshot, _)) = companion_wrap_edits
- && let Some((companion, display_map_id)) = companion
+ if let Some(CompanionView {
+ wrap_snapshot: companion_snapshot,
+ companion,
+ entity_id: display_map_id,
+ ..
+ }) = companion_view
{
blocks_in_edit.extend(self.spacer_blocks(
(start_bound, end_bound),
@@ -1495,18 +1519,20 @@ impl BlockMapWriter<'_> {
}
let default_patch = Patch::default();
- let (companion_snapshot, companion) = self
- .companion
- .as_ref()
- .map(|companion| {
- (
- (companion.snapshot, &default_patch),
- (companion.companion, companion.entity),
- )
- })
- .unzip();
- self.block_map
- .sync(wrap_snapshot, edits, companion_snapshot, companion);
+ self.block_map.sync(
+ wrap_snapshot,
+ edits,
+ self.companion.as_deref().map(
+ |&CompanionView {
+ entity_id,
+ wrap_snapshot,
+ companion,
+ ..
+ }| {
+ CompanionView::new(entity_id, wrap_snapshot, &default_patch, companion)
+ },
+ ),
+ );
ids
}
@@ -1563,18 +1589,20 @@ impl BlockMapWriter<'_> {
}
let default_patch = Patch::default();
- let (companion_snapshot, companion) = self
- .companion
- .as_ref()
- .map(|companion| {
- (
- (companion.snapshot, &default_patch),
- (companion.companion, companion.entity),
- )
- })
- .unzip();
- self.block_map
- .sync(wrap_snapshot, edits, companion_snapshot, companion);
+ self.block_map.sync(
+ wrap_snapshot,
+ edits,
+ self.companion.as_deref().map(
+ |&CompanionView {
+ entity_id,
+ wrap_snapshot,
+ companion,
+ ..
+ }| {
+ CompanionView::new(entity_id, wrap_snapshot, &default_patch, companion)
+ },
+ ),
+ );
}
#[ztracing::instrument(skip_all)]
@@ -1621,19 +1649,20 @@ impl BlockMapWriter<'_> {
.custom_blocks_by_id
.retain(|id, _| !block_ids.contains(id));
let default_patch = Patch::default();
- let (companion_snapshot, companion) = self
- .companion
- .as_ref()
- .map(|companion| {
- (
- (companion.snapshot, &default_patch),
- (companion.companion, companion.entity),
- )
- })
- .unzip();
-
- self.block_map
- .sync(wrap_snapshot, edits, companion_snapshot, companion);
+ self.block_map.sync(
+ wrap_snapshot,
+ edits,
+ self.companion.as_deref().map(
+ |&CompanionView {
+ entity_id,
+ wrap_snapshot,
+ companion,
+ ..
+ }| {
+ CompanionView::new(entity_id, wrap_snapshot, &default_patch, companion)
+ },
+ ),
+ );
}
#[ztracing::instrument(skip_all)]
@@ -1715,18 +1744,20 @@ impl BlockMapWriter<'_> {
}
let default_patch = Patch::default();
- let (companion_snapshot, companion) = self
- .companion
- .as_ref()
- .map(|companion| {
- (
- (companion.snapshot, &default_patch),
- (companion.companion, companion.entity),
- )
- })
- .unzip();
- self.block_map
- .sync(&wrap_snapshot, edits, companion_snapshot, companion);
+ self.block_map.sync(
+ &wrap_snapshot,
+ edits,
+ self.companion.as_deref().map(
+ |&CompanionView {
+ entity_id,
+ wrap_snapshot,
+ companion,
+ ..
+ }| {
+ CompanionView::new(entity_id, wrap_snapshot, &default_patch, companion)
+ },
+ ),
+ );
}
#[ztracing::instrument(skip_all)]
@@ -2531,7 +2562,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
let block_ids = writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -2556,7 +2587,7 @@ mod tests {
},
]);
- let snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot, Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\n\nbbb\nccc\nddd\n\n\n");
let blocks = snapshot
@@ -2681,7 +2712,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let snapshot = block_map.read(wraps_snapshot, wrap_edits, None, None);
+ let snapshot = block_map.read(wraps_snapshot, wrap_edits, None);
assert_eq!(snapshot.text(), "aaa\n\nb!!!\n\n\nbb\nccc\nddd\n\n\n");
}
@@ -2734,7 +2765,7 @@ mod tests {
let (_, wraps_snapshot) = WrapMap::new(tab_snapshot, font, font_size, Some(wrap_width), cx);
let block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot, Default::default(), None);
// Each excerpt has a header above and footer below. Excerpts are also *separated* by a newline.
assert_eq!(snapshot.text(), "\nBuff\ner 1\n\nBuff\ner 2\n\nBuff\ner 3");
@@ -2769,7 +2800,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
let block_ids = writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -2795,64 +2826,64 @@ mod tests {
]);
{
- let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\n\nbbb\nccc\nddd\n\n\n");
let mut block_map_writer =
- block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ block_map.write(wraps_snapshot.clone(), Default::default(), None);
let mut new_heights = HashMap::default();
new_heights.insert(block_ids[0], 2);
block_map_writer.resize(new_heights);
- let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\n\n\nbbb\nccc\nddd\n\n\n");
}
{
let mut block_map_writer =
- block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ block_map.write(wraps_snapshot.clone(), Default::default(), None);
let mut new_heights = HashMap::default();
new_heights.insert(block_ids[0], 1);
block_map_writer.resize(new_heights);
- let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\n\nbbb\nccc\nddd\n\n\n");
}
{
let mut block_map_writer =
- block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ block_map.write(wraps_snapshot.clone(), Default::default(), None);
let mut new_heights = HashMap::default();
new_heights.insert(block_ids[0], 0);
block_map_writer.resize(new_heights);
- let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\nbbb\nccc\nddd\n\n\n");
}
{
let mut block_map_writer =
- block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ block_map.write(wraps_snapshot.clone(), Default::default(), None);
let mut new_heights = HashMap::default();
new_heights.insert(block_ids[0], 3);
block_map_writer.resize(new_heights);
- let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(snapshot.text(), "aaa\n\n\n\n\n\nbbb\nccc\nddd\n\n\n");
}
{
let mut block_map_writer =
- block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ block_map.write(wraps_snapshot.clone(), Default::default(), None);
let mut new_heights = HashMap::default();
new_heights.insert(block_ids[0], 3);
block_map_writer.resize(new_heights);
- let snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot, Default::default(), None);
// Same height as before, should remain the same
assert_eq!(snapshot.text(), "aaa\n\n\n\n\n\nbbb\nccc\nddd\n\n\n");
}
@@ -2874,7 +2905,7 @@ mod tests {
});
let mut block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -2894,7 +2925,7 @@ mod tests {
// Blocks with an 'above' disposition go above their corresponding buffer line.
// Blocks with a 'below' disposition go below their corresponding buffer line.
- let snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let snapshot = block_map.read(wraps_snapshot, Default::default(), None);
assert_eq!(
snapshot.text(),
"one two \nthree\n\nfour five \nsix\n\nseven \neight"
@@ -2918,7 +2949,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
let replace_block_id = writer.insert(vec![BlockProperties {
style: BlockStyle::Fixed,
placement: BlockPlacement::Replace(
@@ -2930,7 +2961,7 @@ mod tests {
priority: 0,
}])[0];
- let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None);
assert_eq!(blocks_snapshot.text(), "line1\n\n\n\n\nline5");
let buffer_snapshot = buffer.update(cx, |buffer, cx| {
@@ -2944,7 +2975,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let blocks_snapshot = block_map.read(wraps_snapshot, wrap_edits, None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot, wrap_edits, None);
assert_eq!(blocks_snapshot.text(), "line1\n\n\n\n\nline5");
let buffer_snapshot = buffer.update(cx, |buffer, cx| {
@@ -2967,11 +2998,11 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let blocks_snapshot = block_map.read(wraps_snapshot.clone(), wrap_edits, None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot.clone(), wrap_edits, None);
assert_eq!(blocks_snapshot.text(), "line1\n\n\n\n\nline5");
// Blocks inserted right above the start or right below the end of the replaced region are hidden.
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -2995,12 +3026,11 @@ mod tests {
priority: 0,
},
]);
- let blocks_snapshot =
- block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(blocks_snapshot.text(), "\nline1\n\n\n\n\nline5");
// Ensure blocks inserted *inside* replaced region are hidden.
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -3024,14 +3054,13 @@ mod tests {
priority: 0,
},
]);
- let blocks_snapshot =
- block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(blocks_snapshot.text(), "\nline1\n\n\n\n\nline5");
// Removing the replace block shows all the hidden blocks again.
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
writer.remove(HashSet::from_iter([replace_block_id]));
- let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None);
assert_eq!(
blocks_snapshot.text(),
"\nline1\n\nline2\n\n\nline 2.1\nline2.2\nline 2.3\nline 2.4\n\nline4\n\nline5"
@@ -3084,7 +3113,7 @@ mod tests {
let (_, wrap_snapshot) =
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wrap_snapshot.clone(), 2, 1);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
assert_eq!(
blocks_snapshot.text(),
@@ -3114,7 +3143,7 @@ mod tests {
]
);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
let excerpt_blocks_2 = writer.insert(vec![
BlockProperties {
style: BlockStyle::Fixed,
@@ -3155,7 +3184,7 @@ mod tests {
},
]);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
assert_eq!(
blocks_snapshot.text(),
"\n\n111\n\n\n\n222\n\n\n333\n\n444\n\n\n\n\n555\n\n666\n"
@@ -3189,7 +3218,7 @@ mod tests {
]
);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id_1], buffer, cx);
});
@@ -3200,7 +3229,7 @@ mod tests {
render: Arc::new(|_| div().into_any()),
priority: 0,
}]);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
let blocks = blocks_snapshot
.blocks_in_range(BlockRow(0)..BlockRow(u32::MAX))
.collect::<Vec<_>>();
@@ -3257,11 +3286,11 @@ mod tests {
]
);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id_2], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
let blocks = blocks_snapshot
.blocks_in_range(BlockRow(0)..BlockRow(u32::MAX))
.collect::<Vec<_>>();
@@ -3310,11 +3339,11 @@ mod tests {
]
);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.unfold_buffers([buffer_id_1], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
let blocks = blocks_snapshot
.blocks_in_range(BlockRow(0)..BlockRow(u32::MAX))
.collect::<Vec<_>>();
@@ -3366,11 +3395,11 @@ mod tests {
]
);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id_3], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None);
let blocks = blocks_snapshot
.blocks_in_range(BlockRow(0)..BlockRow(u32::MAX))
.collect::<Vec<_>>();
@@ -3429,15 +3458,15 @@ mod tests {
let (_, wrap_snapshot) =
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wrap_snapshot.clone(), 2, 1);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
assert_eq!(blocks_snapshot.text(), "\n\n111");
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None);
let blocks = blocks_snapshot
.blocks_in_range(BlockRow(0)..BlockRow(u32::MAX))
.collect::<Vec<_>>();
@@ -3565,7 +3594,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None, None);
+ let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None);
let block_ids =
block_map.insert(block_properties.iter().map(|props| BlockProperties {
placement: props.placement.clone(),
@@ -3603,7 +3632,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None, None);
+ let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None);
log::info!(
"removing {} blocks: {:?}",
block_ids_to_remove.len(),
@@ -3624,7 +3653,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None, None);
+ let mut block_map = block_map.write(wraps_snapshot, wrap_edits, None);
let (unfolded_buffers, folded_buffers) = buffer.read_with(cx, |buffer, _| {
let folded_buffers: Vec<_> =
block_map.block_map.folded_buffers.iter().cloned().collect();
@@ -3708,7 +3737,7 @@ mod tests {
let (wraps_snapshot, wrap_edits) = wrap_map.update(cx, |wrap_map, cx| {
wrap_map.sync(tab_snapshot, tab_edits, cx)
});
- let blocks_snapshot = block_map.read(wraps_snapshot.clone(), wrap_edits, None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot.clone(), wrap_edits, None);
assert_eq!(
blocks_snapshot.transforms.summary().input_rows,
wraps_snapshot.max_point().row() + RowDelta(1)
@@ -4097,7 +4126,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wraps_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
let _block_id = writer.insert(vec![BlockProperties {
style: BlockStyle::Fixed,
placement: BlockPlacement::Above(buffer_snapshot.anchor_after(Point::new(1, 0))),
@@ -4106,11 +4135,10 @@ mod tests {
priority: 0,
}])[0];
- let blocks_snapshot =
- block_map.read(wraps_snapshot.clone(), Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot.clone(), Default::default(), None);
assert_eq!(blocks_snapshot.text(), "abc\n\ndef\nghi\njkl\nmno");
- let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None, None);
+ let mut writer = block_map.write(wraps_snapshot.clone(), Default::default(), None);
writer.remove_intersecting_replace_blocks(
[buffer_snapshot
.anchor_after(Point::new(1, 0))
@@ -4120,7 +4148,7 @@ mod tests {
.to_offset(&buffer_snapshot)],
false,
);
- let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None, None);
+ let blocks_snapshot = block_map.read(wraps_snapshot, Default::default(), None);
assert_eq!(blocks_snapshot.text(), "abc\n\ndef\nghi\njkl\nmno");
}
@@ -4148,7 +4176,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wrap_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
writer.insert(vec![BlockProperties {
style: BlockStyle::Fixed,
placement: BlockPlacement::Near(buffer_snapshot.anchor_after(Point::new(0, 0))),
@@ -4157,15 +4185,15 @@ mod tests {
priority: 0,
}]);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
assert_eq!(blocks_snapshot.text(), "\nline 1\n\nline 2\nline 3");
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None);
assert_eq!(blocks_snapshot.text(), "");
}
@@ -4193,7 +4221,7 @@ mod tests {
cx.update(|cx| WrapMap::new(tab_snapshot, font("Helvetica"), px(14.0), None, cx));
let mut block_map = BlockMap::new(wrap_snapshot.clone(), 1, 1);
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
writer.insert(vec![BlockProperties {
style: BlockStyle::Fixed,
placement: BlockPlacement::Near(buffer_snapshot.anchor_after(Point::new(3, 6))),
@@ -4202,15 +4230,15 @@ mod tests {
priority: 0,
}]);
- let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot.clone(), Patch::default(), None);
assert_eq!(blocks_snapshot.text(), "\nline 1\nline 2\nline 3\nline 4\n");
- let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None, None);
+ let mut writer = block_map.write(wrap_snapshot.clone(), Patch::default(), None);
buffer.read_with(cx, |buffer, cx| {
writer.fold_buffers([buffer_id], buffer, cx);
});
- let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None, None);
+ let blocks_snapshot = block_map.read(wrap_snapshot, Patch::default(), None);
assert_eq!(blocks_snapshot.text(), "");
}
@@ -4299,8 +4327,12 @@ mod tests {
rhs_block_map.read(
rhs_wrap_snapshot.clone(),
rhs_edits.clone(),
- Some((&lhs_wrap_snapshot, &lhs_edits)),
- Some((companion, rhs_entity_id)),
+ Some(CompanionView::new(
+ rhs_entity_id,
+ &lhs_wrap_snapshot,
+ &lhs_edits,
+ companion,
+ )),
)
});
@@ -4309,8 +4341,12 @@ mod tests {
lhs_block_map.read(
lhs_wrap_snapshot.clone(),
lhs_edits.clone(),
- Some((&rhs_wrap_snapshot, &rhs_edits)),
- Some((companion, lhs_entity_id)),
+ Some(CompanionView::new(
+ lhs_entity_id,
+ &rhs_wrap_snapshot,
+ &rhs_edits,
+ companion,
+ )),
)
});
@@ -4400,8 +4436,12 @@ mod tests {
rhs_block_map.read(
rhs_wrap_snapshot.clone(),
rhs_wrap_edits.clone(),
- Some((&lhs_wrap_snapshot, &Default::default())),
- Some((companion, rhs_entity_id)),
+ Some(CompanionView::new(
+ rhs_entity_id,
+ &lhs_wrap_snapshot,
+ &Default::default(),
+ companion,
+ )),
)
});
@@ -4409,8 +4449,12 @@ mod tests {
lhs_block_map.read(
lhs_wrap_snapshot.clone(),
Default::default(),
- Some((&rhs_wrap_snapshot, &rhs_wrap_edits)),
- Some((companion, lhs_entity_id)),
+ Some(CompanionView::new(
+ lhs_entity_id,
+ &rhs_wrap_snapshot,
+ &rhs_wrap_edits,
+ companion,
+ )),
)
});