Emacs 23 has been released. You can download it from GNU's FTP server.
The most notable new features or changes that I noticed or have been using:
- A single Emacs process can generate frames on any number of TTYs and on X simultaneously. Run M-x server-start and then emacsclient -t or emacsclient -c to create a new TTY or X frame, respectively.
- C-p and C-n now move by screen/visual lines instead of by logical lines. While this makes Emacs more consistent with most modern apps, it has the potential to break keyboard macros. If you use macros frequently, consider setting (setq line-move-visual nil) to disable this behavior.
- Transient Mark mode is enabled by default. I find t-m-m is occasionally really handy, especially after the mark-* commands, and for restricting the region for query-replace. However, I think t-m-m highlights a little too aggressively. To disable t-m-m except after the mark-* commands, I use the following:
- C-l is bound to recenter-top-bottom, which moves the viewable area so that the current line is at the center, top, or bottom on successive presses. Useful for surveying the area around point.
- DocView mode, new, is a PDF/PostScript/DVI viewer.
- Emacs is smarter about splitting windows (e.g. after C-x 4 C-f), splitting vertically if your frame is sufficiently wide.
- Beautiful anti-aliased fonts.
(transient-mark-mode 0) ;; Activate t-m-m only after mark-* commands (you can also enable it manually ;; at any time with C-u C-x C-x). (require 'cl) (macrolet ((advise (&rest commands) `(progn ,@(mapcar (lambda (command) `(defadvice ,command (after transient-mark activate) "Activate Transient Mark mode temporarily." (setq transient-mark-mode '(only)))) commands)))) (advise mark-sexp mark-word mark-paragraph mark-defun mark-end-of-sentence mark-page mark-whole-buffer LaTeX-mark-environment LaTeX-mark-section))
There are many, many, more changes. See etc/NEWS for the gory details.
On emacs-devel, I recently got a pointer to Richard Stallman's 1981 paper on the design of Emacs, presented at the ACM Conference on Text Processing:
Extensibility means that the user can add new editing commands or change old ones to fit his editing needs, while he is editing. EMACS is written in a modular fashion, composed of many separate and independent functions. The user extends EMACS by adding or replacing functions, writing their definitions in the same language that was used to write the original EMACS system. We will explain below why this is the only method of extension which is practical in use: others are theoretically equally good but discourage use, or discourage nontrivial use.
Extensibility makes EMACS more flexible than any other editor. Users are not limited by the decisions made by the EMACS implementors. What we decide is not worth while to add, the user can provide for himself. He can just as easily provide his own alternative to a feature if he does not like the way it works in the standard system.
It is striking how so little software today, even "professional" software that users are apt to use 8 hours a day, is actually designed to facilitate extensibility and automation by users.