]> git.eshelyaron.com Git - emacs.git/commitdiff
*** empty log message ***
authorRichard M. Stallman <rms@gnu.org>
Mon, 2 May 2005 20:58:54 +0000 (20:58 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 2 May 2005 20:58:54 +0000 (20:58 +0000)
etc/ChangeLog
etc/NEWS

index 902dcfb64a2e0cd2e1ec3bcad5b79acbf129be5a..07a3c4d829779f929da74a0080c9e865c6f07a4c 100644 (file)
@@ -1,3 +1,7 @@
+2005-05-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * NEWS: Items rearranged in logical order.
+
 2005-05-01  Lars Hansen  <larsh@math.ku.dk>
 
        * NEWS: Correct key binding for dired-mark-omitted.
index 045a6e53731a609162e18576e5aaee3e69d9e538..82b23e90f883d4440b4664ef00ef7f63180feb90 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -18,34 +18,21 @@ so we will look at it and add it to the manual.
 * Installation Changes in Emacs 22.1
 
 ---
-** Emacs includes now support for loading image libraries on demand.
-(Currently this feature is only used on MS Windows.)  You can configure
-the supported image types and their associated dynamic libraries by
-setting the variable `image-library-alist'.
+** Emacs now supports new configure options `--program-prefix',
+`--program-suffix' and `--program-transform-name' that affect the names of
+installed programs.
 
 ---
-** New translations of the Emacs Tutorial are available in the following
-   languages: Brasilian, Bulgarian, Chinese (both with simplified and
-   traditional characters), French, and Italian.  Type `C-u C-h t' to
-   choose one of them in case your language setup doesn't automatically
-   select the right one.
+** Emacs can now be built without sound support.
 
 ---
 ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
 when you run configure.  This requires Gtk+ 2.0 or newer.  This port
 provides a way to display multilingual text in menus (with some caveats).
 
----
-** Emacs can now be built without sound support.
-
 ---
 ** The `emacsserver' program has been removed, replaced with elisp code.
 
----
-** Emacs now supports new configure options `--program-prefix',
-`--program-suffix' and `--program-transform-name' that affect the names of
-installed programs.
-
 ---
 ** By default, Emacs now uses a setgid helper program to update game
 scores.  The directory ${localstatedir}/games/emacs is the normal
@@ -77,6 +64,22 @@ together with the Emacs User Manual, into the Info directory.  A menu
 item was added to the menu bar that makes it easy accessible
 (Help->More Manuals->Introduction to Emacs Lisp).
 
+---
+** New translations of the Emacs Tutorial are available in the following
+   languages: Brasilian, Bulgarian, Chinese (both with simplified and
+   traditional characters), French, and Italian.  Type `C-u C-h t' to
+   choose one of them in case your language setup doesn't automatically
+   select the right one.
+
+---
+** A French translation of the `Emacs Survival Guide' is available.
+
+---
+** Emacs now includes support for loading image libraries on demand.
+(Currently this feature is only used on MS Windows.)  You can configure
+the supported image types and their associated dynamic libraries by
+setting the variable `image-library-alist'.
+
 ---
 ** Support for Cygwin was added.
 
@@ -98,9 +101,6 @@ See the files mac/README and mac/INSTALL for build instructions.
 create non-Carbon build by specifying `NonCarbon' as a target.  See
 the files mac/README and mac/INSTALL for build instructions.
 
----
-** A French translation of the `Emacs Survival Guide' is available.
-
 ---
 ** Building with -DENABLE_CHECKING does not automatically build with union
 types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
@@ -108,90 +108,73 @@ types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
 \f
 * Changes in Emacs 22.1
 
-** Moving or scrolling through images (and other lines) taller that
-the window now works sensible, by automatically adjusting the window's
-vscroll property.
+** New command line option -Q or --quick.
+This is like using -q --no-site-file, but in addition it also disables
+the fancy startup screen.
 
 +++
-** In graphical mode, with a C program, GUD Tooltips have been extended to
-display the #define directive associated with an identifier when program is
-not executing.
+** New command line option -D or --basic-display.
+Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
+the blinking cursor.
 
 +++
-** `comint-use-prompt-regexp-instead-of-fields' has been renamed
-`comint-use-prompt-regexp'.  The old name has been kept as an alias,
-but declared obsolete.
-
-** Improved key bindings support when running in an xterm.
-When emacs is running in an xterm more key bindings are available. The
-following should work:
-{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
-These key bindings work on xterm from X.org 6.8, they might not work on
-some older versions of xterm, or on some proprietary versions.
-
-** Improved Thai support.  A new minor mode `thai-word-mode' (which is
-automatically activated if you select Thai as a language
-environment) changes key bindings of most word-oriented commands to
-versions which recognize Thai words.  Affected commands are
-    M-f     (forward-word)
-    M-b     (backward-word)
-    M-d     (kill-word)
-    M-DEL   (backward-kill-word)
-    M-t     (transpose-words)
-    M-q     (fill-paragraph)
+** New command line option -nbc or --no-blinking-cursor disables
+the blinking cursor on graphical terminals.
 
 +++
-** Auto Compression mode is now enabled by default.
-
-** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
+** The command line option --no-windows has been changed to
+--no-window-system.  The old one still works, but is deprecated.
 
-Since the default input is the current directory, this has the effect
-of specifying the current directory.  Normally that means to visit the
-directory with Dired.
++++
+** The -f option, used from the command line to call a function,
+now reads arguments for the function interactively if it is
+an interactively callable function.
 
----
-** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
++++
+** Emacs can now be invoked in full-screen mode on a windowed display.
+When Emacs is invoked on a window system, the new command-line options
+`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
+whose width, height, or both width and height take up the entire
+screen size.  (For now, this does not work with some window managers.)
 
----
-** The default settings for JIT stealth lock parameters are changed.
-The default value for the user option jit-lock-stealth-time is now 16
-instead of 3, and the default value of jit-lock-stealth-nice is now
-0.5 instead of 0.125.  The new defaults should lower the CPU usage
-when Emacs is fontifying in the background.
++++
+** Emacs now displays a splash screen by default even if command-line
+arguments were given.  The new command-line option --no-splash
+disables the splash screen; see also the variable
+`inhibit-startup-message' (which is also aliased as
+`inhibit-splash-screen').
 
----
-** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
++++
+** New user option `inhibit-startup-buffer-menu'.
+When loading many files, for instance with `emacs *', Emacs normally
+displays a buffer menu.  This option turns the buffer menu off.
 
----
-** Language environment and various default coding systems are setup
-more correctly according to the current locale name.  If the locale
-name doesn't specify a charset, the default is what glibc defines.
-This change may result in using the different coding systems as
-default in some locale (e.g. vi_VN).
++++
+** Init file changes
+You can now put the init files .emacs and .emacs_SHELL under
+~/.emacs.d or directly under ~.  Emacs will find them in either place.
 
 +++
-** The commands copy-file, rename-file, make-symbolic-link and
-add-name-to-file, when given a directory as the "new name" argument,
-convert it to a file name by merging in the within-directory part of
-the existing file's name.  (This is the same convention that shell
-commands cp, mv, and ln follow.)  Thus, M-x copy-file RET ~/foo RET
-/tmp RET copies ~/foo to /tmp/foo.
+** Emacs now reads the standard abbrevs file ~/.abbrev_defs
+automatically at startup, if it exists.  When Emacs offers to save
+modified buffers, it saves the abbrevs too if they have changed.  It
+can do this either silently or asking for confirmation first,
+according to the value of `save-abbrevs'.
 
 +++
-** M-o now is the prefix key for setting text properties;
-M-o M-o requests refontification.
+** The mode line position information now comes before the major mode.
+When the file is maintained under version control, that information
+appears between the position information and the major mode.
 
 +++
 ** M-g is now a prefix key.
