Text editors like Emacs, Vim, Atom, etc. all have designs that are too tightly coupled.
Project:
A text editor (similar to Emacs) where every aspect of the editor is defined via user configuration.
One or more sane default configurations can be provided, but the user can always redefine any behavior.
Main features:
Decoupled UI: The editor runs as a daemon in the background. Any frontend uses IPC to interface with the editor. When a frontend process starts, it sends a table of compatible features (mouse support, colors, fonts, etc) for the editor to use as an API. Input events are sent directly to the editor daemon.
Modular runtime:
Every piece of functionality exists in a distinct module. Every module defines its API in a global table (associative array) of attributes. Any configuration is accomplished by changing the attributes in the global table.
The user can pick from a predefined runtime that emulates his/her favorite editor, a unique runtime, or even an empty runtime, and make whatever changes he/she wants.
Text editors like Emacs, Vim, Atom, etc. all have designs that are too tightly coupled.
Project:
A text editor (similar to Emacs) where every aspect of the editor is defined via user configuration. One or more sane default configurations can be provided, but the user can always redefine any behavior.
Main features:
Decoupled UI: The editor runs as a daemon in the background. Any frontend uses IPC to interface with the editor. When a frontend process starts, it sends a table of compatible features (mouse support, colors, fonts, etc) for the editor to use as an API. Input events are sent directly to the editor daemon.
Modular runtime:
Every piece of functionality exists in a distinct module. Every module defines its API in a global table (associative array) of attributes. Any configuration is accomplished by changing the attributes in the global table.
The user can pick from a predefined runtime that emulates his/her favorite editor, a unique runtime, or even an empty runtime, and make whatever changes he/she wants.