Merge pull request #267 from zed-industries/fix-soft-wrap-disabled

Avoid building up pending edits when soft wrapping is disabled
This commit is contained in:
Nathan Sobo 2021-11-30 08:39:00 -07:00 committed by GitHub
commit df1804b215
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -108,8 +108,16 @@ impl WrapMap {
edits: Vec<TabEdit>,
cx: &mut ModelContext<Self>,
) -> (Snapshot, Vec<Edit>) {
self.pending_edits.push_back((tab_snapshot, edits));
self.flush_edits(cx);
if self.wrap_width.is_some() {
self.pending_edits.push_back((tab_snapshot, edits));
self.flush_edits(cx);
} else {
self.edits_since_sync = self
.edits_since_sync
.compose(&self.snapshot.interpolate(tab_snapshot, &edits));
self.snapshot.interpolated = false;
}
(
self.snapshot.clone(),
mem::take(&mut self.edits_since_sync).into_inner(),
@ -1112,6 +1120,7 @@ mod tests {
while wrap_map.read_with(&cx, |map, _| map.is_rewrapping()) {
notifications.recv().await.unwrap();
}
wrap_map.read_with(&cx, |map, _| assert!(map.pending_edits.is_empty()));
}
if !wrap_map.read_with(&cx, |map, _| map.is_rewrapping()) {
@ -1193,6 +1202,14 @@ mod tests {
}
assert_eq!(initial_text.to_string(), snapshot_text.to_string());
}
if wrap_map.read_with(&cx, |map, _| map.is_rewrapping()) {
log::info!("Waiting for wrapping to finish");
while wrap_map.read_with(&cx, |map, _| map.is_rewrapping()) {
notifications.recv().await.unwrap();
}
}
wrap_map.read_with(&cx, |map, _| assert!(map.pending_edits.is_empty()));
}
fn wrap_text(