July 2, 2007

Emacs 22 enhancements make venerable editor flashy again

Author: Nathan Willis

Emacs 22.1 hit the street a month ago, a long-awaited update to the GNU project's customizable and extensible do-everything super-editor that has been six years in the making. Here's a look at what you'll find in the new version.

Befitting a six-year release cycle, the list of changes in Emacs 22.1 is enormous; 224KB in plain text. The bulk of new features live in the editor's major and minor modes -- modules tailored to specific kinds of work, be it BibTeX editing or Lisp programming -- rather than in the core editing functionality. But there are improvements that all Emacs users will find significant.

You can download the new version of Emacs in source form from its home page on the GNU Web site. Although it could be a while before it comes to your distribution in binary form, Emacs 22 has been in development long enough that chances are good someone has already built a binary package for your distro. To find it, your best bets are to consult your distro's support forum, and to search emacswiki.org, where helpful Emacs hackers often link to their own successful binary builds. If you are new to Emacs, you should know going into it that the newly released stable version is, in fact, named Emacs 22.1, despite the fact that a lot of people call it Emacs 22 for short. Yes, it is weird, but in this case they are talking about the same thing.

Integration and simplification

On Linux systems, the most noticeable change is that Emacs 22.1 uses GTK+ as its GUI toolkit. Say goodbye to blocky, Motif-like menus, buttons, and fonts. The menus, toolbar icons, and window decorations blend in seamlessly with other GTK applications. This is not merely a cosmetic change, however; using GTK for file Open and Save dialogs gives GNOME users access to their Nautilus bookmarks and other niceties.

Other individual interface "modernizations" are welcome, too. Emacs now fully supports drag and drop when running on X Window systems: drag a file onto an Emacs editing window to open it up, or onto a dired window to move it. There are several improvements to mouse wheel support, and clicking on hyperlinks will open them in a browser. And Emacs can now automatically inherit the language environment and keyboard layout from the operating system's locale setting.

On Windows, Emacs now supports images, sounds, system tool tips, and mice with more than three buttons, and will automatically inherit the color scheme of native applications.

Printing has received a major upgrade, with the addition of built-in support for Ghostscript. You have to enable the new printing package in your .emacs file by adding (require 'printing), but you get such niceties as Print Preview.

Some changes do not bring new functionality to Emacs, but make existing functionality available in what you might call non-Emacs ways. For instance, several of the most common UI tweaks (such as showing or hiding the toolbar, or moving the scroll bars from one side of the window to the other) are now available from the Options menu, making them considerably easier to toggle than going through Emacs built-in customization mode.

Similarly, the traditional cut/copy/paste key bindings remain, but they are joined by an optional Common User Access (CUA) mode: Ctrl-c for copy, Ctrl-v for paste, and so on. A new "soft word wrap" preserves line breaks in files, but allows easier navigation with the keyboard arrow keys. And you can record and play back macros with F3 and F4, respectively.

Fancy new stuff

Usability improvements like GTK and CUA might tempt new users to finally switch over to Emacs, but Emacs vets get their fair share of new fun in this release as well.

One of the most talked-about new developments is Org Mode, a Getting Things Done (GTD) note and planning mode. Org mode lets GTD proselytes keep track of their action lists, contexts, and projects from within Emacs, but it stores all of the info in plain text files, so they are portable.

This release also introduces the concept of filesets -- user-defined groupings of files that can be searched and edited collectively, all at once. That means no more need for stepping through entire directories to perform a search-and-replace in every single file.

There are several new text faces defined, meaning you can further customize all parts of the interface. The example given in the release notes is the shadow face, with which you can de-emphasize text. Thus when you open a file, the minibuffer can gray-out the directory name using shadow face, making the file name you type stand out more.

Programmers get a lot of new features, including support for languages like Python, PHP, and Lua, and the excellent Flymake syntax checker. There are new packages for general use, such as image manipulation, RSS feed reading, iCalendar-compatible calendaring, and chatting over IRC. For polyglots, a lot of new languages, input methods, character sets, and coding systems are available.

The last word

Obviously there is much more in Emacs 22.1 than there is space to review. Many of the enhancements are unique to specialty usage; if you don't program much in Emacs Lisp, you would never know how much easier it is in this release. But that is a side effect of Emacs' flexibility: it is so easy to write add-on packages that there is a dizzying array of them.

I would give all the new features in Emacs 22.1 high marks -- though I don't know that elements like Org Mode are what most users would deem significant. But the changes to the Emacs core in this release are more substantial, and are deserving of real praise. Using GTK is a giant leap forward; Emacs 21 was the last non-GTK app running on my desktop, despite being the one of the ones I spent the most time in. Drag and drop is a feature I never thought I would care about, but I have actually found myself using it.

However the GNU project might feel about its name, Linux is the dominant Unix-like operating system on the market today. Sprucing up Emacs to use modern GUI features is critical to maintaining its profile in front of users too young to remember, say, CDE. I am thrilled to see Emacs 22 and how big of an improvement it is on today's X-based desktops. And I am already looking forward to Emacs 23 -- which I hope won't be another six years away.


  • Desktop Software
Click Here!