-
 M-g g and M-g M-g run goto-line.
 M-g n and M-g M-n run next-error (like C-x `).
 M-g p and M-g M-p run previous-error.
 
 +++
-** font-lock-lines-before specifies a number of lines before the
-current line that should be refontified when you change the buffer.
-The default value is 1.
+** M-o now is the prefix key for setting text properties;
+M-o M-o requests refontification.
 
 +++
 ** C-u M-x goto-line now switches to the most recent previous buffer,
@@ -200,86 +183,46 @@ and goes to the specified line in that buffer.
 When goto-line starts to execute, if there's a number in the buffer at
 point then it acts as the default argument for the minibuffer.
 
----
-** Emacs now responds to mouse-clicks on the mode-line, header-line and
-display margin, when run in an xterm.
-
 +++
-** M-SPC (just-one-space) when given a numeric argument N
-converts whitespace around point to N spaces.
+** You can now switch buffers in a cyclic order with C-x C-left and
+(prev-buffer) and C-x C-right (next-buffer).  C-x left and C-x right
+can be used as well.
 
 +++
-** Control characters and escape glyphs are now shown in the new
-escape-glyph face.
+** New command `Buffer-menu-toggle-files-only' toggles display of file
+buffers only in the Buffer Menu.  It is bound to `T' in Buffer Menu
+mode.
 
 +++
-** Non-breaking space and hyphens are now prefixed with an escape
-character, unless the new user variable `show-nonbreak-escape' is set
-to nil.
-
----
-** The type-break package now allows `type-break-file-name' to be nil
-and if so, doesn't store any data across sessions.  This is handy if
-you don't want the .type-break file in your home directory or are
-annoyed by the need for interaction when you kill Emacs.
-
----
-** display-battery has been replaced by display-battery-mode.
+** `buffer-menu' and `list-buffers' now list buffers whose names begin
+with a space, when those buffers are visiting files.  Normally buffers
+whose names begin with space are omitted.
 
 ---
-** calculator.el now has radix grouping mode, which is available when
-`calculator-output-radix' is non-nil.  In this mode a separator
-character is used every few digits, making it easier to see byte
-boundries etc.  For more info, see the documentation of the variable
-`calculator-radix-grouping-mode'.
-
-+++
-** You can now follow links by clicking Mouse-1 on the link.
-
-Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
-click to follow a link, whereas most other applications use a Mouse-1
-click for both purposes, depending on whether you click outside or
-inside a link.  Now the behavior of a Mouse-1 click has been changed
-to match this context-sentitive dual behavior.
-
-Depending on the current mode, a Mouse-2 click in Emacs may do much
-more than just follow a link, so the new Mouse-1 behavior is only
-activated for modes which explicitly mark a clickable text as a "link"
-(see the new function `mouse-on-link-p' for details).  The Lisp
-packages that are included in release 22.1 have been adapted to do
-this, but external packages may not yet support this.  However, there
-is no risk in using such packages, as the worst thing that could
-happen is that you get the original Mouse-1 behavior when you click
-on a link, which typically means that you set point where you click.
+** The new options `buffers-menu-show-directories' and
+`buffers-menu-show-status' let you control how buffers are displayed
+in the menu dropped down when you click "Buffers" from the menu bar.
 
-If you want to get the original Mouse-1 action also inside a link, you
-just need to press the Mouse-1 button a little longer than a normal
-click (i.e. press and hold the Mouse-1 button for half a second before
-you release it).
+`buffers-menu-show-directories' controls whether the menu displays
+leading directories as part of the file name visited by the buffer.
+If its value is `unless-uniquify', the default, directories are
+shown unless uniquify-buffer-name-style' is non-nil.  The value of nil
+and t turn the display of directories off and on, respectively.
 
-Dragging the Mouse-1 inside a link still performs the original
-drag-mouse-1 action, typically copy the text.
+`buffers-menu-show-status' controls whether the Buffers menu includes
+the modified and read-only status of the buffers.  By default it is
+t, and the status is shown.
 
-You can customize the new Mouse-1 behavior via the new user options
-`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+Setting these variables directly does not take effect until next time
+the Buffers menu is regenerated.
 
 +++
-** require-final-newline now has two new possible values:
-
-`visit' means add a newline (as an undoable change) if it's needed
-when visiting the file.
-
-`visit-save' means add a newline (as an undoable change) if it's
-needed when visiting the file, and also add a newline if it's needed
-when saving the file.
+** The old bindings C-M-delete and C-M-backspace have been deleted,
+since there are situations where one or the other will shut down
+the operating system or your X server.
 
 +++
-** The new option mode-require-final-newline controls how certain
-major modes enable require-final-newline.  Any major mode that's
-designed for a kind of file that should normally end in a newline
-sets require-final-newline based on mode-require-final-newline.
-So you can customize mode-require-final-newline to control what these
-modes do.
+** `undo-only' does an undo which does not redo any previous undo.
 
 +++
 ** When the undo information of the current command gets really large
@@ -287,358 +230,322 @@ modes do.
 you about it.
 
 +++
-** line-move-ignore-invisible now defaults to t.
+** M-SPC (just-one-space) when given a numeric argument N
+converts whitespace around point to N spaces.
 
-+++
-** In Outline mode, hide-body no longer hides lines at the top
-of the file that precede the first header line.
+---
+** New command `kill-whole-line' kills an entire line at once.
+By default, it is bound to C-S-<backspace>.
 
 +++
-** In Enriched mode, `set-left-margin' and `set-right-margin' are now
-by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
-and `C-c C-r'.
+** Yanking text now discards certain text properties that can
+be inconvenient when you did not expect them.  The variable
+`yank-excluded-properties' specifies which ones.  Insertion
+of register contents and rectangles also discards these properties.
 
 +++
-** In processing a local variables list, Emacs strips the prefix and
-suffix are from every line before processing all the lines.
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Indented-Text mode.
 
 +++
-** `apply-macro-to-region-lines' now operates on all lines that begin
-in the region, rather than on all complete lines in the region.
-
----
-** global-whitespace-mode is a new alias for whitespace-global-mode.
-
-+++
-** There are now two new regular expression operators, \_< and \_>,
-for matching the beginning and end of a symbol.  A symbol is a
-non-empty sequence of either word or symbol constituent characters, as
-specified by the syntax table.
----
-*** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
+** Movement commands `beginning-of-buffer', `end-of-buffer',
+`beginning-of-defun', `end-of-defun' do not set the mark if the mark
+is already active in Transient Mark mode.
 
 +++
-** Passing resources on the command line now works on MS Windows.
-You can use --xrm to pass resource settings to Emacs, overriding any
-existing values.  For example:
-
-  emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
-
-will start up Emacs on an initial frame of 100x20 with red background,
-irrespective of geometry or background setting on the Windows registry.
+** The parameters of automatic hscrolling can now be customized.
+The variable `hscroll-margin' determines how many columns away from
+the window edge point is allowed to get before automatic hscrolling
+will horizontally scroll the window.  The default value is 5.
 
----
-** The terminal emulation code in term.el has been improved, it can
-run most curses applications now.
+The variable `hscroll-step' determines how many columns automatic
+hscrolling scrolls the window when point gets too close to the
+window edge.  If its value is zero, the default, Emacs scrolls the
+window so as to center point.  If its value is an integer, it says how
+many columns to scroll.  If the value is a floating-point number, it
+gives the fraction of the window's width to scroll the window.
 
-** New features in evaluation commands
+The variable `automatic-hscrolling' was renamed to
+`auto-hscroll-mode'.  The old name is still available as an alias.
 
 +++
-*** The function `eval-defun' (C-M-x) called on defface reinitializes
-the face to the value specified in the defface expression.
+** A prefix argument is no longer required to repeat a jump to a
+previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
+mark ring.  Use C-u C-u C-SPC to set the mark immediately after a jump.
 
 +++
-*** Typing C-x C-e twice prints the value of the integer result
-in additional formats (octal, hexadecimal, character) specified
-by the new function `eval-expression-print-format'.  The same
-function also defines the result format for `eval-expression' (M-:),
-`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
-
----
-** New input method chinese-sisheng for inputting Chinese Pinyin
-characters.
+** Marking commands extend the region when invoked multiple times.  If
+you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
+C-M-h (mark-defun) repeatedly, the marked region extends each time, so
+you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
+This feature also works for mark-end-of-sentence, if you bind that to
+a key.  It also extends the region when the mark is active in Transient
+Mark mode, regardless of the last command.  To start a new region with
+one of marking commands in Transient Mark mode, you can deactivate the
+active region with C-g, or set the new mark with C-SPC.
 
 +++
-** New command quail-show-key shows what key (or key sequence) to type
-in the current input method to input a character at point.
+** M-h (mark-paragraph) now accepts a prefix arg.
+With positive arg, M-h marks the current and the following paragraphs;
+if the arg is negative, it marks the current and the preceding
+paragraphs.
 
 +++
-** You can now switch buffers in a cyclic order with C-x C-left and
-(prev-buffer) and C-x C-right (next-buffer).  C-x left and C-x right
-can be used as well.
-
----
-** Commands winner-redo and winner-undo, from winner.el, are now bound to
-C-c <left> and C-c <right>, respectively.  This is an incompatible change.
-
----
-** Help commands `describe-function' and `describe-key' now show function
-arguments in lowercase italics on displays that support it.  To change the
-default, customize face `help-argument-name' or redefine the function
-`help-default-arg-highlight'.
-
----
-** The comint prompt can now be made read-only, using the new user
-option `comint-prompt-read-only'.  This is not enabled by default,
-except in IELM buffers.  The read-only status of IELM prompts can be
-controlled with the new user option `ielm-prompt-read-only', which
-overrides `comint-prompt-read-only'.
-
-The new commands `comint-kill-whole-line' and `comint-kill-region'
-support editing comint buffers with read-only prompts.
+** Some commands do something special in Transient Mark mode when the
+mark is active--for instance, they limit their operation to the
+region.  Even if you don't normally use Transient Mark mode, you might
+want to get this behavior from a particular command.  There are two
+ways you can enable Transient Mark mode and activate the mark, for one
+command only.
 
-`comint-kill-whole-line' is like `kill-whole-line', but ignores both
-read-only and field properties.  Hence, it always kill entire
-lines, including any prompts.
+One method is to type C-SPC C-SPC; this enables Transient Mark mode
+and sets the mark at point.  The other method is to type C-u C-x C-x.
+This enables Transient Mark mode temporarily but does not alter the
+mark or the region.
 
-`comint-kill-region' is like `kill-region', except that it ignores
-read-only properties, if it is safe to do so.  This means that if any
-part of a prompt is deleted, then the entire prompt must be deleted
-and that all prompts must stay at the beginning of a line.  If this is
-not the case, then `comint-kill-region' behaves just like
-`kill-region' if read-only are involved: it copies the text to the
-kill-ring, but does not delete it.
+After these commands, Transient Mark mode remains enabled until you
+deactivate the mark.  That typically happens when you type a command
+that alters the buffer, but you can also deactivate the mark by typing
+C-g.
 
 +++
-** You can now use next-error (C-x `) and previous-error to advance to
-the next/previous matching line found by M-x occur.
+** find-file-read-only visits multiple files in read-only mode,
+when the file name contains wildcard characters.
 
 +++
-** Telnet now prompts you for a port number with C-u M-x telnet.
+** find-alternate-file replaces the current file with multiple files,
+when the file name contains wildcard characters.
 
 +++
-** New command line option -Q or --quick.
+** Auto Compression mode is now enabled by default.
 
-This is like using -q --no-site-file, but in addition it also disables
-the fancy startup screen.
+---
+** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
 
-+++
-** New command line option -D or --basic-display.
+Since the default input is the current directory, this has the effect
+of specifying the current directory.  Normally that means to visit the
+directory with Dired.
 
-Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
-the blinking cursor.
++++
+** When you are root, and you visit a file whose modes specify
+read-only, the Emacs buffer is now read-only too.  Type C-x C-q if you
+want to make the buffer writable.  (As root, you can in fact alter the
+file.)
 
 +++
-** New command line option -nbc or --no-blinking-cursor disables
-the blinking cursor on graphical terminals.
+** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
+against its file, so you can see what changes you would be saving.
 
 +++
-** C-h v and C-h f commands now include a hyperlink to the C source for
-variables and functions defined in C (if the C source is available).
+** The commands copy-file, rename-file, make-symbolic-link and
+add-name-to-file, when given a directory as the "new name" argument,
+convert it to a file name by merging in the within-directory part of
+the existing file's name.  (This is the same convention that shell
+commands cp, mv, and ln follow.)  Thus, M-x copy-file RET ~/foo RET
+/tmp RET copies ~/foo to /tmp/foo.
 
 ---
 ** When used interactively, `format-write-file' now asks for confirmation
 before overwriting an existing file, unless a prefix argument is
 supplied.  This behavior is analogous to `write-file'.
 
-+++
-** You can now use Auto Revert mode to `tail' a file.
-If point is at the end of a file buffer before reverting, Auto Revert
-mode keeps it at the end after reverting.  Similarly if point is
-displayed at the end of a file buffer in any window, it stays at
-the end of the buffer in that window.  This allows to tail a file:
-just put point at the end of the buffer and it stays there.  This
-rule applies to file buffers.  For non-file buffers, the behavior may
-be mode dependent.
-
-If you are sure that the file will only change by growing at the end,
-then you can tail the file more efficiently by using the new minor
-mode Auto Revert Tail mode.  The function `auto-revert-tail-mode'
-toggles this mode.
+---
+** The variable `auto-save-file-name-transforms' now has a third element that
+controls whether or not the function `make-auto-save-file-name' will
+attempt to construct a unique auto-save name (e.g. for remote files).
 
 +++
-** Auto Revert mode is now more careful to avoid excessive reverts and
-other potential problems when deciding which non-file buffers to
-revert.  This matters especially if Global Auto Revert mode is enabled
-and `global-auto-revert-non-file-buffers' is non-nil.  Auto Revert
-mode only reverts a non-file buffer if the buffer has a non-nil
-`revert-buffer-function' and a non-nil `buffer-stale-function', which
-decides whether the buffer should be reverted.  Currently, this means
-that auto reverting works for Dired buffers (although this may not
-work properly on all operating systems) and for the Buffer Menu.
+** The max size of buffers and integers has been doubled.
+On 32bit machines, it is now 256M (i.e. 268435455).
 
 +++
-** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
-Revert mode reliably updates version control info (such as the version
-control number in the mode line), in all version controlled buffers in
-which it is active.  If the option is nil, the default, then this info
-only gets updated whenever the buffer gets reverted.
+** If the user visits a file larger than `large-file-warning-threshold',
+Emacs prompts her for confirmation.
 
 +++
-** New command `Buffer-menu-toggle-files-only' toggles display of file
-buffers only in the Buffer Menu.  It is bound to `T' in Buffer Menu
-mode.
+** There's a new face `minibuffer-prompt'.
+Emacs adds this face to the list of text properties stored in the
+variable `minibuffer-prompt-properties', which is used to display the
+prompt string.
 
 ---
-** M-x compile has become more robust and reliable
-
-Quite a few more kinds of messages are recognized.  Messages that are
-recognized as warnings or informational come in orange or green, instead of
-red.  Informational messages are by default skipped with `next-error'
-(controlled by `compilation-skip-threshold').
+** Enhanced visual feedback in *Completions* buffer.
 
-Location data is collected on the fly as the *compilation* buffer changes.
-This means you could modify messages to make them point to different files.
-This also means you can not go to locations of messages you may have deleted.
+Completions lists use faces to highlight what all completions
+have in common and where they begin to differ.
 
-The variable `compilation-error-regexp-alist' has now become customizable.  If
-you had added your own regexps to this, you'll probably need to include a
-leading `^', otherwise they'll match anywhere on a line.  There is now also a
-`compilation-mode-font-lock-keywords' and it nicely handles all the checks
-that configure outputs and -o options so you see at a glance where you are.
+The common prefix shared by all possible completions uses the face
+`completions-common-part', while the first character that isn't the
+same uses the face `completions-first-difference'.  By default,
+`completions-common-part' inherits from `default', and
+`completions-first-difference' inherits from `bold'.  The idea of
+`completions-common-part' is that you can use it to make the common
+parts less visible than normal, so that the rest of the differing
+parts is, by contrast, slightly highlighted.
 
-The new file etc/compilation.txt gives examples of each type of message.
++++
+** File-name completion can now ignore directories.
+If an element of the list in `completion-ignored-extensions' ends in a
+slash `/', it indicates a subdirectory that should be ignored when
+completing file names.  Elements of `completion-ignored-extensions'
+which do not end in a slash are never considered when a completion
+candidate is a directory.
 
-** Compilation mode enhancements:
++++
+** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point.  If there is text in the buffer after point,
+it remains unchanged.
 
 +++
-*** New user option `compilation-environment'.
-This option allows you to specify environment variables for inferior
-compilation processes without affecting the environment that all
-subprocesses inherit.
+** New user option `history-delete-duplicates'.
+If set to t when adding a new history element, all previous identical
+elements are deleted.
 
 +++
-** Grep has been decoupled from compilation mode setup.
+** You can now customize fill-nobreak-predicate to control where
+filling can break lines.  The value is now normally a list of
+functions, but it can also be a single function, for compatibility.
 
----
-*** There's a new separate package grep.el.
+We provide two sample predicates, fill-single-word-nobreak-p and
+fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
 
----
-*** M-x grep has been adapted to new compile
++++
+** require-final-newline now has two new possible values:
 
-Hits are fontified in green, and hits in binary files in orange.  Grep buffers
-can be saved and automatically revisited with the new Grep mode.
+`visit' means add a newline (as an undoable change) if it's needed
+when visiting the file.
 
----
-*** Grep commands now have their own submenu and customization group.
+`visit-save' means add a newline (as an undoable change) if it's
+needed when visiting the file, and also add a newline if it's needed
+when saving the file.
 
 +++
-*** `grep-find' is now also available under the name `find-grep' where
-people knowing `find-grep-dired' would probably expect it.
-
----
-*** The new variables `grep-window-height', `grep-auto-highlight', and
-`grep-scroll-output' can be used to override the corresponding
-compilation mode settings for grep commands.
+** The new option mode-require-final-newline controls how certain
+major modes enable require-final-newline.  Any major mode that's
+designed for a kind of file that should normally end in a newline
+sets require-final-newline based on mode-require-final-newline.
+So you can customize mode-require-final-newline to control what these
+modes do.
 
 +++
-*** New option `grep-highlight-matches' highlightes matches in *grep*
-buffer.  It uses a special feature of some grep programs which accept
---color option to output markers around matches.  When going to the next
-match with `next-error' the exact match is highlighted in the source
-buffer.  Otherwise, if `grep-highlight-matches' is nil, the whole
-source line is highlighted.
+** Control characters and escape glyphs are now shown in the new
+escape-glyph face.
 
 +++
-*** New key bindings in grep output window:
-SPC and DEL scrolls window up and down.  C-n and C-p moves to next and
-previous match in the grep window.  RET jumps to the source line of
-the current match.  `n' and `p' shows next and previous match in
-other window, but does not switch buffer.  `{' and `}' jumps to the
-previous or next file in the grep output.  TAB also jumps to the next
-file.
+** Non-breaking space and hyphens are now prefixed with an escape
+character, unless the new user variable `show-nonbreak-escape' is set
+to nil.
 
 +++
-** New options `next-error-highlight' and `next-error-highlight-no-select'
-specify the method of highlighting of the corresponding source line
-in new face `next-error'.
+** In graphical mode, with a C program, GUD Tooltips have been extended to
+display the #define directive associated with an identifier when program is
+not executing.
+** Moving or scrolling through images (and other lines) taller that
+the window now works sensible, by automatically adjusting the window's
+vscroll property.
 
 +++
-** A new minor mode `next-error-follow-minor-mode' can be used in
-compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
-modes that can use `next-error').  In this mode, cursor motion in the
-buffer causes automatic display in another window of the corresponding
-matches, compilation errors, etc.  This minor mode can be toggled with
-C-c C-f.
+** font-lock-lines-before specifies a number of lines before the
+current line that should be refontified when you change the buffer.
+The default value is 1.
 
-+++
-** M-x diff uses diff-mode instead of compilation-mode.
+---
+** JIT-lock changes
 
-+++
-** M-x compare-windows now can automatically skip non-matching text to
-resync points in both windows.
+*** The default settings for JIT stealth lock parameters are changed.
+The default value for the user option jit-lock-stealth-time is now 16
+instead of 3, and the default value of jit-lock-stealth-nice is now
+0.5 instead of 0.125.  The new defaults should lower the CPU usage
+when Emacs is fontifying in the background.
 
----
-** New command `strokes-global-set-stroke-string'.
-This is like `strokes-global-set-stroke', but it allows you to bind
-the stroke directly to a string to insert.  This is convenient for
-using strokes as an input method.
 
-** Gnus package
+*** jit-lock can now be delayed with `jit-lock-defer-time'.
 
----
-*** Gnus now includes Sieve and PGG
-Sieve is a library for managing Sieve scripts.  PGG is a library to handle
-PGP/MIME.
+If this variable is non-nil, its value should be the amount of Emacs
+idle time in seconds to wait before starting fontification.  For
+example, if you set `jit-lock-defer-time' to 0.25, fontification will
+only happen after 0.25s of idle time.
 
----
-*** There are many news features, bug fixes and improvements.
-See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
+*** contextual refontification is now separate from stealth fontification.
 
-+++
-** Desktop package
+jit-lock-defer-contextually is renamed jit-lock-contextually and
+jit-lock-context-time determines the delay after which contextual
+refontification takes place.
 
 +++
-*** Desktop saving is now a minor mode, desktop-save-mode. Variable
-desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
-saving.
+** line-move-ignore-invisible now defaults to t.
 
 ---
-*** Buffers are saved in the desktop file in the same order as that in the
-buffer list.
+** A menu item "Show/Hide" was added to the top-level menu "Options".
+This menu allows you to turn various display features on and off (such
+as the fringes, the tool bar, the speedbar, and the menu bar itself).
+You can also move the vertical scroll bar to either side here or turn
+it off completely.  There is also a menu-item to toggle displaying of
+current date and time, current line and column number in the
+mode-line.
+
+---
+** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
 
 +++
-*** The desktop package can be customized to restore only some buffers immediately,
-remaining buffers are restored lazily (when Emacs is idle).
+** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
+now controlled by the variable `blink-cursor-alist'.
 
 +++
-*** New commands:
-  - desktop-revert reverts to the last loaded desktop.
-  - desktop-change-dir kills current desktop and loads a new.
-  - desktop-save-in-desktop-dir saves desktop in the directory from which
-    it was loaded.
-  - desktop-lazy-complete runs the desktop load to completion.
-  - desktop-lazy-abort aborts lazy loading of the desktop.
+** The X resource cursorBlink can be used to turn off cursor blinking.
 
----
-*** New customizable variables:
-  - desktop-save. Determins whether the desktop should be saved when it is
-    killed.
-  - desktop-file-name-format. Format in which desktop file names should be saved.
-  - desktop-path. List of directories in which to lookup the desktop file.
-  - desktop-locals-to-save. List of local variables to save.
-  - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
-  - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
-    should not delete.
-  - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
-    restored lazily (when Emacs is idle).
-  - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
-  - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
++++
+** Emacs can produce an underscore-like (horizontal bar) cursor.
+The underscore cursor is set by putting `(cursor-type . hbar)' in
+default-frame-alist.  It supports variable heights, like the `bar'
+cursor does.
 
 +++
-*** New command line option --no-desktop
+** Display of hollow cursors now obeys the buffer-local value (if any)
+of `cursor-in-non-selected-windows' in the buffer that the cursor
+appears in.
 
----
-*** New hooks:
-  - desktop-after-read-hook run after a desktop is loaded.
-  - desktop-no-desktop-file-hook run when no desktop file is found.
++++
+** The variable `cursor-in-non-selected-windows' can now be set to any
+of the recognized cursor types.
 
----
-** The saveplace.el package now filters out unreadable files.
-When you exit Emacs, the saved positions in visited files no longer
-include files that aren't readable, e.g. files that don't exist.
-Customize the new option `save-place-forget-unreadable-files' to nil
-to get the old behavior.  The new options `save-place-save-skipped'
-and `save-place-skip-check-regexp' allow further fine-tuning of this
-feature.
++++
+** The new face `mode-line-inactive' is used to display the mode line
+of non-selected windows.  The `mode-line' face is now used to display
+the mode line of the currently selected window.
+
+The new variable `mode-line-in-non-selected-windows' controls whether
+the `mode-line-inactive' face is used.
 
 +++
-** You can have several Emacs servers on the same machine.
+** New display feature: focus follows the mouse from one Emacs window
+to another, even within a frame.  If you set the variable
+mouse-autoselect-window to non-nil value, moving the mouse to a
+different Emacs window will select that window (minibuffer window can
+be selected only when it is active).  The default is nil, so that this
+feature is not enabled.
 
-       % emacs --eval '(setq server-name "foo")' -f server-start &
-       % emacs --eval '(setq server-name "bar")' -f server-start &
-       % emacsclient -s foo file1
-       % emacsclient -s bar file2
++++
+** On X, when the window manager requires that you click on a frame to
+select it (give it focus), the selected window and cursor position
+normally changes according to the mouse click position.  If you set
+the variable x-mouse-click-focus-ignore-position to t, the selected
+window and cursor position do not change when you click on a frame
+to give it focus.
 
 +++
-** On window systems, lines which are exactly as wide as the window
-(not counting the final newline character) are no longer broken into
-two lines on the display (with just the newline on the second line).
-Instead, the newline now "overflows" into the right fringe, and the
-cursor will be displayed in the fringe when positioned on that newline.
+** When you specify a frame size with --geometry, the size applies to
+all frames you create.  A position specified with --geometry only
+affects the initial frame.
 
-The new user option 'overflow-newline-into-fringe' may be set to nil to
-revert to the old behavior of continuing such lines.
++++
+** You can now customize the use of window fringes.  To control this
+for all frames, use M-x fringe-mode or the Show/Hide submenu of the
+top-level Options menu, or customize the `fringe-mode' variable.  To
+control this for a specific frame, use the command M-x
+set-fringe-style.
 
 +++
 ** The buffer boundaries (i.e. first and last line in the buffer) may
@@ -662,989 +569,1158 @@ arrow bitmaps in right fringe.  To show just the angle bitmaps in the
 left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
 
 +++
-** New command `display-local-help' displays any local help at point
-in the echo area.  It is bound to `C-h .'.  It normally displays the
-same string that would be displayed on mouse-over using the
-`help-echo' property, but, in certain cases, it can display a more
-keyboard oriented alternative.
+** On window systems, lines which are exactly as wide as the window
+(not counting the final newline character) are no longer broken into
+two lines on the display (with just the newline on the second line).
+Instead, the newline now "overflows" into the right fringe, and the
+cursor will be displayed in the fringe when positioned on that newline.
 
-+++
-** New user option `help-at-pt-display-when-idle' allows to
-automatically show the help provided by `display-local-help' on
-point-over, after suitable idle time.  The amount of idle time is
-determined by the user option `help-at-pt-timer-delay' and defaults
-to one second.  This feature is turned off by default.
+The new user option 'overflow-newline-into-fringe' may be set to nil to
+revert to the old behavior of continuing such lines.
 
----
-** New commands `scan-buf-next-region' and `scan-buf-previous-region'
-move to the start of the next (previous, respectively) region with
-non-nil help-echo property and display any help found there in the
-echo area, using `display-local-help'.
++++
+** When display margins are present in a window, the fringes are now
+displayed between the margins and the buffer's text area, rather than
+at the edges of the window.
 
 +++
-** Help mode now only makes hyperlinks for faces when the face name is
-preceded or followed by the word `face'.  It no longer makes
-hyperlinks for variables without variable documentation, unless
-preceded by one of the words `variable' or `option'.  It now makes
-hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
-enclosed in single quotes and preceded by `info anchor' or `Info
-anchor' (in addition to earlier `info node' and `Info node').
+** A window may now have individual fringe and scroll-bar settings,
+in addition to the individual display margin settings.
+
+Such individual settings are now preserved when windows are split
+horizontally or vertically, a saved window configuration is restored,
+or when the frame is resized.
 
 +++
-** The max size of buffers and integers has been doubled.
-On 32bit machines, it is now 256M (i.e. 268435455).
+** `special-display-buffer-names' and `special-display-regexps' now
+understand two new boolean pseudo-frame-parameters `same-frame' and
+`same-window'.
 
 +++
-** The -f option, used from the command line to call a function,
-now reads arguments for the function interactively if it is
-an interactively callable function.
+** Changes in C-h bindings:
 
----
-** sql changes.
+C-h e displays the *Messages* buffer.
 
-*** The variable `sql-product' controls the highlightng of different
-SQL dialects.  This variable can be set globally via Customize, on a
-buffer-specific basis via local variable settings, or for the current
-session using the new SQL->Product submenu.  (This menu replaces the
-SQL->Highlighting submenu.)
+C-h followed by a control character is used for displaying files
+    that do not change:
 
-The following values are supported:
+C-h C-f displays the FAQ.
+C-h C-e displays the PROBLEMS file.
 
-    ansi       ANSI Standard (default)
-    db2                DB2
-    informix    Informix
-    ingres      Ingres
-    interbase  Interbase
-    linter     Linter
-    ms         Microsoft
-    mysql      MySQL
-    oracle     Oracle
-    postgres   Postgres
-    solid       Solid
-    sqlite      SQLite
-    sybase      Sybase
-
-The current product name will be shown on the mode line following the
-SQL mode indicator.
-
-The technique of setting `sql-mode-font-lock-defaults' directly in
-your .emacs will no longer establish the default highlighting -- Use
-`sql-product' to accomplish this.
-
-ANSI keywords are always highlighted.
-
-*** The function `sql-add-product-keywords' can be used to add
-font-lock rules to the product specific rules.  For example, to have
-all identifiers ending in "_t" under MS SQLServer treated as a type,
-you would use the following line in your .emacs file:
-
-  (sql-add-product-keywords 'ms
-             '(("\\<\\w+_t\\>" . font-lock-type-face)))
+The info-search bindings on C-h C-f, C-h C-k and C-h C-i
+have been moved to C-h F, C-h K and C-h S.
 
-*** Oracle support includes keyword highlighting for Oracle 9i.  Most
-SQL and PL/SQL keywords are implemented.  SQL*Plus commands are
-highlighted in `font-lock-doc-face'.
+C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
 
-*** Microsoft SQLServer support has been significantly improved.
-Keyword highlighting for SqlServer 2000 is implemented.
-sql-interactive-mode defaults to use osql, rather than isql, because
-osql flushes its error stream more frequently.  Thus error messages
-are displayed when they occur rather than when the session is
-terminated.
+- C-h c and C-h k report the actual command (after possible remapping)
+  run by the key sequence.
 
-If the username and password are not provided to `sql-ms', osql is
-called with the -E command line argument to use the operating system
-credentials to authenticate the user.
+- C-h w and C-h f on a command which has been remapped now report the
+  command it is remapped to, and the keys which can be used to run
+  that command.
 
-*** Postgres support is enhanced.
-Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
-the username and the pgsql `-U' option is added.
+For example, if C-k is bound to kill-line, and kill-line is remapped
+to new-kill-line, these commands now report:
 
-*** MySQL support is enhanced.
-Keyword higlighting of MySql 4.0 is implemented.
+- C-h c and C-h k C-k reports:
+  C-k runs the command new-kill-line
 
-*** Imenu support has been enhanced to locate tables, views, indexes,
-packages, procedures, functions, triggers, sequences, rules, and
-defaults.
+- C-h w and C-h f kill-line reports:
+  kill-line is remapped to new-kill-line which is on C-k, <deleteline>
 
-*** Added SQL->Start SQLi Session menu entry which calls the
-appropriate sql-interactive-mode wrapper for the current setting of
-`sql-product'.
+- C-h w and C-h f new-kill-line reports:
+  new-kill-line is on C-k
 
 ---
-** M-x view-file and commands that use it now avoid interfering
-with special modes such as Tar mode.
+** Help commands `describe-function' and `describe-key' now show function
+arguments in lowercase italics on displays that support it.  To change the
+default, customize face `help-argument-name' or redefine the function
+`help-default-arg-highlight'.
 
-** Enhancements to apropos commands:
++++
+** C-h v and C-h f commands now include a hyperlink to the C source for
+variables and functions defined in C (if the C source is available).
 
 +++
-*** The apropos commands now accept a list of words to match.
-When more than one word is specified, at least two of those words must
-be present for an item to match.  Regular expression matching is still
-available.
+** Help mode now only makes hyperlinks for faces when the face name is
+preceded or followed by the word `face'.  It no longer makes
+hyperlinks for variables without variable documentation, unless
+preceded by one of the words `variable' or `option'.  It now makes
+hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
+enclosed in single quotes and preceded by `info anchor' or `Info
+anchor' (in addition to earlier `info node' and `Info node').
 
 +++
-*** The new option `apropos-sort-by-scores' causes the matching items
-to be sorted according to their score.  The score for an item is a
-number calculated to indicate how well the item matches the words or
-regular expression that you entered to the apropos command.  The best
-match is listed first, and the calculated score is shown for each
-matching item.
+** The new command `describe-char' (C-u C-x =) pops up a buffer with
+description various information about a character, including its
+encodings and syntax, its text properties, how to input, overlays, and
+widgets at point.  You can get more information about some of them, by
+clicking on mouse-sensitive areas or moving there and pressing RET.
 
 +++
-** The old bindings C-M-delete and C-M-backspace have been deleted,
-since there are situations where one or the other will shut down
-the operating system or your X server.
+** New command `display-local-help' displays any local help at point
+in the echo area.  It is bound to `C-h .'.  It normally displays the
+same string that would be displayed on mouse-over using the
+`help-echo' property, but, in certain cases, it can display a more
+keyboard oriented alternative.
 
 ---
-** New minor mode, Visible mode, toggles invisibility in the current buffer.
-When enabled, it makes all invisible text visible.  When disabled, it
-restores the previous value of `buffer-invisibility-spec'.
+** New commands `scan-buf-next-region' and `scan-buf-previous-region'
+move to the start of the next (previous, respectively) region with
+non-nil help-echo property and display any help found there in the
+echo area, using `display-local-help'.
 
----
-** New command `kill-whole-line' kills an entire line at once.
-By default, it is bound to C-S-<backspace>.
++++
+** New user option `help-at-pt-display-when-idle' allows to
+automatically show the help provided by `display-local-help' on
+point-over, after suitable idle time.  The amount of idle time is
+determined by the user option `help-at-pt-timer-delay' and defaults
+to one second.  This feature is turned off by default.
 
 ---
 ** New commands to operate on pairs of open and close characters:
 `insert-pair', `delete-pair', `raise-sexp'.
 
 +++
-** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
-list starting after point.
+** In processing a local variables list, Emacs strips the prefix and
+suffix are from every line before processing all the lines.
 
-** Dired mode:
++++
+** `apply-macro-to-region-lines' now operates on all lines that begin
+in the region, rather than on all complete lines in the region.
 
----
-*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
-dired-ignored, dired-directory, dired-symlink, dired-warning
-introduced for Dired mode instead of font-lock faces.
++++
+** You can now follow links by clicking Mouse-1 on the link.
+
+Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
+click to follow a link, whereas most other applications use a Mouse-1
+click for both purposes, depending on whether you click outside or
+inside a link.  Now the behavior of a Mouse-1 click has been changed
+to match this context-sentitive dual behavior.
+
+Depending on the current mode, a Mouse-2 click in Emacs may do much
+more than just follow a link, so the new Mouse-1 behavior is only
+activated for modes which explicitly mark a clickable text as a "link"
+(see the new function `mouse-on-link-p' for details).  The Lisp
+packages that are included in release 22.1 have been adapted to do
+this, but external packages may not yet support this.  However, there
+is no risk in using such packages, as the worst thing that could
+happen is that you get the original Mouse-1 behavior when you click
+on a link, which typically means that you set point where you click.
+
+If you want to get the original Mouse-1 action also inside a link, you
+just need to press the Mouse-1 button a little longer than a normal
+click (i.e. press and hold the Mouse-1 button for half a second before
+you release it).
+
+Dragging the Mouse-1 inside a link still performs the original
+drag-mouse-1 action, typically copy the text.
+
+You can customize the new Mouse-1 behavior via the new user options
+`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
 
 +++
-*** New Dired command `dired-compare-directories' marks files
-with different file attributes in two dired buffers.
+** Emacs normally highlights mouse sensitive text whenever the mouse
+is over the text.  By setting the new variable `mouse-highlight', you
+can optionally enable mouse highlighting only after you move the
+mouse, so that highlighting disappears when you press a key.  You can
+also disable mouse highlighting.
 
 +++
-*** New Dired command `dired-do-touch' (bound to T) changes timestamps
-of marked files with the value entered in the minibuffer.
+** You can now customize if selecting a region by dragging the mouse
+shall not copy the selected text to the kill-ring by setting the new
+variable mouse-drag-copy-region to nil.
+
+---
+** mouse-wheels can now scroll a specific fraction of the window
+(rather than a fixed number of lines) and the scrolling is `progressive'.
+
+---
+** Unexpected yanking of text due to accidental clicking on the mouse
+wheel button (typically mouse-2) during wheel scrolling is now avoided.
+This behavior can be customized via the mouse-wheel-click-event and
+mouse-wheel-inhibit-click-time variables.
 
 +++
-*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
-control substitution of the file names only when they are surrounded
-by whitespace.  This means you can now use them as shell wildcards
-too.  If you want to use just plain `*' as a wildcard, type `*""'; the
-doublequotes make no difference in the shell, but they prevent
-special treatment in `dired-do-shell-command'.
+** Under X, mouse-wheel-mode is turned on by default.
 
 +++
-*** In Dired, the w command now copies the current line's file name
-into the kill ring.  With a zero prefix arg, copies absolute file names.
+** M-x setenv now expands environment variables of the form `$foo' and
+`${foo}' in the specified new value of the environment variable.  To
+include a `$' in the value, use `$$'.
 
 +++
-** Dired-x:
+** Unquoted `$' in file names do not signal an error any more when
+the corresponding environment variable does not exist.
+Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
+is only rarely needed.
+
+---
+** Language environment and various default coding systems are setup
+more correctly according to the current locale name.  If the locale
+name doesn't specify a charset, the default is what glibc defines.
+This change may result in using the different coding systems as
+default in some locale (e.g. vi_VN).
 
 +++
-*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling
-command is bound to M-o. A new command dired-mark-omitted, bound to * O,
-marks omitted files. The variable dired-omit-files-p is obsoleted, use the
-mode toggling function instead.
+** The default for the paper size (variable ps-paper-type) is taken
+from the locale.
 
 +++
-** find-file-read-only visits multiple files in read-only mode,
-when the file name contains wildcard characters.
+** The keyboard-coding-system is now automatically set based on your
+current locale settings if you are not using a window system.  This
+may mean that the META key doesn't work but generates non-ASCII
+characters instead, depending on how the terminal (or terminal
+emulator) works.  Use `set-keyboard-coding-system' (or customize
+keyboard-coding-system) if you prefer META to work (the old default)
+or if the locale doesn't describe the character set actually generated
+by the keyboard.  See Info node `Single-Byte Character Support'.
 
 +++
-** find-alternate-file replaces the current file with multiple files,
-when the file name contains wildcard characters.
+** The new command `revert-buffer-with-coding-system' (C-x RET r)
+revisits the current file using a coding system that you specify.
 
-** FFAP
++++
+** New command `recode-region' decodes the region again by a specified
+coding system.
 
 +++
-*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
-C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
-C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
-C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
+** The new command `recode-file-name' changes the encoding of the name
+of a file.
 
 ---
-*** FFAP accepts wildcards in a file name by default.  C-x C-f passes
-it to `find-file' with non-nil WILDCARDS argument, which visits
-multiple files, and C-x d passes it to `dired'.
+** New command `ucs-insert' inserts a character specified by its
+unicode.
 
-** Info mode:
++++
+** The new command `set-file-name-coding-system' (C-x RET F) sets
+coding system for encoding and decoding file names.  A new menu item
+(Options->Mule->Set Coding Systems->For File Name) invokes this
+command.
 
 +++
-*** A numeric prefix argument of `info' selects an Info buffer
-with the number appended to the *info* buffer name (e.g. "*info*<2>").
+** New command quail-show-key shows what key (or key sequence) to type
+in the current input method to input a character at point.
 
----
-*** isearch in Info uses Info-search and searches through multiple nodes.
-Before leaving the initial Info node isearch fails once with the error
-message [initial node], and with subsequent C-s/C-r continues through
-other nodes.  When isearch fails for the rest of the manual, it wraps
-aroung the whole manual to the top/final node.  The user option
-`Info-isearch-search' controls whether to use Info-search for isearch,
-or the default isearch search function that wraps around the current
-Info node.
-
-*** New search commands: `Info-search-case-sensitively' (bound to S),
-`Info-search-backward', and `Info-search-next' which repeats the last
-search without prompting for a new search string.
-
-*** New command `Info-history-forward' (bound to r and new toolbar icon)
-moves forward in history to the node you returned from after using
-`Info-history-back' (renamed from `Info-last').
-
-*** New command `Info-history' (bound to L) displays a menu of visited nodes.
-
-*** New command `Info-toc' (bound to T) creates a node with table of contents
-from the tree structure of menus of the current Info file.
++++
+** Limited support for character `unification' has been added.
+Emacs now knows how to translate between different representations of
+the same characters in various Emacs charsets according to standard
+Unicode mappings.  This applies mainly to characters in the ISO 8859
+sets plus some other 8-bit sets, but can be extended.  For instance,
+translation works amongst the Emacs ...-iso8859-... charsets and the
+mule-unicode-... ones.
 
-*** New command `info-apropos' searches the indices of the known
-Info files on your system for a string, and builds a menu of the
-possible matches.
+By default this translation happens automatically on encoding.
+Self-inserting characters are translated to make the input conformant
+with the encoding of the buffer in which it's being used, where
+possible.
 
-*** New command `Info-copy-current-node-name' (bound to w) copies
-the current Info node name into the kill ring.  With a zero prefix
-arg, puts the node name inside the `info' function call.
+You can force a more complete unification with the user option
+unify-8859-on-decoding-mode.  That maps all the Latin-N character sets
+into Unicode characters (from the latin-iso8859-1 and
+mule-unicode-0100-24ff charsets) on decoding.  Note that this mode
+will often effectively clobber data with an iso-2022 encoding.
 
 ---
-*** New face `info-xref-visited' distinguishes visited nodes from unvisited
-and a new option `Info-fontify-visited-nodes' to control this.
-
-*** http and ftp links in Info are now operational: they look like cross
-references and following them calls `browse-url'.
-
-+++
-*** Info now hides node names in menus and cross references by default.
-If you prefer the old behavior, you can set the new user option
-`Info-hide-note-references' to nil.
+** There is support for decoding Greek and Cyrillic characters into
+either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
+when possible.  The latter are more space-efficient.  This is
+controlled by user option utf-fragment-on-decoding.
 
 ---
-*** Images in Info pages are supported.
-Info pages show embedded images, in Emacs frames with image support.
-Info documentation that includes images, processed with makeinfo
-version 4.7 or newer, compiles to Info pages with embedded images.
-
-+++
-*** The default value for `Info-scroll-prefer-subnodes' is now nil.
+** New language environments: French, Ukrainian, Tajik,
+Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
+Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
+Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW.  (Set up
+automatically according to the locale.)
 
 ---
-*** Info-index offers completion.
+** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
+ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
+vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
+latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
+bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
+tamil-inscript.
 
 ---
-** Support for the SQLite interpreter has been added to sql.el by calling
-'sql-sqlite'.
-
-** BibTeX mode:
-*** The new command bibtex-url browses a URL for the BibTeX entry at
-point (bound to C-c C-l and mouse-2, RET on clickable fields).
-
-*** The new command bibtex-entry-update (bound to C-c C-u) updates
-an existing BibTeX entry.
-
-*** New `bibtex-entry-format' option `required-fields', enabled by default.
-
-*** bibtex-maintain-sorted-entries can take values `plain',
-`crossref', and `entry-class' which control the sorting scheme used
-for BibTeX entries.  `bibtex-sort-entry-class' controls the sorting
-scheme `entry-class'.  TAB completion for reference keys and
-automatic detection of duplicates does not require anymore that
-bibtex-maintain-sorted-entries is non-nil.
-
-*** If the new variable bibtex-parse-keys-fast is non-nil,
-use fast but simplified algorithm for parsing BibTeX keys.
+** New input method chinese-sisheng for inputting Chinese Pinyin
+characters.
 
-*** If the new variable bibtex-autoadd-commas is non-nil,
-automatically add missing commas at end of BibTeX fields.
+---
+** Improved Thai support.  A new minor mode `thai-word-mode' (which is
+automatically activated if you select Thai as a language
+environment) changes key bindings of most word-oriented commands to
+versions which recognize Thai words.  Affected commands are
+    M-f     (forward-word)
+    M-b     (backward-word)
+    M-d     (kill-word)
+    M-DEL   (backward-kill-word)
+    M-t     (transpose-words)
+    M-q     (fill-paragraph)
 
-*** The new variable bibtex-autofill-types contains a list of entry
-types for which fields are filled automatically (if possible).
+---
+** Indian support has been updated.
+The in-is13194 coding system is now Unicode-based.  CDAC fonts are
+assumed.  There is a framework for supporting various
+Indian scripts, but currently only Devanagari, Malayalam and Tamil are
+supported.
 
-*** The new command bibtex-complete completes word fragment before
-point according to context (bound to M-tab).
+---
+** A UTF-7 coding system is available in the library `utf-7'.
 
-*** The new commands bibtex-find-entry and bibtex-find-crossref
-locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
-Crossref fields are clickable (bound to mouse-2, RET).
+---
+** The utf-8/16 coding systems have been enhanced.
+By default, untranslatable utf-8 sequences are simply composed into
+single quasi-characters.  User option `utf-translate-cjk-mode' (it is
+turned on by default) arranges to translate many utf-8 CJK character
+sequences into real Emacs characters in a similar way to the Mule-UCS
+system.  As this loads a fairly big data on demand, people who are not
+interested in CJK characters may want to customize it to nil.
+You can augment/amend the CJK translation via hash tables
+`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'.  The utf-8
+coding system now also encodes characters from most of Emacs's
+one-dimensional internal charsets, specifically the ISO-8859 ones.
+The utf-16 coding system is affected similarly.
 
-*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
-individual fields of a BibTeX entry.
+---
+** A new coding system `euc-tw' has been added for traditional Chinese
+in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
+Big 5 is then converted to CNS.
 
-*** The new variables bibtex-files and bibtex-file-path define a set
-of BibTeX files that are searched for entry keys.
+---
+** Many new coding systems are available by loading the `code-pages'
+library.  These include complete versions of most of those in
+codepage.el, based on Unicode mappings.  `codepage-setup' is now
+obsolete and is used only in the MS-DOS port of Emacs.  windows-1252
+and windows-1251 are preloaded since the former is so common and the
+latter is used by GNU locales.
 
-*** The new command bibtex-validate-globally checks for duplicate keys
-in multiple BibTeX files.
+---
+** New variable `utf-translate-cjk-unicode-range' controls which
+Unicode characters to translate in `utf-translate-cjk-mode'.
 
-*** The new command bibtex-copy-summary-as-kill pushes summary
-of BibTeX entry to kill ring (bound to C-c C-t).
+---
+** iso-10646-1 (`Unicode') fonts can be used to display any range of
+characters encodable by the utf-8 coding system.  Just specify the
+fontset appropriately.
 
 +++
-** When display margins are present in a window, the fringes are now
-displayed between the margins and the buffer's text area, rather than
-at the edges of the window.
+** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'.  User written commands which satisfy stringent
+constraints can be marked as "scrolling commands".  See the Emacs manual
+for details.
 
 +++
-** A window may now have individual fringe and scroll-bar settings,
-in addition to the individual display margin settings.
+** C-w in incremental search now grabs either a character or a word,
+making the decision in a heuristic way.  This new job is done by the
+command `isearch-yank-word-or-char'.  To restore the old behavior,
+bind C-w to `isearch-yank-word' in `isearch-mode-map'.
 
-Such individual settings are now preserved when windows are split
-horizontally or vertically, a saved window configuration is restored,
-or when the frame is resized.
++++
+** C-y in incremental search now grabs the next line if point is already
+at the end of a line.
 
 +++
-** New functions frame-current-scroll-bars and window-current-scroll-bars.
+** C-M-w deletes and C-M-y grabs a character in isearch mode.
+Another method to grab a character is to enter the minibuffer by `M-e'
+and to type `C-f' at the end of the search string in the minibuffer.
 
-These functions return the current locations of the vertical and
-horizontal scroll bars in a frame or window.
++++
+** M-% typed in isearch mode invokes `query-replace' or
+`query-replace-regexp' (depending on search mode) with the current
+search string used as the string to replace.
 
 +++
-** Emacs now supports drag and drop for X.  Dropping a file on a window
-   opens it, dropping text inserts the text.  Dropping a file on a dired
-   buffer copies or moves the file to that directory.
+** Isearch no longer adds `isearch-resume' commands to the command
+history by default.  To enable this feature, customize the new
+user option `isearch-resume-in-command-history'.
+
+---
+** New user option `query-replace-skip-read-only': when non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
 
 +++
-** Under X, mouse-wheel-mode is turned on by default.
+** When used interactively, the commands `query-replace-regexp' and
+`replace-regexp' allow \,expr to be used in a replacement string,
+where expr is an arbitrary Lisp expression evaluated at replacement
+time.  In many cases, this will be more convenient than using
+`query-replace-regexp-eval'.  `\#' in a replacement string now refers
+to the count of replacements already made by the replacement command.
+All regular expression replacement commands now allow `\?' in the
+replacement string to specify a position where the replacement string
+can be edited for each replacement.
 
 +++
-** The X resource useXIM can be used to turn off use of XIM, which may
-speed up Emacs with slow networking to the X server.
+** query-replace uses isearch lazy highlighting when the new user option
+`query-replace-lazy-highlight' is non-nil.
 
-If the configure option `--without-xim' was used to turn off use of
-XIM by default, the X resource useXIM can be used to turn it on.
+---
+** The current match in query-replace is highlighted in new face
+`query-replace' which by default inherits from isearch face.
 
 +++
-** The X resource cursorBlink can be used to turn off cursor blinking.
+** M-x compare-windows now can automatically skip non-matching text to
+resync points in both windows.
 
 +++
-** `undo-only' does an undo which does not redo any previous undo.
+** The commands M-x customize-face and M-x customize-face-other-window
+now look at the character after point.  If a face or faces are
+specified for that character, the commands by default customize those
+faces.
 
 ---
-** `uniquify-strip-common-suffix' tells uniquify to prefer
-`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+** The face-customization widget has been reworked to be less confusing.
+In particular, when you enable a face attribute using the corresponding
+check-box, there's no longer a redundant `*' option in value selection
+for that attribute; the values you can choose are only those which make
+sense for the attribute.  When an attribute is de-selected by unchecking
+its check-box, then the (now ignored, but still present temporarily in
+case you re-select the attribute) value is hidden.
 
 +++
-** If the user visits a file larger than `large-file-warning-threshold',
-Emacs prompts her for confirmation.
+** When you set or reset a variable's value in a Customize buffer,
+the previous value becomes the "backup value" of the variable.
+You can go back to that backup value by selecting "Use Backup Value"
+under the "[State]" button.
 
----
-** A UTF-7 coding system is available in the library `utf-7'.
+** Dired mode:
 
 ---
-** GUD mode has its own tool bar for controlling execution of the inferior
-and other common debugger commands.
+*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
+dired-ignored, dired-directory, dired-symlink, dired-warning
+introduced for Dired mode instead of font-lock faces.
 
----
-** recentf changes.
++++
+*** New Dired command `dired-compare-directories' marks files
+with different file attributes in two dired buffers.
 
-The recent file list is now automatically cleanup when recentf mode is
-enabled.  The new option `recentf-auto-cleanup' controls when to do
-automatic cleanup.
++++
+*** New Dired command `dired-do-touch' (bound to T) changes timestamps
+of marked files with the value entered in the minibuffer.
 
-The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
-and provides a more general mechanism to customize which file names to
-keep in the recent list.
++++
+*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace.  This means you can now use them as shell wildcards
+too.  If you want to use just plain `*' as a wildcard, type `*""'; the
+doublequotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
 
-With the more advanced option: `recentf-filename-handler', you can
-specify a function that transforms filenames handled by recentf.  For
-example, if set to `file-truename', the same file will not be in the
-recent list with different symbolic links.
++++
+*** In Dired, the w command now copies the current line's file name
+into the kill ring.  With a zero prefix arg, copies absolute file names.
 
-To follow naming convention, `recentf-menu-append-commands-flag'
-replaces the misnamed option `recentf-menu-append-commands-p'.  The
-old name remains available as alias, but has been marked obsolete.
++++
+** The variables dired-free-space-program and dired-free-space-args
+have been renamed to directory-free-space-program and
+directory-free-space-args, and they now apply whenever Emacs puts a
+directory listing into a buffer.
 
 +++
-** The default for the paper size (variable ps-paper-type) is taken
-from the locale.
+** Dired-x:
 
 +++
-** Init file changes
+*** Omitting files is now a minor mode, dired-omit-mode.  The mode toggling
+command is bound to M-o.  A new command dired-mark-omitted, bound to * O,
+marks omitted files.  The variable dired-omit-files-p is obsoleted, use the
+mode toggling function instead.
 
-You can now put the init files .emacs and .emacs_SHELL under
-~/.emacs.d or directly under ~.  Emacs will find them in either place.
++++
+** In Outline mode, hide-body no longer hides lines at the top
+of the file that precede the first header line.
 
----
-** partial-completion-mode now does partial completion on directory names.
++++
+** Occur, Info, and comint-derived modes now support using
+M-x font-lock-mode to toggle fontification.  The variable
+`Info-fontify' is no longer applicable; to disable fontification,
+remove `turn-on-font-lock' from `Info-mode-hook'.
 
 ---
-** skeleton.el now supports using - to mark the skeleton-point without
-   interregion interaction.  @ has reverted to only setting
-   skeleton-positions and no longer sets skeleton-point.  Skeletons
-   which used @ to mark skeleton-point independent of _ should now use -
-   instead.  The updated skeleton-insert docstring explains these new
-   features along with other details of skeleton construction.
+** The terminal emulation code in term.el has been improved, it can
+run most curses applications now.
 
 ---
-** MH-E changes.
-
-Upgraded to MH-E version 7.82. There have been major changes since
-version 5.0.2; see MH-E-NEWS for details.
-
-+++
-** The `emacsclient' command understands the options `--eval' and
-`--display' which tell Emacs respectively to evaluate the given elisp
-expression and to use the given display when visiting files.
-
-+++
-** User option `server-mode' can be used to start a server process.
-
-+++
-** The mode line position information now comes before the major mode.
-When the file is maintained under version control, that information
-appears between the position information and the major mode.
+** The comint prompt can now be made read-only, using the new user
+option `comint-prompt-read-only'.  This is not enabled by default,
+except in IELM buffers.  The read-only status of IELM prompts can be
+controlled with the new user option `ielm-prompt-read-only', which
+overrides `comint-prompt-read-only'.
 
-+++
-** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
-against its file, so you can see what changes you would be saving.
+The new commands `comint-kill-whole-line' and `comint-kill-region'
+support editing comint buffers with read-only prompts.
 
-+++
-** You can now customize the use of window fringes.  To control this
-for all frames, use M-x fringe-mode or the Show/Hide submenu of the
-top-level Options menu, or customize the `fringe-mode' variable.  To
-control this for a specific frame, use the command M-x
-set-fringe-style.
+`comint-kill-whole-line' is like `kill-whole-line', but ignores both
+read-only and field properties.  Hence, it always kill entire
+lines, including any prompts.
 
-+++
-** There is a new user option `mail-default-directory' that allows you
-to specify the value of `default-directory' for mail buffers.  This
-directory is used for auto-save files of mail buffers.  It defaults to
-"~/".
+`comint-kill-region' is like `kill-region', except that it ignores
+read-only properties, if it is safe to do so.  This means that if any
+part of a prompt is deleted, then the entire prompt must be deleted
+and that all prompts must stay at the beginning of a line.  If this is
+not the case, then `comint-kill-region' behaves just like
+`kill-region' if read-only are involved: it copies the text to the
+kill-ring, but does not delete it.
 
 +++
-** When you are root, and you visit a file whose modes specify
-read-only, the Emacs buffer is now read-only too.  Type C-x C-q if you
-want to make the buffer writable.  (As root, you can in fact alter the
-file.)
+** The new command `comint-insert-previous-argument' in comint-derived
+modes (shell-mode etc) inserts arguments from previous command lines,
+like bash's `ESC .' binding.  It is bound by default to `C-c .', but
+otherwise behaves quite similarly to the bash version.
 
-+++
-** The new command `revert-buffer-with-coding-system' (C-x RET r)
-revisits the current file using a coding system that you specify.
+** `comint-use-prompt-regexp-instead-of-fields' has been renamed
+`comint-use-prompt-regexp'.  The old name has been kept as an alias,
+but declared obsolete.
 
 +++
-** The new command `recode-file-name' changes the encoding of the name
-of a file.
+** Telnet now prompts you for a port number with C-u M-x telnet.
 
 ---
-** `ps-print' can now print characters from the mule-unicode charsets.
+** M-x compile has become more robust and reliable
 
-Printing text with characters from the mule-unicode-* sets works with
-ps-print, provided that you have installed the appropriate BDF fonts.
-See the file INSTALL for URLs where you can find these fonts.
+Quite a few more kinds of messages are recognized.  Messages that are
+recognized as warnings or informational come in orange or green, instead of
+red.  Informational messages are by default skipped with `next-error'
+(controlled by `compilation-skip-threshold').
 
----
-** The new options `buffers-menu-show-directories' and
-`buffers-menu-show-status' let you control how buffers are displayed
-in the menu dropped down when you click "Buffers" from the menu bar.
+Location data is collected on the fly as the *compilation* buffer changes.
+This means you could modify messages to make them point to different files.
+This also means you can not go to locations of messages you may have deleted.
 
-`buffers-menu-show-directories' controls whether the menu displays
-leading directories as part of the file name visited by the buffer.
-If its value is `unless-uniquify', the default, directories are
-shown unless uniquify-buffer-name-style' is non-nil.  The value of nil
-and t turn the display of directories off and on, respectively.
+The variable `compilation-error-regexp-alist' has now become customizable.  If
+you had added your own regexps to this, you'll probably need to include a
+leading `^', otherwise they'll match anywhere on a line.  There is now also a
+`compilation-mode-font-lock-keywords' and it nicely handles all the checks
+that configure outputs and -o options so you see at a glance where you are.
 
-`buffers-menu-show-status' controls whether the Buffers menu includes
-the modified and read-only status of the buffers.  By default it is
-t, and the status is shown.
+The new file etc/compilation.txt gives examples of each type of message.
 
-Setting these variables directly does not take effect until next time
-the Buffers menu is regenerated.
+** Compilation mode enhancements:
 
 +++
-** The commands M-x customize-face and M-x customize-face-other-window
-now look at the character after point.  If a face or faces are
-specified for that character, the commands by default customize those
-faces.
+*** New user option `compilation-environment'.
+This option allows you to specify environment variables for inferior
+compilation processes without affecting the environment that all
+subprocesses inherit.
 
----
-** New language environments: French, Ukrainian, Tajik,
-Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
-Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
-Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW.  (Set up
-automatically according to the locale.)
++++
+** Grep has been decoupled from compilation mode setup.
 
 ---
-** Indian support has been updated.
-The in-is13194 coding system is now Unicode-based.  CDAC fonts are
-assumed.  There is a framework for supporting various
-Indian scripts, but currently only Devanagari, Malayalam and Tamil are
-supported.
+*** There's a new separate package grep.el.
 
 ---
-** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
-ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
-vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
-latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
-bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
-tamil-inscript.
+*** M-x grep has been adapted to new compile
 
----
-** A new coding system `euc-tw' has been added for traditional Chinese
-in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
-Big 5 is then converted to CNS.
+Hits are fontified in green, and hits in binary files in orange.  Grep buffers
+can be saved and automatically revisited with the new Grep mode.
 
 ---
-** Many new coding systems are available by loading the `code-pages'
-library.  These include complete versions of most of those in
-codepage.el, based on Unicode mappings.  `codepage-setup' is now
-obsolete and is used only in the MS-DOS port of Emacs.  windows-1252
-and windows-1251 are preloaded since the former is so common and the
-latter is used by GNU locales.
+*** Grep commands now have their own submenu and customization group.
 
----
-** The utf-8/16 coding systems have been enhanced.
-By default, untranslatable utf-8 sequences are simply composed into
-single quasi-characters.  User option `utf-translate-cjk-mode' (it is
-turned on by default) arranges to translate many utf-8 CJK character
-sequences into real Emacs characters in a similar way to the Mule-UCS
-system.  As this loads a fairly big data on demand, people who are not
-interested in CJK characters may want to customize it to nil.
-You can augment/amend the CJK translation via hash tables
-`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'.  The utf-8
-coding system now also encodes characters from most of Emacs's
-one-dimensional internal charsets, specifically the ISO-8859 ones.
-The utf-16 coding system is affected similarly.
++++
+*** `grep-find' is now also available under the name `find-grep' where
+people knowing `find-grep-dired' would probably expect it.
 
 ---
-** New variable `utf-translate-cjk-unicode-range' controls which
-Unicode characters to translate in `utf-translate-cjk-mode'.
+*** The new variables `grep-window-height', `grep-auto-highlight', and
+`grep-scroll-output' can be used to override the corresponding
+compilation mode settings for grep commands.
 
----
-** iso-10646-1 (`Unicode') fonts can be used to display any range of
-characters encodable by the utf-8 coding system.  Just specify the
-fontset appropriately.
++++
+*** New option `grep-highlight-matches' highlightes matches in *grep*
+buffer.  It uses a special feature of some grep programs which accept
+--color option to output markers around matches.  When going to the next
+match with `next-error' the exact match is highlighted in the source
+buffer.  Otherwise, if `grep-highlight-matches' is nil, the whole
+source line is highlighted.
 
----
-** New command `ucs-insert' inserts a character specified by its
-unicode.
++++
+*** New key bindings in grep output window:
+SPC and DEL scrolls window up and down.  C-n and C-p moves to next and
+previous match in the grep window.  RET jumps to the source line of
+the current match.  `n' and `p' shows next and previous match in
+other window, but does not switch buffer.  `{' and `}' jumps to the
+previous or next file in the grep output.  TAB also jumps to the next
+file.
 
 +++
-** Limited support for character `unification' has been added.
-Emacs now knows how to translate between different representations of
-the same characters in various Emacs charsets according to standard
-Unicode mappings.  This applies mainly to characters in the ISO 8859
-sets plus some other 8-bit sets, but can be extended.  For instance,
-translation works amongst the Emacs ...-iso8859-... charsets and the
-mule-unicode-... ones.
+** M-x grep now tries to avoid appending `/dev/null' to the command line
+by using GNU grep `-H' option instead.  M-x grep automatically
+detects whether this is possible or not the first time it is invoked.
+When `-H' is used, the grep command line supplied by the user is passed
+unchanged to the system to execute, which allows more complicated
+command lines to be used than was possible before.
 
-By default this translation happens automatically on encoding.
-Self-inserting characters are translated to make the input conformant
-with the encoding of the buffer in which it's being used, where
-possible.
-
-You can force a more complete unification with the user option
-unify-8859-on-decoding-mode.  That maps all the Latin-N character sets
-into Unicode characters (from the latin-iso8859-1 and
-mule-unicode-0100-24ff charsets) on decoding.  Note that this mode
-will often effectively clobber data with an iso-2022 encoding.
++++
+** New options `next-error-highlight' and `next-error-highlight-no-select'
+specify the method of highlighting of the corresponding source line
+in new face `next-error'.
 
----
-** There is support for decoding Greek and Cyrillic characters into
-either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
-when possible.  The latter are more space-efficient.  This is
-controlled by user option utf-fragment-on-decoding.
++++
+** A new minor mode `next-error-follow-minor-mode' can be used in
+compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
+modes that can use `next-error').  In this mode, cursor motion in the
+buffer causes automatic display in another window of the corresponding
+matches, compilation errors, etc.  This minor mode can be toggled with
+C-c C-f.
 
 +++
-** The new command `set-file-name-coding-system' (C-x RET F) sets
-coding system for encoding and decoding file names.  A new menu item
-(Options->Mule->Set Coding Systems->For File Name) invokes this
-command.
+** M-x diff uses diff-mode instead of compilation-mode.
 
----
-** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
-On the other hand, the size of the thumb does not represent the actual
-amount of text shown any more (only a crude approximation of it).
++++
+** In the *Occur* buffer, `o' switches to it in another window, and
+C-o displays the current line's occurrence in another window without
+switching to it.
 
----
-** The pop up menus for Lucid now stay up if you do a fast click and can
-be navigated with the arrow keys (like Gtk+, Mac and W32).
++++
+** You can now use next-error (C-x `) and previous-error to advance to
+the next/previous matching line found by M-x occur.
 
 +++
-** The Lucid menus can display multilingual text in your locale.  You have
-to explicitly specify a fontSet resource for this to work, for example
-`-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
+** The new command `multi-occur' is just like `occur', except it can
+search multiple buffers.  There is also a new command
+`multi-occur-by-filename-regexp' which allows you to specify the
+buffers to search by their filename.  Internally, Occur mode has been
+rewritten, and now uses font-lock, among other changes.
 
----
-** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
-ESC, like they do for Gtk+, Mac and W32.
++++
+** font-lock: in modes like C and Lisp where the fontification assumes that
+an open-paren in column 0 is always outside of any string or comment,
+font-lock now highlights any such open-paren-in-column-zero in bold-red
+if it is inside a string or a comment, to indicate that it can cause
+trouble with fontification and/or indentation.
 
----
-** Dialogs and menus pop down when pressing C-g.
+** Enhancements to apropos commands:
 
----
-** The menu item "Open File..." has been split into two items, "New File..."
-and "Open File...".  "Open File..." now opens only existing files.  This is
-to support existing GUI file selection dialogs better.
++++
+*** The apropos commands now accept a list of words to match.
+When more than one word is specified, at least two of those words must
+be present for an item to match.  Regular expression matching is still
+available.
 
 +++
-** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
-disabled by customizing the variable `use-file-dialog'.
+*** The new option `apropos-sort-by-scores' causes the matching items
+to be sorted according to their score.  The score for an item is a
+number calculated to indicate how well the item matches the words or
+regular expression that you entered to the apropos command.  The best
+match is listed first, and the calculated score is shown for each
+matching item.
 
 +++
-** For Gtk+ version 2.4, you can make Emacs use the old file dialog
-by setting the variable `x-use-old-gtk-file-dialog' to t.  Default is to use
-the new dialog.
+** You can have several Emacs servers on the same machine.
+
+       % emacs --eval '(setq server-name "foo")' -f server-start &
+       % emacs --eval '(setq server-name "bar")' -f server-start &
+       % emacsclient -s foo file1
+       % emacsclient -s bar file2
 
 +++
-** Emacs can produce an underscore-like (horizontal bar) cursor.
-The underscore cursor is set by putting `(cursor-type . hbar)' in
-default-frame-alist.  It supports variable heights, like the `bar'
-cursor does.
+** The `emacsclient' command understands the options `--eval' and
+`--display' which tell Emacs respectively to evaluate the given elisp
+expression and to use the given display when visiting files.
 
 +++
-** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
-now controlled by the variable `blink-cursor-alist'.
+** User option `server-mode' can be used to start a server process.
 
 +++
-** Filesets are collections of files.  You can define a fileset in
-various ways, such as based on a directory tree or based on
-program files that include other program files.
+** New user option `add-log-always-start-new-record'.
+When this option is enabled, M-x add-change-log-entry always
+starts a new record regardless of when the last record is.
 
-Once you have defined a fileset, you can perform various operations on
-all the files in it, such as visiting them or searching and replacing
-in them.
+** Info mode:
 
----
-** PO translation files are decoded according to their MIME headers
-when Emacs visits them.
++++
+*** A numeric prefix argument of `info' selects an Info buffer
+with the number appended to the *info* buffer name (e.g. "*info*<2>").
 
 ---
-** The game `mpuz' is enhanced.
+*** isearch in Info uses Info-search and searches through multiple nodes.
+Before leaving the initial Info node isearch fails once with the error
+message [initial node], and with subsequent C-s/C-r continues through
+other nodes.  When isearch fails for the rest of the manual, it wraps
+aroung the whole manual to the top/final node.  The user option
+`Info-isearch-search' controls whether to use Info-search for isearch,
+or the default isearch search function that wraps around the current
+Info node.
 
-`mpuz' now allows the 2nd factor not to have two identical digits.  By
-default, all trivial operations involving whole lines are performed
-automatically.  The game uses faces for better visual feedback.
+*** New search commands: `Info-search-case-sensitively' (bound to S),
+`Info-search-backward', and `Info-search-next' which repeats the last
+search without prompting for a new search string.
 
----
-** The new variable `x-select-request-type' controls how Emacs
-requests X selection.  The default value is nil, which means that
-Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
-and use the more appropriately result.
+*** New command `Info-history-forward' (bound to r and new toolbar icon)
+moves forward in history to the node you returned from after using
+`Info-history-back' (renamed from `Info-last').
 
-+++
-** The parameters of automatic hscrolling can now be customized.
-The variable `hscroll-margin' determines how many columns away from
-the window edge point is allowed to get before automatic hscrolling
-will horizontally scroll the window.  The default value is 5.
+*** New command `Info-history' (bound to L) displays a menu of visited nodes.
 
-The variable `hscroll-step' determines how many columns automatic
-hscrolling scrolls the window when point gets too close to the
-window edge.  If its value is zero, the default, Emacs scrolls the
-window so as to center point.  If its value is an integer, it says how
-many columns to scroll.  If the value is a floating-point number, it
-gives the fraction of the window's width to scroll the window.
+*** New command `Info-toc' (bound to T) creates a node with table of contents
+from the tree structure of menus of the current Info file.
 
-The variable `automatic-hscrolling' was renamed to
-`auto-hscroll-mode'.  The old name is still available as an alias.
+*** New command `info-apropos' searches the indices of the known
+Info files on your system for a string, and builds a menu of the
+possible matches.
 
-** TeX modes:
+*** New command `Info-copy-current-node-name' (bound to w) copies
+the current Info node name into the kill ring.  With a zero prefix
+arg, puts the node name inside the `info' function call.
 
-+++
-*** C-c C-c prompts for a command to run, and tries to offer a good default.
+---
+*** New face `info-xref-visited' distinguishes visited nodes from unvisited
+and a new option `Info-fontify-visited-nodes' to control this.
+
+*** http and ftp links in Info are now operational: they look like cross
+references and following them calls `browse-url'.
 
 +++
-*** The user option `tex-start-options-string' has been replaced
-by two new user options: `tex-start-options', which should hold
-command-line options to feed to TeX, and `tex-start-commands' which should hold
-TeX commands to use at startup.
+*** Info now hides node names in menus and cross references by default.
+If you prefer the old behavior, you can set the new user option
+`Info-hide-note-references' to nil.
 
 ---
-*** verbatim environments are now highlighted in courier by font-lock
-and super/sub-scripts are made into super/sub-scripts.
+*** Images in Info pages are supported.
+Info pages show embedded images, in Emacs frames with image support.
+Info documentation that includes images, processed with makeinfo
+version 4.7 or newer, compiles to Info pages with embedded images.
 
 +++
-*** New major mode doctex-mode for *.dtx files.
+*** The default value for `Info-scroll-prefer-subnodes' is now nil.
 
-+++
-** New display feature: focus follows the mouse from one Emacs window
-to another, even within a frame.  If you set the variable
-mouse-autoselect-window to non-nil value, moving the mouse to a
-different Emacs window will select that window (minibuffer window can
-be selected only when it is active).  The default is nil, so that this
-feature is not enabled.
+---
+*** Info-index offers completion.
 
-+++
-** On X, when the window manager requires that you click on a frame to
-select it (give it focus), the selected window and cursor position
-normally changes according to the mouse click position.  If you set
-the variable x-mouse-click-focus-ignore-position to t, the selected
-window and cursor position do not change when you click on a frame
-to give it focus.
+---
+** Lisp mode now uses font-lock-doc-face for the docstrings.
 
 +++
-** The new command `describe-char' (C-u C-x =) pops up a buffer with
-description various information about a character, including its
-encodings and syntax, its text properties, how to input, overlays, and
-widgets at point.  You can get more information about some of them, by
-clicking on mouse-sensitive areas or moving there and pressing RET.
+** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
+list starting after point.
 
-+++
-** The new command `multi-occur' is just like `occur', except it can
-search multiple buffers.  There is also a new command
-`multi-occur-by-filename-regexp' which allows you to specify the
-buffers to search by their filename.  Internally, Occur mode has been
-rewritten, and now uses font-lock, among other changes.
+** New features in evaluation commands
 
 +++
-** The default values of paragraph-start and indent-line-function have
-been changed to reflect those used in Text mode rather than those used
-in Indented-Text mode.
-
----
-** New user option `query-replace-skip-read-only': when non-nil,
-`query-replace' and related functions simply ignore
-a match if part of it has a read-only property.
+*** The function `eval-defun' (C-M-x) called on defface reinitializes
+the face to the value specified in the defface expression.
 
 +++
-** When used interactively, the commands `query-replace-regexp' and
-`replace-regexp' allow \,expr to be used in a replacement string,
-where expr is an arbitrary Lisp expression evaluated at replacement
-time.  In many cases, this will be more convenient than using
-`query-replace-regexp-eval'.  `\#' in a replacement string now refers
-to the count of replacements already made by the replacement command.
-All regular expression replacement commands now allow `\?' in the
-replacement string to specify a position where the replacement string
-can be edited for each replacement.
+*** Typing C-x C-e twice prints the value of the integer result
+in additional formats (octal, hexadecimal, character) specified
+by the new function `eval-expression-print-format'.  The same
+function also defines the result format for `eval-expression' (M-:),
+`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
 
 +++
-** query-replace uses isearch lazy highlighting when the new user option
-`query-replace-lazy-highlight' is non-nil.
+** CC Mode changes.
 
----
-** The current match in query-replace is highlighted in new face
-`query-replace' which by default inherits from isearch face.
+*** Font lock support.
+CC Mode now provides font lock support for all its languages.  This
+supersedes the font lock patterns that have been in the core font lock
+package for C, C++, Java and Objective-C.  Like indentation, font
+locking is done in a uniform way across all languages (except the new
+AWK mode - see below).  That means that the new font locking will be
+different from the old patterns in various details for most languages.
 
-+++
-** Emacs normally highlights mouse sensitive text whenever the mouse
-is over the text.  By setting the new variable `mouse-highlight', you
-can optionally enable mouse highlighting only after you move the
-mouse, so that highlighting disappears when you press a key.  You can
-also disable mouse highlighting.
+The main goal of the font locking in CC Mode is accuracy, to provide a
+dependable aid in recognizing the various constructs.  Some, like
+strings and comments, are easy to recognize while others like
+declarations and types can be very tricky.  CC Mode can go to great
+lengths to recognize declarations and casts correctly, especially when
+the types aren't recognized by standard patterns.  This is a fairly
+demanding analysis which can be slow on older hardware, and it can
+therefore be disabled by choosing a lower decoration level with the
+variable font-lock-maximum-decoration.
 
-+++
-** You can now customize if selecting a region by dragging the mouse
-shall not copy the selected text to the kill-ring by setting the new
-variable mouse-drag-copy-region to nil.
+Note that the most demanding font lock level has been tuned with lazy
+fontification in mind, i.e.  there should be a support mode that waits
+with the fontification until the text is actually shown
+(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock
+mode).  Fontifying a file with several thousand lines in one go can
+take the better part of a minute.
 
-+++
-** font-lock: in modes like C and Lisp where the fontification assumes that
-an open-paren in column 0 is always outside of any string or comment,
-font-lock now highlights any such open-paren-in-column-zero in bold-red
-if it is inside a string or a comment, to indicate that it can cause
-trouble with fontification and/or indentation.
+**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
+are now used by CC Mode to recognize identifiers that are certain to
+be types.  (They are also used in cases that aren't related to font
+locking.)  At the maximum decoration level, types are often recognized
+properly anyway, so these variables should be fairly restrictive and
+not contain patterns for uncertain types.
 
-+++
-** There's a new face `minibuffer-prompt'.
-Emacs adds this face to the list of text properties stored in the
-variable `minibuffer-prompt-properties', which is used to display the
-prompt string.
+**** Support for documentation comments.
+There is a "plugin" system to fontify documentation comments like
+Javadoc and the markup within them.  It's independent of the host
+language, so it's possible to e.g. turn on Javadoc font locking in C
+buffers.  See the variable c-doc-comment-style for details.
 
-+++
-** The new face `mode-line-inactive' is used to display the mode line
-of non-selected windows.  The `mode-line' face is now used to display
-the mode line of the currently selected window.
+Currently two kinds of doc comment styles are recognized: Suns Javadoc
+and Autodoc which is used in Pike.  This is by no means a complete
+list of the most common tools; if your doc comment extractor of choice
+is missing then please drop a note to bug-cc-mode@gnu.org.
 
-The new variable `mode-line-in-non-selected-windows' controls whether
-the `mode-line-inactive' face is used.
+**** Better handling of C++ templates.
+As a side effect of the more accurate font locking, C++ templates are
+now handled much better.  The angle brackets that delimit them are
+given parenthesis syntax so that they can be navigated like other
+parens.
 
----
-** A menu item "Show/Hide" was added to the top-level menu "Options".
-This menu allows you to turn various display features on and off (such
-as the fringes, the tool bar, the speedbar, and the menu bar itself).
-You can also move the vertical scroll bar to either side here or turn
-it off completely.  There is also a menu-item to toggle displaying of
-current date and time, current line and column number in the
-mode-line.
+This also improves indentation of templates, although there still is
+work to be done in that area.  E.g. it's required that multiline
+template clauses are written in full and then refontified to be
+recognized, and the indentation of nested templates is a bit odd and
+not as configurable as it ought to be.
 
----
-** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
+**** Improved handling of Objective-C and CORBA IDL.
+Especially the support for Objective-C and IDL has gotten an overhaul.
+The special "@" declarations in Objective-C are handled correctly.
+All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
+handled correctly, also wrt indentation.
 
-+++
-** Emacs can now indicate in the mode-line the presence of new e-mail
-in a directory or in a file.  See the documentation of the user option
-`display-time-mail-directory'.
+*** Support for the AWK language.
+Support for the AWK language has been introduced.  The implementation is
+based around GNU AWK version 3.1, but it should work pretty well with
+any AWK.  As yet, not all features of CC Mode have been adapted for AWK.
+Here is a summary:
 
----
-** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+**** Indentation Engine
+The CC Mode indentation engine fully supports AWK mode.
 
-+++
-** You can now disable pc-selection-mode after enabling it.
-M-x pc-selection-mode behaves like a proper minor mode, and with no
-argument it toggles the mode.
+AWK mode handles code formatted in the conventional AWK fashion: `{'s
+which start actions, user-defined functions, or compound statements are
+placed on the same line as the associated construct; the matching `}'s
+are normally placed under the start of the respective pattern, function
+definition, or structured statement.
 
