One niche in the Text Editor market I’ve yet to see filled is hyper extensibility the way Emacs does it. No program in the last 48 years comes close to this in practice (except maybe an actual operating system). This flexibility allows Emacs to be used in a wide variety of contexts, because almost everything is queryable and inspectable.
Writers using Emacs^1
Emacs for Blind^2
Portable Shell (Eshell)
Emacs as a window manager^3
Emacs as a git interface^4
NES Emulator^5
Bare metal Emacs on the Kernel^6
and many more. The point is not that your text editor should do any of these things, but that it is flexible and extensible enough that it can be extended in that way. My limited experience with Smalltalk makes me feel like it has the power to do all that Emacs does and more, but I feel like the advantage of Emacs right now is that you can use Emacs as a gateway to do all the other stuff, while something like a Pharo image is mostly just a programming environment/language that can be morphed into something else, just like a pygame library can eventually become a game.
And you can do it all with a single language. I try to imagine if Emacs had allowed plugins written in any language of choice (like zed or neovim). It would be so much harder to hack and adapt the editor because you would need to learn a new language and get it setup. Packages could not talk to or build on each other easily. Every “extension language” would adopt their own conventions and style. I think having everything elisp is really powerful.
I was kinda hoping that vscode with typescript could have been this and did some development there (trying my hand doing some stuff with foam[1]), but the environment and things you can do proved to be fairly limited in the end.
One niche in the Text Editor market I’ve yet to see filled is hyper extensibility the way Emacs does it. No program in the last 48 years comes close to this in practice (except maybe an actual operating system). This flexibility allows Emacs to be used in a wide variety of contexts, because almost everything is queryable and inspectable.
and many more. The point is not that your text editor should do any of these things, but that it is flexible and extensible enough that it can be extended in that way. My limited experience with Smalltalk makes me feel like it has the power to do all that Emacs does and more, but I feel like the advantage of Emacs right now is that you can use Emacs as a gateway to do all the other stuff, while something like a Pharo image is mostly just a programming environment/language that can be morphed into something else, just like a pygame library can eventually become a game.
And you can do it all with a single language. I try to imagine if Emacs had allowed plugins written in any language of choice (like zed or neovim). It would be so much harder to hack and adapt the editor because you would need to learn a new language and get it setup. Packages could not talk to or build on each other easily. Every “extension language” would adopt their own conventions and style. I think having everything elisp is really powerful.
Extensibility is one part of it. Two other important aspects of Emacs system:
In terms of extensibility, web browser is pretty nifty these days: you can open dev console and create your entire multimedia interactive world.
The problem is, generic multimedia is less hackable, less composable, and less power-user friendly than just text with active ranges.
I was kinda hoping that vscode with typescript could have been this and did some development there (trying my hand doing some stuff with foam[1]), but the environment and things you can do proved to be fairly limited in the end.
[1] https://foambubble.github.io/foam/