A programming editor to replace emacs?

Long ago, when I started programming, I used whatever editor was built into an IDE.

When I began programming without using an IDE, (which I did because I started using languages for which no IDE was available) I usually used an editor called Brief. Brief was a good editor, and had a lot of functionality, even rudimentary macros. I had tried emacs and very much disliked it for its flouting of user-interface conventions, non-standard keybindings, ridiculously awful help system interface with no obvious way to get back to the buffer you were working on, etc.

When I started professionally dealing with Lisp code, I had to learn Emacs; there was simply no other accepted solution for Lisp code. I worked on several programs using Brief, but there was an actual policy decision that in interests of uniformity and mutual readability of code, everyone had to use the same editor. After a few weeks of hating Emacs more and more intensely, I finally habituated to the backwards-martian interface, and ever since then it has been the easiest and most productive editor for me to use. In fact I often use it even when a nice IDE using some other editor is available.

But nearly everyone who is new to Emacs hates it passionately, just as I did when I was new to it. When you tell them that even basics like "cut" and "paste" have non-standard keybindings, their next question is usually something like 'why the hell are we using this piece of crap.' In the absence of a job requirement or similar pressure, few persist in learning it.

Now comes an observation. I have looked at hundreds of thousands of lines of Lisp code in dozens of dialects, and the indentation style (with the sole exception of McCarthy's initial papers on Lisp) indicates that everyone who writes it, without exception, is either using Emacs, or using something that implements *exactly* the same automatic indentation algorithm. And I don't know of anything else (bar deliberate Emacs clones like ZILE which get just as much UI hate, and for the same reasons, as Emacs itself) that implements *exactly* the same indentation algorithm that Emacs' lisp-mode uses.

Conclusion: (at least) 95% plus of the people writing Lisp code in the world, in all dialects, are using an editor to which the mainstream response is ... um, unenthusiastic at best.

Lisp users consider Lisp (in many dialects) to be a truly excellent language, and cannot understand why it isn't more popular. Other people sometimes try it, and I have heard more than one abandon Lisp because of Emacs hate. ie, the perception that you can only work on it using Emacs, combined with the perception that Emacs "sucks, hard." It is hard to avoid believing that Emacs hate may be one of the major forces holding Lisp back.

So, when I am faced with newbies whom I want to sell on the language itself, what useful, completely-featureful, programmers' editor with a standard UI can I use to demonstrate the language without alienating them? What editor should I be learning if I don't want to scare or alienate or intimidate or just distract people from the language or program itself?

What editor would a Lisp IDE developed by people who cared deeply about acceptance of the UI by the mainstream use? what features would allow some UI-standards compliant text editor to fully replace Emacs for Lisp programming purposes? And does anything out there actually have them?

Ray

(edited: de-capitalized things because capital letters apparently upset someone.)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Troll

You'll gain no friends rhetorically by typing the names "Emacs" and "Lisp" in all-caps like it's the 1970's and we don't have lowercase letters in our hardware terminals. So I can't help but think this is a troll, even if unintentionally, by painting the communities that made them as "Other".

Maybe try considering extensible editors written in dynamic languages like JavaScript (Ymacs), since I'll presume you've dismissed out of hand the obvious ones like Vim, Eclipse, and IntelliJ.

It's also worth pointing out, unfortunately, that Emacs is generally run by GNU and has a rather stupid dialect of Lisp, so that the default Emacs Lisp experience does not give you Common Lisp or Slime or proper indentation. In many ways, this is how Richard Stallman is Lisp's worst enemy via PR / initial UX.

More suggestions: LispIDE and Racket if Scheme is what you mean by "LISP", or CUSP for Eclipse.

Oops.

Sorry, had no intention to troll. Of course, when I think of the ink and tears that have been spent on editor wars, I can certainly understand it, and probably ought not to've brought it up.

I use Emacs a lot. It's my go-to programming editor. The way it has "modes" for various languages and integrates with inferior interpreters, ctags, debuggers, etc makes it an awesome, if quirky, tool.

But I remember hating it passionately at one time, and I still see that same hate in people who are new to it. These people also hate Vi, Pico, Jedit, etc. for the same reasons; basically, they were invented before there was any kind of UI standardization, so each one requires the user to climb a learning curve.

Notepad OTOH, doesn't get this kind of newbie hate; it has a standard WIMP interface and standard control keybindings. People don't notice its learning curve because when they open it, they already know how to use it. It offers essentially no integration features, but that's not because the standard WIMP interface and standard control keybindings conflict with them; it's just not implemented.

Anyway, it seems to me that if people are learning Emacs to use Lisp, then the experience of learning to use Lisp might be more unpleasant than necessary, for reasons having nothing to do with the language itself.

Every change breaks someone's workflow.

Better Suggestion

Look at Light Table and consider Clojure for your Lisp-programming needs.

I agree that Light Table is

I agree that Light Table is the obvious answer, but it is sort of under construction. In general, I strongly believe that the editor is somehow a part of the programming language, and once we accept this, we can provide features that we couldn't dream of with a generic text editor.

Yi

Yi is a text editor written in Haskell.

Emacs misunderstood

On Mac OS you can use Aquamacs, a "distribution" of Emacs that offers standard keybindings and some of the behaviour you would expect from a Mac application. That should ease the transition from the familiar to the unfamiliar. Anyhow, Emacs is what you make of it. If you or anyone doesn't like its keybindings or the way it handles this or that you can usually change all that with a modest amount of research and work. I'm quite sure that I would have a hard time using another person's Emacs (provided they are also a heavy Emacs user) just for that reason. The true power of Emacs lies in that you need not really adapt to the editor but rather you can adapt the editor to your own way of working and thinking.

This is true, but none of it

This is true, but none of it is relevant or obvious to the rank beginner, who is the hater of Emacs whose hate extends to anything that requires learning Emacs.

Rather than starting from

Rather than starting from scratch with a whole new editor, there are various 'standard configurations' available for Emacs to cater for commone use-cases, including beginners.

I started using Emacs quite recently, and I used Emacs prelude as a base. I wouldn't say it's 'the best' configuration though, since a) I've not tried any others and b) it goes out of its way to disable many 'non-Emacsy' keys (eg. cursor keys) and spits out messages 'You should use C-foo instead'. I see the point of this for users who've specifically decided to learn Emacs, but it's unsuitable for those who are only learning Emacs as the path of least resistance for something else (eg. Lisp programming, proving with Proof General, etc.).