-Turning off PC-Selection mode restores the global key bindings
-that were replaced by turning on the mode.
+The predefined indentation functions haven't yet been adapted for AWK
+mode, though some of them may work serendipitously.  There shouldn't be
+any problems writing custom indentation functions for AWK mode.
 
-+++
-** Emacs now displays a splash screen by default even if command-line
-arguments were given.  The new command-line option --no-splash
-disables the splash screen; see also the variable
-`inhibit-startup-message' (which is also aliased as
-`inhibit-splash-screen').
+The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK,
+though in practice it works properly nearly all the time.  Should it
+fail, explicitly set the region around the function (using C-u C-SPC:
+C-M-h probably won't work either) then do C-M-\ (indent-region).
 
-** Changes in support of colors on character terminals
+**** Font Locking
+There is a single level of font locking in AWK mode, rather than the
+three distinct levels the other modes have.  There are several
+idiosyncrasies in AWK mode's font-locking due to the peculiarities of
+the AWK language itself.
 
-+++
-*** The new command-line option --color=MODE lets you specify a standard
-mode for a tty color support.  It is meant to be used on character
-terminals whose capabilities are not set correctly in the terminal
-database, or with terminal emulators which support colors, but don't
-set the TERM environment variable to a name of a color-capable
-terminal.  "emacs --color" uses the same color commands as GNU `ls'
-when invoked with "ls --color", so if your terminal can support colors
-in "ls --color", it will support "emacs --color" as well.  See the
-user manual for the possible values of the MODE parameter.
+**** Comment Commands
+M-; (indent-for-comment) works fine.  None of the other CC Mode
+comment formatting commands have yet been adapted for AWK mode.
 
----
-*** Emacs now supports several character terminals which provide more
-than 8 colors.  For example, for `xterm', 16-color, 88-color, and
-256-color modes are supported.  Emacs automatically notes at startup
-the extended number of colors, and defines the appropriate entries for
-all of these colors.
+**** Movement Commands
+Most of the movement commands work in AWK mode.  The most important
+exceptions are M-a (c-beginning-of-statement) and M-e
+(c-end-of-statement) which haven't yet been adapted.
 
-+++
-*** Emacs now uses the full range of available colors for the default
-faces when running on a color terminal, including 16-, 88-, and
-256-color xterms.  This means that when you run "emacs -nw" on an
-88-color or 256-color xterm, you will see essentially the same face
-colors as on X.
+The notion of "defun" has been augmented to include AWK pattern-action
+pairs.  C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun)
+recognise these pattern-action pairs, as well as user defined
+functions.
 
----
-*** There's a new support for colors on `rxvt' terminal emulator.
+**** Auto-newline Insertion and Clean-ups
+Auto-newline insertion hasn't yet been adapted for AWK.  Some of
+the clean-ups can actually convert good AWK code into syntactically
+invalid code.  These features are best disabled in AWK buffers.
 
-+++
-** Emacs can now be invoked in full-screen mode on a windowed display.
+*** New syntactic symbols in IDL mode.
+The top level constructs "module" and "composition" (from CIDL) are
+now handled like "namespace" in C++: They are given syntactic symbols
+module-open, module-close, inmodule, composition-open,
+composition-close, and incomposition.
 
-When Emacs is invoked on a window system, the new command-line options
-`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
-whose width, height, or both width and height take up the entire
-screen size.  (For now, this does not work with some window managers.)
+*** New functions to do hungry delete without enabling hungry delete mode.
+The functions c-hungry-backspace and c-hungry-delete-forward can be
+bound to keys to get this feature without toggling a mode.
+Contributed by Kevin Ryde.
 
----
-** Emacs now tries to set up buffer coding systems for HTML/XML files
-automatically.
+*** Better control over require-final-newline.  The variable that
+controls how to handle a final newline when the buffer is saved,
+require-final-newline, is now customizable on a per-mode basis through
+c-require-final-newline.  That is a list of modes, and only those
+modes set require-final-newline.  By default that's C, C++ and
+Objective-C.
 
-+++
-** The new command `comint-insert-previous-argument' in comint-derived
-modes (shell-mode etc) inserts arguments from previous command lines,
-like bash's `ESC .' binding.  It is bound by default to `C-c .', but
-otherwise behaves quite similarly to the bash version.
+The specified modes set require-final-newline based on
+mode-require-final-newline, as usual.
 
-+++
-** Changes in C-h bindings:
+*** Format change for syntactic context elements.
+The elements in the syntactic context returned by c-guess-basic-syntax
+and stored in c-syntactic-context has been changed somewhat to allow
+attaching more information.  They are now lists instead of single cons
+cells.  E.g. a line that previously had the syntactic analysis
 
-C-h e displays the *Messages* buffer.
+((inclass . 11) (topmost-intro . 13))
 
-C-h followed by a control character is used for displaying files
-    that do not change:
+is now analysed as
 
-C-h C-f displays the FAQ.
-C-h C-e displays the PROBLEMS file.
+((inclass 11) (topmost-intro 13))
 
-The info-search bindings on C-h C-f, C-h C-k and C-h C-i
-have been moved to C-h F, C-h K and C-h S.
+In some cases there are more than one position given for a syntactic
+symbol.
 
-C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
+This change might affect code that call c-guess-basic-syntax directly,
+and custom lineup functions if they use c-syntactic-context.  However,
+the argument given to lineup functions is still a single cons cell
+with nil or an integer in the cdr.
 
-- C-h c and C-h k report the actual command (after possible remapping)
-  run by the key sequence.
+*** API changes for derived modes.
+There have been extensive changes "under the hood" which can affect
+derived mode writers.  Some of these changes are likely to cause
+incompatibilities with existing derived modes, but on the other hand
+care has now been taken to make it possible to extend and modify CC
+Mode with less risk of such problems in the future.
 
-- C-h w and C-h f on a command which has been remapped now report the
-  command it is remapped to, and the keys which can be used to run
-  that command.
+**** New language variable system.
+See the comment blurb near the top of cc-langs.el.
 
-For example, if C-k is bound to kill-line, and kill-line is remapped
-to new-kill-line, these commands now report:
+**** New initialization functions.
+The initialization procedure has been split up into more functions to
+give better control: c-basic-common-init, c-font-lock-init, and
+c-init-language-vars.
 
-- C-h c and C-h k C-k reports:
-  C-k runs the command new-kill-line
+*** Changes in analysis of nested syntactic constructs.
+The syntactic analysis engine has better handling of cases where
+several syntactic constructs appear nested on the same line.  They are
+now handled as if each construct started on a line of its own.
 
-- C-h w and C-h f kill-line reports:
-  kill-line is remapped to new-kill-line which is on C-k, <deleteline>
+This means that CC Mode now indents some cases differently, and
+although it's more consistent there might be cases where the old way
+gave results that's more to one's liking.  So if you find a situation
+where you think that the indentation has become worse, please report
+it to bug-cc-mode@gnu.org.
 
-- C-h w and C-h f new-kill-line reports:
-  new-kill-line is on C-k
+**** New syntactic symbol substatement-label.
+This symbol is used when a label is inserted between a statement and
+its substatement.  E.g:
+
+    if (x)
+      x_is_true:
+        do_stuff();
+
+*** Better handling of multiline macros.
+
+**** Syntactic indentation inside macros.
+The contents of multiline #define's are now analyzed and indented
+syntactically just like other code.  This can be disabled by the new
+variable c-syntactic-indentation-in-macros.  A new syntactic symbol
+cpp-define-intro has been added to control the initial indentation
+inside #define's.
+
+**** New lineup function c-lineup-cpp-define.
+Now used by default to line up macro continuation lines.  The behavior
+of this function closely mimics the indentation one gets if the macro
+is indented while the line continuation backslashes are temporarily
+removed.  If syntactic indentation in macros is turned off, it works
+much line c-lineup-dont-change, which was used earlier, but handles
+empty lines within the macro better.
+
+**** Automatically inserted newlines continues the macro if used within one.
+This applies to the newlines inserted by the auto-newline mode, and to
+c-context-line-break and c-context-open-line.
+
+**** Better alignment of line continuation backslashes.
+c-backslash-region tries to adapt to surrounding backslashes.  New
+variable c-backslash-max-column which put a limit on how far out
+backslashes can be moved.
+
+**** Automatic alignment of line continuation backslashes.
+This is controlled by the new variable c-auto-align-backslashes.  It
+affects c-context-line-break, c-context-open-line and newlines
+inserted in auto-newline mode.
+
+**** Line indentation works better inside macros.
+Regardless whether syntactic indentation and syntactic indentation
+inside macros are enabled or not, line indentation now ignores the
+line continuation backslashes.  This is most noticeable when syntactic
+indentation is turned off and there are empty lines (save for the
+backslash) in the macro.
+
+*** indent-for-comment is more customizable.
+The behavior of M-; (indent-for-comment) is now configurable through
+the variable c-indent-comment-alist.  The indentation behavior based
+on the preceding code on the line, e.g. to get two spaces after #else
+and #endif but indentation to comment-column in most other cases
+(something which was hardcoded earlier).
+
+*** New function c-context-open-line.
+It's the open-line equivalent of c-context-line-break.
+
+*** New lineup functions
+
+**** c-lineup-string-cont
+This lineup function lines up a continued string under the one it
+continues.  E.g:
+
+result = prefix + "A message "
+                  "string.";      <- c-lineup-string-cont
+
+**** c-lineup-cascaded-calls
+Lines up series of calls separated by "->" or ".".
+
+**** c-lineup-knr-region-comment
+Gives (what most people think is) better indentation of comments in
+the "K&R region" between the function header and its body.
+
+**** c-lineup-gcc-asm-reg
+Provides better indentation inside asm blocks.  Contributed by Kevin
+Ryde.
+
+**** c-lineup-argcont
+Lines up continued function arguments after the preceding comma.
+Contributed by Kevin Ryde.
+
+*** Better caching of the syntactic context.
+CC Mode caches the positions of the opening parentheses (of any kind)
+of the lists surrounding the point.  Those positions are used in many
+places as anchor points for various searches.  The cache is now
+improved so that it can be reused to a large extent when the point is
+moved.  The less it moves, the less needs to be recalculated.
+
+The effect is that CC Mode should be fast most of the time even when
+opening parens are hung (i.e. aren't in column zero).  It's typically
+only the first time after the point is moved far down in a complex
+file that it'll take noticeable time to find out the syntactic
+context.
+
+*** Statements are recognized in a more robust way.
+Statements are recognized most of the time even when they occur in an
+"invalid" context, e.g. in a function argument.  In practice that can
+happen when macros are involved.
+
+*** Improved the way c-indent-exp chooses the block to indent.
+It now indents the block for the closest sexp following the point
+whose closing paren ends on a different line.  This means that the
+point doesn't have to be immediately before the block to indent.
+Also, only the block and the closing line is indented; the current
+line is left untouched.
+
+*** Added toggle for syntactic indentation.
+The function c-toggle-syntactic-indentation can be used to toggle
+syntactic indentation.
+
+---
+** Perl mode has a new variable `perl-indent-continued-arguments'.
+
+---
+** Fortran mode does more font-locking by default. Use level 3
+highlighting for the old default.
 
 +++
-** Vertical scrolling is now possible within incremental search.
-To enable this feature, customize the new user option
-`isearch-allow-scroll'.  User written commands which satisfy stringent
-constraints can be marked as "scrolling commands".  See the Emacs manual
-for details.
+** Fortran mode has a new variable `fortran-directive-re'.
+Adapt this to match the format of any compiler directives you use.
+Lines that match are never indented, and are given distinctive font-locking.
 
 +++
-** C-w in incremental search now grabs either a character or a word,
-making the decision in a heuristic way.  This new job is done by the
-command `isearch-yank-word-or-char'.  To restore the old behavior,
-bind C-w to `isearch-yank-word' in `isearch-mode-map'.
+** F90 mode and Fortran mode have new navigation commands
+`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
+`f90-previous-block', `fortran-end-of-block',
+`fortran-beginning-of-block'.
+
+---
+** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
+
+---
+** The new function `f90-backslash-not-special' can be used to change
+the syntax of backslashes in F90 buffers.
+
+---
+** Prolog mode has a new variable `prolog-font-lock-keywords'
+to support use of font-lock.
+
+---
+** Emacs now tries to set up buffer coding systems for HTML/XML files
+automatically.
 
 +++
-** C-y in incremental search now grabs the next line if point is already
-at the end of a line.
+** SGML mode has indentation and supports XML syntax.
+The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
+When this option is enabled, SGML tags are inserted in XML style,
+i.e., there is always a closing tag.
+By default, its setting is inferred on a buffer-by-buffer basis
+from the file name or buffer contents.
 
 +++
-** C-M-w deletes and C-M-y grabs a character in isearch mode.
-Another method to grab a character is to enter the minibuffer by `M-e'
-and to type `C-f' at the end of the search string in the minibuffer.
+** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+
+** TeX modes:
 
 +++
-** M-% typed in isearch mode invokes `query-replace' or
-`query-replace-regexp' (depending on search mode) with the current
-search string used as the string to replace.
+*** C-c C-c prompts for a command to run, and tries to offer a good default.
 
 +++
-** Isearch no longer adds `isearch-resume' commands to the command
-history by default.  To enable this feature, customize the new
-user option `isearch-resume-in-command-history'.
+*** The user option `tex-start-options-string' has been replaced
+by two new user options: `tex-start-options', which should hold
+command-line options to feed to TeX, and `tex-start-commands' which should hold
+TeX commands to use at startup.
+
+---
+*** verbatim environments are now highlighted in courier by font-lock
+and super/sub-scripts are made into super/sub-scripts.
 
 +++
-** New user option `history-delete-duplicates'.
-If set to t when adding a new history element, all previous identical
-elements are deleted.
+*** New major mode doctex-mode for *.dtx files.
+
+** BibTeX mode:
+*** The new command bibtex-url browses a URL for the BibTeX entry at
+point (bound to C-c C-l and mouse-2, RET on clickable fields).
+
+*** The new command bibtex-entry-update (bound to C-c C-u) updates
+an existing BibTeX entry.
+
+*** New `bibtex-entry-format' option `required-fields', enabled by default.
+
+*** bibtex-maintain-sorted-entries can take values `plain',
+`crossref', and `entry-class' which control the sorting scheme used
+for BibTeX entries.  `bibtex-sort-entry-class' controls the sorting
+scheme `entry-class'.  TAB completion for reference keys and
+automatic detection of duplicates does not require anymore that
+bibtex-maintain-sorted-entries is non-nil.
+
+*** If the new variable bibtex-parse-keys-fast is non-nil,
+use fast but simplified algorithm for parsing BibTeX keys.
+
+*** If the new variable bibtex-autoadd-commas is non-nil,
+automatically add missing commas at end of BibTeX fields.
+
+*** The new variable bibtex-autofill-types contains a list of entry
+types for which fields are filled automatically (if possible).
+
+*** The new command bibtex-complete completes word fragment before
+point according to context (bound to M-tab).
+
+*** The new commands bibtex-find-entry and bibtex-find-crossref
+locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
+Crossref fields are clickable (bound to mouse-2, RET).
 
-+++
-** Yanking text now discards certain text properties that can
-be inconvenient when you did not expect them.  The variable
-`yank-excluded-properties' specifies which ones.  Insertion
-of register contents and rectangles also discards these properties.
+*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
+individual fields of a BibTeX entry.
 
-+++
-** Occur, Info, and comint-derived modes now support using
-M-x font-lock-mode to toggle fontification.  The variable
-`Info-fontify' is no longer applicable; to disable fontification,
-remove `turn-on-font-lock' from `Info-mode-hook'.
+*** The new variables bibtex-files and bibtex-file-path define a set
+of BibTeX files that are searched for entry keys.
 
-+++
-** M-x grep now tries to avoid appending `/dev/null' to the command line
-by using GNU grep `-H' option instead.  M-x grep automatically
-detects whether this is possible or not the first time it is invoked.
-When `-H' is used, the grep command line supplied by the user is passed
-unchanged to the system to execute, which allows more complicated
-command lines to be used than was possible before.
+*** The new command bibtex-validate-globally checks for duplicate keys
+in multiple BibTeX files.
 
----
-** The face-customization widget has been reworked to be less confusing.
-In particular, when you enable a face attribute using the corresponding
-check-box, there's no longer a redundant `*' option in value selection
-for that attribute; the values you can choose are only those which make
-sense for the attribute.  When an attribute is de-selected by unchecking
-its check-box, then the (now ignored, but still present temporarily in
-case you re-select the attribute) value is hidden.
+*** The new command bibtex-copy-summary-as-kill pushes summary
+of BibTeX entry to kill ring (bound to C-c C-t).
 
 +++
