[0] https://github.com/emacs-ng/emacs-ng Disclosure I've posted about this on HN in the past, but I felt it was very relevant to the parent comment.
Not in the sense that it's not there, or that there's a second language that the JS interprets. But when you open emacs without specifying a file to open you are dropped into a buffer called *scratch* which lets you directly execute elisp code. It really is a central part of the experience of using emacs. Similarly, your configuration file(s) are written in elisp, versus often a subset of JavaScript (perhaps JSON) used in JavaScript-based editors. And you're not just supplying configuration data, but extending the program.
And then there's completeness. While emacs has parts written in C, that portion really exists to enable elisp. Essentially every capability of the editor is directly reachable through lisp. The same doesn't seem (or at least feel) true of JavaScript-based editors I've tried. In those, it often feels more like the creators have selected a portion of the internals to expose to users, but it's more the minimal amount needed rather than the maximal amount possible that emacs strives for.
EDIT: I've finally figured out how to insert an asterisk around a word on HN without needing spaces. Is this documented anywhere? Just use double asterisks on either end like
**foo**
*foo*Turns out this is in the FAQ, it's been a while since I looked at the formatting part of that so I guess it changed since 10 years or so ago or I'd forgotten.
Excluding maybe NodeJS, most of the Javascript you encounter is going to be executed by a browser which has a whole ton of sandboxing and mitigation mechanisms to prevent the big bad web from abusing your computer. I don't blame it for working that way given how few trustworthy (I mean really trustworthy, as in "free range within $HOME") actors exist on the web these days, but one wonders how far we could take the web ecosystem if we tossed the idea of granting special access through WebGL or WebUSB and just gave the browser full access to calling C or executing processes on your system.
Don't get me wrong - it would be a security nightmare, but there's a cost to trying to guarantee security through mechanism rather than trust.
[1] https://adventofcomputing.libsyn.com/episode-47-its-open-com...
You should do a line count; GNU Emacs has more than 250,000 lines of C.
1. Handling system calls for IO, networking, display
2. Implementing the elisp language itself
3. Implementing some things so they're faster than raw elisp
And the preference seems to be to expose, to the greatest extent possible, functionality to the elisp users, even if it's actually implemented in C. This is in contrast to the popular JS-based editors which seem to be more interested in a more controlled/limited exposure of functionality to users.
You are mentioned in the essay that contains the article in this HN post btw :)
Check out the Neovim section in https://www.murilopereira.com/how-to-open-a-file-in-emacs/#t...
A lot of the pain regarding JS build-systems could be avoided with macros (and reader macros/a customizable reader). Babel is literally macros + a reader.
With js you could create a very simplified version, if you remove 95% of the emacs codebase.
Most people just use 1-2% of emacs anyway, and there are editors that just do that, control a simple text editor with js.