It's a tool whose time has passed

I haven't used EMACS in years. Too retro. I used it on the original Stanford SAIL machine, with the special keyboard with a real META key it was designed for, and I used it on a Symbolics 3600, with the silly Space Cadet keyboard. But really, we have pointing devices now. Time marches on. Currently, I'm using Notepad++, which is enough editor for most purposes.

On the indentation front, Go (the language) has a nice solution. Source control check-ins are forced through a formatter. So any code seen by others is consistently formatted. There's some whining about this from people wedded to some specific indentation style, but it's a practical solution.

I've been slowly migrating

I've been slowly migrating my non-coding editing over TO emacs in recent months. What with org-mode, markdown+pandoc and good old latex life is certainly looking up.

Indention

I don't know of anything else (bar deliberate Emacs clones like ZILE which get just as much UI hate, and for the same reasons, as Emacs itself) that implements *exactly* the same indentation algorithm that Emacs' lisp-mode uses.

You can't tell peoples' editor by code indention. There is one true way to indent lisp code and any editor that attempts lisp support re-implements the emacs algorithm.

I write Clojure in Vim (foreplay/vim-clojure-static). I've seen clojure presentations with people writing clojure in ST2 and IntelliJ, though I don't know their addons to make it happen.

The main problem in using a non-emacs editor is interacting with the repl. It was only once the lein/nrepl setup standardized that we got a solid integration between vim and a repl session and even now the experience is adequate but not great. Don't know the situation with other lisps. I've done light amounts of PLT Scheme (when it was PLT Scheme) but clojure is the only dialect I've really invested in.

I find for Clojure, Eclipse

I find for Clojure, Eclipse and Counterclockwise plugin work very well. While, Eclipse might not be the greatest IDE out there, it's a lot more familiar than something like Emacs or even Vim for most people.

With it you get REPL integration, structural editing, dependency management, etc. With it, people can focus on learning the language without having to be overwhelmed by learning a really alien development environment at the same time.

I'm also hopeful that Light Table will live up to its lofty goals.