- Key bindings (so you could easily create an emacs instead of a vi)
- Rendering
- Scripting language (for customized behavior)
Finally, make sure you thoroughly document these building blocks, so others can create really cool stuff with it. Also, think of possible use-cases when defining the modules. A smart architecture could allow for a collaborative editor, for example.
- Core editor (internal representation, etc.)
- Key bindings (so you could easily create an emacs instead of a vi)
- Rendering
- Scripting language (for customized behavior)
Finally, make sure you thoroughly document these building blocks, so others can create really cool stuff with it. Also, think of possible use-cases when defining the modules. A smart architecture could allow for a collaborative editor, for example.