-** When you set or reset a variable's value in a Customize buffer,
-the previous value becomes the "backup value" of the variable.
-You can go back to that backup value by selecting "Use Backup Value"
-under the "[State]" button.
-
----
-** The new customization type `float' specifies numbers with floating
-point (no integers are allowed).
+** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
 
 +++
 ** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
 counter to the specified source line (the one where point is).
 
+---
+** GUD mode has its own tool bar for controlling execution of the inferior
+and other common debugger commands.
+
 ---
 ** GUD mode improvements for jdb:
 
@@ -1689,210 +1765,114 @@ compatibility, it prefers "starttls", but you can toggle
 *** Do not allow debugger output history variable to grow without bounds.
 
 +++
-** hide-ifdef-mode now uses overlays rather than selective-display
-to hide its text.  This should be mostly transparent but slightly
-changes the behavior of motion commands like C-e and C-p.
-
-+++
-** Unquoted `$' in file names do not signal an error any more when
-the corresponding environment variable does not exist.
-Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
-is only rarely needed.
-
----
-** JIT-lock changes
-*** jit-lock can now be delayed with `jit-lock-defer-time'.
-
-If this variable is non-nil, its value should be the amount of Emacs
-idle time in seconds to wait before starting fontification.  For
-example, if you set `jit-lock-defer-time' to 0.25, fontification will
-only happen after 0.25s of idle time.
-
-*** contextual refontification is now separate from stealth fontification.
-
-jit-lock-defer-contextually is renamed jit-lock-contextually and
-jit-lock-context-time determines the delay after which contextual
-refontification takes place.
-
-+++
-** Marking commands extend the region when invoked multiple times.  If
-you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
-C-M-h (mark-defun) repeatedly, the marked region extends each time, so
-you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
-This feature also works for mark-end-of-sentence, if you bind that to
-a key.  It also extends the region when the mark is active in Transient
-Mark mode, regardless of the last command.  To start a new region with
-one of marking commands in Transient Mark mode, you can deactivate the
-active region with C-g, or set the new mark with C-SPC.
-
-+++
-** Some commands do something special in Transient Mark mode when the
-mark is active--for instance, they limit their operation to the
-region.  Even if you don't normally use Transient Mark mode, you might
-want to get this behavior from a particular command.  There are two
-ways you can enable Transient Mark mode and activate the mark, for one
-command only.
-
-One method is to type C-SPC C-SPC; this enables Transient Mark mode
-and sets the mark at point.  The other method is to type C-u C-x C-x.
-This enables Transient Mark mode temporarily but does not alter the
-mark or the region.
-
-After these commands, Transient Mark mode remains enabled until you
-deactivate the mark.  That typically happens when you type a command
-that alters the buffer, but you can also deactivate the mark by typing
-C-g.
-
-+++
-** A prefix argument is no longer required to repeat a jump to a
-previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
-mark ring.  Use C-u C-u C-SPC to set the mark immediately after a jump.
-
-+++
-** Movement commands `beginning-of-buffer', `end-of-buffer',
-`beginning-of-defun', `end-of-defun' do not set the mark if the mark
-is already active in Transient Mark mode.
-
-+++
-** In the *Occur* buffer, `o' switches to it in another window, and
-C-o displays the current line's occurrence in another window without
-switching to it.
-
-+++
-** When you specify a frame size with --geometry, the size applies to
-all frames you create.  A position specified with --geometry only
-affects the initial frame.
-
-+++
-** M-h (mark-paragraph) now accepts a prefix arg.
-With positive arg, M-h marks the current and the following paragraphs;
-if the arg is negative, it marks the current and the preceding
-paragraphs.
-
-+++
-** The variables dired-free-space-program and dired-free-space-args
-have been renamed to directory-free-space-program and
-directory-free-space-args, and they now apply whenever Emacs puts a
-directory listing into a buffer.
-
----
-** mouse-wheels can now scroll a specific fraction of the window
-(rather than a fixed number of lines) and the scrolling is `progressive'.
-
----
-** Unexpected yanking of text due to accidental clicking on the mouse
-wheel button (typically mouse-2) during wheel scrolling is now avoided.
-This behavior can be customized via the mouse-wheel-click-event and
-mouse-wheel-inhibit-click-time variables.
-
-+++
-** The keyboard-coding-system is now automatically set based on your
-current locale settings if you are not using a window system.  This
-may mean that the META key doesn't work but generates non-ASCII
-characters instead, depending on how the terminal (or terminal
-emulator) works.  Use `set-keyboard-coding-system' (or customize
-keyboard-coding-system) if you prefer META to work (the old default)
-or if the locale doesn't describe the character set actually generated
-by the keyboard.  See Info node `Single-Byte Character Support'.
+** You can now use Auto Revert mode to `tail' a file.
+If point is at the end of a file buffer before reverting, Auto Revert
+mode keeps it at the end after reverting.  Similarly if point is
+displayed at the end of a file buffer in any window, it stays at
+the end of the buffer in that window.  This allows to tail a file:
+just put point at the end of the buffer and it stays there.  This
+rule applies to file buffers.  For non-file buffers, the behavior may
+be mode dependent.
 
-+++
-** Emacs now reads the standard abbrevs file ~/.abbrev_defs
-automatically at startup, if it exists.  When Emacs offers to save
-modified buffers, it saves the abbrevs too if they have changed.  It
-can do this either silently or asking for confirmation first,
-according to the value of `save-abbrevs'.
+If you are sure that the file will only change by growing at the end,
+then you can tail the file more efficiently by using the new minor
+mode Auto Revert Tail mode.  The function `auto-revert-tail-mode'
+toggles this mode.
 
 +++
-** Display of hollow cursors now obeys the buffer-local value (if any)
-of `cursor-in-non-selected-windows' in the buffer that the cursor
-appears in.
+** Auto Revert mode is now more careful to avoid excessive reverts and
+other potential problems when deciding which non-file buffers to
+revert.  This matters especially if Global Auto Revert mode is enabled
+and `global-auto-revert-non-file-buffers' is non-nil.  Auto Revert
+mode only reverts a non-file buffer if the buffer has a non-nil
+`revert-buffer-function' and a non-nil `buffer-stale-function', which
+decides whether the buffer should be reverted.  Currently, this means
+that auto reverting works for Dired buffers (although this may not
+work properly on all operating systems) and for the Buffer Menu.
 
 +++
-** The variable `cursor-in-non-selected-windows' can now be set to any
-of the recognized cursor types.
+** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
+Revert mode reliably updates version control info (such as the version
+control number in the mode line), in all version controlled buffers in
+which it is active.  If the option is nil, the default, then this info
+only gets updated whenever the buffer gets reverted.
 
 ---
-** The variable `auto-save-file-name-transforms' now has a third element that
-controls whether or not the function `make-auto-save-file-name' will
-attempt to construct a unique auto-save name (e.g. for remote files).
-
-+++
-** There is a new calendar package, icalendar.el, that can be used to
-convert Emacs diary entries to/from the iCalendar format.
-
-+++
-** Diary sexp entries can have custom marking in the calendar.
-Diary sexp functions which only apply to certain days (such as
-`diary-block' or `diary-cyclic') now take an optional parameter MARK,
-which is the name of a face or a single-character string indicating
-how to highlight the day in the calendar display.  Specifying a
-single-character string as @var{mark} places the character next to the
-day in the calendar.  Specifying a face highlights the day with that
-face.  This lets you have different colors or markings for vacations,
-appointments, paydays or anything else using a sexp.
-
-+++
-** The new function `calendar-goto-day-of-year' (g D) prompts for a
-year and day number, and moves to that date. Negative day numbers
-count backward from the end of the year.
+** recentf changes.
 
-+++
-** The new Calendar function `calendar-goto-iso-week' (g w)
-prompts for a year and a week number, and moves to the first
-day of that ISO week.
+The recent file list is now automatically cleanup when recentf mode is
+enabled.  The new option `recentf-auto-cleanup' controls when to do
+automatic cleanup.
 
----
-** The new variable `calendar-minimum-window-height' affects the
-window generated by the function `generate-calendar-window'.
+The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
+and provides a more general mechanism to customize which file names to
+keep in the recent list.
 
----
-** The functions `holiday-easter-etc' and `holiday-advent' now take
-optional arguments, in order to only report on the specified holiday
-rather than all. This makes customization of variables such as
-`christian-holidays' simpler.
+With the more advanced option: `recentf-filename-handler', you can
+specify a function that transforms filenames handled by recentf.  For
+example, if set to `file-truename', the same file will not be in the
+recent list with different symbolic links.
 
----
-** The function `simple-diary-display' now by default sets a header line.
-This can be controlled through the variables `diary-header-line-flag'
-and `diary-header-line-format'.
+To follow naming convention, `recentf-menu-append-commands-flag'
+replaces the misnamed option `recentf-menu-append-commands-p'.  The
+old name remains available as alias, but has been marked obsolete.
 
 +++
-** The procedure for activating appointment reminders has changed: use
-the new function `appt-activate'. The new variable
-`appt-display-format' controls how reminders are displayed, replacing
-appt-issue-message, appt-visible, and appt-msg-window.
+** Desktop package
 
 +++
-** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
-and `diary-from-outlook-rmail' can be used to import diary entries
-from Outlook-format appointments in mail messages.  The variable
-`diary-outlook-formats' can be customized to recognize additional
-formats.
-
+*** Desktop saving is now a minor mode, desktop-save-mode. Variable
+desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
+saving.
 
-** VC Changes
+---
+*** Buffers are saved in the desktop file in the same order as that in the
+buffer list.
 
 +++
-*** The key C-x C-q no longer checks files in or out, it only changes
-the read-only state of the buffer (toggle-read-only).  We made this
-change because we held a poll and found that many users were unhappy
-with the previous behavior.  If you do prefer this behavior, you
-can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
+*** The desktop package can be customized to restore only some buffers immediately,
+remaining buffers are restored lazily (when Emacs is idle).
 
