Skip to main content

Crate escriba_core

Crate escriba_core 

Source
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;

Modules§

action
edit
id
Opaque identifiers — one counter per domain. All are transparent newtypes so serde emits them as plain numbers.
mode
motion
position
range
selection