diff --git a/zed/src/editor/display_map/fold_map.rs b/zed/src/editor/display_map/fold_map.rs index 111c99505fb3b04be4d0786ad61bacf22465867d..49c8d5308a263e03a93ae7dc74e1063e6d8d6e78 100644 --- a/zed/src/editor/display_map/fold_map.rs +++ b/zed/src/editor/display_map/fold_map.rs @@ -1,6 +1,6 @@ use super::{ buffer::{AnchorRangeExt, TextSummary}, - Anchor, Buffer, DisplayPoint, Edit, Point, ToOffset, + Anchor, Buffer, DisplayPoint, Point, ToOffset, }; use crate::{ editor::buffer, @@ -70,7 +70,6 @@ impl FoldMap { edits.push(Edit { old_bytes: range.clone(), new_bytes: range.clone(), - ..Default::default() }); } } @@ -116,7 +115,6 @@ impl FoldMap { edits.push(Edit { old_bytes: offset_range.clone(), new_bytes: offset_range, - ..Default::default() }); fold_ixs_to_delete.push(*folds_cursor.start()); folds_cursor.next(&buffer); @@ -147,7 +145,10 @@ impl FoldMap { fn sync(&self, cx: &AppContext) -> MutexGuard> { let buffer = self.buffer.read(cx); - let mut edits = buffer.edits_since(self.last_sync.lock().clone()).peekable(); + let mut edits = buffer + .edits_since(self.last_sync.lock().clone()) + .map(Into::into) + .peekable(); if edits.peek().is_some() { self.apply_edits(edits, cx); } @@ -838,6 +839,34 @@ impl<'a> sum_tree::Dimension<'a, TransformSummary> for usize { } } +struct Edit { + old_bytes: Range, + new_bytes: Range, +} + +impl Edit { + pub fn delta(&self) -> isize { + self.inserted_bytes() as isize - self.deleted_bytes() as isize + } + + pub fn deleted_bytes(&self) -> usize { + self.old_bytes.len() + } + + pub fn inserted_bytes(&self) -> usize { + self.new_bytes.len() + } +} + +impl From for Edit { + fn from(edit: buffer::Edit) -> Self { + Self { + old_bytes: edit.old_bytes, + new_bytes: edit.new_bytes, + } + } +} + #[cfg(test)] mod tests { use super::*;