Ian Bicking: the old part of his blog

THE vs. Emacs

About two years ago I gave THE (The Humane Editor) a try. Since Raskin is back in the news and presumably going to continue work on THE, I thought I'd repost my thoughts (originally left in the forum -- they didn't have a mailing list back then). I actually want to write more about THE and some of the ideas, but I'll start here. Mostly I was just comparing it to Emacs (my primary editor):

While I thought it was interesting, it seemed like a distinctly less powerful Emacs.

LEAP is actually very similar to incremental searching in Emacs (C-S and C-R for reverse searching).

The modal nature of Emacs (where you don't have to hold down a key while typing your search term) is definitely easier on the fingers (typing multiple characters with the shift key down is annoying).

Emacs also allows case-sensitive searching, which is very useful. Perhaps that's more the case in programming, where I know if I search for a capital letter I'm going to get to a class definitition faster (since in programming case is more meaningful than normal text). Note also Emacs is only case sensitive if you type at least one upper case letter.

Emacs' incremental search also works well for finding things off the page. It seems necessary to disambiguate your search with LEAP -- but when I'm looking for all instances where a function is used, I don't yet know the context of my search. So I have to do multiple LEAPs, I can't use LEAP as a skimming or proofreading tool. In Emacs you hit C-S (C- meaning Control) and it goes to the next instance (like C-G in Netscape).

I use incremental searches often in Emacs to navigate, even just to navigate on the same line. It's a great idea, but I think THE should pay much more attention to Emacs and the maturity of its interface.

Like THE, Emacs also does not use dialog boxes. It has a status bar on the bottom which is used for input and message display. It's very close to THE's transparent messages, only not nearly as distracting or obscuring.

Lastly, Emacs has long-form commands. By typing M-X you get access to all the commands in Emacs. Really it's an excessive number of commands. And there isn't an obvious mapping between command names and key bindings (though you can look up the commands for bindings, and Emacs suggests bindings when you type in a command). Though Emacs could use some editorial consideration in the commands it exports, the commands are as powerful as THE aspires to. Emacs embeds a large number of applications, which are accessible through these commands. The menus are actually sadly inadiquate for most work.

Emacs seems to be what THE aspires to be. It's a mail client, news reader, web browser, etc. Certainly it has significant flaws. I would love to see an editor inspired by Emacs written from scratch in Python. The key bindings might change among other things, but learning from the lessons of Emacs (and avoiding the problems of elisp).

Have the developers of THE used Emacs significantly? If not, I fear they will just make a pale imitation of a wonderful program and environment. The lessons of Emacs could well stand to be popularized and improved upon, but 25 years of development and improvement by people who use a program so intimately as developers use their editors -- that deserves a lot of attention from anyone interested in user interface.

Created 26 Jan '05


What about VIM!

I understand you are an emacs fan. I would not dare restart this classic flame war :D

However, for some reason whenever I pictured a Python based editor... I always thought it would end up more like VIM. I am not sure of THE, because I have not used. But it sounds like EMacs is more key-binding oriented where THE is on a different page all together.... so, it does not sound to Pythonic.

Better yet, I would like to see an editor which is half python command line / half editor. Maybe a split screen like the ones from VIM. Somehow you can insert what you tried above into the code below.

# Brian Ray

Emacs is like THE not as an editor, but as an environment and infrastructure for building applications. VIM is just an editor; which maybe people like, but is entirely unlike THE, and quite unlike Emacs as well. In the case of Emacs, it's an environment where editing is at the center of every application -- the basic metaphor for interaction is editing. Which I think has a lot of good points (and maybe some bad points), and THE seems to share this same orientation.

THE happens to also be very key-oriented. I can't remember now if the mouse actually did anything at all (though maybe it would if it hadn't been at a fairly early stage of development). As far as Python... well, that's neither here nor there; I guess it's important since these editors are built for extensibility and the development language effects that, but I don't think they need to reflect the values, that would be putting the cart before the horse.

# Ian Bicking