Xah Lee, 2007
This page is a summary account of my experience with Emacs vs Xemacs.
I'm a QWERTY touch typist for about 2 years in 1991-1992, working as a secretary and typist. I'm a Dvorak touch typist since 1993. I started using Emacs since 1998 in professional software development settings. I use Emacs daily for perhaps more than 8 hours every single day since and still do so today.
In 1998 or 1999, i switch to Xemacs because Emacs lacks critical features in my software development needs. The primary one is that Emacs lacks support of syntax coloring when used thru telnet. At the time, my job is to developing web application software and do unix sys admin work, primarily thru telnet/ssl on remote unix servers, and i consider syntax coloring absolutely necessary. Also, Xemacs at the time, is quite more user friendly, and has many features not in emacs. For example, one of the major problem in emacs is that when you press the down arrow key at the end of a file, it will actually insert line returns into the file. Another example: Xemacs is bundled with a email reader VM, which is far more usable than Emacs's ancient rmail. Another example: At the time around 1997, web is booming. Xemacs actually has a build-in web browser written in elisp called W3↗.
In about 2004, i took another look and switch back to Emacs. The primary cause is that i needed unicode support to type Chinese and math symbols. Emacs 21 (or the beta version of Emacs 22 at the time on the Mac) supports unicode by default and works practically well. And, all the major features that caused me to switch to Xemacs has been fixed. (For example, Emacs support syntax coloring thru telnet/ssh. Pressing down arrow at end of a file no longer insert returns. Reading plain-text emails in a local email client becomes far less important than 10 years ago. (i stopped using Emacs/Xemacs to read emails since 2002 or before) A non-dedicated web browser today is of little use than a decade ago. The xemacs's w3 web broswer has been officially retired in 2003 and emacs supports web browsing by a interface to a texutal based web browser.
Here are some features or qualities in xemacs not in emacs, from my personal experience in about 1999-2002 (1999 is roughly xemacs 20.3).
• Xemacs supports colors in terminal emulation. I use emacs/xemacs thru telnet most of the time. I can have syntax coloring in programing modes or dired. This is very important. (emacs had this only about 2002.)
• When pressing the down arrow key at the end of buffer, emacs will keep inserting line returns.
• The dired mode in xemacs is much much better than emacs's. When doing a “!” in dired, xemacs provids tar or gzip suggestions depending on the file. Very handy.
• Xemacs support copy and deletion of directories. Emacs does not. (as of 2007, emacs 22 support it but user needs to turn it on by setting variables dired-recursive-copies and dired-recursive-deletes. I don't know if emacs 19 or emacs 22 supported these at all.)
• When doing a “shell-command”, xemacs has path completion or command completion. Even in 2007, Emacs 22 still does not.
• Better or extra packages: vm much better than rmail, cperl-mode much better than perl-mode, xemacs has web browser w3 that is handy occationally. Typically, xemacs by default has lots more packages or modes, and simply better ones.
• More than one “*Async Shell Command*” will be auto generated when running a second background process by “M-! command &”. Emacs only allows one. It asks to either cancel the second one or kill the first one.
• Xemacs can start a second shell (or more shells). (In emacs, even today in 2007 with emacs 22, “M-x shell” the second time will simply switch user to the first shell. If user wants a second shell, he needs to rename the first shell's buffer. This may be a design desicion, but i think xemacs behavior is better.)
• The result of shell command is automatically in separate windows, instead of appended at the cusor point.
• When doing a “M-x man”, xemacs auto shows the result in full window instead of half a window.
• Better documentation in dired. (by pressing h in dired.)
• When coping a file over in ftp in dired, one cannot cancel by C-g in emacs.
• When adding a new info file, user do not need to edit the index file to have the newly added info doc to show up in the table of content page.
• In “shell-command” in emacs, if user presses the left arrow, the cursor will move back all the way over the prompt text. This is painful because user often will hold down M-b to move back by word to edit. On Xemacs, the cursor will stop at the beginning of the user input point. On emacs, it will inevitably stop at the beginning of the prompt's text, and when user starts to type something, emacs will say “This is read-only”.
* * *
In general, i can say that from my personal experience during at least 1998-2002, xemacs is simply a far better software in quality, and GNU emacs feels like a unpolished software, despites it being emacs and its long history. This fact about their quality gap is reasonably understood by their history. Xemacs was created and made by a commercial corporation Lucid inc during about 1990. Lucid went out of business in 1994 (following the wave of AI Winter↗). However, the commercial effect of quality in Xemacs, took GNU emacs more than a decade to catch up.
For more detail and resources on history, see Wikipedia: Xemacs↗. Also, Richard Gabriel↗, the founder of Lucid Inc, wrote a book named Patterns Of Software, published 1996, which accounts some xemacs vs emacs history. I wrote a review, see: Book Review: Patterns of Software.
Some Emacs problems as of 2007 (Emacs 22) in the context of this article.
• When doing a “shell-command”, emacs does not do path completion or command completion. (you'll have to install a external package on the web, by Tsuchiya Masatoshi).
• “dired” does not let users delete directories by default. A major pain. (You will need to set variables dired-recursive-copies and dired-recursive-deletes) I think emacs should by default set the value to “ask”.
• Emacs still move cursor over the prompt text in mini buffer. Emacs's behavior here is probably by design. However, a very bad one.
• Emacs still does not automatically let user starts a second shell (M-x shell). The user needs to rename the first shell's buffer.
Note: The writing above does not consider packages or customizations that users has to install or put in in order to have the desired features. It is more of a practical experience. (consider a average IT industry professional, who use emacs as one of his tools to make ends meet, but in general is not interested “hacking” or programing elisp as hobby.) Arguably, any lisp coders can spend a few days to make any features in emacs/xemacs, either by writing the code himself, or searching and modifying existing codes, or trying the beta version.
