upvote
> Don't forget this is a text editor, not an IDE or some general purpose automation harness

Technically, it is just a text editor. It was created to be a text editor, so you are right, but up to a point.

Emacs is written in lisp, what it means? It means that the only part of emacs written in C is a lisp machine. And even not the whole lisp machine is written in C: there is a rudimentary read-eval-print loop (REPL), and maybe a bytecode interpreted. This REPL I believe is just to boot up purposes and is replaced with proper lisp implementation on later boot up stages. It is not lisp added to a text editor, it is a text editor added to lisp. It means, in particular, you can add to that lisp not just text editor but anything else too, like mspaint for example.

And people do just that. They write software in emacs. In particular they wrote IDE in emacs, so while emacs by itself is not an IDE, you can turn it into one.

> some general purpose automation harness

Oh, it is. It is more general than any other automation harness you know. It is a lisp machine, you can automate anything in it. Well, technically you can, in practice it can take take too much time to be practical. In practice when choosing automation harness, you'd prefer not the most general, but the most specific harness for your task.

reply
Emacs is, in fact, an IDE and some general purpose automation harness. And some other stuff.

That's the point.

reply
> Don't forget this is a text editor, not [a] general purpose automation harness

This arguable. I personally use emacs for text editing for sure, but not only: it also does emails (notmuch), git (magit), team & project management (org), mastodon, fleet management (nix + colmena + custom elisp functions), and, more importantly, all these “applications” can mutually share data.

So can you use emacs as a text editor only? Sure. Can you leverage its intrinsic abilities to reach what might be called an automation harness? Yes as well.

reply
It certainly did for me, because it let me trivially write code that integrates deeply into the rest of the system.

A simple example: I wrote a function that let me highlight an X.509 cert in a YAML document, regardless of indentation, and pass it to 'openssl x509' to show me what it is. This has saved me lots of time over the years not having to copy/paste, fiddle with whitespace, etc. But it's only valuable because the functionality is now right at my fingertips in the environment I'm already in!

reply
> You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic

Yes exactly! https://docs.gimp.org/3.2/en/gimp-using-script-fu-tutorial.h...

reply
> Don't forget this is a text editor, not an IDE or some general purpose automation harness

It's more correctly a Lisp execution environment with a text editor added as a bonus ;)

reply
A lisp interpreter with text editing primitives.
reply
I think of Emacs as more of a lisp machine than text editor. I'm also not sure what an IDE has over Emacs. I have autocomplete, compiler checks, and run tests all within Emacs.

For general automation, my blog is built with Emacs Lisp.

reply
the analogy is you have mspaint (or blender)

you add MCP (or an API)

suddenly with llama.cpp and a small model like qwen 3.6 35B, you can automate things by just asking.

emacs same thing, you can 'script' everything. Except no LLM needed

reply
It sounds like you think emacs is some sort of basic text editor, I dunno, like Notepad on Windows, that has an adjoined Lisp interpreter?

Admittedly, it doesn't help that there are some sibling comments that implicitly seem to be speaking that way.

However, Emacs is a 42-year-old software program that has been in constant development this entire time. Its git repository has over 180,000 commits right now on its main branch, which is still 20,000 ahead of VSCode. It doesn't just have a Lisp editor attached, it has 1.6 million lines of Lisp in it as well, and that's just the source repo, not all of the extensions you can get for it. Using "cloc" to count the total lines of source it has, it's still pretty close to 2/3rds the lines of code than VSCode has, at 2,613,748 for emacs versus 3,849,521 for VSCode. So that's the scale we're talking here, something on par with an IDE, not something on par with a simple text editor.

Yes, it gives you a lot of capabilities you didn't have before. The joke about it being a decent OS that needs a good text editor comes from the fact it has a large number of things it can do out of the box that aren't just text editing. It isn't just Notepad with a Lisp interpreter attached. It has vast capabilities that have been implemented and then also tested over the course of decades. Considering the set of disadvantages it carries with it, like weird key bindings and the fact that the variant of lisp it uses is more-or-less unique to emacs, somewhat analogously to the handicap principle [1] one should counterintuitively understand that as a sign that it must have extraordinary strengths that are able to offset that.

(I've used it for a long time, but I never really learned Lisp. AIs are making it much easier to customize than ever, though. I've said many times here on HN that I think every line of AI code should be reviewed. So yesterday I prompted Claude to build some Lisp functions so I can declare 1. a base directory 2. a regex of file names to match and produce 3. a function to walk over the entire directory forwards or backwards with CTRL-x CTRL-n or CTRL-x CTRL-p, thus allowing me to easily walk through an entire project for review purposes systematically. Nobody had to give me permission to do that. I didn't need to "create an extension". I don't have to care if anyone else in the world wants it. It's not the only editor that can do this as easily as emacs but it's a short list.)

[1]: https://en.wikipedia.org/wiki/Handicap_principle

reply
Fortunately all the "weird key bindings" can be easily changed.

The only difficulty is caused by the fact that already each Emacs mode may change some of the key bindings. Because of that, before deciding on some key bindings you prefer, it is wise to first check the bindings used in all the Emacs modes that you are likely to use frequently, in order to choose bindings that would not conflict with any of those modes.

reply
There is a decent solution for this, you essentially define your own minor mode with key bindings you want to take precedence. I haven’t tried it myself yet, but seems useful in theory https://youtu.be/D99GB591Vgo
reply
> Don't forget this [emacs] is a text editor, not an IDE or some general purpose automation harness

How familiar are you with Emacs?

reply
> You could add lisp to mspaint and mspaint suddenly becomes awesome somehow?

TBH that does sound pretty awesome, assuming good primitive operations were exposed through the Lisp API.

reply
It would become AutoCAD. That is pretty awesome.
reply
>Don't forget this is a text editor, not an IDE or some general purpose automation harness

It's all 3 and way more.

>You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic

That much is a given (for both)

reply
> Did Emacs really give YOU any capability you didn't have before?

`M-x docter` is something I never had before.

reply
The Emacs API is kinda huge, with things like very raw network API, a very good approximation of fork/exec process management, buffers as the base communication mechanism with a lot of capabilities, various utility function with regards to interfacing with the user (windows, frame, faces, keyboard events), then the hooks and advice subsystem.

With Unix, most programs are binary and while the shell is a good glue language, you can’t alter a program and the OS that much. With Emacs, only the core coded in C is sacred, anything else can be modified to fit your workflow. And there’s a lot of packages out there to provide you with raw materials.

reply