pub struct RunRemap {
pub first: u32,
pub old_lens: Vec<u32>,
pub new_lens: Vec<u32>,
pub middle: Option<RunTextChange>,
pub prev_len: Option<u32>,
}Expand description
One contiguous change to a run’s text (U3-a): bytes start..end of the
OLD text were replaced by inserted bytes. The shape every caret shift is
computed from, whoever made the change.
An edit that changed the RUN COUNT of a node’s inline content (U3-a-i):
a delete spanning two styled runs merged them, a styled paste split one.
The runs before first and the runs after the changed middle are the
same in both generations (aligned by common prefix and suffix); a caret
in the middle is mapped through the concatenated middle text, a caret
after it keeps its byte and moves its run index by the count delta.
Fields§
§first: u32The first old run index that differs.
old_lens: Vec<u32>Text lengths of the old middle runs first ...
new_lens: Vec<u32>Text lengths of the new middle runs first ...
middle: Option<RunTextChange>The byte change between the concatenated old and new middle texts,
if they differ (run is meaningless here).
prev_len: Option<u32>Length of the unchanged run just before the middle, when there is one: where a caret lands when the whole middle vanished.
Implementations§
Source§impl RunRemap
impl RunRemap
Sourcepub fn map_cursor(&self, c: TextCursor) -> TextCursor
pub fn map_cursor(&self, c: TextCursor) -> TextCursor
Where a caret of the old generation sits in the new one.