2009-07-28

emacs 23 has been released!

Emacs 23(.1) has been released! After only just over two years since the previous version, emacs 23 has been released on July 29 2009. Time to celebrate! And a big thanks all the talented hackers that made it possible!

Emacs 23 brings many new features. Some of those have been discussed before in emacs-fu, and of course you can get the full list from the NEWS-file (C-h n). This is just a list of some of the highlights, in particular the end-user-visible ones. Let's go through them - of course I cannot mention all of them, so feel free to add your favorite one in the comments.

fonts & anti-aliasing

Finally, emacs 23 brings support for anti-aliased fonts to X (Mac/Windows users have had this for a while). If you're running emacs on X, this one change is enough to never want to go back to an older version of Emacs again.

The new font system mentioned in some posts before: setting fonts and emacs 23.

support for D-Bus and Zeroconf

You can now call other services on the desktop using the DBUS IPC system (popular on X); using d-bus: an example shows how to communicate with the Tomboy note taker program from emacs. As more and more desktop services are accessible using D-BUS, this offers great opportunities for better integrating emacs with the rest of the desktop. For example, one could imagine that emacs could communicate with a network manager when it needs a connection. Or it could show a desktop notification when an appointment is near. And all without adding hard dependencies or calling external binaries.

Using Zeroconf is also quite easy; for example, to get a list of all zeroconf-support printers, you could do something silly like:

(require 'zeroconf)
(zeroconf-init)
(dolist (srv (zeroconf-list-services "_printer._tcp"))
  (insert (format "\nprinter: %s" (nth 2 srv))))

to insert a list of the available printers in your current buffer. As with D-Bus, it's really an enabler for a lot of cool things.

support for 'headless' emacs-daemon

If you have a lot of support packages, emacs startup can be a bit slow. However, emacs 23 brings emacs --daemon, which enables you to start emacs in the background (for example when you log in). You can instantly pop up new emacs windows (frames) with emacsclient. Of course, you could already have an emacs 'server' in older versions, but being able to start it in the background makes this a much nicer solution.

The Emacs-daemon was discussed in emacs-fu in emacs –daemon and windows and daemons (for MS-Windows). Popping up new emacs windows is so fast that you can use emacs for any editing job, for example as an editor for an email program, or for quick rememember notes.

You can even combine X and console clients in one session now.

Emacs now support Xembed

This enables you to embed emacs in other programs (on X) using XEmbed. Haven't played with that yet. There is some more information in EmacsWiki/Xembed.

Support for frame opacity

You can now make you emacs frames transparent. Discussed before in transparent emacs. Not sure how useful this is, but it surely looks nice :)

Internationalization

Emacs's character set is a superset of Unicode, with about four times the space available. That should be enough for the foreseeable future… There are also many new character sets available, as well as new language environments, such as Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu, Sinhala, and TaiViet.

Note that, internally, emacs uses UTF-8 now.

New defaults

  • Screen motion now goes by screen lines by default, that is when you move the cursor up or down, it follows the line as you see them. Nice.
  • Transient mark mode (visible selection) is now on by default, so no need for (transient-mark-mode t) in your .emacs anymore. However, you still need to put (delete-selection-mode t) if you like replace the current selection with your typing.
  • Also shift-select mode is enabled by default, so you can select with shift + the arrow keys.

New modes and packages, and updated ones

13 comments:

Nilesh Kapadia said...

The new default cursor up / down behavior sometimes makes keyboard macros work differently then I intend them to (I rely on cursor down to go to the actual next line). I disabled it with this:

(setq line-move-visual nil)

Maybe its possible to disable it only during execution of keyboard macros.

Dan said...

Out of curiosity, have you (or anyone reading) had redraw problems in Emacs 23 on X? I don't have any if I run Emacs 23 in console, but if I use emacs 23 gtk I have all kinds of artifacts. Unusably distracting.

I tried filing a bug report (M-x report-emacs-bug) but I don't think it ever made it. :(

Ferk said...

It would be really cool if it was possible to replace every text form in Firefox with an embedded emacs client

E.L.K. said...

2 Ferk:

It would be really cool to replace _any_ text form with an embedded emacs. ((:

Anonymous said...

@Ferk,

You might be able to get close with the It's All Text firefox plugin:

https://addons.mozilla.org/en-US/firefox/addon/4125

Anonymous said...

@Dan, the redraw problems are from an interaction between emacs and XGL/Compiz. Turning off advanced desktop affects will fix the problem.

Now if only they'd fix the problems with show-paren-mode and shell mode... sigh

Laurynas said...

A superset of Unicode? Why? I guess there must be a good reason for that, otherwise it smells like an overengineering.

Dan said...

@Dlowe, awesome -- thanks!

I figured it was something with my setup you'd think people would be rampaging with torches and pitchforks if it was widespread.

Unknown said...

@laurynas

Overengineering? In emacs? I am shocked. Shocked!

Unknown said...

@laurynas , @sorpigal,

overengineering in emacs ?

Change your perspective, the others are underengineered, if at all :-)

martinez said...

(Still no win32 version available ;)

Anonymous said...

@martinez there is a windows version - see ftp://ftp.gnu.org/gnu/emacs/windows/emacs-23.1-bin-i386.zip I'm running it now @work

Jeff Martens said...

@nilesh Thanks! I was thinking it's a bug that emacs no longer understands the structure of a text file (seems that should be a bug), but if the workaround is that easy...