pub struct EditorSnapshot {
pub version: u32,
pub mode: SnapshotMode,
pub cursor: (u32, u32),
pub lines: Vec<String>,
pub viewport_top: u32,
pub registers: Registers,
pub file_marks: HashMap<char, (u32, u32)>,
}Expand description
Coarse editor snapshot suitable for serde round-tripping.
Today’s shape is intentionally minimal — it carries only the bits
the runtime crate::Editor knows how to round-trip without the
trait extraction (mode, cursor, lines, viewport top, settings).
Once Editor<B: Buffer, H: Host> ships under phase 5, this struct
grows to cover full SPEC state: registers, marks, jump list, change
list, undo tree, full options.
Hosts that persist editor state between sessions should:
- Treat the snapshot as opaque. Don’t manually mutate fields.
- Always check
versionafter deserialization; reject on mismatch rather than attempt migration. The 0.0.x churn drops compatibility freely.
Fields§
§version: u32Format version. Bumped on every structural change. Hosts use this to detect mismatched persisted state.
mode: SnapshotModeMode at snapshot time (status-line granularity).
cursor: (u32, u32)Cursor (row, col) in byte indexing.
lines: Vec<String>Buffer lines. Trailing \n not included.
viewport_top: u32Viewport top line at snapshot time.
registers: RegistersRegister bank. Vim’s "", "0–"9, "a–"z, "+/"*.
Skipped for Eq/PartialEq because crate::Registers
doesn’t derive them today.
file_marks: HashMap<char, (u32, u32)>Uppercase / “file” marks ('A–'Z). Survive set_content
calls so they round-trip across tab swaps in the host.
Lowercase marks are buffer-local and live on the VimState.
Implementations§
Trait Implementations§
Source§impl Clone for EditorSnapshot
impl Clone for EditorSnapshot
Source§fn clone(&self) -> EditorSnapshot
fn clone(&self) -> EditorSnapshot
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EditorSnapshot
impl Debug for EditorSnapshot
Source§impl<'de> Deserialize<'de> for EditorSnapshot
impl<'de> Deserialize<'de> for EditorSnapshot
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for EditorSnapshot
impl RefUnwindSafe for EditorSnapshot
impl Send for EditorSnapshot
impl Sync for EditorSnapshot
impl Unpin for EditorSnapshot
impl UnsafeUnpin for EditorSnapshot
impl UnwindSafe for EditorSnapshot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more