-    (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
++++
+*** New commands:
+  - desktop-revert reverts to the last loaded desktop.
+  - desktop-change-dir kills current desktop and loads a new.
+  - desktop-save-in-desktop-dir saves desktop in the directory from which
+    it was loaded.
+  - desktop-lazy-complete runs the desktop load to completion.
+  - desktop-lazy-abort aborts lazy loading of the desktop.
 
-The function `vc-toggle-read-only' will continue to exist.
+---
+*** New customizable variables:
+  - desktop-save. Determins whether the desktop should be saved when it is
+    killed.
+  - desktop-file-name-format. Format in which desktop file names should be saved.
+  - desktop-path. List of directories in which to lookup the desktop file.
+  - desktop-locals-to-save. List of local variables to save.
+  - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
+  - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
+    should not delete.
+  - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
+    restored lazily (when Emacs is idle).
+  - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
+  - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
 
 +++
-*** There is a new user option `vc-cvs-global-switches' that allows
-you to specify switches that are passed to any CVS command invoked
-by VC.  These switches are used as "global options" for CVS, which
-means they are inserted before the command name.  For example, this
-allows you to specify a compression level using the "-z#" option for
-CVS.
+*** New command line option --no-desktop
 
-+++
-*** New backends for Subversion and Meta-CVS.
+---
+*** New hooks:
+  - desktop-after-read-hook run after a desktop is loaded.
+  - desktop-no-desktop-file-hook run when no desktop file is found.
+
+---
+** The saveplace.el package now filters out unreadable files.
+When you exit Emacs, the saved positions in visited files no longer
+include files that aren't readable, e.g. files that don't exist.
+Customize the new option `save-place-forget-unreadable-files' to nil
+to get the old behavior.  The new options `save-place-save-skipped'
+and `save-place-skip-check-regexp' allow further fine-tuning of this
+feature.
 
 ** EDiff changes.
 
@@ -1990,419 +1970,264 @@ be used (only once) in place of a file name on the command line.  Etags
 reads from standard input and marks the produced tags as belonging to
 the file FILE.
 
-+++
-** CC Mode changes.
-
-*** Font lock support.
-CC Mode now provides font lock support for all its languages.  This
-supersedes the font lock patterns that have been in the core font lock
-package for C, C++, Java and Objective-C.  Like indentation, font
-locking is done in a uniform way across all languages (except the new
-AWK mode - see below).  That means that the new font locking will be
-different from the old patterns in various details for most languages.
-
-The main goal of the font locking in CC Mode is accuracy, to provide a
-dependable aid in recognizing the various constructs.  Some, like
-strings and comments, are easy to recognize while others like
-declarations and types can be very tricky.  CC Mode can go to great
-lengths to recognize declarations and casts correctly, especially when
-the types aren't recognized by standard patterns.  This is a fairly
-demanding analysis which can be slow on older hardware, and it can
-therefore be disabled by choosing a lower decoration level with the
-variable font-lock-maximum-decoration.
-
-Note that the most demanding font lock level has been tuned with lazy
-fontification in mind, i.e.  there should be a support mode that waits
-with the fontification until the text is actually shown
-(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock
-mode).  Fontifying a file with several thousand lines in one go can
-take the better part of a minute.
-
-**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
-are now used by CC Mode to recognize identifiers that are certain to
-be types.  (They are also used in cases that aren't related to font
-locking.)  At the maximum decoration level, types are often recognized
-properly anyway, so these variables should be fairly restrictive and
-not contain patterns for uncertain types.
-
-**** Support for documentation comments.
-There is a "plugin" system to fontify documentation comments like
-Javadoc and the markup within them.  It's independent of the host
-language, so it's possible to e.g. turn on Javadoc font locking in C
-buffers.  See the variable c-doc-comment-style for details.
-
-Currently two kinds of doc comment styles are recognized: Suns Javadoc
-and Autodoc which is used in Pike.  This is by no means a complete
-list of the most common tools; if your doc comment extractor of choice
-is missing then please drop a note to bug-cc-mode@gnu.org.
-
-**** Better handling of C++ templates.
-As a side effect of the more accurate font locking, C++ templates are
-now handled much better.  The angle brackets that delimit them are
-given parenthesis syntax so that they can be navigated like other
-parens.
-
-This also improves indentation of templates, although there still is
-work to be done in that area.  E.g. it's required that multiline
-template clauses are written in full and then refontified to be
-recognized, and the indentation of nested templates is a bit odd and
-not as configurable as it ought to be.
-
-**** Improved handling of Objective-C and CORBA IDL.
-Especially the support for Objective-C and IDL has gotten an overhaul.
-The special "@" declarations in Objective-C are handled correctly.
-All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
-handled correctly, also wrt indentation.
-
-*** Support for the AWK language.
-Support for the AWK language has been introduced.  The implementation is
-based around GNU AWK version 3.1, but it should work pretty well with
-any AWK.  As yet, not all features of CC Mode have been adapted for AWK.
-Here is a summary:
-
-**** Indentation Engine
-The CC Mode indentation engine fully supports AWK mode.
-
-AWK mode handles code formatted in the conventional AWK fashion: `{'s
-which start actions, user-defined functions, or compound statements are
-placed on the same line as the associated construct; the matching `}'s
-are normally placed under the start of the respective pattern, function
-definition, or structured statement.
-
-The predefined indentation functions haven't yet been adapted for AWK
-mode, though some of them may work serendipitously.  There shouldn't be
-any problems writing custom indentation functions for AWK mode.
-
-The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK,
-though in practice it works properly nearly all the time.  Should it
-fail, explicitly set the region around the function (using C-u C-SPC:
-C-M-h probably won't work either) then do C-M-\ (indent-region).
-
-**** Font Locking
-There is a single level of font locking in AWK mode, rather than the
-three distinct levels the other modes have.  There are several
-idiosyncrasies in AWK mode's font-locking due to the peculiarities of
-the AWK language itself.
-
-**** Comment Commands
-M-; (indent-for-comment) works fine.  None of the other CC Mode
-comment formatting commands have yet been adapted for AWK mode.
-
-**** Movement Commands
-Most of the movement commands work in AWK mode.  The most important
-exceptions are M-a (c-beginning-of-statement) and M-e
-(c-end-of-statement) which haven't yet been adapted.
-
-The notion of "defun" has been augmented to include AWK pattern-action
-pairs.  C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun)
-recognise these pattern-action pairs, as well as user defined
-functions.
-
-**** Auto-newline Insertion and Clean-ups
-Auto-newline insertion hasn't yet been adapted for AWK.  Some of
-the clean-ups can actually convert good AWK code into syntactically
-invalid code.  These features are best disabled in AWK buffers.
-
-*** New syntactic symbols in IDL mode.
-The top level constructs "module" and "composition" (from CIDL) are
-now handled like "namespace" in C++: They are given syntactic symbols
-module-open, module-close, inmodule, composition-open,
-composition-close, and incomposition.
-
-*** New functions to do hungry delete without enabling hungry delete mode.
-The functions c-hungry-backspace and c-hungry-delete-forward can be
-bound to keys to get this feature without toggling a mode.
-Contributed by Kevin Ryde.
-
-*** Better control over require-final-newline.  The variable that
-controls how to handle a final newline when the buffer is saved,
-require-final-newline, is now customizable on a per-mode basis through
-c-require-final-newline.  That is a list of modes, and only those
-modes set require-final-newline.  By default that's C, C++ and
-Objective-C.
-
-The specified modes set require-final-newline based on
-mode-require-final-newline, as usual.
-
-*** Format change for syntactic context elements.
-The elements in the syntactic context returned by c-guess-basic-syntax
-and stored in c-syntactic-context has been changed somewhat to allow
-attaching more information.  They are now lists instead of single cons
-cells.  E.g. a line that previously had the syntactic analysis
-
-((inclass . 11) (topmost-intro . 13))
-
-is now analysed as
-
-((inclass 11) (topmost-intro 13))
-
-In some cases there are more than one position given for a syntactic
-symbol.
-
-This change might affect code that call c-guess-basic-syntax directly,
-and custom lineup functions if they use c-syntactic-context.  However,
-the argument given to lineup functions is still a single cons cell
-with nil or an integer in the cdr.
-
-*** API changes for derived modes.
-There have been extensive changes "under the hood" which can affect
-derived mode writers.  Some of these changes are likely to cause
-incompatibilities with existing derived modes, but on the other hand
-care has now been taken to make it possible to extend and modify CC
-Mode with less risk of such problems in the future.
-
-**** New language variable system.
-See the comment blurb near the top of cc-langs.el.
-
-**** New initialization functions.
-The initialization procedure has been split up into more functions to
-give better control: c-basic-common-init, c-font-lock-init, and
-c-init-language-vars.
-
-*** Changes in analysis of nested syntactic constructs.
-The syntactic analysis engine has better handling of cases where
-several syntactic constructs appear nested on the same line.  They are
-now handled as if each construct started on a line of its own.
-
-This means that CC Mode now indents some cases differently, and
-although it's more consistent there might be cases where the old way
-gave results that's more to one's liking.  So if you find a situation
-where you think that the indentation has become worse, please report
-it to bug-cc-mode@gnu.org.
-
-**** New syntactic symbol substatement-label.
-This symbol is used when a label is inserted between a statement and
-its substatement.  E.g:
-
-    if (x)
-      x_is_true:
-        do_stuff();
-
-*** Better handling of multiline macros.
+** VC Changes
 
-**** Syntactic indentation inside macros.
-The contents of multiline #define's are now analyzed and indented
-syntactically just like other code.  This can be disabled by the new
-variable c-syntactic-indentation-in-macros.  A new syntactic symbol
-cpp-define-intro has been added to control the initial indentation
-inside #define's.
++++
+*** The key C-x C-q no longer checks files in or out, it only changes
+the read-only state of the buffer (toggle-read-only).  We made this
+change because we held a poll and found that many users were unhappy
+with the previous behavior.  If you do prefer this behavior, you
+can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
 
-**** New lineup function c-lineup-cpp-define.
-Now used by default to line up macro continuation lines.  The behavior
-of this function closely mimics the indentation one gets if the macro
-is indented while the line continuation backslashes are temporarily
-removed.  If syntactic indentation in macros is turned off, it works
-much line c-lineup-dont-change, which was used earlier, but handles
-empty lines within the macro better.
+    (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
 
-**** Automatically inserted newlines continues the macro if used within one.
-This applies to the newlines inserted by the auto-newline mode, and to
-c-context-line-break and c-context-open-line.
+The function `vc-toggle-read-only' will continue to exist.
 
-**** Better alignment of line continuation backslashes.
-c-backslash-region tries to adapt to surrounding backslashes.  New
-variable c-backslash-max-column which put a limit on how far out
-backslashes can be moved.
++++
+*** There is a new user option `vc-cvs-global-switches' that allows
+you to specify switches that are passed to any CVS command invoked
+by VC.  These switches are used as "global options" for CVS, which
+means they are inserted before the command name.  For example, this
+allows you to specify a compression level using the "-z#" option for
+CVS.
 
-**** Automatic alignment of line continuation backslashes.
-This is controlled by the new variable c-auto-align-backslashes.  It
-affects c-context-line-break, c-context-open-line and newlines
-inserted in auto-newline mode.
++++
+*** New backends for Subversion and Meta-CVS.
 
-**** Line indentation works better inside macros.
-Regardless whether syntactic indentation and syntactic indentation
-inside macros are enabled or not, line indentation now ignores the
-line continuation backslashes.  This is most noticeable when syntactic
-indentation is turned off and there are empty lines (save for the
-backslash) in the macro.
++++
+** vc-annotate-mode enhancements
 
-*** indent-for-comment is more customizable.
-The behavior of M-; (indent-for-comment) is now configurable through
-the variable c-indent-comment-alist.  The indentation behavior based
-on the preceding code on the line, e.g. to get two spaces after #else
-and #endif but indentation to comment-column in most other cases
-(something which was hardcoded earlier).
+In vc-annotate mode, you can now use the following key bindings for
+enhanced functionality to browse the annotations of past revisions, or
+to view diffs or log entries directly from vc-annotate-mode:
 
-*** New function c-context-open-line.
-It's the open-line equivalent of c-context-line-break.
+    P:  annotates the previous revision
+    N:  annotates the next revision
+    J:  annotates the revision at line
+    A:  annotates the revision previous to line
+    D:  shows the diff of the revision at line with its previous revision
+    L:  shows the log of the revision at line
+    W:  annotates the workfile (most up to date) version
 
-*** New lineup functions
++++
+** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
 
-**** c-lineup-string-cont
-This lineup function lines up a continued string under the one it
-continues.  E.g:
++++
+** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+"checkout", "update" or "commit".  That means using cvs diff options
+-rBASE -rHEAD.
 
-result = prefix + "A message "
-                  "string.";      <- c-lineup-string-cont
++++
+** There is a new user option `mail-default-directory' that allows you
+to specify the value of `default-directory' for mail buffers.  This
+directory is used for auto-save files of mail buffers.  It defaults to
+"~/".
 
-**** c-lineup-cascaded-calls
-Lines up series of calls separated by "->" or ".".
++++
+** Emacs can now indicate in the mode-line the presence of new e-mail
+in a directory or in a file.  See the documentation of the user option
+`display-time-mail-directory'.
 
-**** c-lineup-knr-region-comment
-Gives (what most people think is) better indentation of comments in
-the "K&R region" between the function header and its body.
+---
+** PO translation files are decoded according to their MIME headers
+when Emacs visits them.
 
-**** c-lineup-gcc-asm-reg
-Provides better indentation inside asm blocks.  Contributed by Kevin
-Ryde.
+** Gnus package
 
-**** c-lineup-argcont
-Lines up continued function arguments after the preceding comma.
-Contributed by Kevin Ryde.
+---
+*** Gnus now includes Sieve and PGG
+Sieve is a library for managing Sieve scripts.  PGG is a library to handle
+PGP/MIME.
 
-*** Better caching of the syntactic context.
-CC Mode caches the positions of the opening parentheses (of any kind)
-of the lists surrounding the point.  Those positions are used in many
-places as anchor points for various searches.  The cache is now
-improved so that it can be reused to a large extent when the point is
-moved.  The less it moves, the less needs to be recalculated.
+---
+*** There are many news features, bug fixes and improvements.
+See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
 
-The effect is that CC Mode should be fast most of the time even when
-opening parens are hung (i.e. aren't in column zero).  It's typically
-only the first time after the point is moved far down in a complex
-file that it'll take noticeable time to find out the syntactic
-context.
+---
+** Rmail now displays 5-digit message ids in its summary buffer.
 
-*** Statements are recognized in a more robust way.
-Statements are recognized most of the time even when they occur in an
-"invalid" context, e.g. in a function argument.  In practice that can
-happen when macros are involved.
++++
+** Support for `movemail' from GNU mailutils was added to Rmail.
+This version of `movemail' allows to read mail from a wide range of
+mailbox formats, including remote POP3 and IMAP4 mailboxes with or
+without TLS encryption.  If GNU mailutils is installed on the system
+and its version of `movemail' can be found in exec-path, it will be
+used instead of the native one.
 
-*** Improved the way c-indent-exp chooses the block to indent.
-It now indents the block for the closest sexp following the point
-whose closing paren ends on a different line.  This means that the
-point doesn't have to be immediately before the block to indent.
-Also, only the block and the closing line is indented; the current
-line is left untouched.
+---
+** MH-E changes.
 
-*** Added toggle for syntactic indentation.
-The function c-toggle-syntactic-indentation can be used to toggle
-syntactic indentation.
+Upgraded to MH-E version 7.82. There have been major changes since
+version 5.0.2; see MH-E-NEWS for details.
 
 +++
-** The command line option --no-windows has been changed to
---no-window-system.  The old one still works, but is deprecated.
+** There is a new calendar package, icalendar.el, that can be used to
+convert Emacs diary entries to/from the iCalendar format.
 
 +++
-** The command `list-text-properties-at' has been deleted because
-C-u C-x = gives the same information and more.
+** Diary sexp entries can have custom marking in the calendar.
+Diary sexp functions which only apply to certain days (such as
+`diary-block' or `diary-cyclic') now take an optional parameter MARK,
+which is the name of a face or a single-character string indicating
+how to highlight the day in the calendar display.  Specifying a
+single-character string as @var{mark} places the character next to the
+day in the calendar.  Specifying a face highlights the day with that
+face.  This lets you have different colors or markings for vacations,
+appointments, paydays or anything else using a sexp.
 
 +++
-** `buffer-menu' and `list-buffers' now list buffers whose names begin
-with a space, when those buffers are visiting files.  Normally buffers
-whose names begin with space are omitted.
+** The new function `calendar-goto-day-of-year' (g D) prompts for a
+year and day number, and moves to that date. Negative day numbers
+count backward from the end of the year.
 
 +++
-** You can now customize fill-nobreak-predicate to control where
-filling can break lines.  The value is now normally a list of
-functions, but it can also be a single function, for compatibility.
+** The new Calendar function `calendar-goto-iso-week' (g w)
+prompts for a year and a week number, and moves to the first
+day of that ISO week.
 
-We provide two sample predicates, fill-single-word-nobreak-p and
-fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
+---
+** The new variable `calendar-minimum-window-height' affects the
+window generated by the function `generate-calendar-window'.
+
+---
+** The functions `holiday-easter-etc' and `holiday-advent' now take
+optional arguments, in order to only report on the specified holiday
+rather than all. This makes customization of variables such as
+`christian-holidays' simpler.
+
+---
+** The function `simple-diary-display' now by default sets a header line.
+This can be controlled through the variables `diary-header-line-flag'
+and `diary-header-line-format'.
 
 +++
-** New user option `add-log-always-start-new-record'.
-When this option is enabled, M-x add-change-log-entry always
-starts a new record regardless of when the last record is.
+** The procedure for activating appointment reminders has changed: use
+the new function `appt-activate'. The new variable
+`appt-display-format' controls how reminders are displayed, replacing
+appt-issue-message, appt-visible, and appt-msg-window.
 
 +++
-** SGML mode has indentation and supports XML syntax.
-The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
-When this option is enabled, SGML tags are inserted in XML style,
-i.e., there is always a closing tag.
-By default, its setting is inferred on a buffer-by-buffer basis
-from the file name or buffer contents.
+** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
+and `diary-from-outlook-rmail' can be used to import diary entries
+from Outlook-format appointments in mail messages.  The variable
+`diary-outlook-formats' can be customized to recognize additional
+formats.
 
 +++
-** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+** Emacs now supports drag and drop for X.  Dropping a file on a window
+   opens it, dropping text inserts the text.  Dropping a file on a dired
+   buffer copies or moves the file to that directory.
 
----
-** Lisp mode now uses font-lock-doc-face for the docstrings.
++++
+** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
+The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
+and `x-super-keysym' can be used to choose which keysyms Emacs should
+use for the modifiers.  For example, the following two lines swap
+Meta and Alt:
+    (setq x-alt-keysym 'meta)
+    (setq x-meta-keysym 'alt)
+
++++
+** The X resource useXIM can be used to turn off use of XIM, which may
+speed up Emacs with slow networking to the X server.
+
+If the configure option `--without-xim' was used to turn off use of
+XIM by default, the X resource useXIM can be used to turn it on.
 
 ---
-** Perl mode has a new variable `perl-indent-continued-arguments'.
+** The new variable `x-select-request-type' controls how Emacs
+requests X selection.  The default value is nil, which means that
+Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
+and use the more appropriately result.
 
 ---
-** Fortran mode does more font-locking by default. Use level 3
-highlighting for the old default.
+** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
+On the other hand, the size of the thumb does not represent the actual
+amount of text shown any more (only a crude approximation of it).
 
-+++
-** Fortran mode has a new variable `fortran-directive-re'.
-Adapt this to match the format of any compiler directives you use.
-Lines that match are never indented, and are given distinctive font-locking.
+---
+** The pop up menus for Lucid now stay up if you do a fast click and can
+be navigated with the arrow keys (like Gtk+, Mac and W32).
 
 +++
-** F90 mode and Fortran mode have new navigation commands
-`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
-`f90-previous-block', `fortran-end-of-block',
-`fortran-beginning-of-block'.
+** The Lucid menus can display multilingual text in your locale.  You have
+to explicitly specify a fontSet resource for this to work, for example
+`-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
 
 ---
-** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
-It cannot deal with every code format, but ought to handle a sizeable
-majority.
+** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
+ESC, like they do for Gtk+, Mac and W32.
 
----
-** The new function `f90-backslash-not-special' can be used to change
-the syntax of backslashes in F90 buffers.
+---
+** Dialogs and menus pop down if you type C-g.
 
 ---
-** Prolog mode has a new variable `prolog-font-lock-keywords'
-to support use of font-lock.
+** The menu item "Open File..." has been split into two items, "New File..."
+and "Open File...".  "Open File..." now opens only existing files.  This is
+to support existing GUI file selection dialogs better.
 
 +++
-** `special-display-buffer-names' and `special-display-regexps' now
-understand two new boolean pseudo-frame-parameters `same-frame' and
-`same-window'.
+** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
+disabled by customizing the variable `use-file-dialog'.
 
 +++
-** M-x setenv now expands environment variables of the form `$foo' and
-`${foo}' in the specified new value of the environment variable.  To
-include a `$' in the value, use `$$'.
+** For Gtk+ version 2.4, you can make Emacs use the old file dialog
+by setting the variable `x-use-old-gtk-file-dialog' to t.  Default is to use
+the new dialog.
 
-+++
-** File-name completion can now ignore directories.
-If an element of the list in `completion-ignored-extensions' ends in a
-slash `/', it indicates a subdirectory that should be ignored when
-completing file names.  Elements of `completion-ignored-extensions'
-which do not end in a slash are never considered when a completion
-candidate is a directory.
+---
+** Emacs now responds to mouse-clicks on the mode-line, header-line and
+display margin, when run in an xterm.
 
-+++
-** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point.  If there is text in the buffer after point,
-it remains unchanged.
+** Improved key bindings support when running in an xterm.
+When emacs is running in an xterm more key bindings are available. The
+following should work: 
+{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
+These key bindings work on xterm from X.org 6.8, they might not work on
+some older versions of xterm, or on some proprietary versions.
 
----
-** Enhanced visual feedback in *Completions* buffer.
+** Changes in support of colors on character terminals
 
-Completions lists use faces to highlight what all completions
-have in common and where they begin to differ.
++++
+*** The new command-line option --color=MODE lets you specify a standard
+mode for a tty color support.  It is meant to be used on character
+terminals whose capabilities are not set correctly in the terminal
+database, or with terminal emulators which support colors, but don't
+set the TERM environment variable to a name of a color-capable
+terminal.  "emacs --color" uses the same color commands as GNU `ls'
+when invoked with "ls --color", so if your terminal can support colors
+in "ls --color", it will support "emacs --color" as well.  See the
+user manual for the possible values of the MODE parameter.
 
-The common prefix shared by all possible completions uses the face
-`completions-common-part', while the first character that isn't the
-same uses the face `completions-first-difference'.  By default,
-`completions-common-part' inherits from `default', and
-`completions-first-difference' inherits from `bold'.  The idea of
-`completions-common-part' is that you can use it to make the common
-parts less visible than normal, so that the rest of the differing
-parts is, by contrast, slightly highlighted.
+---
+*** Emacs now supports several character terminals which provide more
+than 8 colors.  For example, for `xterm', 16-color, 88-color, and
+256-color modes are supported.  Emacs automatically notes at startup
+the extended number of colors, and defines the appropriate entries for
+all of these colors.
 
 +++
-** New user option `inhibit-startup-buffer-menu'.
-When loading many files, for instance with `emacs *', Emacs normally
-displays a buffer menu.  This option turns the buffer menu off.
+*** Emacs now uses the full range of available colors for the default
+faces when running on a color terminal, including 16-, 88-, and
+256-color xterms.  This means that when you run "emacs -nw" on an
+88-color or 256-color xterm, you will see essentially the same face
+colors as on X.
 
 ---
-** Rmail now displays 5-digit message ids in its summary buffer.
+*** There's a new support for colors on `rxvt' terminal emulator.
 
 +++
-** Support for `movemail' from GNU mailutils was added to Rmail.
-This version of `movemail' allows to read mail from a wide range of
-mailbox formats, including remote POP3 and IMAP4 mailboxes with or
-without TLS encryption.  If GNU mailutils is installed on the system
-and its version of `movemail' can be found in exec-path, it will be
-used instead of the native one.
+** Passing resources on the command line now works on MS Windows.
+You can use --xrm to pass resource settings to Emacs, overriding any
+existing values.  For example:
+
+  emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
+
+will start up Emacs on an initial frame of 100x20 with red background,
+irrespective of geometry or background setting on the Windows registry.
 
 ---
 ** On MS Windows, the "system caret" now follows the cursor.
@@ -2457,1280 +2282,1159 @@ MS Windows, Emacs now uses the appropriate locale coding-system, so
 the clipboard should work correctly for your local language without
 any customizations.
 
-+++
-** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
-The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
-and `x-super-keysym' can be used to choose which keysyms Emacs should
-use for the modifiers.  For example, the following two lines swap
-Meta and Alt:
-    (setq x-alt-keysym 'meta)
-    (setq x-meta-keysym 'alt)
-
-+++
-** vc-annotate-mode enhancements
-
-In vc-annotate mode, you can now use the following key bindings for
-enhanced functionality to browse the annotations of past revisions, or
-to view diffs or log entries directly from vc-annotate-mode:
-
-    P:  annotates the previous revision
-    N:  annotates the next revision
-    J:  annotates the revision at line
-    A:  annotates the revision previous to line
-    D:  shows the diff of the revision at line with its previous revision
-    L:  shows the log of the revision at line
-    W:  annotates the workfile (most up to date) version
-
-+++
-** In pcl-cvs mode, there is a new `d y' command to view the diffs
-between the local version of the file and yesterday's head revision
-in the repository.
-
-+++
-** In pcl-cvs mode, there is a new `d r' command to view the changes
-anyone has committed to the repository since you last executed
-"checkout", "update" or "commit".  That means using cvs diff options
--rBASE -rHEAD.
-
----
-** New variable `hs-set-up-overlay' allows customization of the overlay
-used to effect hiding for hideshow minor mode.  Integration with isearch
-handles the overlay property `display' specially, preserving it during
-temporary overlay showing in the course of an isearch operation.
-
-+++
-** New command `recode-region' decodes the region again by a specified
-coding system.
-
 ---
 ** On Mac OS, the value of the variable `keyboard-coding-system' is
 now dynamically changed according to the current keyboard script.  The
 variable `mac-keyboard-text-encoding' and the constants
-`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
-`kTextEncodingISOLatin2' are obsolete.
-\f
-* New modes and packages in Emacs 22.1
-
-+++
-** The new package longlines.el provides a minor mode for editing text
-files composed of long lines, based on the `use-hard-newlines'
-mechanism.  The long lines are broken up by inserting soft newlines,
-which are automatically removed when saving the file to disk or
-copying into the kill ring, clipboard, etc.  By default, Longlines
-mode inserts soft newlines automatically during editing, a behavior
-referred to as "soft word wrap" in other text editors.  This is
-similar to Refill mode, but more reliable.  To turn the word wrap
-feature off, set `longlines-auto-wrap' to nil.
-
-+++
-** The new package conf-mode.el handles thousands of configuration files, with
-varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
-var : value, var value or keyword var value) and sections ([section] or
-section { }).  Many files under /etc/, or with suffixes like .cf through
-.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
-recognized.
-
-+++
-** The new package dns-mode.el add syntax highlight of DNS master files.
-The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
-to increment the SOA serial.
-
-+++
-** The new package flymake.el does on-the-fly syntax checking of program
-source files.  See the Flymake's Info manual for more details.
-
----
-** The library tree-widget.el provides a new widget to display a set
-of hierarchical data as an outline.  For example, the tree-widget is
-well suited to display a hierarchy of directories and files.
-
-+++
-** The wdired.el package allows you to use normal editing commands on Dired
-buffers to change filenames, permissions, etc...
-
-+++
-** The thumbs.el package allows you to preview image files as thumbnails
-and can be invoked from a Dired buffer.
-
-+++
-** Image files are normally visited in Image mode, which lets you toggle
-between viewing the image and viewing the text using C-c C-c.
-
-+++
-** The new python.el package is used to edit Python and Jython programs.
-
----
-** The URL package (which had been part of W3) is now part of Emacs.
-
-+++
-** The new global minor mode `size-indication-mode' (off by default)
-shows the size of accessible part of the buffer on the mode line.
-
----
-** GDB-Script-mode is used for files like .gdbinit.
-
----
-** Ido mode is now part of the Emacs distribution.
-
-The ido (interactively do) package is an extension of the iswitchb
-package to do interactive opening of files and directories in addition
-to interactive buffer switching.  Ido is a superset of iswitchb (with
-a few exceptions), so don't enable both packages.
-
----
-** CUA mode is now part of the Emacs distribution.
-
-The new cua package provides CUA-like keybindings using C-x for
-cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
-With cua, the region can be set and extended using shifted movement
-keys (like pc-selection-mode) and typed text replaces the active
-region (like delete-selection-mode).  Do not enable these modes with
-cua-mode.  Customize the variable `cua-mode' to enable cua.
-
-In addition, cua provides unified rectangle support with visible
-rectangle highlighting: Use S-return to start a rectangle, extend it
-using the movement commands (or mouse-3), and cut or copy it using C-x
-or C-c (using C-w and M-w also works).
-
-Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
-fill it with blanks or another character, use M-u or M-l to upcase or
-downcase the rectangle, use M-i to increment the numbers in the
-rectangle, use M-n to fill the rectangle with a numeric sequence (such
-as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
-M-' or M-/ to restrict command on the rectangle to a subset of the
-rows.  See the commentary in cua-base.el for more rectangle commands.
-
-Cua also provides unified support for registers:  Use a numeric
-prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
-C-v to cut or copy into register 0-9, or paste from register 0-9.
-
-The last text deleted (not killed) is automatically stored in
-register 0.  This includes text deleted by typing text.
-
-Finally, cua provides a global mark which is set using S-C-space.
-When the global mark is active, any text which is cut or copied is
-automatically inserted at the global mark position.  See the
-commentary in cua-base.el for more global mark related commands.
-
-The features of cua also works with the standard emacs bindings for
-kill, copy, yank, and undo.  If you want to use cua mode, but don't
-want the C-x, C-c, C-v, and C-z bindings, you may customize the
-`cua-enable-cua-keys' variable.
-
-Note: This version of cua mode is not backwards compatible with older
-versions of cua.el and cua-mode.el.  To ensure proper operation, you
-must remove older versions of cua.el or cua-mode.el as well as the
-loading and customization of those packages from the .emacs file.
-
-+++
-** The new keypad setup package provides several common bindings for
-the numeric keypad which is available on most keyboards.  The numeric
-keypad typically has the digits 0 to 9, a decimal point, keys marked
-+, -, /, and *, an Enter key, and a NumLock toggle key.  The keypad
-package only controls the use of the digit and decimal keys.
+`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
+`kTextEncodingISOLatin2' are obsolete.
 
-By customizing the variables `keypad-setup', `keypad-shifted-setup',
-`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
-using the function `keypad-setup', you can rebind all digit keys and
-the decimal key of the keypad in one step for each of the four
-possible combinations of the Shift key state (not pressed/pressed) and
-the NumLock toggle state (off/on).
+---
+** sql changes.
 
-The choices for the keypad keys in each of the above states are:
-`Plain numeric keypad' where the keys generates plain digits,
-`Numeric keypad with decimal key' where the character produced by the
-decimal key can be customized individually (for internationalization),
-`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
-for emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
-where the keys work like (shifted) arrow keys, home/end, etc., and
-`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
-are left unspecified and can be bound individually through the global
-or local keymaps.
+*** The variable `sql-product' controls the highlightng of different
+SQL dialects.  This variable can be set globally via Customize, on a
+buffer-specific basis via local variable settings, or for the current
+session using the new SQL->Product submenu.  (This menu replaces the
+SQL->Highlighting submenu.)
 
-+++
-** The new kmacro package provides a simpler user interface to
-emacs' keyboard macro facilities.
+The following values are supported:
 
-Basically, it uses two function keys (default F3 and F4) like this:
-F3 starts a macro, F4 ends the macro, and pressing F4 again executes
-the last macro.  While defining the macro, F3 inserts a counter value
-which automatically increments every time the macro is executed.
+    ansi       ANSI Standard (default)
+    db2                DB2
+    informix    Informix
+    ingres      Ingres
+    interbase  Interbase
+    linter     Linter
+    ms         Microsoft
+    mysql      MySQL
+    oracle     Oracle
+    postgres   Postgres
+    solid       Solid
+    sqlite      SQLite
+    sybase      Sybase
 
-There is now a keyboard macro ring which stores the most recently
-defined macros.
+The current product name will be shown on the mode line following the
+SQL mode indicator.
 
-The C-x C-k sequence is now a prefix for the kmacro keymap which
-defines bindings for moving through the keyboard macro ring,
-C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
-manipulating the macro counter and format via C-x C-k C-c,
-C-x C-k C-a, and C-x C-k C-f.  See the commentary in kmacro.el
-for more commands.
+The technique of setting `sql-mode-font-lock-defaults' directly in
+your .emacs will no longer establish the default highlighting -- Use
+`sql-product' to accomplish this.
 
-The normal macro bindings C-x (, C-x ), and C-x e now interfaces to
-the keyboard macro ring.
+ANSI keywords are always highlighted.
 
-The C-x e command now automatically terminates the current macro
-before calling it, if used while defining a macro.
+*** The function `sql-add-product-keywords' can be used to add
+font-lock rules to the product specific rules.  For example, to have
+all identifiers ending in "_t" under MS SQLServer treated as a type,
+you would use the following line in your .emacs file:
 
-In addition, when ending or calling a macro with C-x e, the macro can
-be repeated immediately by typing just the `e'.  You can customize
-this behavior via the variable kmacro-call-repeat-key and
-kmacro-call-repeat-with-arg.
+  (sql-add-product-keywords 'ms
+             '(("\\<\\w+_t\\>" . font-lock-type-face)))
 
-Keyboard macros can now be debugged and edited interactively.
-C-x C-k SPC steps through the last keyboard macro one key sequence
-at a time, prompting for the actions to take.
+*** Oracle support includes keyword highlighting for Oracle 9i.  Most
+SQL and PL/SQL keywords are implemented.  SQL*Plus commands are
+highlighted in `font-lock-doc-face'.
 
----
-** The old Octave mode bindings C-c f and C-c i have been changed
-to C-c C-f and C-c C-i.  The C-c C-i subcommands now have duplicate
-bindings on control characters--thus, C-c C-i C-b is the same as
-C-c C-i b, and so on.
+*** Microsoft SQLServer support has been significantly improved.
+Keyword highlighting for SqlServer 2000 is implemented.
+sql-interactive-mode defaults to use osql, rather than isql, because
+osql flushes its error stream more frequently.  Thus error messages
+are displayed when they occur rather than when the session is
+terminated.
 
-** The printing package is now part of the Emacs distribution.
+If the username and password are not provided to `sql-ms', osql is
+called with the -E command line argument to use the operating system
+credentials to authenticate the user.
 
-If you enable the printing package by including (require 'printing) in
-the .emacs file, the normal Print item on the File menu is replaced
-with a Print sub-menu which allows you to preview output through
-ghostview, use ghostscript to print (if you don't have a PostScript
-printer) or send directly to printer a PostScript code generated by
-`ps-print' package.  Use M-x pr-help for more information.
+*** Postgres support is enhanced.
+Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
+the username and the pgsql `-U' option is added.
 
-+++
-** Calc is now part of the Emacs distribution.
+*** MySQL support is enhanced.
+Keyword higlighting of MySql 4.0 is implemented.
 
-Calc is an advanced desk calculator and mathematical tool written in
-Emacs Lisp.  Its documentation is in a separate manual; within Emacs,
-type "C-h i m calc RET" to read that manual.  A reference card is
-available in `etc/calccard.tex' and `etc/calccard.ps'.
+*** Imenu support has been enhanced to locate tables, views, indexes,
+packages, procedures, functions, triggers, sequences, rules, and
+defaults.
 
-+++
-** Tramp is now part of the distribution.
+*** Added SQL->Start SQLi Session menu entry which calls the
+appropriate sql-interactive-mode wrapper for the current setting of
+`sql-product'.
 
-This package is similar to Ange-FTP: it allows you to edit remote
-files.  But whereas Ange-FTP uses FTP to access the remote host,
-Tramp uses a shell connection.  The shell connection is always used
-for filename completion and directory listings and suchlike, but for
-the actual file transfer, you can choose between the so-called
-`inline' methods (which transfer the files through the shell
-connection using base64 or uu encoding) and the `out-of-band' methods
-(which invoke an external copying program such as `rcp' or `scp' or
-`rsync' to do the copying).
+---
+*** Support for the SQLite interpreter has been added to sql.el by calling
+'sql-sqlite'.
 
-Shell connections can be acquired via `rsh', `ssh', `telnet' and also
-`su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
+---
+** M-x view-file and commands that use it now avoid interfering
+with special modes such as Tar mode.
 
-If you want to disable Tramp you should set
++++
+** Filesets are collections of files.  You can define a fileset in
+various ways, such as based on a directory tree or based on
+program files that include other program files.
 
-  (setq tramp-default-method "ftp")
+Once you have defined a fileset, you can perform various operations on
+all the files in it, such as visiting them or searching and replacing
+in them.
 
 ---
-** The new global minor mode `file-name-shadow-mode' modifies the way
-filenames being entered by the user in the minibuffer are displayed, so
-that it's clear when part of the entered filename will be ignored due to
-emacs' filename parsing rules.  The ignored portion can be made dim,
-invisible, or otherwise less visually noticable.  The display method may
-be displayed by customizing the variable `file-name-shadow-properties'.
+** Commands winner-redo and winner-undo, from winner.el, are now bound to
+C-c <left> and C-c <right>, respectively.  This is an incompatible change.
 
----
-** The ruler-mode.el library provides a minor mode for displaying an
-"active" ruler in the header line.  You can use the mouse to visually
-change the `fill-column', `window-margins' and `tab-stop-list'
-settings.
+** FFAP
+
++++
+*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
+C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
+C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
+C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
 
 ---
-** The minor mode Reveal mode makes text visible on the fly as you
-move your cursor into hidden regions of the buffer.
-It should work with any package that uses overlays to hide parts
-of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
+*** FFAP accepts wildcards in a file name by default.  C-x C-f passes
+it to `find-file' with non-nil WILDCARDS argument, which visits
+multiple files, and C-x d passes it to `dired'.
 
-There is also Global Reveal mode which affects all buffers.
+---
+** skeleton.el now supports using - to mark the skeleton-point without
+   interregion interaction.  @ has reverted to only setting
+   skeleton-positions and no longer sets skeleton-point.  Skeletons
+   which used @ to mark skeleton-point independent of _ should now use -
+   instead.  The updated skeleton-insert docstring explains these new
+   features along with other details of skeleton construction.
 
 ---
-** The new package ibuffer provides a powerful, completely
-customizable replacement for buff-menu.el.
+** New variable `hs-set-up-overlay' allows customization of the overlay
+used to effect hiding for hideshow minor mode.  Integration with isearch
+handles the overlay property `display' specially, preserving it during
+temporary overlay showing in the course of an isearch operation.
 
 +++
-** The new package table.el implements editable, WYSIWYG, embedded
-`text tables' in Emacs buffers.  It simulates the effect of putting
-these tables in a special major mode.  The package emulates WYSIWYG
-table editing available in modern word processors.  The package also
-can generate a table source in typesetting and markup languages such
-as latex and html from the visually laid out text table.
+** hide-ifdef-mode now uses overlays rather than selective-display
+to hide its text.  This should be mostly transparent but slightly
+changes the behavior of motion commands like C-e and C-p.
 
-+++
-** SES mode (ses-mode) is a new major mode for creating and editing
-spreadsheet files.  Besides the usual Emacs features (intuitive command
-letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
-viral immunity and import/export of tab-separated values.
+---
+** partial-completion-mode now does partial completion on directory names.
 
 ---
-** Support for `magic cookie' standout modes has been removed.
-Emacs will still work on terminals that require magic cookies in order
-to use standout mode, however they will not be able to display
-mode-lines in inverse-video.
+** The type-break package now allows `type-break-file-name' to be nil
+and if so, doesn't store any data across sessions.  This is handy if
+you don't want the .type-break file in your home directory or are
+annoyed by the need for interaction when you kill Emacs.
 
 ---
-** cplus-md.el has been removed to avoid problems with Custom.
+** `ps-print' can now print characters from the mule-unicode charsets.
 
-+++
-** New package benchmark.el contains simple support for convenient
-timing measurements of code (including the garbage collection component).
+Printing text with characters from the mule-unicode-* sets works with
+ps-print, provided that you have installed the appropriate BDF fonts.
+See the file INSTALL for URLs where you can find these fonts.
 
 ---
-** The new Lisp library fringe.el controls the appearance of fringes.
+** New command `strokes-global-set-stroke-string'.
+This is like `strokes-global-set-stroke', but it allows you to bind
+the stroke directly to a string to insert.  This is convenient for
+using strokes as an input method.
 
 ---
-** `cfengine-mode' is a major mode for editing GNU Cfengine
-configuration files.
-\f
-* Incompatible Lisp Changes in Emacs 22.1
+** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
 
 +++
-** The new interactive-specification `G' reads a file name
-much like `F', but if the input is a directory name (even defaulted),
-it returns just the directory name.
+** You can now disable pc-selection-mode after enabling it.
+M-x pc-selection-mode behaves like a proper minor mode, and with no
+argument it toggles the mode.
 
-+++
-** `suppress-keymap' now works by remapping `self-insert-command' to
-the command `undefined'.  (In earlier Emacs versions, it used
-`substitute-key-definition' to rebind self inserting characters to
-`undefined'.)
+Turning off PC-Selection mode restores the global key bindings
+that were replaced by turning on the mode.
 
-+++
-** Mode line display ignores text properties as well as the
-:propertize and :eval forms in the value of a variable whose
-`risky-local-variable' property is nil.
-\f
-* Lisp Changes in Emacs 22.1
+---
+** `uniquify-strip-common-suffix' tells uniquify to prefer
+`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+
+---
+** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
 
-** New functions, macros, and commands
+---
+** Support for `magic cookie' standout modes has been removed.
+Emacs will still work on terminals that require magic cookies in order
+to use standout mode, however they will not be able to display
+mode-lines in inverse-video.
 
-+++
-*** The new function `filter-buffer-substring' extracts a buffer
-substring, passes it through a set of filter functions, and returns
-the filtered substring.  It is used instead of `buffer-substring' or
-`delete-and-extract-region' when copying text into a user-accessible
-data structure, like the kill-ring, X clipboard, or a register.  The
-list of filter function is specified by the new variable
-`buffer-substring-filters'.  For example, Longlines mode uses
-`buffer-substring-filters' to remove soft newlines from the copied
-text.
+---
+** The game `mpuz' is enhanced.
 
-+++
-*** (while-no-input BODY...) runs BODY, but only so long as no input
-arrives.  If the user types or clicks anything, BODY stops as if a
-quit had occurred.  while-no-input returns the value of BODY, if BODY
-finishes.  It returns nil if BODY was aborted.
+`mpuz' now allows the 2nd factor not to have two identical digits.  By
+default, all trivial operations involving whole lines are performed
+automatically.  The game uses faces for better visual feedback.
 
-+++
-*** New function `looking-back' checks whether a regular expression matches
-the text before point.  Specifying the LIMIT argument bounds how far
-back the match can start; this is a way to keep it from taking too long.
+---
+** display-battery has been replaced by display-battery-mode.
 
-+++
-*** New functions `make-progress-reporter', `progress-reporter-update',
-`progress-reporter-force-update', `progress-reporter-done', and
-`dotimes-with-progress-reporter' provide a simple and efficient way for
-a command to present progress messages for the user.
+---
+** calculator.el now has radix grouping mode, which is available when
+`calculator-output-radix' is non-nil.  In this mode a separator
+character is used every few digits, making it easier to see byte
+boundries etc.  For more info, see the documentation of the variable
+`calculator-radix-grouping-mode'.
 
-+++
-*** The new primitive `get-internal-run-time' returns the processor
-run time used by Emacs since start-up.
+---
+** global-whitespace-mode is a new alias for whitespace-global-mode.
 
 +++
-*** The new function `called-interactively-p' does what many people
-have mistakenly believed `interactive-p' did: it returns t if the
-calling function was called through `call-interactively'.  This should
-only be used when you cannot add a new "interactive" argument to the
-command.
+** The command `list-text-properties-at' has been deleted because
+C-u C-x = gives the same information and more.
 
-+++
-*** The new function `assoc-string' replaces `assoc-ignore-case' and
-`assoc-ignore-representation', which are still available, but have
-been declared obsolete.
+---
+** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
 
 ---
-*** New function quail-find-key returns a list of keys to type in the
-current input method to input a character.
+** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
 
-+++
-*** New functions posn-at-point and posn-at-x-y return
-click-event-style position information for a given visible buffer
-position or for a given window pixel coordinate.
+---
+** cplus-md.el has been removed to avoid problems with Custom.
 
-+++
-*** The new primitive `set-file-times' sets a file's access and
-modification times.  Magic file name handlers can handle this
-operation.
+\f
+* New modes and packages in Emacs 22.1
 
 +++
-*** The new function syntax-after returns the syntax code
-of the character after a specified buffer position, taking account
-of text properties as well as the character code.
+** New package benchmark.el contains simple support for convenient
+timing measurements of code (including the garbage collection component).
 
 +++
-*** `syntax-class' extracts the class of a syntax code (as returned
-by syntax-after).
+** Calc is now part of the Emacs distribution.
 
-+++
-*** New function `line-number-at-pos' returns line number of current
-line in current buffer, or if optional buffer position is given, line
-number of corresponding line in current buffer.
+Calc is an advanced desk calculator and mathematical tool written in
+Emacs Lisp.  Its documentation is in a separate manual; within Emacs,
+type "C-h i m calc RET" to read that manual.  A reference card is
+available in `etc/calccard.tex' and `etc/calccard.ps'.
 
-+++
-*** New function `macroexpand-all' expands all macros in a form.
-It is similar to the Common-Lisp function of the same name.
-One difference is that it guarantees to return the original argument
-if no expansion is done, which may be tested using `eq'.
+---
+** `cfengine-mode' is a major mode for editing GNU Cfengine
+configuration files.
 
 +++
-*** New macro with-local-quit temporarily sets inhibit-quit to nil for use
-around potentially blocking or long-running code in timers
-and post-command-hooks.
+** The new package conf-mode.el handles thousands of configuration files, with
+varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
+var : value, var value or keyword var value) and sections ([section] or
+section { }).  Many files under /etc/, or with suffixes like .cf through
+.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
+recognized.
 
-+++
-*** The new function `rassq-delete-all' deletes all elements from an
-alist whose cdr is `eq' to a specified value.
+---
+** CUA mode is now part of the Emacs distribution.
 
-+++
-*** New macros define-obsolete-variable-alias to combine defvaralias and
-make-obsolete-variable and define-obsolete-function-alias to combine defalias
-and make-obsolete.
+The new cua package provides CUA-like keybindings using C-x for
+cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
+With cua, the region can be set and extended using shifted movement
+keys (like pc-selection-mode) and typed text replaces the active
+region (like delete-selection-mode).  Do not enable these modes with
+cua-mode.  Customize the variable `cua-mode' to enable cua.
 
-+++
-** copy-file now takes an additional option arg MUSTBENEW.
+In addition, cua provides unified rectangle support with visible
+rectangle highlighting: Use S-return to start a rectangle, extend it
+using the movement commands (or mouse-3), and cut or copy it using C-x
+or C-c (using C-w and M-w also works).
 
-This argument works like the MUSTBENEW argument of write-file.
+Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
+fill it with blanks or another character, use M-u or M-l to upcase or
+downcase the rectangle, use M-i to increment the numbers in the
+rectangle, use M-n to fill the rectangle with a numeric sequence (such
+as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
+M-' or M-/ to restrict command on the rectangle to a subset of the
+rows.  See the commentary in cua-base.el for more rectangle commands.
 
----
-** easy-mmode-define-global-mode has been renamed to
-define-global-minor-mode.  The old name remains as an alias.
+Cua also provides unified support for registers:  Use a numeric
+prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
+C-v to cut or copy into register 0-9, or paste from register 0-9.
 
-+++
-** An element of buffer-undo-list can now have the form (apply FUNNAME
-. ARGS), where FUNNAME is a symbol other than t or nil.  That stands
-for a high-level change that should be undone by evaluating (apply
-FUNNAME ARGS).
+The last text deleted (not killed) is automatically stored in
+register 0.  This includes text deleted by typing text.
 
-These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
-which indicates that the change which took place was limited to the
-range BEG...END and increased the buffer size by DELTA.
+Finally, cua provides a global mark which is set using S-C-space.
+When the global mark is active, any text which is cut or copied is
+automatically inserted at the global mark position.  See the
+commentary in cua-base.el for more global mark related commands.
 
-+++
-** The line-move, scroll-up, and scroll-down functions will now
-modify the window vscroll to scroll through display rows that are
-taller that the height of the window, for example in the presense of
-large images.  To disable this feature, Lisp code may bind the new
-variable `auto-window-vscroll' to nil.
+The features of cua also works with the standard emacs bindings for
+kill, copy, yank, and undo.  If you want to use cua mode, but don't
+want the C-x, C-c, C-v, and C-z bindings, you may customize the
+`cua-enable-cua-keys' variable.
 
-+++
-** If a buffer sets buffer-save-without-query to non-nil,
-save-some-buffers will always save that buffer without asking
-(if it's modified).
+Note: This version of cua mode is not backwards compatible with older
+versions of cua.el and cua-mode.el.  To ensure proper operation, you
+must remove older versions of cua.el or cua-mode.el as well as the
+loading and customization of those packages from the .emacs file.
 
 +++
-** The function symbol-file tells you which file defined
-a certain function or variable.
+** The new package dns-mode.el add syntax highlight of DNS master files.
+The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
+to increment the SOA serial.
 
-+++
-** Lisp code can now test if a given buffer position is inside a
-clickable link with the new function `mouse-on-link-p'.  This is the
-function used by the new `mouse-1-click-follows-link' functionality.
+---
+** The new global minor mode `file-name-shadow-mode' modifies the way
+filenames being entered by the user in the minibuffer are displayed, so
+that it's clear when part of the entered filename will be ignored due to
+emacs' filename parsing rules.  The ignored portion can be made dim,
+invisible, or otherwise less visually noticable.  The display method may
+be displayed by customizing the variable `file-name-shadow-properties'.
 
 +++
-** `set-auto-mode' now gives the interpreter magic line (if present)
-precedence over the file name.  Likewise an <?xml or <!DOCTYPE declaration
-will give the buffer XML or SGML mode, based on the new var
-`magic-mode-alist'.
+** The new package flymake.el does on-the-fly syntax checking of program
+source files.  See the Flymake's Info manual for more details.
 
 ---
-** To manipulate the File menu using easy-menu, you must specify the
-proper name "file".  In previous Emacs versions, you had to specify
-"files", even though the menu item itself was changed to say "File"
-several versions ago.
+** The new Lisp library fringe.el controls the appearance of fringes.
 
-+++
-** read-from-minibuffer now accepts an additional argument KEEP-ALL
-saying to put all inputs in the history list, even empty ones.
+---
+** GDB-Script-mode is used for files like .gdbinit.
 
 +++
-** The new variable search-spaces-regexp controls how to search
-for spaces in a regular expression.  If it is non-nil, it should be a
-regular expression, and any series of spaces stands for that regular
-expression.  If it is nil, spaces stand for themselves.
+** The new package gdb-ui.el provides an enhanced graphical interface to
+GDB. You can interact with GDB through the GUD buffer in the usual way, but
+there are also further buffers which control the execution and describe the
+state of your program.  It separates the input/output of your program from
+that of GDB and watches expressions in the speedbar.  It also uses features of
+Emacs 21 such as the display margin for breakpoints, and the toolbar.
 
-Spaces inside of constructs such as [..] and *, +, ? are never
-replaced with search-spaces-regexp.
+Use M-x gdba to start GDB-UI.
 
 ---
-** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
-If it is non-nil, it specifies which buffers to list.
+** The new package ibuffer provides a powerful, completely
+customizable replacement for buff-menu.el.
 
 ---
-** set-buffer-file-coding-system now takes an additional argument,
-NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
+** Ido mode is now part of the Emacs distribution.
+
+The ido (interactively do) package is an extension of the iswitchb
+package to do interactive opening of files and directories in addition
+to interactive buffer switching.  Ido is a superset of iswitchb (with
+a few exceptions), so don't enable both packages.
 
 +++
-** An interactive specification may now use the code letter 'U' to get
-the up-event that was discarded in case the last key sequence read for a
-previous 'k' or 'K' argument was a down-event; otherwise nil is used.
+** Image files are normally visited in Image mode, which lets you toggle
+between viewing the image and viewing the text using C-c C-c.
 
 +++
-** Function `translate-region' accepts also a char-table as TABLE
-argument.
+** The new keypad setup package provides several common bindings for
+the numeric keypad which is available on most keyboards.  The numeric
+keypad typically has the digits 0 to 9, a decimal point, keys marked
++, -, /, and *, an Enter key, and a NumLock toggle key.  The keypad
+package only controls the use of the digit and decimal keys.
+
+By customizing the variables `keypad-setup', `keypad-shifted-setup',
+`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
+using the function `keypad-setup', you can rebind all digit keys and
+the decimal key of the keypad in one step for each of the four
+possible combinations of the Shift key state (not pressed/pressed) and
+the NumLock toggle state (off/on).
+
+The choices for the keypad keys in each of the above states are:
+`Plain numeric keypad' where the keys generates plain digits,
+`Numeric keypad with decimal key' where the character produced by the
+decimal key can be customized individually (for internationalization),
+`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
+for emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
+where the keys work like (shifted) arrow keys, home/end, etc., and
+`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
+are left unspecified and can be bound individually through the global
+or local keymaps.
+
++++
+** The new kmacro package provides a simpler user interface to
+emacs' keyboard macro facilities.
+
+Basically, it uses two function keys (default F3 and F4) like this:
+F3 starts a macro, F4 ends the macro, and pressing F4 again executes
+the last macro.  While defining the macro, F3 inserts a counter value
+which automatically increments every time the macro is executed.
 
-+++
-** Major mode functions now run the new normal hook
-`after-change-major-mode-hook', at their very end, after the mode hooks.
+There is now a keyboard macro ring which stores the most recently
+defined macros.
 
-+++
-** `auto-save-file-format' has been renamed to
-`buffer-auto-save-file-format' and made into a permanent local.
+The C-x C-k sequence is now a prefix for the kmacro keymap which
+defines bindings for moving through the keyboard macro ring,
+C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
+manipulating the macro counter and format via C-x C-k C-c,
+C-x C-k C-a, and C-x C-k C-f.  See the commentary in kmacro.el
+for more commands.
 
-+++
-** Both the variable and the function `disabled-command-hook' have
-been renamed to `disabled-command-function'.  The variable
-`disabled-command-hook' has been kept as an obsolete alias.
+The normal macro bindings C-x (, C-x ), and C-x e now interfaces to
+the keyboard macro ring.
 
-+++
-** Function `compute-motion' now calculates the usable window
-width if the WIDTH argument is nil.  If the TOPOS argument is nil,
-the usable window height and width is used.
+The C-x e command now automatically terminates the current macro
+before calling it, if used while defining a macro.
 
-+++
-** `visited-file-modtime' and `calendar-time-from-absolute' now return
-a list of two integers, instead of a cons.
+In addition, when ending or calling a macro with C-x e, the macro can
+be repeated immediately by typing just the `e'.  You can customize
+this behavior via the variable kmacro-call-repeat-key and
+kmacro-call-repeat-with-arg.
 
-+++
-** If a command sets transient-mark-mode to `only', that
-enables Transient Mark mode for the following command only.
-During that following command, the value of transient-mark-mode
-is `identity'.  If it is still `identity' at the end of the command,
-it changes to nil.
+Keyboard macros can now be debugged and edited interactively.
+C-x C-k SPC steps through the last keyboard macro one key sequence
+at a time, prompting for the actions to take.
 
 +++
-** Cleaner way to enter key sequences.
+** The new package longlines.el provides a minor mode for editing text
+files composed of long lines, based on the `use-hard-newlines'
+mechanism.  The long lines are broken up by inserting soft newlines,
+which are automatically removed when saving the file to disk or
+copying into the kill ring, clipboard, etc.  By default, Longlines
+mode inserts soft newlines automatically during editing, a behavior
+referred to as "soft word wrap" in other text editors.  This is
+similar to Refill mode, but more reliable.  To turn the word wrap
+feature off, set `longlines-auto-wrap' to nil.
 
-You can enter a constant key sequence in a more natural format, the
-same one used for saving keyboard macros, using the macro `kbd'.  For
-example,
+---
+** The old Octave mode bindings C-c f and C-c i have been changed
+to C-c C-f and C-c C-i.  The C-c C-i subcommands now have duplicate
+bindings on control characters--thus, C-c C-i C-b is the same as
+C-c C-i b, and so on.
 
-(kbd "C-x C-f") => "\^x\^f"
+** The printing package is now part of the Emacs distribution.
 
-+++
-** The sentinel is now called when a network process is deleted with
-delete-process.  The status message passed to the sentinel for a
-deleted network process is "deleted".  The message passed to the
-sentinel when the connection is closed by the remote peer has been
-changed to "connection broken by remote peer".
+If you enable the printing package by including (require 'printing) in
+the .emacs file, the normal Print item on the File menu is replaced
+with a Print sub-menu which allows you to preview output through
+ghostview, use ghostscript to print (if you don't have a PostScript
+printer) or send directly to printer a PostScript code generated by
+`ps-print' package.  Use M-x pr-help for more information.
 
 +++
-** If the buffer's undo list for the current command gets longer than
-undo-outer-limit, garbage collection empties it.  This is to prevent
-it from using up the available memory and choking Emacs.
+** The new python.el package is used to edit Python and Jython programs.
 
-+++
-** skip-chars-forward and skip-chars-backward now handle
-character classes such as [:alpha:], along with individual characters
-and ranges.
+---
+** The minor mode Reveal mode makes text visible on the fly as you
+move your cursor into hidden regions of the buffer.
+It should work with any package that uses overlays to hide parts
+of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
 
-+++
-** Function pos-visible-in-window-p now returns the pixel coordinates
-and partial visiblity state of the corresponding row, if the PARTIALLY
-arg is non-nil.
+There is also Global Reveal mode which affects all buffers.
 
-+++
-** The function `eql' is now available without requiring the CL package.
+---
+** The ruler-mode.el library provides a minor mode for displaying an
+"active" ruler in the header line.  You can use the mouse to visually
+change the `fill-column', `window-margins' and `tab-stop-list'
+settings.
 
 +++
-** The display space :width and :align-to text properties are now
-supported on text terminals.
+** SES mode (ses-mode) is a new major mode for creating and editing
+spreadsheet files.  Besides the usual Emacs features (intuitive command
+letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
+viral immunity and import/export of tab-separated values.
 
 +++
-** Support for displaying image slices
-
-*** New display property (slice X Y WIDTH HEIGHT) may be used with
-an image property to display only a specific slice of the image.
+** The new global minor mode `size-indication-mode' (off by default)
+shows the size of accessible part of the buffer on the mode line.
 
-*** Function insert-image has new optional fourth arg to
-specify image slice (X Y WIDTH HEIGHT).
++++
+** The new package table.el implements editable, WYSIWYG, embedded
+`text tables' in Emacs buffers.  It simulates the effect of putting
+these tables in a special major mode.  The package emulates WYSIWYG
+table editing available in modern word processors.  The package also
+can generate a table source in typesetting and markup languages such
+as latex and html from the visually laid out text table.
 
-*** New function insert-sliced-image inserts a given image as a
-specified number of evenly sized slices (rows x columns).
++++
+** The thumbs.el package allows you to preview image files as thumbnails
+and can be invoked from a Dired buffer.
 
 +++
-** New line-height and line-spacing properties for newline characters
+** Tramp is now part of the distribution.
 
-A newline may now have line-height and line-spacing text or overlay
-properties that control the height of the corresponding display row.
+This package is similar to Ange-FTP: it allows you to edit remote
+files.  But whereas Ange-FTP uses FTP to access the remote host,
+Tramp uses a shell connection.  The shell connection is always used
+for filename completion and directory listings and suchlike, but for
+the actual file transfer, you can choose between the so-called
+`inline' methods (which transfer the files through the shell
+connection using base64 or uu encoding) and the `out-of-band' methods
+(which invoke an external copying program such as `rcp' or `scp' or
+`rsync' to do the copying).
 
-If the line-height property value is t, the newline does not
-contribute to the height of the display row; instead the height of the
-newline glyph is reduced.  Also, a line-spacing property on this
-newline is ignored.  This can be used to tile small images or image
-slices without adding blank areas between the images.
+Shell connections can be acquired via `rsh', `ssh', `telnet' and also
+`su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
 
-If the line-height property value is a positive integer, the value
-specifies the minimum line height in pixels.  If necessary, the line
-height it increased by increasing the line's ascent.
+If you want to disable Tramp you should set
 
-If the line-height property value is a float, the minimum line height
-is calculated by multiplying the default frame line height by the
-given value.
+  (setq tramp-default-method "ftp")
 
-If the line-height property value is a cons (FACE . RATIO), the
-minimum line height is calculated as RATIO * height of named FACE.
-RATIO is int or float.  If FACE is t, it specifies the current face.
+---
+** The library tree-widget.el provides a new widget to display a set
+of hierarchical data as an outline.  For example, the tree-widget is
+well suited to display a hierarchy of directories and files.
 
-If the line-height property value is a cons (nil . RATIO), the line
-height is calculated as RATIO * actual height of the line's contents.
+---
+** The URL package (which had been part of W3) is now part of Emacs.
 
-If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies
-the line height as described above, while TOTAL is any of the forms
-described above and specifies the total height of the line, causing a
-varying number of pixels to be inserted after the line to make it line
-exactly that many pixels high.
+---
+** New minor mode, Visible mode, toggles invisibility in the current buffer.
+When enabled, it makes all invisible text visible.  When disabled, it
+restores the previous value of `buffer-invisibility-spec'.
 
-If the line-spacing property value is an positive integer, the value
-is used as additional pixels to insert after the display line; this
-overrides the default frame line-spacing and any buffer local value of
-the line-spacing variable.
++++
+** The wdired.el package allows you to use normal editing commands on Dired
+buffers to change filenames, permissions, etc...
 
-If the line-spacing property may be a float or cons, the line spacing
-is calculated as specified above for the line-height property.
+\f
+* Incompatible Lisp Changes in Emacs 22.1
 
 +++
-** The buffer local line-spacing variable may now have a float value,
-which is used as a height relative to the default frame line height.
+** The new interactive-specification `G' reads a file name
+much like `F', but if the input is a directory name (even defaulted),
+it returns just the directory name.
 
 +++
-** Enhancements to stretch display properties
-
-The display property stretch specification form `(space PROPS)', where
-PROPS is a property list now allows pixel based width and height
-specifications, as well as enhanced horizontal text alignment.
-
-The value of these properties can now be a (primitive) expression
-which is evaluated during redisplay.  The following expressions
-are supported:
+** `suppress-keymap' now works by remapping `self-insert-command' to
+the command `undefined'.  (In earlier Emacs versions, it used
+`substitute-key-definition' to rebind self inserting characters to
+`undefined'.)
 
-EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
-NUM  ::= INTEGER | FLOAT | SYMBOL
-UNIT ::= in | mm | cm | width | height
-ELEM ::= left-fringe | right-fringe | left-margin | right-margin
-      |  scroll-bar | text
-POS  ::= left | center | right
-FORM ::= (NUM . EXPR) | (OP EXPR ...)
-OP   ::= + | -
++++
+** Mode line display ignores text properties as well as the
+:propertize and :eval forms in the value of a variable whose
+`risky-local-variable' property is nil.
+\f
+* Lisp Changes in Emacs 22.1
 
-The form `NUM' specifies a fractional width or height of the default
-frame font size.  The form `(NUM)' specifies an absolute number of
-pixels.  If a symbol is specified, its buffer-local variable binding
-is used.  The `in', `mm', and `cm' units specifies the number of
-pixels per inch, milli-meter, and centi-meter, resp.  The `width' and
-`height' units correspond to the width and height of the current face
-font.  An image specification corresponds to the width or height of
-the image.
++++
+** The option --script FILE runs Emacs in batch mode and loads FILE.
+It is useful for writing Emacs Lisp shell script files, because they
+can start with this line:
 
-The `left-fringe', `right-fringe', `left-margin', `right-margin',
-`scroll-bar', and `text' elements specify to the width of the
-corresponding area of the window.
+   #!/usr/bin/emacs --script
 
-The `left', `center', and `right' positions can be used with :align-to
-to specify a position relative to the left edge, center, or right edge
-of the text area.  One of the above window elements (except `text')
-can also be used with :align-to to specify that the position is
-relative to the left edge of the given area.  Once the base offset for
-a relative position has been set (by the first occurrence of one of
-these symbols), further occurences of these symbols are interpreted as
-the width of the area.
++++
+** The option --directory DIR now modifies `load-path' immediately.
+Directories are added to the front of `load-path' in the order they
+appear on the command line.  For example, with this command line:
 
-For example, to align to the center of the left-margin, use
-    :align-to (+ left-margin (0.5 . left-margin))
+  emacs -batch -L .. -L /tmp --eval "(require 'foo)"
 
-If no specific base offset is set for alignment, it is always relative
-to the left edge of the text area.  For example, :align-to 0 in a
-header-line aligns with the first text column in the text area.
+Emacs looks for library `foo' in the parent directory, then in /tmp, then
+in the other directories in `load-path'.  (-L is short for --directory.)
 
-The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
-the value of the expression EXPR.  For example, (2 . in) specifies a
-width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
-height) of the specified image.
++++
+** The default value of `sentence-end' is now defined using the new
+variable `sentence-end-without-space', which contains such characters
+that end a sentence without following spaces.
 
-The form `(+ EXPR ...)' adds up the value of the expressions.
-The form `(- EXPR ...)' negates or subtracts the value of the expressions.
+The function `sentence-end' should be used to obtain the value of the
+variable `sentence-end'.  If the variable `sentence-end' is nil, then
+this function returns the regexp constructed from the variables
+`sentence-end-without-period', `sentence-end-double-space' and
+`sentence-end-without-space'.
 
 +++
-** Normally, the cursor is displayed at the end of any overlay and
-text property string that may be present at the current window
-position.  The cursor may now be placed on any character of such
-strings by giving that character a non-nil `cursor' text property.
+** The argument to forward-word, backward-word, forward-to-indentation
+and backward-to-indentation is now optional, and defaults to 1.
 
 +++
-** The first face specification element in a defface can specify
-`default' instead of frame classification.  Then its attributes act as
-defaults that apply to all the subsequent cases (and may be overridden
-by them).
+** If a command sets transient-mark-mode to `only', that
+enables Transient Mark mode for the following command only.
+During that following command, the value of transient-mark-mode
+is `identity'.  If it is still `identity' at the end of the command,
+it changes to nil.
 
 +++
-** New face attribute `min-colors' can be used to tailor the face color
-to the number of colors supported by a display, and define the
-foreground and background colors accordingly so that they look best on
-a terminal that supports at least this many colors.  This is now the
-preferred method for defining default faces in a way that makes a good
-use of the capabilities of the display.
+** The new hook `before-save-hook' is invoked by `basic-save-buffer'
+before saving buffers.  This allows packages to perform various final
+tasks, for example; it can be used by the copyright package to make
+sure saved files have the current year in any copyright headers.
 
 +++
-** Customizable fringe bitmaps
+** If a buffer sets buffer-save-without-query to non-nil,
+save-some-buffers will always save that buffer without asking
+(if it's modified).
 
-*** New function 'define-fringe-bitmap' can now be used to create new
-fringe bitmaps, as well as change the built-in fringe bitmaps.
+---
+** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
+If it is non-nil, it specifies which buffers to list.
 
-To change a built-in bitmap, do (require 'fringe) and use the symbol
-identifing the bitmap such as `left-truncation or `continued-line'.
++++
+** The kill-buffer-hook is now permanent-local.
 
-*** New function 'destroy-fringe-bitmap' may be used to destroy a
-previously created bitmap, or restore a built-in bitmap.
++++
+** `auto-save-file-format' has been renamed to
+`buffer-auto-save-file-format' and made into a permanent local.
 
-*** New function 'set-fringe-bitmap-face' can now be used to set a
-specific face to be used for a specific fringe bitmap.  The face is
-automatically merged with the `fringe' face, so normally, the face
-should only specify the foreground color of the bitmap.
++++
+** Functions `file-name-sans-extension' and `file-name-extension' now
+ignore the leading dots in file names, so that file names such as
+`.emacs' are treated as extensionless.
 
-*** There are new display properties, left-fringe and right-fringe,
-that can be used to show a specific bitmap in the left or right fringe
-bitmap of the display line.
++++
+** copy-file now takes an additional option arg MUSTBENEW.
 
-Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
-symbol identifying a fringe bitmap, either built-in or defined with
-`define-fringe-bitmap', and FACE is an optional face name to be used
-for displaying the bitmap instead of the default `fringe' face.
-When specified, FACE is automatically merged with the `fringe' face.
+This argument works like the MUSTBENEW argument of write-file.
 
-*** New function `fringe-bitmaps-at-pos' returns the current fringe
-bitmaps in the display line at a given buffer position.
++++
+** If the second argument to `copy-file' is the name of a directory,
+the file is copied to that directory instead of signaling an error.
 
 +++
-** Multiple overlay arrows can now be defined and managed via the new
-variable `overlay-arrow-variable-list'.  It contains a list of
-varibles which contain overlay arrow position markers, including
-the original `overlay-arrow-position' variable.
+** `visited-file-modtime' and `calendar-time-from-absolute' now return
+a list of two integers, instead of a cons.
 
-Each variable on this list may have individual `overlay-arrow-string'
-and `overlay-arrow-bitmap' properties that specify an overlay arrow
-string (for non-window terminals) or fringe bitmap (for window
-systems) to display at the corresponding overlay arrow position.
-If either property is not set, the default `overlay-arrow-string' or
-'overlay-arrow-fringe-bitmap' will be used.
++++
+** `file-chase-links' now takes an optional second argument LIMIT which
+specifies the maximum number of links to chase through.  If after that
+many iterations the file name obtained is still a symbolic link,
+`file-chase-links' returns it anyway.
 
 +++
-** The default value of `sentence-end' is now defined using the new
-variable `sentence-end-without-space' which contains such characters
-that end a sentence without following spaces.
+** The function `commandp' takes an additional optional
+argument.  If it is non-nil, then `commandp' checks
+for a function that could be called with `call-interactively',
+and does not return t for keyboard macros.
 
 +++
-** The function `sentence-end' should be used to obtain the value of
-the variable `sentence-end'.  If the variable `sentence-end' is nil,
-then this function returns the regexp constructed from the variables
-`sentence-end-without-period', `sentence-end-double-space' and
-`sentence-end-without-space'.
+** An interactive specification may now use the code letter 'U' to get
+the up-event that was discarded in case the last key sequence read for a
+previous 'k' or 'K' argument was a down-event; otherwise nil is used.
+
+---
+** Functions y-or-n-p, read-char, read-key-sequence and the like, that
+display a prompt but don't use the minibuffer, now display the prompt
+using the text properties (esp. the face) of the prompt string.
 
 +++
-** The flags, width, and precision options for %-specifications in function
-`format' are now documented.  Some flags that were accepted but not
-implemented (such as "*") are no longer accepted.
+** read-from-minibuffer now accepts an additional argument KEEP-ALL
+saying to put all inputs in the history list, even empty ones.
 
 +++
-** New function `delete-dups' destructively removes `equal' duplicates
-from a list.  Of several `equal' occurrences of an element in the list,
-the first one is kept.
+** The `read-file-name' function now takes an additional argument which
+specifies a predicate which the file name read must satify.  The
+new variable `read-file-name-predicate' contains the predicate argument
+while reading the file name from the minibuffer; the predicate in this
+variable is used by read-file-name-internal to filter the completion list.
+
+---
+** The new variable `read-file-name-function' can be used by lisp code
+to override the internal read-file-name function.
 
 +++
-** `declare' is now a macro.  This change was made mostly for
-documentation purposes and should have no real effect on Lisp code.
+** The new variable `read-file-name-completion-ignore-case' specifies
+whether completion ignores case when reading a file name with the
+`read-file-name' function.
 
 +++
-** A file name handler can declare which operations it handles.
+** The new function `read-directory-name' can be used instead of
+`read-file-name' to read a directory name; when used, completion
+will only show directories.
 
-You do this by putting an `operation' property on the handler name
-symbol.  The property value should be a list of the operations that
-the handler really handles.  It won't be called for any other
-operations.
++++
+** The new variable search-spaces-regexp controls how to search
+for spaces in a regular expression.  If it is non-nil, it should be a
+regular expression, and any series of spaces stands for that regular
+expression.  If it is nil, spaces stand for themselves.
 
-This is useful for autoloaded handlers, to prevent them from being
-autoloaded when not really necessary.
+Spaces inside of constructs such as [..] and *, +, ? are never
+replaced with search-spaces-regexp.
 
 +++
-** The new hook `before-save-hook' is invoked by `basic-save-buffer'
-before saving buffers.  This allows packages to perform various final
-tasks, for example; it can be used by the copyright package to make
-sure saved files have the current year in any copyright headers.
+** There are now two new regular expression operators, \_< and \_>,
+for matching the beginning and end of a symbol.  A symbol is a
+non-empty sequence of either word or symbol constituent characters, as
+specified by the syntax table.
 
 +++
-** The function `insert-for-yank' now supports strings where the
-`yank-handler' property does not span the first character of the
-string.  The old behavior is available if you call
-`insert-for-yank-1' instead.
+** skip-chars-forward and skip-chars-backward now handle
+character classes such as [:alpha:], along with individual characters
+and ranges.
 
-+++
-** New function `get-char-property-and-overlay' accepts the same
-arguments as `get-char-property' and returns a cons whose car is the
-return value of `get-char-property' called with those arguments and
-whose cdr is the overlay in which the property was found, or nil if
-it was found as a text property or not found at all.
+---
+** In `replace-match', the replacement text no longer inherits
+properties from surrounding text.
 
-+++ (lispref)
-??? (man)
-** The mouse pointer shape in void text areas (i.e. after the end of a
-line or below the last line in the buffer) of the text window is now
-controlled by the new variable `void-text-area-pointer'.  The default
-is to use the `arrow' (non-text) pointer.  Other choices are `text'
-(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
++++
+** The list returned by `(match-data t)' now has the buffer as a final
+element, if the last match was on a buffer.  `set-match-data'
+accepts such a list for restoring the match state.
 
 +++
-** The mouse pointer shape over an image can now be controlled by the
-:pointer image property.
+** Variable aliases have been implemented:
+
+*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
+
+This function defines the symbol ALIAS-VAR as a variable alias for
+symbol BASE-VAR.  This means that retrieving the value of ALIAS-VAR
+returns the value of BASE-VAR, and changing the value of ALIAS-VAR
+changes the value of BASE-VAR.
+
+DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
+the same documentation as BASE-VAR.
+
+*** indirect-variable VARIABLE
+
+This function returns the variable at the end of the chain of aliases
+of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
+defined as an alias, the function returns VARIABLE.
+
+It might be noteworthy that variables aliases work for all kinds of
+variables, including buffer-local and frame-local variables.
 
 +++
-** The mouse pointer shape over ordinary text or images may now be
-controlled/overriden via the `pointer' text property.
+*** The macro define-obsolete-variable-alias combines defvaralias and
+make-obsolete-variable.  The macro define-obsolete-function-alias
+combines defalias and make-obsolete.
 
 +++
-** Images may now have an associated image map via the :map property.
+** Enhancements to keymaps.
 
-An image map is an alist where each element has the format (AREA ID PLIST).
-An AREA is specified as either a rectangle, a circle, or a polygon:
-A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the
-pixel coordinates of the upper left and bottom right corners.
-A circle is a cons (circle . ((x0 . y0) . r)) specifying the center
-and the radius of the circle; r may be a float or integer.
-A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the
-vector describes one corner in the polygon.
+*** Cleaner way to enter key sequences.
 
-When the mouse pointer is above a hot-spot area of an image, the
-PLIST of that hot-spot is consulted; if it contains a `help-echo'
-property it defines a tool-tip for the hot-spot, and if it contains
-a `pointer' property, it defines the shape of the mouse cursor when
-it is over the hot-spot.  See the variable 'void-area-text-pointer'
-for possible pointer shapes.
+You can enter a constant key sequence in a more natural format, the
+same one used for saving keyboard macros, using the macro `kbd'.  For
+example,
+
+(kbd "C-x C-f") => "\^x\^f"
+
+*** Interactive commands can be remapped through keymaps.
+
+This is an alternative to using defadvice or substitute-key-definition
+to modify the behavior of a key binding using the normal keymap
+binding and lookup functionality.
+
+When a key sequence is bound to a command, and that command is
+remapped to another command, that command is run instead of the
+original command.
+
+Example:
+Suppose that minor mode my-mode has defined the commands
+my-kill-line and my-kill-word, and it wants C-k (and any other key
+bound to kill-line) to run the command my-kill-line instead of
+kill-line, and likewise it wants to run my-kill-word instead of
+kill-word.
+
+Instead of rebinding C-k and the other keys in the minor mode map,
+command remapping allows you to directly map kill-line into
+my-kill-line and kill-word into my-kill-word through the minor mode
+map using define-key:
+
+   (define-key my-mode-map [remap kill-line] 'my-kill-line)
+   (define-key my-mode-map [remap kill-word] 'my-kill-word)
+
+Now, when my-mode is enabled, and the user enters C-k or M-d,
+the commands my-kill-line and my-kill-word are run.
+
+Notice that only one level of remapping is supported.  In the above
+example, this means that if my-kill-line is remapped to other-kill,
+then C-k still runs my-kill-line.
+
+The following changes have been made to provide command remapping:
+
+- Command remappings are defined using `define-key' with a prefix-key
+  `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
+  to definition DEF in keymap MAP.  The definition is not limited to
+  another command; it can be anything accepted for a normal binding.
 
-When you click the mouse when the mouse pointer is over a hot-spot,
-an event is composed by combining the ID of the hot-spot with the
-mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
+- The new function `command-remapping' returns the binding for a
+  remapped command in the current keymaps, or nil if not remapped.
 
-** Mouse event enhancements:
+- key-binding now remaps interactive commands unless the optional
+  third argument NO-REMAP is non-nil.
 
-+++
-*** Mouse clicks on fringes now generates left-fringe or right-fringes
-events, rather than a text area click event.
+- where-is-internal now returns nil for a remapped command (e.g.
+  kill-line if my-mode is enabled), and the actual key binding for
+  the command it is remapped to (e.g. C-k for my-kill-line).
+  It also has a new optional fifth argument, NO-REMAP, which inhibits
+  remapping if non-nil (e.g. it returns C-k for kill-line and
+  <kill-line> for my-kill-line).
 
-+++
-*** Mouse clicks in the left and right marginal areas now includes a
-sensible buffer position corresponding to the first character in the
-corresponding text row.
+- The new variable `this-original-command' contains the original
+  command before remapping.  It is equal to `this-command' when the
+  command was not remapped.
 
-+++
-*** Function `mouse-set-point' now works for events outside text area.
+*** If text has a `keymap' property, that keymap takes precedence
+over minor mode keymaps.
 
-+++
-*** Mouse events now includes buffer position for all event types.
+*** The `keymap' property now also works at the ends of overlays and
+text-properties, according to their stickiness.  This also means that it
+works with empty overlays.  The same hold for the `local-map' property.
 
-+++
-*** `posn-point' now returns buffer position for non-text area events.
+*** Dense keymaps now handle inheritance correctly.
+Previously a dense keymap would hide all of the simple-char key
+bindings of the parent keymap.
 
-+++
-*** New function `posn-area' returns window area clicked on (nil means
-text area).
+*** `define-key-after' now accepts keys longer than 1.
 
-+++
-*** Mouse events include actual glyph column and row for all event types.
+*** New function `current-active-maps' returns a list of currently
+active keymaps.
 
-+++
-*** New function `posn-actual-col-row' returns actual glyph coordinates.
+*** New function `describe-buffer-bindings' inserts the list of all
+defined keys and their definitions.
 
-+++
-*** Mouse events may now include image object in addition to string object.
+*** New function `keymap-prompt' returns the prompt-string of a keymap
 
-+++
-*** Mouse events include relative x and y pixel coordinates relative to
-the top left corner of the object (image or character) clicked on.
+*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
+in the keymap.
 
-+++
-*** Mouse events include the pixel width and height of the object
-(image or character) clicked on.
+*** New variable emulation-mode-map-alists.
 
-+++
-*** New functions 'posn-object', 'posn-object-x-y', and
-'posn-object-width-height' return the image or string object of a mouse
-click, the x and y pixel coordinates relative to the top left corner
-of that object, and the total width and height of that object.
+Lisp packages using many minor mode keymaps can now maintain their own
+keymap alist separate from minor-mode-map-alist by adding their keymap
+alist to this list.
 
 +++
-** New function `force-window-update' can initiate a full redisplay of
-one or all windows.  Normally, this is not needed as changes in window
-contents are detected automatically.  However, certain implicit
-changes to mode lines, header lines, or display properties may require
-forcing an explicit window update.
+** Atomic change groups.
 
----
-** New function `redirect-debugging-output' can be used to redirect
-debugging output on the stderr file handle to a file.
+To perform some changes in the current buffer "atomically" so that
+they either all succeed or are all undone, use `atomic-change-group'
+around the code that makes changes.  For instance:
 
-+++
-** `split-string' now includes null substrings in the returned list if
-the optional argument SEPARATORS is non-nil and there are matches for
-SEPARATORS at the beginning or end of the string.  If SEPARATORS is
-nil, or if the new optional third argument OMIT-NULLS is non-nil, all
-empty matches are omitted from the returned list.
+  (atomic-change-group
+    (insert foo)
+    (delete-region x y))
 
-+++
-** `makehash' is now obsolete.  Use `make-hash-table' instead.
+If an error (or other nonlocal exit) occurs inside the body of
+`atomic-change-group', it unmakes all the changes in that buffer that
+were during the execution of the body.  The change group has no effect
+on any other buffers--any such changes remain.
 
-+++
-** If optional third argument APPEND to `add-to-list' is non-nil, a
-new element gets added at the end of the list instead of at the
-beginning.  This change actually occurred in Emacs-21.1, but was not
-documented.
+If you need something more sophisticated, you can directly call the
+lower-level functions that `atomic-change-group' uses.  Here is how.
 
-+++
-** Major modes can define `eldoc-documentation-function'
-locally to provide Eldoc functionality by some method appropriate to
-the language.
+To set up a change group for one buffer, call `prepare-change-group'.
+Specify the buffer as argument; it defaults to the current buffer.
+This function returns a "handle" for the change group.  You must save
+the handle to activate the change group and then finish it.
 
----
-** New coding system property `mime-text-unsuitable' indicates that
-the coding system's `mime-charset' is not suitable for MIME text
-parts, e.g. utf-16.
+Before you change the buffer again, you must activate the change
+group.  Pass the handle to `activate-change-group' afterward to
+do this.
 
-+++
-** The argument to forward-word, backward-word, forward-to-indentation
-and backward-to-indentation is now optional, and defaults to 1.
+After you make the changes, you must finish the change group.  You can
+either accept the changes or cancel them all.  Call
+`accept-change-group' to accept the changes in the group as final;
+call `cancel-change-group' to undo them all.
 
-+++
-** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
-to display CHAR.  More precisely, if the selected frame's fontset has
-a font to display the character set that CHAR belongs to.
+You should use `unwind-protect' to make sure the group is always
+finished.  The call to `activate-change-group' should be inside the
+`unwind-protect', in case the user types C-g just after it runs.
+(This is one reason why `prepare-change-group' and
+`activate-change-group' are separate functions.)  Once you finish the
+group, don't use the handle again--don't try to finish the same group
+twice.
 
-Fontsets can specify a font on a per-character basis; when the fontset
-does that, this value may not be accurate.
+To make a multibuffer change group, call `prepare-change-group' once
+for each buffer you want to cover, then use `nconc' to combine the
+returned values, like this:
 
-+++
-** The new function `window-inside-edges' returns the edges of the
-actual text portion of the window, not including the scroll bar or
-divider line, the fringes, the display margins, the header line and
-the mode line.
+  (nconc (prepare-change-group buffer-1)
+         (prepare-change-group buffer-2))
 
-+++
-** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
-return window edges in units of pixels, rather than columns and lines.
+You can then activate the multibuffer change group with a single call
+to `activate-change-group', and finish it with a single call to
+`accept-change-group' or `cancel-change-group'.
 
-+++
-** The kill-buffer-hook is now permanent-local.
+Nested use of several change groups for the same buffer works as you
+would expect.  Non-nested use of change groups for the same buffer
+will lead to undesirable results, so don't let it happen; the first
+change group you start for any given buffer should be the last one
+finished.
 
 +++
-** `select-window' takes an optional second argument `norecord', like
-`switch-to-buffer'.
+** Progress reporters.
+The new functions `make-progress-reporter', `progress-reporter-update',
+`progress-reporter-force-update', `progress-reporter-done', and
+`dotimes-with-progress-reporter' provide a simple and efficient way for
+a command to present progress messages for the user.
 
 +++
-** The new macro `with-selected-window' temporarily switches the
-selected window without impacting the order of buffer-list.
+** New `yank-handler' text property may be used to control how
+previously killed text on the kill-ring is reinserted.
 
-+++
-** The `keymap' property now also works at the ends of overlays and
-text-properties, according to their stickiness.  This also means that it
-works with empty overlays.  The same hold for the `local-map' property.
+The value of the yank-handler property must be a list with one to four
+elements with the following format:
+  (FUNCTION PARAM NOEXCLUDE UNDO).
 
-+++
-** (map-keymap FUNCTION KEYMAP) applies the function to each binding
-in the keymap.
+The `insert-for-yank' function looks for a yank-handler property on
+the first character on its string argument (typically the first
+element on the kill-ring).  If a yank-handler property is found,
+the normal behavior of `insert-for-yank' is modified in various ways:
 
----
-** VC changes for backends:
-*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
-*** The new `find-version' backend function replaces the `destfile'
-parameter of the `checkout' backend function.
-Old code still works thanks to a default `find-version' behavior that
-uses the old `destfile' parameter.
+  When FUNCTION is present and non-nil, it is called instead of `insert'
+to insert the string.  FUNCTION takes one argument--the object to insert.
+  If PARAM is present and non-nil, it replaces STRING as the object
+passed to FUNCTION (or `insert'); for example, if FUNCTION is
+`yank-rectangle', PARAM should be a list of strings to insert as a
+rectangle.
+  If NOEXCLUDE is present and non-nil, the normal removal of the
+yank-excluded-properties is not performed; instead FUNCTION is
+responsible for removing those properties.  This may be necessary
+if FUNCTION adjusts point before or after inserting the object.
+  If UNDO is present and non-nil, it is a function that will be called
+by `yank-pop' to undo the insertion of the current object.  It is
+called with two arguments, the start and end of the current region.
+FUNCTION may set `yank-undo-function' to override the UNDO value.
 
-+++
-** The new macro dynamic-completion-table supports using functions
-as a dynamic completion table.
+*** The functions kill-new, kill-append, and kill-region now have an
+optional argument to specify the yank-handler text property to put on
+the killed text.
 
-  (dynamic-completion-table FUN)
+*** The function yank-pop will now use a non-nil value of the variable
+`yank-undo-function' (instead of delete-region) to undo the previous
+yank or yank-pop command (or a call to insert-for-yank).  The function
+insert-for-yank automatically sets that variable according to the UNDO
+element of the string argument's yank-handler text property if present.
 
-FUN is called with one argument, the string for which completion is required,
-and it should return an alist containing all the intended possible
-completions. This alist may be a full list of possible completions so that FUN
-can ignore the value of its argument. If completion is performed in the
-minibuffer, FUN will be called in the buffer from which the minibuffer was
-entered. dynamic-completion-table then computes the completion.
+*** The function `insert-for-yank' now supports strings where the
+`yank-handler' property does not span the first character of the
+string.  The old behavior is available if you call
+`insert-for-yank-1' instead.
 
-+++
-** The new macro lazy-completion-table initializes a variable
-as a lazy completion table.
+*** The new function insert-for-yank normally works like `insert', but
+removes the text properties in the `yank-excluded-properties' list.
+However, the insertion of the text may be modified by a `yank-handler'
+text property.
 
-  (lazy-completion-table VAR FUN &rest ARGS)
++++
+** An element of buffer-undo-list can now have the form (apply FUNNAME
+. ARGS), where FUNNAME is a symbol other than t or nil.  That stands
+for a high-level change that should be undone by evaluating (apply
+FUNNAME ARGS).
 
-If the completion table VAR is used for the first time (e.g., by passing VAR
-as an argument to `try-completion'), the function FUN is called with arguments
-ARGS. FUN must return the completion table that will be stored in VAR. If
-completion is requested in the minibuffer, FUN will be called in the buffer
-from which the minibuffer was entered. The return value of
-`lazy-completion-table' must be used to initialize the value of VAR.
+These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
+which indicates that the change which took place was limited to the
+range BEG...END and increased the buffer size by DELTA.
 
 +++
-** `minor-mode-list' now holds a list of minor mode commands.
+** If the buffer's undo list for the current command gets longer than
+undo-outer-limit, garbage collection empties it.  This is to prevent
+it from using up the available memory and choking Emacs.
 
 +++
-** The new function `modify-all-frames-parameters' modifies parameters
-for all (existing and future) frames.
+** Enhancements to process support
 
-+++
-** `sit-for' can now be called with args (SECONDS &optional NODISP).
+*** Function list-processes now has an optional argument; if non-nil,
+only the processes whose query-on-exit flag is set are listed.
 
-+++
-** New standard font-lock face `font-lock-preprocessor-face'.
+*** New set-process-query-on-exit-flag and process-query-on-exit-flag
+functions.  The existing process-kill-without-query function is still
+supported, but new code should use the new functions.
+
+*** Function signal-process now accepts a process object or process
+name in addition to a process id to identify the signalled process.
+
+*** Processes now have an associated property list where programs can
+maintain process state and other per-process related information.
+
+The new functions process-get and process-put are used to access, add,
+and modify elements on this property list.
 
-+++
-** The macro `with-syntax-table' does not copy the table any more.
+The new low-level functions process-plist and set-process-plist are
+used to access and replace the entire property list of a process.
 
-+++
-** The variable `face-font-rescale-alist' specifies how much larger
-(or smaller) font we should use.  For instance, if the value is
-'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
-point, we actually use a font of 13 point if the font matches
-SOME-FONTNAME-PATTERN.
+*** Function accept-process-output now has an optional fourth arg
+`just-this-one'.  If non-nil, only output from the specified process
+is handled, suspending output from other processes.  If value is an
+integer, also inhibit running timers.  This feature is generally not
+recommended, but may be necessary for specific applications, such as
+speech synthesis.
 
-+++
-** The function `number-sequence' returns a list of equally-separated
-numbers.  For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
-By default, the separation is 1, but you can specify a different separation
-as the third argument.  (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
+*** Adaptive read buffering of subprocess output.
 
-+++
-** `file-chase-links' now takes an optional second argument LIMIT which
-specifies the maximum number of links to chase through.  If after that
-many iterations the file name obtained is still a symbolic link,
-`file-chase-links' returns it anyway.
+On some systems, when emacs reads the output from a subprocess, the
+output data is read in very small blocks, potentially resulting in
+very poor performance.  This behavior can be remedied to some extent
+by setting the new variable process-adaptive-read-buffering to a
+non-nil value (the default), as it will automatically delay reading
+from such processes, to allowing them to produce more output before
+emacs tries to read it.
 
----
-** `set-fontset-font', `fontset-info', `fontset-font' now operate on
-the default fontset if the argument NAME is nil..
+*** The new function `call-process-shell-command' executes a shell
+command command synchronously in a separate process.
 
-+++
-** The escape sequence \s is now interpreted as a SPACE character,
-unless it is followed by a `-' in a character constant (e.g. ?\s-A),
-in which case it is still interpreted as the super modifier.
-In strings, \s is always interpreted as a space.
+*** The new function `process-file' is similar to `call-process', but
+obeys file handlers.  The file handler is chosen based on
+default-directory.
 
-+++
-** New function `set-process-filter-multibyte' sets the multibyteness
-of a string given to a process's filter.
+*** The new function `set-process-filter-multibyte' sets the
+multibyteness of a string given to a process's filter.
 
-+++
-** New function `process-filter-multibyte-p' returns t if
-a string given to a process's filter is multibyte.
+*** The new function `process-filter-multibyte-p' returns t if a
+string given to a process's filter is multibyte.
 
-+++
-** A filter function of a process is called with a multibyte string if
-the filter's multibyteness is t.  That multibyteness is decided by the
-value of `default-enable-multibyte-characters' when the process is
+*** A filter function of a process is called with a multibyte string
+if the filter's multibyteness is t.  That multibyteness is decided by
+the value of `default-enable-multibyte-characters' when the process is
 created and can be changed later by `set-process-filter-multibyte'.
 
-+++
-** If a process's coding system is raw-text or no-conversion and its
+*** If a process's coding system is raw-text or no-conversion and its
 buffer is multibyte, the output of the process is at first converted
 to multibyte by `string-to-multibyte' then inserted in the buffer.
 Previously, it was converted to multibyte by `string-as-multibyte',
 which was not compatible with the behavior of file reading.
 
 +++
-** New function `string-to-multibyte' converts a unibyte string to a
-multibyte string with the same individual character codes.
+** Enhanced networking support.
 
-+++
-** New variables `gc-elapsed' and `gcs-done' provide extra information
-on garbage collection.
+*** There is a new `make-network-process' function which supports
+opening of stream and datagram connections to a server, as well as
+create a stream or datagram server inside emacs.
 
-+++
-** New function `decode-coding-inserted-region' decodes a region as if
-it is read from a file without decoding.
+- A server is started using :server t arg.
+- Datagram connection is selected using :type 'datagram arg.
+- A server can open on a random port using :service t arg.
+- Local sockets are supported using :family 'local arg.
+- Non-blocking connect is supported using :nowait t arg.
+- The process' property list may be initialized using :plist PLIST arg;
+  a copy of the server process' property list is automatically inherited
+  by new client processes created to handle incoming connections.
 
-+++
-** New function `locale-info' accesses locale information.
+To test for the availability of a given feature, use featurep like this:
+  (featurep 'make-network-process '(:type datagram))
 
-+++
-** `save-selected-window' now saves and restores the selected window
-of every frame.  This way, it restores everything that can be changed
-by calling `select-window'.
+*** Original open-network-stream is now emulated using make-network-process.
 
----
-** `easy-menu-define' now allows you to use nil for the symbol name
-if you don't need to give the menu a name.  If you install the menu
-into other keymaps right away (MAPS is non-nil), it usually doesn't
-need to have a name.
+*** New function open-network-stream-nowait.
 
-** Byte compiler changes:
+This function initiates a non-blocking connect and returns immediately
+without waiting for the connection to be established.  It takes the
+filter and sentinel functions as arguments; when the non-blocking
+connect completes, the sentinel is called with a status string
+matching "open" or "failed".
 
----
-*** `(featurep 'xemacs)' is treated by the compiler as nil.  This
-helps to avoid noisy compiler warnings in code meant to run under both
-Emacs and XEmacs and may sometimes make the result significantly more
-efficient.  Since byte code from recent versions of XEmacs won't
-generally run in Emacs and vice versa, this optimization doesn't lose
-you anything.
+*** New function open-network-stream-server.
 
-+++
-*** You can avoid warnings for possibly-undefined symbols with a
-simple convention that the compiler understands.  (This is mostly
-useful in code meant to be portable to different Emacs versions.)
-Write forms like the following, or code that macroexpands into such
-forms:
+This function creates a network server process for a TCP service.
+When a client connects to the specified service, a new subprocess
+is created to handle the new connection, and the sentinel function
+is called for the new process.
 
-  (if (fboundp 'foo) <then> <else>)
-  (if (boundp 'foo) <then> <else)
+*** New functions process-datagram-address and set-process-datagram-address.
 
-In the first case, using `foo' as a function inside the <then> form
-won't produce a warning if it's not defined as a function, and in the
-second case, using `foo' as a variable won't produce a warning if it's
-unbound.  The test must be in exactly one of the above forms (after
-macro expansion), but such tests may be nested.  Note that `when' and
-`unless' expand to `if', but `cond' doesn't.
+These functions are used with datagram-based network processes to get
+and set the current address of the remote partner.
 
-+++
-*** The new macro `with-no-warnings' suppresses all compiler warnings
-inside its body.  In terms of execution, it is equivalent to `progn'.
+*** New function format-network-address.
 
-+++
-** The new translation table `translation-table-for-input'
-is used for customizing self-insertion.  The character to
-be inserted is translated through it.
+This function reformats the lisp representation of a network address
+to a printable string.  For example, an IP address A.B.C.D and port
+number P is represented as a five element vector [A B C D P], and the
+printable string returned for this vector is "A.B.C.D:P".  See the doc
+string for other formatting options.
 
-+++
-** `load-history' can now have elements of the form (t . FUNNAME),
-which means FUNNAME was previously defined as an autoload (before the
-current file redefined it).
+*** By default, the function process-contact still returns (HOST SERVICE)
+for a network process.  Using the new optional KEY arg, the complete list
+of network process properties or a specific property can be selected.
 
-+++
-** `load-history' now records (defun . FUNNAME) when a function is
-defined.  For a variable, it records just the variable name.
+Using :local and :remote as the KEY, the address of the local or
+remote end-point is returned.  An Inet address is represented as a 5
+element vector, where the first 4 elements contain the IP address and
+the fifth is the port number.
 
-+++
-** New Lisp library testcover.el works with edebug to help you determine
-whether you've tested all your Lisp code.  Function testcover-start
-instruments all functions in a given file.  Then test your code.  Function
-testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
-show where coverage is lacking.  Command testcover-next-mark (bind it to
-a key!) will move point forward to the next spot that has a splotch.
+*** Network processes can now be stopped and restarted with
+`stop-process' and `continue-process'.  For a server process, no
+connections are accepted in the stopped state.  For a client process,
+no input is received in the stopped state.
 
-*** Normally, a red splotch indicates the form was never completely evaluated;
-a brown splotch means it always evaluated to the same value.  The red
-splotches are skipped for forms that can't possibly complete their evaluation,
-such as `error'.  The brown splotches are skipped for forms that are expected
-to always evaluate to the same value, such as (setq x 14).
+*** New function network-interface-list.
 
-*** For difficult cases, you can add do-nothing macros to your code to help
-out the test coverage tool.  The macro `noreturn' suppresses a red splotch.
-It is an error if the argument to `noreturn' does return.  The macro 1value
-suppresses a brown splotch for its argument.  This macro is a no-op except
-during test-coverage -- then it signals an error if the argument actually
-returns differing values.
+This function returns a list of network interface names and their
+current network addresses.
 
-+++
-** New function unsafep returns nil if the given Lisp form can't possibly
-do anything dangerous; otherwise it returns a reason why the form might be
-unsafe (calls dangerous function, alters global variable, etc).
+*** New function network-interface-info.
 
-+++
-** The new variable `print-continuous-numbering', when non-nil, says
-that successive calls to print functions should use the same
-numberings for circular structure references.  This is only relevant
-when `print-circle' is non-nil.
+This function returns the network address, hardware address, current
+status, and other information about a specific network interface.
 
-When you bind `print-continuous-numbering' to t, you should
-also bind `print-number-table' to nil.
+*** The sentinel is now called when a network process is deleted with
+delete-process.  The status message passed to the sentinel for a
+deleted network process is "deleted".  The message passed to the
+sentinel when the connection is closed by the remote peer has been
+changed to "connection broken by remote peer".
 
 +++
-** When using non-toolkit scroll bars with the default width,
-the scroll-bar-width frame parameter value is nil.
+** New function `force-window-update' can initiate a full redisplay of
+one or all windows.  Normally, this is not needed as changes in window
+contents are detected automatically.  However, certain implicit
+changes to mode lines, header lines, or display properties may require
+forcing an explicit window update.
 
 +++
-** The new function copy-abbrev-table returns a new abbrev table that
-is a copy of a given abbrev table.
+** You can now make a window as short as one line.
+
+A window that is just one line tall does not display either a mode
+line or a header line, even if the variables `mode-line-format' and
+`header-line-format' call for them.  A window that is two lines tall
+cannot display both a mode line and a header line at once; if the
+variables call for both, only the mode line actually appears.
 
 +++
-** The option --script FILE runs Emacs in batch mode and loads FILE.
-It is useful for writing Emacs Lisp shell script files, because they
-can start with this line:
+** The line-move, scroll-up, and scroll-down functions will now
+modify the window vscroll to scroll through display rows that are
+taller that the height of the window, for example in the presense of
+large images.  To disable this feature, Lisp code may bind the new
+variable `auto-window-vscroll' to nil.
 
-   #!/usr/bin/emacs --script
++++
+** Function `compute-motion' now calculates the usable window
+width if the WIDTH argument is nil.  If the TOPOS argument is nil,
+the usable window height and width is used.
 
 +++
-** The option --directory DIR now modifies `load-path' immediately.
-Directories are added to the front of `load-path' in the order they
-appear on the command line.  For example, with this command line:
+** Function pos-visible-in-window-p now returns the pixel coordinates
+and partial visiblity state of the corresponding row, if the PARTIALLY
+arg is non-nil.
 
-  emacs -batch -L .. -L /tmp --eval "(require 'foo)"
++++
+** The new function `window-inside-edges' returns the edges of the
+actual text portion of the window, not including the scroll bar or
+divider line, the fringes, the display margins, the header line and
+the mode line.
 
-Emacs looks for library `foo' in the parent directory, then in /tmp, then
-in the other directories in `load-path'.  (-L is short for --directory.)
++++
+** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
+return window edges in units of pixels, rather than columns and lines.
 
 +++
-** A function's docstring can now hold the function's usage info on
-its last line.  It should match the regexp "\n\n(fn.*)\\'".
+** The new macro `with-selected-window' temporarily switches the
+selected window without impacting the order of buffer-list.
 
----
-** New CCL functions `lookup-character' and `lookup-integer' access
-hash tables defined by the Lisp function `define-translation-hash-table'.
++++
+** `select-window' takes an optional second argument `norecord', like
+`switch-to-buffer'.
 
 +++
-** The new function `minibufferp' returns non-nil if its optional buffer
-argument is a minibuffer.  If the argument is omitted it defaults to
-the current buffer.
+** `save-selected-window' now saves and restores the selected window
+of every frame.  This way, it restores everything that can be changed
+by calling `select-window'.
 
 +++
-** There is a new Warnings facility; see the functions `warn'
-and `display-warning'.
+** The function `set-window-buffer' now has an optional third argument
+KEEP-MARGINS which will preserve the window's current margin, fringe,
+and scroll-bar settings if non-nil.
 
 +++
-** The functions all-completions and try-completion now accept lists
-of strings as well as hash-tables additionally to alists, obarrays
-and functions.  Furthermore, the function `test-completion' is now
-exported to Lisp.  The keys in alists and hash tables may be either
-strings or symbols, which are automatically converted with to strings.
+** Customizable fringe bitmaps
 
----
-** When pure storage overflows while dumping, Emacs now prints how
-much pure storage it will approximately need.
+*** New function 'define-fringe-bitmap' can now be used to create new
+fringe bitmaps, as well as change the built-in fringe bitmaps.
 
-+++
-** The new variable `auto-coding-functions' lets you specify functions
-to examine a file being visited and deduce the proper coding system
-for it.  (If the coding system is detected incorrectly for a specific
-file, you can put a `coding:' tags to override it.)
+To change a built-in bitmap, do (require 'fringe) and use the symbol
+identifing the bitmap such as `left-truncation or `continued-line'.
 
----
-** The new function `merge-coding-systems' fills in unspecified aspects
-of one coding system from another coding system.
+*** New function 'destroy-fringe-bitmap' may be used to destroy a
+previously created bitmap, or restore a built-in bitmap.
 
-+++
-** The variable `safe-local-eval-forms' specifies a list of forms that
-are ok to evaluate when they appear in an `eval' local variables
-specification.  Normally Emacs asks for confirmation before evaluating
-such a form, but if the form appears in this list, no confirmation is
-needed.
+*** New function 'set-fringe-bitmap-face' can now be used to set a
+specific face to be used for a specific fringe bitmap.  The face is
+automatically merged with the `fringe' face, so normally, the face
+should only specify the foreground color of the bitmap.
 
----
-** If a function has a non-nil `safe-local-eval-function' property,
-that means it is ok to evaluate some calls to that function when it
-appears in an `eval' local variables specification.  If the property
-is t, then any form calling that function with constant arguments is
-ok.  If the property is a function or list of functions, they are called
-with the form as argument, and if any returns t, the form is ok to call.
+*** There are new display properties, left-fringe and right-fringe,
+that can be used to show a specific bitmap in the left or right fringe
+bitmap of the display line.
 
-If the form is not "ok to call", that means Emacs asks for
-confirmation as before.
+Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
+symbol identifying a fringe bitmap, either built-in or defined with
+`define-fringe-bitmap', and FACE is an optional face name to be used
+for displaying the bitmap instead of the default `fringe' face.
+When specified, FACE is automatically merged with the `fringe' face.
+
+*** New function `fringe-bitmaps-at-pos' returns the current fringe
+bitmaps in the display line at a given buffer position.
 
 +++
 ** Controlling the default left and right fringe widths.
@@ -3753,10 +3457,10 @@ of the currently defined fringe bitmaps.  The width of the built-in
 fringe bitmaps is 8 pixels.
 
 +++
-** Per-window fringes settings
+** Per-window fringe and scrollbar settings
 
-Windows can now have their own individual fringe widths and position
-settings.
+*** Windows can now have their own individual fringe widths and
+position settings.
 
 To control the fringe widths of a window, either set the buffer-local
 variables `left-fringe-width', `right-fringe-width', or call
@@ -3773,10 +3477,7 @@ settings.  To make `left-fringe-width', `right-fringe-width', and
 displaying the buffer in a window, or use `set-window-buffer' to force
 an update of the display margins.
 
-+++
-** Per-window vertical scroll-bar settings
-
-Windows can now have their own individual scroll-bar settings
+*** Windows can now have their own individual scroll-bar settings
 controlling the width and position of scroll-bars.
 
 To control the scroll-bar of a window, either set the buffer-local
@@ -3788,476 +3489,705 @@ the buffer in a window, or use `set-window-buffer' to force an update
 of the display margins.
 
 +++
-** The function `set-window-buffer' now has an optional third argument
-KEEP-MARGINS which will preserve the window's current margin, fringe,
-and scroll-bar settings if non-nil.
+** When using non-toolkit scroll bars with the default width,
+the scroll-bar-width frame parameter value is nil.
 
 +++
-** Renamed hooks to better follow the naming convention:
-find-file-hooks to find-file-hook,
-find-file-not-found-hooks to find-file-not-found-functions,
-write-file-hooks to write-file-functions,
-write-contents-hooks to write-contents-functions,
-x-lost-selection-hooks to x-lost-selection-functions,
-x-sent-selection-hooks to x-sent-selection-functions.
-Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
+** Multiple overlay arrows can now be defined and managed via the new
+variable `overlay-arrow-variable-list'.  It contains a list of
+varibles which contain overlay arrow position markers, including
+the original `overlay-arrow-position' variable.
+
+Each variable on this list may have individual `overlay-arrow-string'
+and `overlay-arrow-bitmap' properties that specify an overlay arrow
+string (for non-window terminals) or fringe bitmap (for window
+systems) to display at the corresponding overlay arrow position.
+If either property is not set, the default `overlay-arrow-string' or
+'overlay-arrow-fringe-bitmap' will be used.
 
 +++
-** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
-It was renamed to follow the naming conventions for abnormal hooks.  The old
-name remains available as an alias, but has been marked obsolete.
+** New line-height and line-spacing properties for newline characters
+
+A newline may now have line-height and line-spacing text or overlay
+properties that control the height of the corresponding display row.
+
+If the line-height property value is t, the newline does not
+contribute to the height of the display row; instead the height of the
+newline glyph is reduced.  Also, a line-spacing property on this
+newline is ignored.  This can be used to tile small images or image
+slices without adding blank areas between the images.
+
+If the line-height property value is a positive integer, the value
+specifies the minimum line height in pixels.  If necessary, the line
+height it increased by increasing the line's ascent.
+
+If the line-height property value is a float, the minimum line height
+is calculated by multiplying the default frame line height by the
+given value.
+
+If the line-height property value is a cons (FACE . RATIO), the
+minimum line height is calculated as RATIO * height of named FACE.
+RATIO is int or float.  If FACE is t, it specifies the current face.
+
+If the line-height property value is a cons (nil . RATIO), the line
+height is calculated as RATIO * actual height of the line's contents.
+
+If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies
+the line height as described above, while TOTAL is any of the forms
+described above and specifies the total height of the line, causing a
+varying number of pixels to be inserted after the line to make it line
+exactly that many pixels high.
+
+If the line-spacing property value is an positive integer, the value
+is used as additional pixels to insert after the display line; this
+overrides the default frame line-spacing and any buffer local value of
+the line-spacing variable.
+
+If the line-spacing property may be a float or cons, the line spacing
+is calculated as specified above for the line-height property.
 
 +++
-** The `read-file-name' function now takes an additional argument which
-specifies a predicate which the file name read must satify.  The
-new variable `read-file-name-predicate' contains the predicate argument
-while reading the file name from the minibuffer; the predicate in this
-variable is used by read-file-name-internal to filter the completion list.
+** The buffer local line-spacing variable may now have a float value,
+which is used as a height relative to the default frame line height.
 
----
-** The new variable `read-file-name-function' can be used by lisp code
-to override the internal read-file-name function.
++++
+** Enhancements to stretch display properties
+
+The display property stretch specification form `(space PROPS)', where
+PROPS is a property list now allows pixel based width and height
+specifications, as well as enhanced horizontal text alignment.
+
+The value of these properties can now be a (primitive) expression
+which is evaluated during redisplay.  The following expressions
+are supported:
+
+EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
+NUM  ::= INTEGER | FLOAT | SYMBOL
+UNIT ::= in | mm | cm | width | height
+ELEM ::= left-fringe | right-fringe | left-margin | right-margin
+      |  scroll-bar | text
+POS  ::= left | center | right
+FORM ::= (NUM . EXPR) | (OP EXPR ...)
+OP   ::= + | -
+
+The form `NUM' specifies a fractional width or height of the default
+frame font size.  The form `(NUM)' specifies an absolute number of
+pixels.  If a symbol is specified, its buffer-local variable binding
+is used.  The `in', `mm', and `cm' units specifies the number of
+pixels per inch, milli-meter, and centi-meter, resp.  The `width' and
+`height' units correspond to the width and height of the current face
+font.  An image specification corresponds to the width or height of
+the image.
+
+The `left-fringe', `right-fringe', `left-margin', `right-margin',
+`scroll-bar', and `text' elements specify to the width of the
+corresponding area of the window.
+
+The `left', `center', and `right' positions can be used with :align-to
+to specify a position relative to the left edge, center, or right edge
+of the text area.  One of the above window elements (except `text')
+can also be used with :align-to to specify that the position is
+relative to the left edge of the given area.  Once the base offset for
+a relative position has been set (by the first occurrence of one of
+these symbols), further occurences of these symbols are interpreted as
+the width of the area.
+
+For example, to align to the center of the left-margin, use
+    :align-to (+ left-margin (0.5 . left-margin))
+
+If no specific base offset is set for alignment, it is always relative
+to the left edge of the text area.  For example, :align-to 0 in a
+header-line aligns with the first text column in the text area.
+
+The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
+the value of the expression EXPR.  For example, (2 . in) specifies a
+width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
+height) of the specified image.
+
+The form `(+ EXPR ...)' adds up the value of the expressions.
+The form `(- EXPR ...)' negates or subtracts the value of the expressions.
+
++++
+** Support for displaying image slices
+
+*** New display property (slice X Y WIDTH HEIGHT) may be used with
+an image property to display only a specific slice of the image.
+
+*** Function insert-image has new optional fourth arg to
+specify image slice (X Y WIDTH HEIGHT).
+
+*** New function insert-sliced-image inserts a given image as a
+specified number of evenly sized slices (rows x columns).
+
++++
+** Images may now have an associated image map via the :map property.
+
+An image map is an alist where each element has the format (AREA ID PLIST).
+An AREA is specified as either a rectangle, a circle, or a polygon:
+A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the
+pixel coordinates of the upper left and bottom right corners.
+A circle is a cons (circle . ((x0 . y0) . r)) specifying the center
+and the radius of the circle; r may be a float or integer.
+A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the
+vector describes one corner in the polygon.
+
+When the mouse pointer is above a hot-spot area of an image, the
+PLIST of that hot-spot is consulted; if it contains a `help-echo'
+property it defines a tool-tip for the hot-spot, and if it contains
+a `pointer' property, it defines the shape of the mouse cursor when
+it is over the hot-spot.  See the variable 'void-area-text-pointer'
+for possible pointer shapes.
+
+When you click the mouse when the mouse pointer is over a hot-spot,
+an event is composed by combining the ID of the hot-spot with the
+mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
+
++++ (lispref)
+??? (man)
+** The mouse pointer shape in void text areas (i.e. after the end of a
+line or below the last line in the buffer) of the text window is now
+controlled by the new variable `void-text-area-pointer'.  The default
+is to use the `arrow' (non-text) pointer.  Other choices are `text'
+(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
+
++++
+** The mouse pointer shape over an image can now be controlled by the
+:pointer image property.
+
++++
+** Lisp code can now test if a given buffer position is inside a
+clickable link with the new function `mouse-on-link-p'.  This is the
+function used by the new `mouse-1-click-follows-link' functionality.
+
++++
+** The mouse pointer shape over ordinary text or images may now be
+controlled/overriden via the `pointer' text property.
+
+** Mouse event enhancements:
+
++++
+*** Mouse clicks on fringes now generates left-fringe or right-fringes
+events, rather than a text area click event.
+
++++
+*** Mouse clicks in the left and right marginal areas now includes a
+sensible buffer position corresponding to the first character in the
+corresponding text row.
+
++++
+*** Function `mouse-set-point' now works for events outside text area.
+
++++
+*** Mouse events now includes buffer position for all event types.
+
++++
+*** `posn-point' now returns buffer position for non-text area events.
+
++++
+*** New function `posn-area' returns window area clicked on (nil means
+text area).
+
++++
+*** Mouse events include actual glyph column and row for all event types.
+
++++
+*** New function `posn-actual-col-row' returns actual glyph coordinates.
 
 +++
-** The new variable `read-file-name-completion-ignore-case' specifies
-whether completion ignores case when reading a file name with the
-`read-file-name' function.
+*** Mouse events may now include image object in addition to string object.
 
 +++
-** The new function `read-directory-name' can be used instead of
-`read-file-name' to read a directory name; when used, completion
-will only show directories.
+*** Mouse events include relative x and y pixel coordinates relative to
+the top left corner of the object (image or character) clicked on.
 
 +++
-** The new function `file-remote-p' tests a file name and returns
-non-nil if it specifies a remote file (one that Emacs accesses using
-its own special methods and not directly through the file system).
-The value in that case is an identifier for the remote file system.
+*** Mouse events include the pixel width and height of the object
+(image or character) clicked on.
 
----
-** When a Lisp file uses CL functions at run-time, compiling the file
-now issues warnings about these calls, unless the file performs
-(require 'cl) when loaded.
++++
+*** New functions 'posn-object', 'posn-object-x-y', and
+'posn-object-width-height' return the image or string object of a mouse
+click, the x and y pixel coordinates relative to the top left corner
+of that object, and the total width and height of that object.
 
 +++
-** The `defmacro' form may contain declarations specifying how to
-indent the macro in Lisp mode and how to debug it with Edebug.  The
-syntax of defmacro has been extended to
+** At the end of a command, point moves out from within invisible
+text, in the same way it moves out from within text covered by an
+image or composition property.
 
-   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
+This makes it generally unnecessary to mark invisible text as intangible.
+This is particularly good because the intangible property often has
+unexpected side-effects since the property applies to everything
+(including `goto-char', ...) whereas this new code is only run after
+post-command-hook and thus does not care about intermediate states.
 
-DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
-declaration specifiers supported are:
++++
+** Normally, the cursor is displayed at the end of any overlay and
+text property string that may be present at the current window
+position.  The cursor may now be placed on any character of such
+strings by giving that character a non-nil `cursor' text property.
 
-(indent INDENT)
-       Set NAME's `lisp-indent-function' property to INDENT.
++++
+** The display space :width and :align-to text properties are now
+supported on text terminals.
 
-(edebug DEBUG)
-       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
-       equivalent to writing a `def-edebug-spec' for the macro.
++++
+** Arguments for remove-overlays are now optional, so that you can
+remove all overlays in the buffer by just calling (remove-overlay).
 
 +++
-** Interactive commands can be remapped through keymaps.
+** New variable char-property-alias-alist.
 
-This is an alternative to using defadvice or substitute-key-definition
-to modify the behavior of a key binding using the normal keymap
-binding and lookup functionality.
+This variable allows you to create alternative names for text
+properties.  It works at the same level as `default-text-properties',
+although it applies to overlays as well.  This variable was introduced
+to implement the `font-lock-face' property.
 
-When a key sequence is bound to a command, and that command is
-remapped to another command, that command is run instead of the
-original command.
++++
+** New function `get-char-property-and-overlay' accepts the same
+arguments as `get-char-property' and returns a cons whose car is the
+return value of `get-char-property' called with those arguments and
+whose cdr is the overlay in which the property was found, or nil if
+it was found as a text property or not found at all.
 
-Example:
-Suppose that minor mode my-mode has defined the commands
-my-kill-line and my-kill-word, and it wants C-k (and any other key
-bound to kill-line) to run the command my-kill-line instead of
-kill-line, and likewise it wants to run my-kill-word instead of
-kill-word.
++++
+** The new frame parameter `tty-color-mode' specifies the mode to use
+for color support on character terminal frames.  Its value can be a
+number of colors to support, or a symbol.  See the Emacs Lisp
+Reference manual for more detailed documentation.
 
-Instead of rebinding C-k and the other keys in the minor mode map,
-command remapping allows you to directly map kill-line into
-my-kill-line and kill-word into my-kill-word through the minor mode
-map using define-key:
++++
+** The new face attribute `min-colors' can be used to tailor the face
+color to the number of colors supported by a display, and define the
+foreground and background colors accordingly so that they look best on
+a terminal that supports at least this many colors.  This is now the
+preferred method for defining default faces in a way that makes a good
+use of the capabilities of the display.
 
-   (define-key my-mode-map [remap kill-line] 'my-kill-line)
-   (define-key my-mode-map [remap kill-word] 'my-kill-word)
++++
+** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
+to display CHAR.  More precisely, if the selected frame's fontset has
+a font to display the character set that CHAR belongs to.
 
-Now, when my-mode is enabled, and the user enters C-k or M-d,
-the commands my-kill-line and my-kill-word are run.
+Fontsets can specify a font on a per-character basis; when the fontset
+does that, this value may not be accurate.
 
-Notice that only one level of remapping is supported.  In the above
-example, this means that if my-kill-line is remapped to other-kill,
-then C-k still runs my-kill-line.
++++
+** New function display-supports-face-attributes-p may be used to test
+whether a given set of face attributes is actually displayable.
 
-The following changes have been made to provide command remapping:
+A new predicate `supports' has also been added to the `defface' face
+specification language, which can be used to do this test for faces
+defined with defface.
 
-- Command remappings are defined using `define-key' with a prefix-key
-  `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
-  to definition DEF in keymap MAP.  The definition is not limited to
-  another command; it can be anything accepted for a normal binding.
+---
+** The special treatment of faces whose names are of the form `fg:COLOR'
+or `bg:COLOR' has been removed.  Lisp programs should use the
+`defface' facility for defining faces with specific colors, or use
+the feature of specifying the face attributes :foreground and :background
+directly in the `face' property instead of using a named face.
 
-- The new function `command-remapping' returns the binding for a
-  remapped command in the current keymaps, or nil if not remapped.
++++
+** The first face specification element in a defface can specify
+`default' instead of frame classification.  Then its attributes act as
+defaults that apply to all the subsequent cases (and may be overridden
+by them).
 
-- key-binding now remaps interactive commands unless the optional
-  third argument NO-REMAP is non-nil.
++++
+** The variable `face-font-rescale-alist' specifies how much larger
+(or smaller) font we should use.  For instance, if the value is
+'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
+point, we actually use a font of 13 point if the font matches
+SOME-FONTNAME-PATTERN.
 
-- where-is-internal now returns nil for a remapped command (e.g.
-  kill-line if my-mode is enabled), and the actual key binding for
-  the command it is remapped to (e.g. C-k for my-kill-line).
-  It also has a new optional fifth argument, NO-REMAP, which inhibits
-  remapping if non-nil (e.g. it returns C-k for kill-line and
-  <kill-line> for my-kill-line).
+---
+** `set-fontset-font', `fontset-info', `fontset-font' now operate on
+the default fontset if the argument NAME is nil..
 
-- The new variable `this-original-command' contains the original
-  command before remapping.  It is equal to `this-command' when the
-  command was not remapped.
+---
+** The function face-differs-from-default-p now truly checks whether the
+given face displays differently from the default face or not (previously
+it did only a very cursory check).
 
 +++
-** New variable emulation-mode-map-alists.
+** face-attribute, face-foreground, face-background, and face-stipple now
+accept a new optional argument, INHERIT, which controls how face
+inheritance is used when determining the value of a face attribute.
 
-Lisp packages using many minor mode keymaps can now maintain their own
-keymap alist separate from minor-mode-map-alist by adding their keymap
-alist to this list.
++++
+** New functions face-attribute-relative-p and merge-face-attribute
+help with handling relative face attributes.
 
 +++
-** Atomic change groups.
+** The priority of faces in an :inherit attribute face-list is reversed.
+If a face contains an :inherit attribute with a list of faces, earlier
+faces in the list override later faces in the list; in previous releases
+of Emacs, the order was the opposite.  This change was made so that
+:inherit face-lists operate identically to face-lists in text `face'
+properties.
 
-To perform some changes in the current buffer "atomically" so that
-they either all succeed or are all undone, use `atomic-change-group'
-around the code that makes changes.  For instance:
++++
+** New standard font-lock face `font-lock-preprocessor-face'.
 
-  (atomic-change-group
-    (insert foo)
-    (delete-region x y))
++++
+** New special text property `font-lock-face'.
 
-If an error (or other nonlocal exit) occurs inside the body of
-`atomic-change-group', it unmakes all the changes in that buffer that
-were during the execution of the body.  The change group has no effect
-on any other buffers--any such changes remain.
+This property acts like the `face' property, but it is controlled by
+M-x font-lock-mode.  It is not, strictly speaking, a builtin text
+property.  Instead, it is implemented inside font-core.el, using the
+new variable `char-property-alias-alist'.
 
-If you need something more sophisticated, you can directly call the
-lower-level functions that `atomic-change-group' uses.  Here is how.
+---
+** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
+If a piece of text with that property gets contextually refontified
+(see jit-lock-defer-contextually), then all of that text will
+be refontified.  This is useful when the syntax of a textual element
+depends on text several lines further down (and when font-lock-multiline
+is not appropriate to solve that problem).  For example in Perl:
 
-To set up a change group for one buffer, call `prepare-change-group'.
-Specify the buffer as argument; it defaults to the current buffer.
-This function returns a "handle" for the change group.  You must save
-the handle to activate the change group and then finish it.
+       s{
+               foo
+       }{
+               bar
+       }e
 
-Before you change the buffer again, you must activate the change
-group.  Pass the handle to `activate-change-group' afterward to
-do this.
+Adding/removing the last `e' changes the `bar' from being a piece of
+text to being a piece of code, so you'd put a jit-lock-defer-multiline
+property over the second half of the command to force (deferred)
+refontification of `bar' whenever the `e' is added/removed.
 
-After you make the changes, you must finish the change group.  You can
-either accept the changes or cancel them all.  Call
-`accept-change-group' to accept the changes in the group as final;
-call `cancel-change-group' to undo them all.
++++
+** font-lock can manage arbitrary text-properties beside `face'.
+*** the FACENAME returned in font-lock-keywords can be a list
+of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
+other properties than `face'.
+*** font-lock-extra-managed-props can be set to make sure those extra
+properties are automatically cleaned up by font-lock.
 
-You should use `unwind-protect' to make sure the group is always
-finished.  The call to `activate-change-group' should be inside the
-`unwind-protect', in case the user types C-g just after it runs.
-(This is one reason why `prepare-change-group' and
-`activate-change-group' are separate functions.)  Once you finish the
-group, don't use the handle again--don't try to finish the same group
-twice.
+---
+** The precedence of file-name-handlers has been changed.
+Instead of blindly choosing the first handler that matches,
+find-file-name-handler now gives precedence to a file-name handler
+that matches near the end of the file name.  More specifically, the
+handler whose (match-beginning 0) is the largest is chosen.
+In case of ties, the old "first matched" rule applies.
 
-To make a multibuffer change group, call `prepare-change-group' once
-for each buffer you want to cover, then use `nconc' to combine the
-returned values, like this:
++++
+** A file name handler can declare which operations it handles.
 
-  (nconc (prepare-change-group buffer-1)
-         (prepare-change-group buffer-2))
+You do this by putting an `operation' property on the handler name
+symbol.  The property value should be a list of the operations that
+the handler really handles.  It won't be called for any other
+operations.
 
-You can then activate the multibuffer change group with a single call
-to `activate-change-group', and finish it with a single call to
-`accept-change-group' or `cancel-change-group'.
+This is useful for autoloaded handlers, to prevent them from being
+autoloaded when not really necessary.
 
-Nested use of several change groups for the same buffer works as you
-would expect.  Non-nested use of change groups for the same buffer
-will lead to undesirable results, so don't let it happen; the first
-change group you start for any given buffer should be the last one
-finished.
++++
+** `set-auto-mode' now gives the interpreter magic line (if present)
+precedence over the file name.  Likewise an <?xml or <!DOCTYPE declaration
+will give the buffer XML or SGML mode, based on the new var
+`magic-mode-alist'.
 
 +++
-** New variable char-property-alias-alist.
+** Major mode functions now run the new normal hook
+`after-change-major-mode-hook', at their very end, after the mode hooks.
 
-This variable allows you to create alternative names for text
-properties.  It works at the same level as `default-text-properties',
-although it applies to overlays as well.  This variable was introduced
-to implement the `font-lock-face' property.
+---
+** If a major mode function has a non-nil `no-clone-indirect'
+property, `clone-indirect-buffer' signals an error if you use
+it in that buffer.
 
 +++
-** New special text property `font-lock-face'.
-
-This property acts like the `face' property, but it is controlled by
-M-x font-lock-mode.  It is not, strictly speaking, a builtin text
-property.  Instead, it is implemented inside font-core.el, using the
-new variable `char-property-alias-alist'.
+** Major modes can define `eldoc-documentation-function'
+locally to provide Eldoc functionality by some method appropriate to
+the language.
 
 +++
-** New function remove-list-of-text-properties.
+** define-derived-mode by default creates a new empty abbrev table.
+It does not copy abbrevs from the parent mode's abbrev table.
 
-The new function `remove-list-of-text-properties' is almost the same
-as `remove-text-properties'.  The only difference is that it takes
-a list of property names as argument rather than a property list.
++++
+** define-minor-mode now accepts arbitrary additional keyword arguments
+and simply passes them to defcustom, if applicable.
 
 +++
-** New function insert-for-yank.
+** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
+are used by define-derived-mode to make sure the mode hook for the
+parent mode is run at the end of the child mode.
 
-This function normally works like `insert' but removes the text
-properties in the `yank-excluded-properties' list.  However, if the
-inserted text has a `yank-handler' text property on the first
-character of the string, the insertion of the text may be modified in
-a number of ways.  See the description of `yank-handler' below.
++++
+** `minor-mode-list' now holds a list of minor mode commands.
 
 +++
-** New function insert-buffer-substring-as-yank.
+** Both the variable and the function `disabled-command-hook' have
+been renamed to `disabled-command-function'.  The variable
+`disabled-command-hook' has been kept as an obsolete alias.
 
-This function works like `insert-buffer-substring', but removes the
-text properties in the `yank-excluded-properties' list.
++++
+** The function `eql' is now available without requiring the CL package.
 
 +++
-** New function insert-buffer-substring-no-properties.
+** If optional third argument APPEND to `add-to-list' is non-nil, a
+new element gets added at the end of the list instead of at the
+beginning.  This change actually occurred in Emacs-21.1, but was not
+documented.
 
-This function is like insert-buffer-substring, but removes all
-text properties from the inserted substring.
++++
+** The escape sequence \s is now interpreted as a SPACE character,
+unless it is followed by a `-' in a character constant (e.g. ?\s-A),
+in which case it is still interpreted as the super modifier.
+In strings, \s is always interpreted as a space.
 
 +++
-** New `yank-handler' text property may be used to control how
-previously killed text on the kill-ring is reinserted.
+** A hex escape in a string forces the string to be multibyte.
+An octal escape makes it unibyte.
 
-The value of the yank-handler property must be a list with one to four
-elements with the following format:
-  (FUNCTION PARAM NOEXCLUDE UNDO).
++++
+** `split-string' now includes null substrings in the returned list if
+the optional argument SEPARATORS is non-nil and there are matches for
+SEPARATORS at the beginning or end of the string.  If SEPARATORS is
+nil, or if the new optional third argument OMIT-NULLS is non-nil, all
+empty matches are omitted from the returned list.
 
-The `insert-for-yank' function looks for a yank-handler property on
-the first character on its string argument (typically the first
-element on the kill-ring).  If a yank-handler property is found,
-the normal behavior of `insert-for-yank' is modified in various ways:
++++
+** New function `string-to-multibyte' converts a unibyte string to a
+multibyte string with the same individual character codes.
 
-  When FUNCTION is present and non-nil, it is called instead of `insert'
-to insert the string.  FUNCTION takes one argument--the object to insert.
-  If PARAM is present and non-nil, it replaces STRING as the object
-passed to FUNCTION (or `insert'); for example, if FUNCTION is
-`yank-rectangle', PARAM should be a list of strings to insert as a
-rectangle.
-  If NOEXCLUDE is present and non-nil, the normal removal of the
-yank-excluded-properties is not performed; instead FUNCTION is
-responsible for removing those properties.  This may be necessary
-if FUNCTION adjusts point before or after inserting the object.
-  If UNDO is present and non-nil, it is a function that will be called
-by `yank-pop' to undo the insertion of the current object.  It is
-called with two arguments, the start and end of the current region.
-FUNCTION may set `yank-undo-function' to override the UNDO value.
++++
+** The function `number-sequence' returns a list of equally-separated
+numbers.  For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
+By default, the separation is 1, but you can specify a different separation
+as the third argument.  (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
 
 +++
-*** The functions kill-new, kill-append, and kill-region now have an
-optional argument to specify the yank-handler text property to put on
-the killed text.
+** `sit-for' can now be called with args (SECONDS &optional NODISP).
 
 +++
-*** The function yank-pop will now use a non-nil value of the variable
-`yank-undo-function' (instead of delete-region) to undo the previous
-yank or yank-pop command (or a call to insert-for-yank).  The function
-insert-for-yank automatically sets that variable according to the UNDO
-element of the string argument's yank-handler text property if present.
+** A function's docstring can now hold the function's usage info on
+its last line.  It should match the regexp "\n\n(fn.*)\\'".
 
 +++
-** New function display-supports-face-attributes-p may be used to test
-whether a given set of face attributes is actually displayable.
+** The `defmacro' form may contain declarations specifying how to
+indent the macro in Lisp mode and how to debug it with Edebug.  The
+syntax of defmacro has been extended to
 
-A new predicate `supports' has also been added to the `defface' face
-specification language, which can be used to do this test for faces
-defined with defface.
+   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
 
----
-** The function face-differs-from-default-p now truly checks whether the
-given face displays differently from the default face or not (previously
-it did only a very cursory check).
+DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
+declaration specifiers supported are:
 
-+++
-** face-attribute, face-foreground, face-background, and face-stipple now
-accept a new optional argument, INHERIT, which controls how face
-inheritance is used when determining the value of a face attribute.
+(indent INDENT)
+       Set NAME's `lisp-indent-function' property to INDENT.
 
-+++
-** New functions face-attribute-relative-p and merge-face-attribute
-help with handling relative face attributes.
+(edebug DEBUG)
+       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
+       equivalent to writing a `def-edebug-spec' for the macro.
 
 +++
-** The priority of faces in an :inherit attribute face-list is reversed.
-If a face contains an :inherit attribute with a list of faces, earlier
-faces in the list override later faces in the list; in previous releases
-of Emacs, the order was the opposite.  This change was made so that
-:inherit face-lists operate identically to face-lists in text `face'
-properties.
+** The functions all-completions and try-completion now accept lists
+of strings as well as hash-tables additionally to alists, obarrays
+and functions.  Furthermore, the function `test-completion' is now
+exported to Lisp.  The keys in alists and hash tables may be either
+strings or symbols, which are automatically converted with to strings.
 
 +++
-** Enhancements to process support
+** The new macro dynamic-completion-table supports using functions
+as a dynamic completion table.
 
-*** Function list-processes now has an optional argument; if non-nil,
-only the processes whose query-on-exit flag is set are listed.
+  (dynamic-completion-table FUN)
 
-*** New set-process-query-on-exit-flag and process-query-on-exit-flag
-functions.  The existing process-kill-without-query function is still
-supported, but new code should use the new functions.
+FUN is called with one argument, the string for which completion is required,
+and it should return an alist containing all the intended possible
+completions. This alist may be a full list of possible completions so that FUN
+can ignore the value of its argument. If completion is performed in the
+minibuffer, FUN will be called in the buffer from which the minibuffer was
+entered. dynamic-completion-table then computes the completion.
 
-*** Function signal-process now accepts a process object or process
-name in addition to a process id to identify the signalled process.
++++
+** The new macro lazy-completion-table initializes a variable
+as a lazy completion table.
 
-*** Processes now have an associated property list where programs can
-maintain process state and other per-process related information.
+  (lazy-completion-table VAR FUN &rest ARGS)
 
-The new functions process-get and process-put are used to access, add,
-and modify elements on this property list.
+If the completion table VAR is used for the first time (e.g., by passing VAR
+as an argument to `try-completion'), the function FUN is called with arguments
+ARGS. FUN must return the completion table that will be stored in VAR. If
+completion is requested in the minibuffer, FUN will be called in the buffer
+from which the minibuffer was entered. The return value of
+`lazy-completion-table' must be used to initialize the value of VAR.
 
-The new low-level functions process-plist and set-process-plist are
-used to access and replace the entire property list of a process.
++++
+** `load-history' can now have elements of the form (t . FUNNAME),
+which means FUNNAME was previously defined as an autoload (before the
+current file redefined it).
 
-*** Function accept-process-output now has an optional fourth arg
-`just-this-one'.  If non-nil, only output from the specified process
-is handled, suspending output from other processes.  If value is an
-integer, also inhibit running timers.  This feature is generally not
-recommended, but may be necessary for specific applications, such as
-speech synthesis.
++++
+** `load-history' now records (defun . FUNNAME) when a function is
+defined.  For a variable, it records just the variable name.
 
 ---
-*** Adaptive read buffering of subprocess output.
+** The variable `recursive-load-depth-limit' has been deleted.
+Emacs now signals an error if the same file is loaded with more
+than 3 levels of nesting.
 
-On some systems, when emacs reads the output from a subprocess, the
-output data is read in very small blocks, potentially resulting in
-very poor performance.  This behavior can be remedied to some extent
-by setting the new variable process-adaptive-read-buffering to a
-non-nil value (the default), as it will automatically delay reading
-from such processes, to allowing them to produce more output before
-emacs tries to read it.
++++
+** The function symbol-file can now search specifically for function or
+variable definitions.
 
 +++
-** Enhanced networking support.
+** `provide' and `featurep' now accept an optional second argument
+to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
+and runs any code associated with the provided feature.
 
-*** There is a new `make-network-process' function which supports
-opening of stream and datagram connections to a server, as well as
-create a stream or datagram server inside emacs.
++++
+** `declare' is now a macro.  This change was made mostly for
+documentation purposes and should have no real effect on Lisp code.
 
-- A server is started using :server t arg.
-- Datagram connection is selected using :type 'datagram arg.
-- A server can open on a random port using :service t arg.
-- Local sockets are supported using :family 'local arg.
-- Non-blocking connect is supported using :nowait t arg.
-- The process' property list may be initialized using :plist PLIST arg;
-  a copy of the server process' property list is automatically inherited
-  by new client processes created to handle incoming connections.
++++
+** Byte compiler changes:
 
-To test for the availability of a given feature, use featurep like this:
-  (featurep 'make-network-process '(:type datagram))
+*** The byte-compiler now displays the actual line and character
+position of errors, where possible.  Additionally, the form of its
+warning and error messages have been brought more in line with the
+output of other GNU tools.
 
-*** Original open-network-stream is now emulated using make-network-process.
+*** The new macro `with-no-warnings' suppresses all compiler warnings
+inside its body.  In terms of execution, it is equivalent to `progn'.
 
-*** New function open-network-stream-nowait.
+*** You can avoid warnings for possibly-undefined symbols with a
+simple convention that the compiler understands.  (This is mostly
+useful in code meant to be portable to different Emacs versions.)
+Write forms like the following, or code that macroexpands into such
+forms:
 
-This function initiates a non-blocking connect and returns immediately
-without waiting for the connection to be established.  It takes the
-filter and sentinel functions as arguments; when the non-blocking
-connect completes, the sentinel is called with a status string
-matching "open" or "failed".
+  (if (fboundp 'foo) <then> <else>)
+  (if (boundp 'foo) <then> <else)
 
-*** New function open-network-stream-server.
+In the first case, using `foo' as a function inside the <then> form
+won't produce a warning if it's not defined as a function, and in the
+second case, using `foo' as a variable won't produce a warning if it's
+unbound.  The test must be in exactly one of the above forms (after
+macro expansion), but such tests may be nested.  Note that `when' and
+`unless' expand to `if', but `cond' doesn't.
 
-This function creates a network server process for a TCP service.
-When a client connects to the specified service, a new subprocess
-is created to handle the new connection, and the sentinel function
-is called for the new process.
+*** `(featurep 'xemacs)' is treated by the compiler as nil.  This
+helps to avoid noisy compiler warnings in code meant to run under both
+Emacs and XEmacs and may sometimes make the result significantly more
+efficient.  Since byte code from recent versions of XEmacs won't
+generally run in Emacs and vice versa, this optimization doesn't lose
+you anything.
+
+*** The local variable `no-byte-compile' in elisp files is now obeyed.
+
+---
+** When a Lisp file uses CL functions at run-time, compiling the file
+now issues warnings about these calls, unless the file performs
+(require 'cl) when loaded.
+
++++
+** New function unsafep returns nil if the given Lisp form can't possibly
+do anything dangerous; otherwise it returns a reason why the form might be
+unsafe (calls dangerous function, alters global variable, etc).
 
-*** New functions process-datagram-address and set-process-datagram-address.
++++
+** There is a new Warnings facility; see the functions `warn'
+and `display-warning'.
 
-These functions are used with datagram-based network processes to get
-and set the current address of the remote partner.
+---
+** VC changes for backends:
+*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
+*** The new `find-version' backend function replaces the `destfile'
+parameter of the `checkout' backend function.
+Old code still works thanks to a default `find-version' behavior that
+uses the old `destfile' parameter.
 
-*** New function format-network-address.
++++
+** Already true in Emacs 21.1, but not emphasized clearly enough:
 
-This function reformats the lisp representation of a network address
-to a printable string.  For example, an IP address A.B.C.D and port
-number P is represented as a five element vector [A B C D P], and the
-printable string returned for this vector is "A.B.C.D:P".  See the doc
-string for other formatting options.
+Multibyte buffers can now faithfully record all 256 character codes
+from 0 to 255.  As a result, most of the past reasons to use unibyte
+buffers no longer exist.  We only know of three reasons to use them
+now:
 
-*** By default, the function process-contact still returns (HOST SERVICE)
-for a network process.  Using the new optional KEY arg, the complete list
-of network process properties or a specific property can be selected.
+1. If you prefer to use unibyte text all of the time.
 
-Using :local and :remote as the KEY, the address of the local or
-remote end-point is returned.  An Inet address is represented as a 5
-element vector, where the first 4 elements contain the IP address and
-the fifth is the port number.
+2. For reading files into temporary buffers, when you want to avoid
+the time it takes to convert the format.
 
-*** Network processes can now be stopped and restarted with
-`stop-process' and `continue-process'.  For a server process, no
-connections are accepted in the stopped state.  For a client process,
-no input is received in the stopped state.
+3. For binary files where format conversion would be pointless and
+wasteful.
 
-*** New function network-interface-list.
+---
+** set-buffer-file-coding-system now takes an additional argument,
+NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
 
-This function returns a list of network interface names and their
-current network addresses.
++++
+** The new variable `auto-coding-functions' lets you specify functions
+to examine a file being visited and deduce the proper coding system
+for it.  (If the coding system is detected incorrectly for a specific
+file, you can put a `coding:' tags to override it.)
 
-*** New function network-interface-info.
+---
+** The new function `merge-coding-systems' fills in unspecified aspects
+of one coding system from another coding system.
 
-This function returns the network address, hardware address, current
-status, and other information about a specific network interface.
+---
+** New coding system property `mime-text-unsuitable' indicates that
+the coding system's `mime-charset' is not suitable for MIME text
+parts, e.g. utf-16.
 
 +++
-** New function copy-tree.
+** New function `decode-coding-inserted-region' decodes a region as if
+it is read from a file without decoding.
 
 +++
-** New function substring-no-properties.
+** Function `translate-region' accepts also a char-table as TABLE
+argument.
 
 +++
-** New function minibuffer-selected-window.
+** The new translation table `translation-table-for-input'
+is used for customizing self-insertion.  The character to
+be inserted is translated through it.
 
-+++
-** New function `call-process-shell-command'.
+---
+** New CCL functions `lookup-character' and `lookup-integer' access
+hash tables defined by the Lisp function `define-translation-hash-table'.
 
 +++
-** New function `process-file'.
-
-This is similar to `call-process', but obeys file handlers.  The file
-handler is chosen based on default-directory.
+** The flags, width, and precision options for %-specifications in function
+`format' are now documented.  Some flags that were accepted but not
+implemented (such as "*") are no longer accepted.
 
 ---
-** The dummy function keys made by easymenu
-are now always lower case.  If you specify the
-menu item name "Ada", for instance, it uses `ada'
-as the "key" bound by that key binding.
+** New function `redirect-debugging-output' can be used to redirect
+debugging output on the stderr file handle to a file.
 
-This is relevant only if Lisp code looks for
-the bindings that were made with easymenu.
++++
+** `makehash' is now obsolete.  Use `make-hash-table' instead.
 
 +++
-** The function `commandp' takes an additional optional
-argument.  If it is non-nil, then `commandp' checks
-for a function that could be called with `call-interactively',
-and does not return t for keyboard macros.
+** The macro `with-syntax-table' does not copy the table any more.
 
----
-** master-mode.el implements a minor mode for scrolling a slave
-buffer without leaving your current buffer, the master buffer.
++++
+** New variables `gc-elapsed' and `gcs-done' provide extra information
+on garbage collection.
 
-It can be used by sql.el, for example: the SQL buffer is the master
-and its SQLi buffer is the slave.  This allows you to scroll the SQLi
-buffer containing the output from the SQL buffer containing the
-commands.
++++
+** New function `locale-info' accesses locale information.
 
-This is how to use sql.el and master.el together: the variable
-sql-buffer contains the slave buffer.  It is a local variable in the
-SQL buffer.
++++
+** The new variable `print-continuous-numbering', when non-nil, says
+that successive calls to print functions should use the same
+numberings for circular structure references.  This is only relevant
+when `print-circle' is non-nil.
 
-(add-hook 'sql-mode-hook
-   (function (lambda ()
-              (master-mode t)
-              (master-set-slave sql-buffer))))
-(add-hook 'sql-set-sqli-hook
-   (function (lambda ()
-              (master-set-slave sql-buffer))))
+When you bind `print-continuous-numbering' to t, you should
+also bind `print-number-table' to nil.
+
+---
+** When pure storage overflows while dumping, Emacs now prints how
+much pure storage it will approximately need.
 
 +++
 ** File local variables.
@@ -4266,34 +4196,47 @@ A file local variables list cannot specify a string with text
 properties--any specified text properties are discarded.
 
 +++
-** New function window-body-height.
-
-This is like window-height but does not count the mode line
-or the header line.
+** The variable `safe-local-eval-forms' specifies a list of forms that
+are ok to evaluate when they appear in an `eval' local variables
+specification.  Normally Emacs asks for confirmation before evaluating
+such a form, but if the form appears in this list, no confirmation is
+needed.
 
-+++
-** New function format-mode-line.
+---
+** If a function has a non-nil `safe-local-eval-function' property,
+that means it is ok to evaluate some calls to that function when it
+appears in an `eval' local variables specification.  If the property
+is t, then any form calling that function with constant arguments is
+ok.  If the property is a function or list of functions, they are called
+with the form as argument, and if any returns t, the form is ok to call.
 
-This returns the mode-line or header-line of the selected (or a
-specified) window as a string with or without text properties.
+If the form is not "ok to call", that means Emacs asks for
+confirmation as before.
 
 +++
-** Functions `get' and `plist-get' no longer signals an error for
-a malformed property list.  They also detect cyclic lists.
+** Renamed hooks to better follow the naming convention:
+find-file-hooks to find-file-hook,
+find-file-not-found-hooks to find-file-not-found-functions,
+write-file-hooks to write-file-functions,
+write-contents-hooks to write-contents-functions,
+x-lost-selection-hooks to x-lost-selection-functions,
+x-sent-selection-hooks to x-sent-selection-functions.
+Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
 
 +++
-** New functions `lax-plist-get' and `lax-plist-put'.
-
-These functions are like `plist-get' and `plist-put' except that they
-compare the property name using `equal' rather than `eq'.
+** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
+It was renamed to follow the naming conventions for abnormal hooks.  The old
+name remains available as an alias, but has been marked obsolete.
 
 +++
-** New function `tool-bar-local-item-from-menu'
+** The new function `file-remote-p' tests a file name and returns
+non-nil if it specifies a remote file (one that Emacs accesses using
+its own special methods and not directly through the file system).
+The value in that case is an identifier for the remote file system.
 
-The `tool-bar-add-item-from-menu' must not be used (as previously
-recommended) for making entries in the tool bar for local keymaps.
-Instead, use the function `tool-bar-local-item-from-menu', which lets
-you specify the map to use as an argument.
++++
+** Functions `get' and `plist-get' no longer signals an error for
+a malformed property list.  They also detect cyclic lists.
 
 +++
 ** The function `atan' now accepts an optional second argument.
@@ -4303,19 +4246,10 @@ angle in radians between the vector [X, Y] and the X axis.  (This is
 equivalent to the standard C library function `atan2'.)
 
 +++
-** You can now make a window as short as one line.
-
-A window that is just one line tall does not display either a mode
-line or a header line, even if the variables `mode-line-format' and
-`header-line-format' call for them.  A window that is two lines tall
-cannot display both a mode line and a header line at once; if the
-variables call for both, only the mode line actually appears.
+** New function format-mode-line.
 
-+++
-** The new frame parameter `tty-color-mode' specifies the mode to use
-for color support on character terminal frames.  Its value can be a
-number of colors to support, or a symbol.  See the Emacs Lisp
-Reference manual for more detailed documentation.
+This returns the mode-line or header-line of the selected (or a
+specified) window as a string with or without text properties.
 
 +++
 ** The new mode-line construct `(:propertize ELT PROPS...)' can be
@@ -4335,91 +4269,18 @@ indentation of keywords and forms in loop forms.
 
 ---
 ** Indentation of backquoted forms has been made customizable in the
-cl-indent package.  See the new user option `lisp-backquote-indentation'.
-
-+++
-** Already true in Emacs 21.1, but not emphasized clearly enough:
-
-Multibyte buffers can now faithfully record all 256 character codes
-from 0 to 255.  As a result, most of the past reasons to use unibyte
-buffers no longer exist.  We only know of three reasons to use them
-now:
-
-1. If you prefer to use unibyte text all of the time.
-
-2. For reading files into temporary buffers, when you want to avoid
-the time it takes to convert the format.
-
-3. For binary files where format conversion would be pointless and
-wasteful.
-
-+++
-** If text has a `keymap' property, that keymap takes precedence
-over minor mode keymaps.
-
-+++
-** A hex escape in a string forces the string to be multibyte.
-An octal escape makes it unibyte.
-
-+++
-** At the end of a command, point moves out from within invisible
-text, in the same way it moves out from within text covered by an
-image or composition property.
-
-This makes it generally unnecessary to mark invisible text as intangible.
-This is particularly good because the intangible property often has
-unexpected side-effects since the property applies to everything
-(including `goto-char', ...) whereas this new code is only run after
-post-command-hook and thus does not care about intermediate states.
-
-+++
-** field-beginning and field-end now accept an additional optional
-argument, LIMIT.
-
-+++
-** define-abbrev now accepts an optional argument SYSTEM-FLAG.  If
-non-nil, this marks the abbrev as a "system" abbrev, which means that
-it won't be stored in the user's abbrevs file if he saves the abbrevs.
-Major modes that predefine some abbrevs should always specify this
-flag.
-
----
-** Support for Mocklisp has been removed.
-
----
-** The function insert-string is now obsolete.
-
----
-** The precedence of file-name-handlers has been changed.
-Instead of blindly choosing the first handler that matches,
-find-file-name-handler now gives precedence to a file-name handler
-that matches near the end of the file name.  More specifically, the
-handler whose (match-beginning 0) is the largest is chosen.
-In case of ties, the old "first matched" rule applies.
-
----
-** Dense keymaps now handle inheritance correctly.
-Previously a dense keymap would hide all of the simple-char key
-bindings of the parent keymap.
-
----
-** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
-If a piece of text with that property gets contextually refontified
-(see jit-lock-defer-contextually), then all of that text will
-be refontified.  This is useful when the syntax of a textual element
-depends on text several lines further down (and when font-lock-multiline
-is not appropriate to solve that problem).  For example in Perl:
+cl-indent package.  See the new user option `lisp-backquote-indentation'.
 
-       s{
-               foo
-       }{
-               bar
-       }e
++++
+** field-beginning and field-end now accept an additional optional
+argument, LIMIT.
 
-Adding/removing the last `e' changes the `bar' from being a piece of
-text to being a piece of code, so you'd put a jit-lock-defer-multiline
-property over the second half of the command to force (deferred)
-refontification of `bar' whenever the `e' is added/removed.
++++
+** define-abbrev now accepts an optional argument SYSTEM-FLAG.  If
+non-nil, this marks the abbrev as a "system" abbrev, which means that
+it won't be stored in the user's abbrevs file if he saves the abbrevs.
+Major modes that predefine some abbrevs should always specify this
+flag.
 
 ---
 ** describe-vector now takes a second argument `describer' which is
@@ -4429,169 +4290,226 @@ called to print the entries' values.  It defaults to `princ'.
 ** defcustom and other custom declarations now use a default group
 (the last prior group defined in the same file) when no :group was given.
 
+---
+** The new customization type `float' specifies numbers with floating
+point (no integers are allowed).
+
 +++
 ** emacsserver now runs pre-command-hook and post-command-hook when
 it receives a request from emacsclient.
 
 ---
-** The variable `recursive-load-depth-limit' has been deleted.
-Emacs now signals an error if the same file is loaded with more
-than 3 levels of nesting.
+** New function `text-clone-create'.  Text clones are chunks of text
+that are kept identical by transparently propagating changes from one
+clone to the other.
 
----
-** If a major mode function has a non-nil `no-clone-indirect'
-property, `clone-indirect-buffer' signals an error if you use
-it in that buffer.
++++
+** Functions `user-uid' and `user-real-uid' now return floats if the
+user UID doesn't fit in a Lisp integer.  Function `user-full-name'
+accepts a float as UID parameter.
 
----
-** In `replace-match', the replacement text no longer inherits
-properties from surrounding text.
++++
+** New vars `exec-suffixes' and `load-suffixes' used when
+searching for an executable resp. an elisp file.
 
 +++
-** The list returned by `(match-data t)' now has the buffer as a final
-element, if the last match was on a buffer.  `set-match-data'
-accepts such a list for restoring the match state.
+** Functions from `post-gc-hook' are run at the end of garbage
+collection.  The hook is run with GC inhibited, so use it with care.
 
 +++
-** New function `buffer-local-value'.
+** The variables most-positive-fixnum and most-negative-fixnum
+hold the largest and smallest possible integer values.
 
-This function returns the buffer-local binding of VARIABLE (a symbol)
-in buffer BUFFER.  If VARIABLE does not have a buffer-local binding in
-buffer BUFFER, it returns the default value of VARIABLE instead.
+---
+** On MS Windows, locale-coding-system is used to interact with the OS.
+The Windows specific variable w32-system-coding-system, which was
+formerly used for that purpose is now an alias for locale-coding-system.
 
 ---
-** New function `text-clone-create'.  Text clones are chunks of text
-that are kept identical by transparently propagating changes from one
-clone to the other.
+** New function x-send-client-message sends a client message when
+running under X.
 
-+++
-** font-lock can manage arbitrary text-properties beside `face'.
-*** the FACENAME returned in font-lock-keywords can be a list
-of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
-other properties than `face'.
-*** font-lock-extra-managed-props can be set to make sure those extra
-properties are automatically cleaned up by font-lock.
+---
+** easy-mmode-define-global-mode has been renamed to
+define-global-minor-mode.  The old name remains as an alias.
 
 ---
-** The special treatment of faces whose names are of the form `fg:COLOR'
-or `bg:COLOR' has been removed.  Lisp programs should use the
-`defface' facility for defining faces with specific colors, or use
-the feature of specifying the face attributes :foreground and :background
-directly in the `face' property instead of using a named face.
+** To manipulate the File menu using easy-menu, you must specify the
+proper name "file".  In previous Emacs versions, you had to specify
+"files", even though the menu item itself was changed to say "File"
+several versions ago.
+
+---
+** The dummy function keys made by easymenu are now always lower case.
+If you specify the menu item name "Ada", for instance, it uses `ada'
+as the "key" bound by that key binding.
+
+This is relevant only if Lisp code looks for the bindings that were
+made with easymenu.
+
+---
+** `easy-menu-define' now allows you to use nil for the symbol name
+if you don't need to give the menu a name.  If you install the menu
+into other keymaps right away (MAPS is non-nil), it usually doesn't
+need to have a name.
+
+** New functions, macros, and commands:
 
 +++
-** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
-are used by define-derived-mode to make sure the mode hook for the
-parent mode is run at the end of the child mode.
+*** The new function `assoc-string' replaces `assoc-ignore-case' and
+`assoc-ignore-representation', which are still available, but have
+been declared obsolete.
 
 +++
-** define-minor-mode now accepts arbitrary additional keyword arguments
-and simply passes them to defcustom, if applicable.
+*** The new function `buffer-local-value' returns the buffer-local
+binding of VARIABLE (a symbol) in buffer BUFFER.  If VARIABLE does not
+have a buffer-local binding in buffer BUFFER, it returns the default
+value of VARIABLE instead.
 
 +++
-** define-derived-mode by default creates a new empty abbrev table.
-It does not copy abbrevs from the parent mode's abbrev table.
+*** The new function `called-interactively-p' does what many people
+have mistakenly believed `interactive-p' did: it returns t if the
+calling function was called through `call-interactively'.  This should
+only be used when you cannot add a new "interactive" argument to the
+command.
+
+*** The new function copy-abbrev-table returns a new abbrev table that
+is a copy of a given abbrev table.
 
 +++
-** `provide' and `featurep' now accept an optional second argument
-to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
-and runs any code associated with the provided feature.
+*** New function copy-tree makes a copy of a tree, recursively copying
+both cars and cdrs.
 
 +++
-** Functions `file-name-sans-extension' and `file-name-extension' now
-ignore the leading dots in file names, so that file names such as
-`.emacs' are treated as extensionless.
+*** New function `delete-dups' destructively removes `equal'
+duplicates from a list.  Of several `equal' occurrences of an element
+in the list, the first one is kept.
 
 +++
-** Functions `user-uid' and `user-real-uid' now return floats if the
-user UID doesn't fit in a Lisp integer.  Function `user-full-name'
-accepts a float as UID parameter.
+*** The new function `filter-buffer-substring' extracts a buffer
+substring, passes it through a set of filter functions, and returns
+the filtered substring.  It is used instead of `buffer-substring' or
+`delete-and-extract-region' when copying text into a user-accessible
+data structure, like the kill-ring, X clipboard, or a register.  The
+list of filter function is specified by the new variable
+`buffer-substring-filters'.  For example, Longlines mode uses
+`buffer-substring-filters' to remove soft newlines from the copied
+text.
 
----
-** `define-key-after' now accepts keys longer than 1.
++++
+*** New functions frame-current-scroll-bars and window-current-scroll-bars.
+
+These functions return the current locations of the vertical and
+horizontal scroll bars in a frame or window.
 
 +++
-** The local variable `no-byte-compile' in elisp files is now obeyed.
+*** The new primitive `get-internal-run-time' returns the processor
+run time used by Emacs since start-up.
 
 +++
-** The Emacs Lisp byte-compiler now displays the actual line and
-character position of errors, where possible.  Additionally, the form
-of its warning and error messages have been brought more in line with
-the output of other GNU tools.
+*** The new function insert-buffer-substring-as-yank works like
+`insert-buffer-substring', but removes the text properties in the
+`yank-excluded-properties' list.
 
 +++
-** New functions `keymap-prompt' and `current-active-maps'.
+*** The new function insert-buffer-substring-no-properties is like
+insert-buffer-substring, but removes all text properties from the
+inserted substring.
 
----
-** New function `describe-buffer-bindings'.
++++
+*** The new functions `lax-plist-get' and `lax-plist-put' are like
+`plist-get' and `plist-put', except that they compare the property
+name using `equal' rather than `eq'.
 
 +++
-** New vars `exec-suffixes' and `load-suffixes' used when
-searching for an executable resp. an elisp file.
+*** New function `line-number-at-pos' returns the line number of the
+current line in the current buffer, or if optional buffer position is
+given, line number of corresponding line in current buffer.
 
 +++
-** Variable aliases have been implemented:
+*** New function `looking-back' checks whether a regular expression matches
+the text before point.  Specifying the LIMIT argument bounds how far
+back the match can start; this is a way to keep it from taking too long.
 
-*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
++++
+*** New function `macroexpand-all' expands all macros in a form.
+It is similar to the Common-Lisp function of the same name.
+One difference is that it guarantees to return the original argument
+if no expansion is done, which may be tested using `eq'.
 
-This function defines the symbol ALIAS-VAR as a variable alias for
-symbol BASE-VAR.  This means that retrieving the value of ALIAS-VAR
-returns the value of BASE-VAR, and changing the value of ALIAS-VAR
-changes the value of BASE-VAR.
+*** The new function `minibufferp' returns non-nil if its optional
+buffer argument is a minibuffer.  If the argument is omitted, it
+defaults to the current buffer.
 
-DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
-the same documentation as BASE-VAR.
++++
+*** New function minibuffer-selected-window returns the window which
+was selected when entering the minibuffer.
 
-*** indirect-variable VARIABLE
++++
+*** The new function `modify-all-frames-parameters' modifies parameters
+for all (existing and future) frames.
 
-This function returns the variable at the end of the chain of aliases
-of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
-defined as an alias, the function returns VARIABLE.
++++
+*** New functions posn-at-point and posn-at-x-y return
+click-event-style position information for a given visible buffer
+position or for a given window pixel coordinate.
 
-It might be noteworthy that variables aliases work for all kinds of
-variables, including buffer-local and frame-local variables.
+---
+*** New function quail-find-key returns a list of keys to type in the
+current input method to input a character.
 
 +++
-** Functions from `post-gc-hook' are run at the end of garbage
-collection.  The hook is run with GC inhibited, so use it with care.
+*** The new function `rassq-delete-all' deletes all elements from an
+alist whose cdr is `eq' to a specified value.
 
 +++
-** If the second argument to `copy-file' is the name of a directory,
-the file is copied to that directory instead of signaling an error.
+*** The new function remove-list-of-text-properties is almost the same
+as `remove-text-properties'.  The only difference is that it takes a
+list of property names as argument rather than a property list.
 
 +++
-** The variables most-positive-fixnum and most-negative-fixnum
-hold the largest and smallest possible integer values.
+*** The new primitive `set-file-times' sets a file's access and
+modification times.  Magic file name handlers can handle this
+operation.
 
----
-** On MS Windows, locale-coding-system is used to interact with the OS.
-The Windows specific variable w32-system-coding-system, which was
-formerly used for that purpose is now an alias for locale-coding-system.
++++
+*** New function substring-no-properties returns a substring without
+text properties.
 
----
-** Functions y-or-n-p, read-char, read-key-sequence and the like, that
-display a prompt but don't use the minibuffer, now display the prompt
-using the text properties (esp. the face) of the prompt string.
++++
+*** The new function syntax-after returns the syntax code
+of the character after a specified buffer position, taking account
+of text properties as well as the character code.
 
----
-** New function x-send-client-message sends a client message when
-running under X.
++++
+*** `syntax-class' extracts the class of a syntax code (as returned
+by syntax-after).
 
 +++
-** Arguments for remove-overlays are now optional, so that you can remove
-all overlays in the buffer by just calling (remove-overlay).
+*** New function `tool-bar-local-item-from-menu'
 
-** New packages:
+The `tool-bar-add-item-from-menu' must not be used (as previously
+recommended) for making entries in the tool bar for local keymaps.
+Instead, use the function `tool-bar-local-item-from-menu', which lets
+you specify the map to use as an argument.
 
 +++
-*** The new package gdb-ui.el provides an enhanced graphical interface to
-GDB. You can interact with GDB through the GUD buffer in the usual way, but
-there are also further buffers which control the execution and describe the
-state of your program.  It separates the input/output of your program from
-that of GDB and watches expressions in the speedbar.  It also uses features of
-Emacs 21 such as the display margin for breakpoints, and the toolbar.
+*** New function window-body-height.
+This is like window-height but does not count the mode line
+or the header line.
 
-Use M-x gdba to start GDB-UI.
++++
+*** (while-no-input BODY...) runs BODY, but only so long as no input
+arrives.  If the user types or clicks anything, BODY stops as if a
+quit had occurred.  while-no-input returns the value of BODY, if BODY
+finishes.  It returns nil if BODY was aborted.
+
++++
+*** New macro with-local-quit temporarily sets inhibit-quit to nil for use
+around potentially blocking or long-running code in timers
+and post-command-hooks.
+
+** New packages:
 
 *** The new package syntax.el provides an efficient way to find the
 current syntactic context (as returned by parse-partial-sexp).
@@ -4611,6 +4529,54 @@ implemented by widget.el, and can be used by lisp code that doesn't
 require the full power of widgets.  Emacs uses buttons for such things
 as help and apropos buffers.
 
+---
+*** master-mode.el implements a minor mode for scrolling a slave
+buffer without leaving your current buffer, the master buffer.
+
+It can be used by sql.el, for example: the SQL buffer is the master
+and its SQLi buffer is the slave.  This allows you to scroll the SQLi
+buffer containing the output from the SQL buffer containing the
+commands.
+
+This is how to use sql.el and master.el together: the variable
+sql-buffer contains the slave buffer.  It is a local variable in the
+SQL buffer.
+
+(add-hook 'sql-mode-hook
+   (function (lambda ()
+              (master-mode t)
+              (master-set-slave sql-buffer))))
+(add-hook 'sql-set-sqli-hook
+   (function (lambda ()
+              (master-set-slave sql-buffer))))
+
++++
+*** New Lisp library testcover.el works with edebug to help you determine
+whether you've tested all your Lisp code.  Function testcover-start
+instruments all functions in a given file.  Then test your code.  Function
+testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
+show where coverage is lacking.  Command testcover-next-mark (bind it to
+a key!) will move point forward to the next spot that has a splotch.
+
+Normally, a red splotch indicates the form was never completely
+evaluated; a brown splotch means it always evaluated to the same
+value.  The red splotches are skipped for forms that can't possibly
+complete their evaluation, such as `error'.  The brown splotches are
+skipped for forms that are expected to always evaluate to the same
+value, such as (setq x 14).
+
+For difficult cases, you can add do-nothing macros to your code to
+help out the test coverage tool.  The macro `noreturn' suppresses a
+red splotch.  It is an error if the argument to `noreturn' does
+return.  The macro 1value suppresses a brown splotch for its argument.
+This macro is a no-op except during test-coverage -- then it signals
+an error if the argument actually returns differing values.
+
+---
+** Support for Mocklisp has been removed.
+
+---
+** The function insert-string is now obsolete.
 \f
 * Installation changes in Emacs 21.3