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.