Comment by reikonomusha
12 hours ago
Something like SLIME isn't essential to execute Lisp code, you're right, but it is essential in order to understand the efficiencies afforded by interactive development, which may as well be one of the pillars of the language, since "garbage collection" and "an object system" aren't in and of themselves differentiators anymore*. Using something like SLIME also takes a lot of the pains that people have with Lisp away, namely balancing parens and indenting code correctly. People who do the "I'll use my own editor" approach to beginning Lisp usually write things that look like:
(defun myfun(x)
(let (x)
(setq x 5)
(when (eq x 6)
(print "6")
)
)
)
Which is absolutely not what Lisp code should look like. Emacs-and-kin don't outright stop that, but the defaults are such that it's less likely.
____
* Of course, technically, CLOS is something to behold. But you won't sell someone on Lisp because it can do "OOP".
Interactive development is because Common Lisp runntime has the concept of images and systems. Just like you start you OS and do things with it, you start the Lisp runtime and do things with it. It’s a point A to point B type of interaction like running a script. Smalltalk, SMl, a modern web browser,… has the same kind of interaction. It’s not dependent on any editor.
Also automatic idiomatic formatting of lisp code is possible in any editor as long as they have the settings for it. Not sure how Emacs is the gatekeeper on that one.
What you say is entirely true in theory. An editor can have whatever it wants. Anything is possible—but somebody needs to do the work. If your favorite code editor is Zed, chances are nobody wrote proper Lisp indentation in it or any sort of Lisp interaction mode.
Why has it stuck with Emacs and its derivatives? I don't know. It seems interest in investing time to make a good Lisp environment for a non-Emacs editor fizzles out once it gets to the difficult part of productionizing it, which is why Emacs continues to be the #1 no-cost choice.
Emacs has support for all kind of programming languages and other tools. It's very easy to hack somethings and the effort required to polish it enough for a 0.1 release is small. Compared that to creating a plugin for VS Code or IDEA? Not worth it especially with the disjointed interfaces (Emacs has buffers and nothing else).