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).