Today, the two major surviving branches on the emacs family tree are GNU/Emacs (or 'FSF/Emacs'), and XEmacs – they split off after the so-called Emacs Schism of the 1990's. Much has been said and written about it, so I don't need to go into that here - see EmacsWiki for the details. Anyway, the 'schism' seems less important now, as XEmacs seems to have lost a bit of steam, with GNU/Emacs picking up all the cool stuff that only XEmacs used to have, and then some.
Admittedly, it's been a while since I used XEmacs, but the one thing I
remember that it still somewhat missing in GNU/Emacs, is package management. XEmacs has a nice system where you can mark packages for
installation, and then get them from a website; much easier than the GNU/Emacs
way, where you need to manually download things, maybe compile them, and
.emacs - at least for things that your OS or distribution does
This has changed now with ELPA, the Emacs Lisp Package Archive. It's Tom Tromey's answer to the XEmacs package manager. The ELPA website explains its installation quite clearly; basically, evaluate:
(let ((buffer (url-retrieve-synchronously "http://tromey.com/elpa/package-install.el"))) (save-excursion (set-buffer buffer) (goto-char (point-min)) (re-search-forward "^$" nil 'move) (eval-region (point) (point-max)) (kill-buffer (current-buffer))))(you can 'evaluate' code by going just to the right of the last parenthesis and press
This will add some code at the end of your
To get a list of the available packages, you can use
M-x package-list-packages; ELPA will download the most recent list in a buffer
(see the screenshot). Now, to install packages, move your cursor to them and
i. This will mark the packages for installation. When you're done with
x, and ELPA will install the packages for you (under
Now, the list of packages in ELPA is not very big yet, but it's growing. I wishfully think that ELPA is to be a really important part of the Emacs ecosystem of the future. I submitted my TexDrive package for inclusion into ELPA; hopefully many other package authors will do the same.