Migrating from XEmacs to Emacs

Justification

I have decided (May 2005) to make the switch from XEmacs to Emacs. I realized that the main reason that I was still using XEmacs was no longer relevant. This was the support for running gnuclient in a ssh terminal terminal window to connect to a running graphical XEmacs. A few years ago I used to do this all the time to connect to my office desktop machine from home over a modem (no need to sync files between home and office, especially handy for mail). However, now I use my laptop for everything so it is not necessary any more.

Emacs 21.3

I first tried the current stable release of Emacs (21.3). With a very little work it was possible to get it behaving more-or-less like XEmacs. The big improvement with Emacs is that is far zippier than XEmacs. For example, loading my directory ~/BobKPNO/ in dired takes less than 5 seconds, as opposed to nearly 10 seconds in XEmacs (there are nearly 8000 files and subdirs in the directory). The main problem is that many of the add-on packages that I am used to in XEmacs are not installed by default and there is no package management system to make this easier. Notable omissions that I use every day are AUCTeX, calc, and tramp. AUCTeX is easily dealt with since there is an RPM for Fedora (which is actually better than an emacs-specific package system, or at least it would be if it were included in a package repository). With calc, on the other hand, I couldn't get it to install for 21.3, even after applying the recommended patches. However, after reading that calc is now being maintained again in the main Emacs CVS tree I decided to throw caution to the wind...

Emacs 22.0

Now I have compiled up the latest CVS version (22.0.50) and it seems vastly improved over 21.3. I still haven't read all of the NEWS file (it is rather long!) but I've already found loads of nice little features. For example, there is now a key binding for goto-line (M-g M-g). In XEmacs this was just M-g but I might as well learn the new version. Also, both calc and tramp are bundled in and work flawlessly out ofthe box. Time to update my configuration files to work with 22.

I also remembered that Jonathan Corbet wrote about the CVS emacs in LWN a couple of months ago. Some interesting tips in the comments (in among all the raking over of old XEmacs/RMS disputes). In particular that there is a branch of Emacs that supports the multi-tty thang. Also that I should set x-select-enable-clipboard to t to get inter-application cut/paste working like in XEmacs.

Config Files

Version 22 allows you to use a directory emacs.d/ to store .emacs and the like (somewhat like the .xemacs/ directory) but I don't think I'll bother for now.

Third party packages

Lots of packages need installing separately. I am downloading the tar balls or CVS trees to ~/emacs/pkg-src/ and installing them all in ~/emacs/{lisp,info,etc}/

emacs-wiki

This is installed and I have copied over my customizations from XEmacs. Still to do is to redo my configuration completely. I want to split it up into sub-wikis for science, code, personal, etc. Would be nice to have a blog too and maybe use planner.

bbdb

Installed. Not much call for it at the moment unless I start using gnus again.

cedet

Installed.

This contains semantic, speedbar, and other tools for programming languages. It is a prerequisite for ecb.

ecb

Installed. Lots of new icons.

Emacs Code Browser. Sort of like an IDE. Has a Function/Class/Method browser and a History window, which are quite useful. Also has Directory browser, which I find unusable since it hangs on directories with lots of files (order 10000).

NXML

Installed. Still need to test this.

Mode for editing XML files. Reputedly better than PSGML mode.

w3m

Installed. Tested - works fine.

Interface to w3m text-mode browser.

session

Installed.

template

emms

Final Verdict

Bugs

Auctex

Not sure whose fault this is but I have a strange interaction between Auctex and the rest of emacs. Emacs contains a file syntax.el that is required by font-lock.el. However, there is also a syntax.el in the auctex/autoload directory that seems to be lisp files generated automatically to give support for latex style files. Unfortunately, the auctex directory is first in the load path so emacs loads the wrong file and complains. Solved for the time being by doing touch /usr/share/emacs/site-lisp/auctex/auto/.nosearch but this is not an ideal solution.

ECB

General Emacs annoyances