···56 fn byte_to_char(&self, byte_offset: usize) -> usize;
5758 /// Get info about the last edit operation, if any.
59- fn last_edit(&self) -> Option<&EditInfo>;
6061 /// Check if a char offset is in the block-syntax zone (first few chars of a line).
62 fn is_in_block_syntax_zone(&self, offset: usize) -> bool {
···198 self.rope.byte_to_char(byte_offset)
199 }
200201- fn last_edit(&self) -> Option<&EditInfo> {
202- self.last_edit.as_ref()
203 }
204205 fn is_in_block_syntax_zone(&self, offset: usize) -> bool {
···56 fn byte_to_char(&self, byte_offset: usize) -> usize;
5758 /// Get info about the last edit operation, if any.
59+ fn last_edit(&self) -> Option<EditInfo>;
6061 /// Check if a char offset is in the block-syntax zone (first few chars of a line).
62 fn is_in_block_syntax_zone(&self, offset: usize) -> bool {
···198 self.rope.byte_to_char(byte_offset)
199 }
200201+ fn last_edit(&self) -> Option<EditInfo> {
202+ self.last_edit
203 }
204205 fn is_in_block_syntax_zone(&self, offset: usize) -> bool {
+1-1
crates/weaver-editor-core/src/types.rs
···165///
166/// This tracks enough information to determine which paragraphs need re-rendering
167/// after an edit, enabling efficient incremental updates instead of full re-renders.
168-#[derive(Clone, Debug)]
169pub struct EditInfo {
170 /// Character offset where the edit occurred
171 pub edit_char_pos: usize,
···165///
166/// This tracks enough information to determine which paragraphs need re-rendering
167/// after an edit, enabling efficient incremental updates instead of full re-renders.
168+#[derive(Clone, Copy, Debug)]
169pub struct EditInfo {
170 /// Character offset where the edit occurred
171 pub edit_char_pos: usize,