Rio
adr/0041-unbundled-editing-modes.mdRaw Markdown · GitHub ↗

ADR-0041: The core ships one editing mode; emacs and vi are extensions

  • Status: Accepted
  • Date: 2026-08-03
  • Deciders: jka
  • Decision: D41

Context

ADR-0038 shipped three editing modes in the source tree. Making emacs and vi complete (ex commands, registers, repeat, macros, marks, a kill ring) is open-ended work that would keep growing inside rio's own tree.

Decision

rio ships only the windows mode. emacs and vi move to installable extensions of kind mode, served from a repository (ADR-0039), where they can be versioned and developed on their own schedule.

The project keeps its own extensions in extensions/, laid out as a complete repository (rio-repository.conf, index, one directory per extension with its manifest and payload). Copied to any web directory, it is a working repository, and it serves as the reference example for the format documented in CONTRIBUTING.md.

Consequences

  • No new mechanism was needed: mode extensions install into the drop-in directory the mode loader already reads.
  • A user whose saved mode is no longer installed falls back to the windows mode.
  • Mode tests install the extensions through the same drop-in path a user's install uses, rather than loading shipped files.
  • Changes to extensions/ must be copied to the maintainer's test repository by hand; there is no automated mirror (ADR-0117 lists it as unguarded).
  • The same move was later made for LLM providers (ADR-0066, ADR-0069).