Expand description
escriba-core — foundational types.
No I/O. No rendering. No tatara-lisp. Just the typed vocabulary every other escriba crate speaks:
Position— line + column, 0-indexed, UTF-8 char offsets.Range— half-open[start, end).Cursor— anchor + head (for selection growth).Selection— multi-cursor ordered set.Mode— the vim-ish modal state.Motion/Operator— compose into commands.Edit— primitive mutation.Action— top-level dispatched-to-buffer command.BufferId/WindowId— opaque identifiers.
Every type derives schemars::JsonSchema so escriba-api can emit an
OpenAPI spec over the full domain surface — the editor’s entire public
shape is spec-first by construction.
Re-exports§
pub use action::Action;pub use action::CountedAction;pub use edit::Edit;pub use edit::EditKind;pub use id::BufferId;pub use id::CaretId;pub use id::WindowId;pub use mode::Mode;pub use mode::ModeTransition;pub use motion::Motion;pub use motion::Operator;pub use position::Position;pub use range::Range;pub use selection::Cursor;pub use selection::Selection;