emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/etc/NEWS


From: Richard M . Stallman
Subject: [Emacs-diffs] Changes to emacs/etc/NEWS
Date: Mon, 02 May 2005 16:58:40 -0400

Index: emacs/etc/NEWS
diff -c emacs/etc/NEWS:1.1174 emacs/etc/NEWS:1.1175
*** emacs/etc/NEWS:1.1174       Mon May  2 11:36:01 2005
--- emacs/etc/NEWS      Mon May  2 20:58:39 2005
***************
*** 18,34 ****
  * 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'.
  
  ---
! ** 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.
  
  ---
  ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
--- 18,29 ----
  * Installation Changes in Emacs 22.1
  
  ---
! ** Emacs now supports new configure options `--program-prefix',
! `--program-suffix' and `--program-transform-name' that affect the names of
! installed programs.
  
  ---
! ** Emacs can now be built without sound support.
  
  ---
  ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
***************
*** 36,52 ****
  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
  place for game scores to be stored.  This may be controlled by the
--- 31,39 ----
***************
*** 78,83 ****
--- 65,86 ----
  (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.
  
  ---
***************
*** 99,197 ****
  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.
  
  
  * 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.
  
  +++
! ** 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.
  
  +++
! ** `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)
  
  +++
! ** Auto Compression mode is now enabled by default.
! 
! ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
  
! 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.
  
! ---
! ** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
  
! ---
! ** 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.
  
! ---
! ** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
  
! ---
! ** 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).
  
  +++
! ** 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.
  
  +++
! ** M-o now is the prefix key for setting text properties;
! M-o M-o requests refontification.
  
  +++
  ** 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.
  
  +++
  ** C-u M-x goto-line now switches to the most recent previous buffer,
--- 102,180 ----
  the files mac/README and mac/INSTALL for build instructions.
  
  ---
  ** Building with -DENABLE_CHECKING does not automatically build with union
  types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
  
  
  * Changes in Emacs 22.1
  
! ** 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.
  
  +++
! ** New command line option -D or --basic-display.
! Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
! the blinking cursor.
  
  +++
! ** New command line option -nbc or --no-blinking-cursor disables
! the blinking cursor on graphical terminals.
  
  +++
! ** The command line option --no-windows has been changed to
! --no-window-system.  The old one still works, but is deprecated.
  
! +++
! ** 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.
  
! +++
! ** 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.)
  
! +++
! ** 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').
  
! +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** 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'.
  
  +++
! ** 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.
  
  +++
! ** 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,285 ****
  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.
  
  +++
! ** Control characters and escape glyphs are now shown in the new
! escape-glyph face.
  
  +++
! ** 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.
  
  ---
! ** 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.
  
! 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'.
  
  +++
! ** 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 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.
  
  +++
  ** When the undo information of the current command gets really large
--- 183,228 ----
  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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** `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 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.
  
! `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.
  
! `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.
  
! Setting these variables directly does not take effect until next time
! the Buffers menu is regenerated.
  
  +++
! ** 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.
  
  +++
! ** `undo-only' does an undo which does not redo any previous undo.
  
  +++
  ** When the undo information of the current command gets really large
***************
*** 287,644 ****
  you about it.
  
  +++
! ** line-move-ignore-invisible now defaults to t.
  
! +++
! ** In Outline mode, hide-body no longer hides lines at the top
! of the file that precede the first header line.
  
  +++
! ** 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 processing a local variables list, Emacs strips the prefix and
! suffix are from every line before processing all the lines.
  
  +++
! ** `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.
  
  +++
! ** 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 terminal emulation code in term.el has been improved, it can
! run most curses applications now.
  
! ** New features in evaluation commands
  
  +++
! *** The function `eval-defun' (C-M-x) called on defface reinitializes
! the face to the value specified in the defface expression.
  
  +++
! *** 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.
  
  +++
! ** New command quail-show-key shows what key (or key sequence) to type
! in the current input method to input a character at point.
  
  +++
! ** 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.
  
! `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.
  
! `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.
  
  +++
! ** You can now use next-error (C-x `) and previous-error to advance to
! the next/previous matching line found by M-x occur.
  
  +++
! ** Telnet now prompts you for a port number with C-u M-x telnet.
  
  +++
! ** 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.
  
! +++
! ** New command line option -D or --basic-display.
  
! Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
! the blinking cursor.
  
  +++
! ** New command line option -nbc or --no-blinking-cursor disables
! the blinking cursor on graphical terminals.
  
  +++
! ** 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).
  
  ---
  ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  ---
! ** 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').
  
! 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.
  
! 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 new file etc/compilation.txt gives examples of each type of message.
  
! ** Compilation mode enhancements:
  
  +++
! *** 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.
  
  +++
! ** Grep has been decoupled from compilation mode setup.
  
! ---
! *** There's a new separate package grep.el.
  
! ---
! *** M-x grep has been adapted to new compile
  
! 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.
  
! ---
! *** Grep commands now have their own submenu and customization group.
  
  +++
! *** `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.
  
  +++
! *** 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 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.
  
  +++
! ** 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'.
  
  +++
! ** 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.
  
! +++
! ** M-x diff uses diff-mode instead of compilation-mode.
  
! +++
! ** M-x compare-windows now can automatically skip non-matching text to
! resync points in both windows.
  
- ---
- ** 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
  
! ---
! *** Gnus now includes Sieve and PGG
! Sieve is a library for managing Sieve scripts.  PGG is a library to handle
! PGP/MIME.
  
! ---
! *** 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.
  
! +++
! ** Desktop package
  
  +++
! *** Desktop saving is now a minor mode, desktop-save-mode. Variable
! desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
! saving.
  
  ---
! *** Buffers are saved in the desktop file in the same order as that in the
! buffer list.
  
  +++
! *** The desktop package can be customized to restore only some buffers 
immediately,
! remaining buffers are restored lazily (when Emacs is idle).
  
  +++
! *** 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.
  
! ---
! *** 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.
  
  +++
! *** New command line option --no-desktop
  
! ---
! *** 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.
  
  +++
! ** 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
  
  +++
! ** 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.
  
! The new user option 'overflow-newline-into-fringe' may be set to nil to
! revert to the old behavior of continuing such lines.
  
  +++
  ** The buffer boundaries (i.e. first and last line in the buffer) may
--- 230,551 ----
  you about it.
  
  +++
! ** M-SPC (just-one-space) when given a numeric argument N
! converts whitespace around point to N spaces.
  
! ---
! ** New command `kill-whole-line' kills an entire line at once.
! By default, it is bound to C-S-<backspace>.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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 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.
  
! The variable `automatic-hscrolling' was renamed to
! `auto-hscroll-mode'.  The old name is still available as an alias.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** find-file-read-only visits multiple files in read-only mode,
! when the file name contains wildcard characters.
  
  +++
! ** find-alternate-file replaces the current file with multiple files,
! when the file name contains wildcard characters.
  
  +++
! ** Auto Compression mode is now enabled by default.
  
! ---
! ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
  
! 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.
  
! +++
! ** 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.)
  
  +++
! ** 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 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'.
  
! ---
! ** 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).
  
  +++
! ** The max size of buffers and integers has been doubled.
! On 32bit machines, it is now 256M (i.e. 268435455).
  
  +++
! ** If the user visits a file larger than `large-file-warning-threshold',
! Emacs prompts her for confirmation.
  
  +++
! ** 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.
  
  ---
! ** Enhanced visual feedback in *Completions* buffer.
  
! Completions lists use faces to highlight what all completions
! have in common and where they begin to differ.
  
! 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.
  
! +++
! ** 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.
  
! +++
! ** 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 `history-delete-duplicates'.
! If set to t when adding a new history element, all previous identical
! elements are deleted.
  
  +++
! ** 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.
  
! We provide two sample predicates, fill-single-word-nobreak-p and
! fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
  
! +++
! ** 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 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.
  
  +++
! ** Control characters and escape glyphs are now shown in the new
! escape-glyph face.
  
  +++
! ** Non-breaking space and hyphens are now prefixed with an escape
! character, unless the new user variable `show-nonbreak-escape' is set
! to nil.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! ---
! ** JIT-lock changes
  
! *** 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.
  
  
! *** 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.
  
  +++
! ** line-move-ignore-invisible now defaults to t.
  
  ---
! ** 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".
  
  +++
! ** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
! now controlled by the variable `blink-cursor-alist'.
  
  +++
! ** The X resource cursorBlink can be used to turn off cursor blinking.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** The variable `cursor-in-non-selected-windows' can now be set to any
! of the recognized cursor types.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** 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,1651 ****
  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.
  
! +++
! ** 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 `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'.
  
  +++
! ** 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 max size of buffers and integers has been doubled.
! On 32bit machines, it is now 256M (i.e. 268435455).
  
  +++
! ** 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.
  
! ---
! ** sql changes.
  
! *** 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 following values are supported:
  
!     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)))
  
! *** 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'.
  
! *** 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.
  
! 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.
  
! *** Postgres support is enhanced.
! Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
! the username and the pgsql `-U' option is added.
  
! *** MySQL support is enhanced.
! Keyword higlighting of MySql 4.0 is implemented.
  
! *** Imenu support has been enhanced to locate tables, views, indexes,
! packages, procedures, functions, triggers, sequences, rules, and
! defaults.
  
! *** Added SQL->Start SQLi Session menu entry which calls the
! appropriate sql-interactive-mode wrapper for the current setting of
! `sql-product'.
  
  ---
! ** M-x view-file and commands that use it now avoid interfering
! with special modes such as Tar mode.
  
! ** Enhancements to apropos commands:
  
  +++
! *** 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 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 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 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 command `kill-whole-line' kills an entire line at once.
! By default, it is bound to C-S-<backspace>.
  
  ---
  ** 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.
  
! ** Dired mode:
  
! ---
! *** 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.
  
  +++
! *** New Dired command `dired-compare-directories' marks files
! with different file attributes in two dired buffers.
  
  +++
! *** New Dired command `dired-do-touch' (bound to T) changes timestamps
! of marked files with the value entered in the minibuffer.
  
  +++
! *** 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'.
  
  +++
! *** 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.
  
  +++
! ** Dired-x:
  
  +++
! *** 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.
  
  +++
! ** find-file-read-only visits multiple files in read-only mode,
! when the file name contains wildcard characters.
  
  +++
! ** find-alternate-file replaces the current file with multiple files,
! when the file name contains wildcard characters.
  
! ** 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').
  
  ---
! *** 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'.
  
! ** Info mode:
  
  +++
! *** A numeric prefix argument of `info' selects an Info buffer
! with the number appended to the *info* buffer name (e.g. "*info*<2>").
  
! ---
! *** 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.
  
! *** 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.
  
! *** 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.
  
  ---
! *** 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.
  
  ---
! *** 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.
  
  ---
! *** Info-index offers completion.
  
  ---
! ** 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.
  
! *** 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).
  
! *** In BibTeX mode the command fill-paragraph (bound to M-q) fills
! individual fields of a BibTeX entry.
  
! *** The new variables bibtex-files and bibtex-file-path define a set
! of BibTeX files that are searched for entry keys.
  
! *** The new command bibtex-validate-globally checks for duplicate keys
! in multiple BibTeX files.
  
! *** The new command bibtex-copy-summary-as-kill pushes summary
! of BibTeX entry to kill ring (bound to C-c C-t).
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** Under X, mouse-wheel-mode is turned on by default.
  
  +++
! ** 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.
  
  +++
! ** The X resource cursorBlink can be used to turn off cursor blinking.
  
  +++
! ** `undo-only' does an undo which does not redo any previous undo.
  
  ---
! ** `uniquify-strip-common-suffix' tells uniquify to prefer
! `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
  
  +++
! ** If the user visits a file larger than `large-file-warning-threshold',
! Emacs prompts her for confirmation.
  
! ---
! ** A UTF-7 coding system is available in the library `utf-7'.
  
  ---
! ** GUD mode has its own tool bar for controlling execution of the inferior
! and other common debugger commands.
  
! ---
! ** recentf changes.
  
! 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 `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.
  
! 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.
  
! 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 default for the paper size (variable ps-paper-type) is taken
! from the locale.
  
  +++
! ** 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.
  
! ---
! ** partial-completion-mode now does partial completion on directory names.
  
  ---
! ** 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.
  
  ---
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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
! "~/".
  
  +++
! ** 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 `revert-buffer-with-coding-system' (C-x RET r)
! revisits the current file using a coding system that you specify.
  
  +++
! ** The new command `recode-file-name' changes the encoding of the name
! of a file.
  
  ---
! ** `ps-print' can now print characters from the mule-unicode charsets.
  
! 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 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.
  
! `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.
  
! `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.
  
! Setting these variables directly does not take effect until next time
! the Buffers menu is regenerated.
  
  +++
! ** 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 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.)
  
  ---
! ** 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.
  
  ---
! ** 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.
  
! ---
! ** 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.
  
  ---
! ** 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 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.
  
  ---
! ** New variable `utf-translate-cjk-unicode-range' controls which
! Unicode characters to translate in `utf-translate-cjk-mode'.
  
! ---
! ** 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 command `ucs-insert' inserts a character specified by its
! unicode.
  
  +++
! ** 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.
  
! 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.
  
! ---
! ** 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.
  
  +++
! ** 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.
  
! ---
! ** 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).
  
! ---
! ** 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).
  
  +++
! ** 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-*-*-*-*-*-*,*"'.
  
! ---
! ** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
! ESC, like they do for Gtk+, Mac and W32.
  
! ---
! ** Dialogs and menus pop down when pressing C-g.
  
! ---
! ** 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 file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
! disabled by customizing the variable `use-file-dialog'.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
! now controlled by the variable `blink-cursor-alist'.
  
  +++
! ** 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.
  
! 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.
  
! ---
! ** PO translation files are decoded according to their MIME headers
! when Emacs visits them.
  
  ---
! ** The game `mpuz' is enhanced.
  
! `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.
  
! ---
! ** 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.
  
! +++
! ** 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 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.
  
! The variable `automatic-hscrolling' was renamed to
! `auto-hscroll-mode'.  The old name is still available as an alias.
  
! ** TeX modes:
  
! +++
! *** C-c C-c prompts for a command to run, and tries to offer a good default.
  
  +++
! *** 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 major mode doctex-mode for *.dtx files.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** 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 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** query-replace uses isearch lazy highlighting when the new user option
! `query-replace-lazy-highlight' is non-nil.
  
! ---
! ** The current match in query-replace is highlighted in new face
! `query-replace' which by default inherits from isearch face.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! ---
! ** 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".
  
! +++
! ** 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'.
  
! ---
! ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
  
! +++
! ** 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.
  
! Turning off PC-Selection mode restores the global key bindings
! that were replaced by turning on the 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').
  
! ** Changes in support of colors on character terminals
  
! +++
! *** 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.
  
! ---
! *** 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.
  
! +++
! *** 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.
  
! ---
! *** There's a new support for colors on `rxvt' terminal emulator.
  
! +++
! ** 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.)
  
! ---
! ** Emacs now tries to set up buffer coding systems for HTML/XML files
! automatically.
  
! +++
! ** 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.
  
! +++
! ** Changes in C-h bindings:
  
! C-h e displays the *Messages* buffer.
  
! C-h followed by a control character is used for displaying files
!     that do not change:
  
! C-h C-f displays the FAQ.
! C-h C-e displays the PROBLEMS file.
  
! 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.
  
! C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
  
! - C-h c and C-h k report the actual command (after possible remapping)
!   run by the key sequence.
  
! - 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.
  
! For example, if C-k is bound to kill-line, and kill-line is remapped
! to new-kill-line, these commands now report:
  
! - C-h c and C-h k C-k reports:
!   C-k runs the command new-kill-line
  
! - C-h w and C-h f kill-line reports:
!   kill-line is remapped to new-kill-line which is on C-k, <deleteline>
  
! - C-h w and C-h f new-kill-line reports:
!   new-kill-line is on C-k
  
  +++
! ** 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.
  
  +++
! ** 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'.
  
  +++
! ** C-y in incremental search now grabs the next line if point is already
! at the end of a line.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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 `history-delete-duplicates'.
! If set to t when adding a new history element, all previous identical
! elements are deleted.
  
! +++
! ** 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.
  
! +++
! ** 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'.
  
! +++
! ** 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 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.
  
! +++
! ** 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 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 improvements for jdb:
  
  *** Search for source files using jdb classpath and class
--- 569,1727 ----
  left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
  
  +++
! ** 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.
  
! The new user option 'overflow-newline-into-fringe' may be set to nil to
! revert to the old behavior of continuing such lines.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** `special-display-buffer-names' and `special-display-regexps' now
! understand two new boolean pseudo-frame-parameters `same-frame' and
! `same-window'.
  
  +++
! ** Changes in C-h bindings:
  
! C-h e displays the *Messages* buffer.
  
! C-h followed by a control character is used for displaying files
!     that do not change:
  
! C-h C-f displays the FAQ.
! C-h C-e displays the PROBLEMS file.
  
! 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.
  
! C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
  
! - C-h c and C-h k report the actual command (after possible remapping)
!   run by the key sequence.
  
! - 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.
  
! For example, if C-k is bound to kill-line, and kill-line is remapped
! to new-kill-line, these commands now report:
  
! - C-h c and C-h k C-k reports:
!   C-k runs the command new-kill-line
  
! - C-h w and C-h f kill-line reports:
!   kill-line is remapped to new-kill-line which is on C-k, <deleteline>
  
! - C-h w and C-h f new-kill-line reports:
!   new-kill-line is on C-k
  
  ---
! ** 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'.
  
! +++
! ** 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).
  
  +++
! ** 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 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.
  
  +++
! ** 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 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 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'.
  
  +++
! ** In processing a local variables list, Emacs strips the prefix and
! suffix are from every line before processing all the lines.
  
! +++
! ** `apply-macro-to-region-lines' now operates on all lines that begin
! in the region, rather than on all complete lines in the region.
  
! +++
! ** 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'.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** Under X, mouse-wheel-mode is turned on by default.
  
  +++
! ** 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 `$$'.
  
  +++
! ** 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).
  
  +++
! ** The default for the paper size (variable ps-paper-type) is taken
! from the locale.
  
  +++
! ** 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'.
  
  +++
! ** The new command `revert-buffer-with-coding-system' (C-x RET r)
! revisits the current file using a coding system that you specify.
  
! +++
! ** New command `recode-region' decodes the region again by a specified
! coding system.
  
  +++
! ** The new command `recode-file-name' changes the encoding of the name
! of a file.
  
  ---
! ** New command `ucs-insert' inserts a character specified by its
! unicode.
  
! +++
! ** 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.
  
  +++
! ** New command quail-show-key shows what key (or key sequence) to type
! in the current input method to input a character at point.
  
! +++
! ** 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.
  
! 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.
  
  ---
! ** 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.
  
  ---
! ** 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.)
  
  ---
! ** 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.
  
  ---
! ** New input method chinese-sisheng for inputting Chinese Pinyin
! characters.
  
! ---
! ** 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)
  
! ---
! ** 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.
  
! ---
! ** A UTF-7 coding system is available in the library `utf-7'.
  
! ---
! ** 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.
  
! ---
! ** 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.
  
! ---
! ** 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.
  
! ---
! ** New variable `utf-translate-cjk-unicode-range' controls which
! Unicode characters to translate in `utf-translate-cjk-mode'.
  
! ---
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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'.
  
! +++
! ** C-y in incremental search now grabs the next line if point is already
! at the end of a line.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** query-replace uses isearch lazy highlighting when the new user option
! `query-replace-lazy-highlight' is non-nil.
  
! ---
! ** The current match in query-replace is highlighted in new face
! `query-replace' which by default inherits from isearch face.
  
  +++
! ** M-x compare-windows now can automatically skip non-matching text to
! resync points in both windows.
  
  +++
! ** 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.
  
  ---
! ** 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.
  
  +++
! ** 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.
  
! ** Dired mode:
  
  ---
! *** 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.
  
! +++
! *** New Dired command `dired-compare-directories' marks files
! with different file attributes in two dired buffers.
  
! +++
! *** New Dired command `dired-do-touch' (bound to T) changes timestamps
! of marked files with the value entered in the minibuffer.
  
! +++
! *** 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'.
  
! +++
! *** 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.
  
! +++
! ** 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.
  
  +++
! ** Dired-x:
  
  +++
! *** 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.
  
! +++
! ** In Outline mode, hide-body no longer hides lines at the top
! of the file that precede the first header line.
  
! +++
! ** 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 terminal emulation code in term.el has been improved, it can
! run most curses applications now.
  
  ---
! ** 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.
  
! `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.
  
! `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.
  
  +++
! ** 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.
  
! ** `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.
  
  +++
! ** Telnet now prompts you for a port number with C-u M-x telnet.
  
  ---
! ** 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').
  
! 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.
  
! 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 new file etc/compilation.txt gives examples of each type of message.
  
! ** Compilation mode enhancements:
  
  +++
! *** 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.
  
! +++
! ** Grep has been decoupled from compilation mode setup.
  
  ---
! *** There's a new separate package grep.el.
  
  ---
! *** M-x grep has been adapted to new compile
  
! 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.
  
  ---
! *** Grep commands now have their own submenu and customization group.
  
! +++
! *** `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.
  
! +++
! *** 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 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.
  
  +++
! ** 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.
  
! +++
! ** 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'.
  
! +++
! ** 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.
  
  +++
! ** M-x diff uses diff-mode instead of compilation-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.
  
! +++
! ** 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 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.
  
! +++
! ** 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.
  
! ** Enhancements to apropos commands:
  
! +++
! *** 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 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.
  
  +++
! ** 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
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! ** Info mode:
  
! +++
! *** A numeric prefix argument of `info' selects an Info buffer
! with the number appended to the *info* buffer name (e.g. "*info*<2>").
  
  ---
! *** 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.
  
! *** 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.
  
! *** 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.
  
! ---
! *** 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.
  
  ---
! *** 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.
  
! ---
! *** Info-index offers completion.
  
! ---
! ** Lisp mode now uses font-lock-doc-face for the docstrings.
  
  +++
! ** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
! list starting after point.
  
! ** New features in evaluation commands
  
  +++
! *** The function `eval-defun' (C-M-x) called on defface reinitializes
! the face to the value specified in the defface expression.
  
  +++
! *** 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.
  
  +++
! ** 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 address@hidden
  
! **** 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 address@hidden
  
! **** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
! 
! +++
! ** `xml-mode' is now an alias for `sgml-mode', which has XML support.
! 
! ** TeX modes:
! 
! +++
! *** C-c C-c prompts for a command to run, and tries to offer a good default.
! 
! +++
! *** 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 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).
  
! *** In BibTeX mode the command fill-paragraph (bound to M-q) fills
! individual fields of a BibTeX entry.
  
! *** The new variables bibtex-files and bibtex-file-path define a set
! of BibTeX files that are searched for entry keys.
  
! *** The new command bibtex-validate-globally checks for duplicate keys
! in multiple BibTeX files.
  
! *** The new command bibtex-copy-summary-as-kill pushes summary
! of BibTeX entry to kill ring (bound to C-c C-t).
  
! +++
! ** 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:
  
  *** Search for source files using jdb classpath and class
***************
*** 1689,1898 ****
  *** 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'.
  
! +++
! ** 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'.
  
  +++
! ** 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.
  
  +++
! ** The variable `cursor-in-non-selected-windows' can now be set to any
! of the recognized cursor types.
  
  ---
! ** 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.
  
! +++
! ** 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 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'.
  
  +++
! ** 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.
  
  +++
! ** 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.
! 
  
! ** VC Changes
  
  +++
! *** 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:
  
!     (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
  
! The function `vc-toggle-read-only' will continue to exist.
  
  +++
! *** 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 backends for Subversion and Meta-CVS.
  
  ** EDiff changes.
  
--- 1765,1878 ----
  *** Do not allow debugger output history variable to grow without bounds.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  ---
! ** recentf changes.
  
! 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 `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.
  
! 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.
  
! 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.
  
  +++
! ** Desktop package
  
  +++
! *** Desktop saving is now a minor mode, desktop-save-mode. Variable
! desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
! saving.
  
! ---
! *** Buffers are saved in the desktop file in the same order as that in the
! buffer list.
  
  +++
! *** The desktop package can be customized to restore only some buffers 
immediately,
! remaining buffers are restored lazily (when Emacs is idle).
  
! +++
! *** 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.
  
! ---
! *** 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.
  
  +++
! *** New command line option --no-desktop
  
! ---
! *** 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,2408 ****
  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 address@hidden
! 
! **** 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 address@hidden
  
! **** 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.
  
  +++
! ** The command line option --no-windows has been changed to
! --no-window-system.  The old one still works, but is deprecated.
  
  +++
! ** The command `list-text-properties-at' has been deleted because
! C-u C-x = gives the same information and more.
  
  +++
! ** `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.
  
  +++
! ** 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.
! 
! We provide two sample predicates, fill-single-word-nobreak-p and
! fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** `xml-mode' is now an alias for `sgml-mode', which has XML support.
  
  ---
! ** Lisp mode now uses font-lock-doc-face for the docstrings.
  
  ---
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** `special-display-buffer-names' and `special-display-regexps' now
! understand two new boolean pseudo-frame-parameters `same-frame' and
! `same-window'.
  
  +++
! ** 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 `$$'.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
  ---
! ** Enhanced visual feedback in *Completions* buffer.
! 
! Completions lists use faces to highlight what all completions
! have in common and where they begin to differ.
! 
! 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.
  
  +++
! ** 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.
  
! ---
! ** Rmail now displays 5-digit message ids in its summary buffer.
  
! +++
! ** 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.
  
  ---
  ** On MS Windows, the "system caret" now follows the cursor.
--- 1970,2233 ----
  reads from standard input and marks the produced tags as belonging to
  the file FILE.
  
! ** VC Changes
  
! +++
! *** 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:
  
!     (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
  
! The function `vc-toggle-read-only' will continue to exist.
  
! +++
! *** 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 backends for Subversion and Meta-CVS.
  
! +++
! ** 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.
  
! +++
! ** 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
! "~/".
  
! +++
! ** 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'.
  
! ---
! ** PO translation files are decoded according to their MIME headers
! when Emacs visits them.
  
! ** Gnus package
  
! ---
! *** Gnus now includes Sieve and PGG
! Sieve is a library for managing Sieve scripts.  PGG is a library to handle
! PGP/MIME.
  
! ---
! *** 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.
  
! ---
! ** Rmail now displays 5-digit message ids in its summary buffer.
  
! +++
! ** 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.
  
! ---
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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 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'.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
! 
! ---
! ** 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.
! 
! ---
! ** 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).
! 
! ---
! ** 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).
  
  +++
! ** 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-*-*-*-*-*-*,*"'.
  
  ---
! ** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
! ESC, like they do for Gtk+, Mac and W32.
  
  ---
! ** Dialogs and menus pop down if you type C-g.
  
  ---
! ** 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 file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
! disabled by customizing the variable `use-file-dialog'.
  
  +++
! ** 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.
  
  ---
! ** Emacs now responds to mouse-clicks on the mode-line, header-line and
! display margin, when run in an xterm.
  
! ** 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.
  
! ** Changes in support of colors on character terminals
  
  +++
! *** 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.
  
! ---
! *** 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.
  
  +++
! *** 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.
  
  ---
! *** There's a new support for colors on `rxvt' terminal emulator.
  
  +++
! ** 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,2768 ****
  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.
- 
- * 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.
  
! 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.
  
! There is now a keyboard macro ring which stores the most recently
! defined macros.
  
! 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 normal macro bindings C-x (, C-x ), and C-x e now interfaces to
! the keyboard macro ring.
  
! The C-x e command now automatically terminates the current macro
! before calling it, if used while defining a macro.
  
! 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.
  
! 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.
  
  ---
! ** 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.
  
! ** The printing package is now part of the Emacs distribution.
  
! 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.
  
! +++
! ** Calc is now part of the Emacs distribution.
  
! 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'.
  
  +++
! ** Tramp is now part of the distribution.
  
! 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).
  
! Shell connections can be acquired via `rsh', `ssh', `telnet' and also
! `su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
  
! If you want to disable Tramp you should set
  
!   (setq tramp-default-method "ftp")
  
  ---
! ** 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'.
  
  ---
! ** 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 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, ...
  
! There is also Global Reveal mode which affects all buffers.
  
  ---
! ** The new package ibuffer provides a powerful, completely
! customizable replacement for buff-menu.el.
  
! +++
! ** 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.
  
  +++
! ** 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 `magic cookie' standout modes has been removed.
--- 2282,2458 ----
  the clipboard should work correctly for your local language without
  any customizations.
  
  ---
  ** 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.
  
  ---
! ** sql changes.
  
! *** 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 following values are supported:
  
!     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)))
  
! *** 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'.
  
! *** 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.
  
! 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.
  
! *** Postgres support is enhanced.
! Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
! the username and the pgsql `-U' option is added.
  
! *** MySQL support is enhanced.
! Keyword higlighting of MySql 4.0 is implemented.
  
! *** Imenu support has been enhanced to locate tables, views, indexes,
! packages, procedures, functions, triggers, sequences, rules, and
! defaults.
  
! *** Added SQL->Start SQLi Session menu entry which calls the
! appropriate sql-interactive-mode wrapper for the current setting of
! `sql-product'.
  
! ---
! *** Support for the SQLite interpreter has been added to sql.el by calling
! 'sql-sqlite'.
  
  ---
! ** M-x view-file and commands that use it now avoid interfering
! with special modes such as Tar mode.
  
! +++
! ** 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.
  
! 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.
  
! ---
! ** 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.
  
! ** 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').
  
! ---
! *** 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'.
  
! ---
! ** 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.
  
! ---
! ** 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.
  
! +++
! ** 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.
  
  ---
! ** partial-completion-mode now does partial completion on directory names.
  
  ---
! ** 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.
  
  ---
! ** `ps-print' can now print characters from the mule-unicode charsets.
  
! 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.
  
  ---
! ** 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.
  
! ---
! ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
  
  +++
! ** 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.
! 
! Turning off PC-Selection mode restores the global key bindings
! that were replaced by turning on the mode.
! 
! ---
! ** `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.
  
  ---
  ** Support for `magic cookie' standout modes has been removed.
***************
*** 2771,3736 ****
  mode-lines in inverse-video.
  
  ---
! ** cplus-md.el has been removed to avoid problems with Custom.
  
! +++
! ** New package benchmark.el contains simple support for convenient
! timing measurements of code (including the garbage collection component).
  
  ---
! ** The new Lisp library fringe.el controls the appearance of fringes.
  
  ---
! ** `cfengine-mode' is a major mode for editing GNU Cfengine
! configuration files.
! 
! * Incompatible Lisp Changes in Emacs 22.1
  
! +++
! ** 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.
  
  +++
! ** `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'.)
  
! +++
! ** 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.
! 
! * Lisp Changes in Emacs 22.1
  
! ** New functions, macros, and commands
  
! +++
! *** 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.
  
! +++
! *** (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 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.
  
  +++
! *** 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 primitive `get-internal-run-time' returns the processor
! run time used by Emacs since start-up.
  
! +++
! *** 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 `assoc-string' replaces `assoc-ignore-case' and
! `assoc-ignore-representation', which are still available, but have
! been declared obsolete.
  
  ---
! *** New function quail-find-key returns a list of keys to type in the
! current input method to input a character.
! 
! +++
! *** 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.
  
! +++
! *** The new primitive `set-file-times' sets a file's access and
! modification times.  Magic file name handlers can handle this
! operation.
  
! +++
! *** 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.
  
! +++
! *** `syntax-class' extracts the class of a syntax code (as returned
! by syntax-after).
  
! +++
! *** 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.
  
! +++
! *** 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'.
  
! +++
! *** 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 function `rassq-delete-all' deletes all elements from an
! alist whose cdr is `eq' to a specified value.
  
! +++
! *** New macros define-obsolete-variable-alias to combine defvaralias and
! make-obsolete-variable and define-obsolete-function-alias to combine defalias
! and make-obsolete.
  
  +++
! ** copy-file now takes an additional option arg MUSTBENEW.
! 
! This argument works like the MUSTBENEW argument of write-file.
  
  ---
! ** easy-mmode-define-global-mode has been renamed to
! define-global-minor-mode.  The old name remains as an alias.
  
  +++
! ** 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).
! 
! 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.
  
! +++
! ** 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.
  
! +++
! ** 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).
  
  +++
! ** The function symbol-file tells you which file defined
! a certain function or variable.
  
! +++
! ** 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.
  
! +++
! ** `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'.
  
  ---
! ** 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.
  
! +++
! ** read-from-minibuffer now accepts an additional argument KEEP-ALL
! saying to put all inputs in the history list, even empty ones.
  
  +++
! ** 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.
  
! Spaces inside of constructs such as [..] and *, +, ? are never
! replaced with search-spaces-regexp.
  
! ---
! ** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
! If it is non-nil, it specifies which buffers to 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.
  
  +++
! ** 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.
  
! +++
! ** Function `translate-region' accepts also a char-table as TABLE
! argument.
  
! +++
! ** Major mode functions now run the new normal hook
! `after-change-major-mode-hook', at their very end, after the mode hooks.
  
! +++
! ** `auto-save-file-format' has been renamed to
! `buffer-auto-save-file-format' and made into a permanent local.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** `visited-file-modtime' and `calendar-time-from-absolute' now return
! a list of two integers, instead of a cons.
  
  +++
! ** 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.
  
! +++
! ** Cleaner way to enter key sequences.
  
! 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"
  
  +++
! ** 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 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.
  
! +++
! ** skip-chars-forward and skip-chars-backward now handle
! character classes such as [:alpha:], along with individual characters
! and ranges.
  
! +++
! ** 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.
  
  +++
! ** The function `eql' is now available without requiring the CL package.
  
  +++
! ** The display space :width and :align-to text properties are now
! supported on text terminals.
  
  +++
! ** 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).
  
  +++
! ** 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 buffer local line-spacing variable may now have a float value,
! which is used as a height relative to the default frame line height.
  
  +++
! ** 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.
  
  +++
! ** 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 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).
  
  +++
! ** 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.
  
  +++
! ** Customizable fringe bitmaps
  
! *** New function 'define-fringe-bitmap' can now be used to create new
! fringe bitmaps, as well as change the built-in fringe bitmaps.
  
! To change a built-in bitmap, do (require 'fringe) and use the symbol
! identifing the bitmap such as `left-truncation or `continued-line'.
  
! *** New function 'destroy-fringe-bitmap' may be used to destroy a
! previously created bitmap, or restore a built-in bitmap.
  
! *** 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.
  
! *** 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.
  
! 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.
  
  +++
! ** 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 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 `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'.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** `declare' is now a macro.  This change was made mostly for
! documentation purposes and should have no real effect on Lisp code.
  
  +++
! ** A file name handler can declare which operations it handles.
  
! 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.
  
! This is useful for autoloaded handlers, to prevent them from being
! autoloaded when not really necessary.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
! +++ (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.
  
  +++
! ** The mouse pointer shape over ordinary text or images may now be
! controlled/overriden via the `pointer' text property.
  
  +++
! ** 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'.
  
! ** 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.
  
! +++
! *** Mouse events may now include image object in addition to string object.
  
! +++
! *** Mouse events include relative x and y pixel coordinates relative to
! the top left corner of the object (image or character) clicked on.
  
! +++
! *** Mouse events include the pixel width and height of the object
! (image or character) clicked on.
  
! +++
! *** 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.
  
! +++
! ** 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.
  
! ---
! ** New function `redirect-debugging-output' can be used to redirect
! debugging output on the stderr file handle to a file.
  
  +++
! ** `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.
  
! +++
! ** `makehash' is now obsolete.  Use `make-hash-table' instead.
  
! +++
! ** 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.
  
! +++
! ** Major modes can define `eldoc-documentation-function'
! locally to provide Eldoc functionality by some method appropriate to
! the language.
  
! ---
! ** 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.
  
! +++
! ** The argument to forward-word, backward-word, forward-to-indentation
! and backward-to-indentation is now optional, and defaults to 1.
  
! +++
! ** (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.
  
! Fontsets can specify a font on a per-character basis; when the fontset
! does that, this value may not be accurate.
  
! +++
! ** 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.
  
! +++
! ** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
! return window edges in units of pixels, rather than columns and lines.
  
! +++
! ** The kill-buffer-hook is now permanent-local.
  
! +++
! ** `select-window' takes an optional second argument `norecord', like
! `switch-to-buffer'.
  
! +++
! ** The new macro `with-selected-window' temporarily switches the
! selected window without impacting the order of buffer-list.
  
  +++
! ** 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.
  
  +++
! ** (map-keymap FUNCTION KEYMAP) applies the function to each binding
! in the keymap.
  
! ---
! ** 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.
  
! +++
! ** The new macro dynamic-completion-table supports using functions
! as a dynamic completion table.
  
!   (dynamic-completion-table FUN)
  
! 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 new macro lazy-completion-table initializes a variable
! as a lazy completion table.
  
!   (lazy-completion-table VAR FUN &rest 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.
  
  +++
! ** `minor-mode-list' now holds a list of minor mode commands.
  
! +++
! ** The new function `modify-all-frames-parameters' modifies parameters
! for all (existing and future) frames.
  
  +++
! ** `sit-for' can now be called with args (SECONDS &optional NODISP).
  
  +++
! ** New standard font-lock face `font-lock-preprocessor-face'.
  
! +++
! ** The macro `with-syntax-table' does not copy the table any more.
  
! +++
! ** 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.
  
! +++
! ** 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).
  
! +++
! ** `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.
  
! ---
! ** `set-fontset-font', `fontset-info', `fontset-font' now operate on
! the default fontset if the argument NAME is nil..
  
! +++
! ** 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 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.
  
! +++
! ** 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
  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.
  
! +++
! ** New variables `gc-elapsed' and `gcs-done' provide extra information
! on garbage collection.
  
! +++
! ** New function `decode-coding-inserted-region' decodes a region as if
! it is read from a file without decoding.
  
! +++
! ** New function `locale-info' accesses locale information.
  
! +++
! ** `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'.
  
! ---
! ** `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.
  
! ** Byte compiler changes:
  
! ---
! *** `(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.
  
! +++
! *** 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:
  
!   (if (fboundp 'foo) <then> <else>)
!   (if (boundp 'foo) <then> <else)
  
! 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.
  
! +++
! *** The new macro `with-no-warnings' suppresses all compiler warnings
! inside its body.  In terms of execution, it is equivalent to `progn'.
  
! +++
! ** The new translation table `translation-table-for-input'
! is used for customizing self-insertion.  The character to
! be inserted is translated through it.
  
! +++
! ** `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).
  
! +++
! ** `load-history' now records (defun . FUNNAME) when a function is
! defined.  For a variable, it records just the variable name.
  
! +++
! ** 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.
  
! +++
! ** 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).
  
! +++
! ** 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.
  
! When you bind `print-continuous-numbering' to t, you should
! also bind `print-number-table' to nil.
  
! +++
! ** When using non-toolkit scroll bars with the default width,
! the scroll-bar-width frame parameter value is nil.
  
  +++
! ** The new function copy-abbrev-table returns a new abbrev table that
! is a copy of a given abbrev table.
  
  +++
! ** 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:
  
!    #!/usr/bin/emacs --script
  
  +++
! ** 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:
  
!   emacs -batch -L .. -L /tmp --eval "(require 'foo)"
  
! 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.)
  
  +++
! ** 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 CCL functions `lookup-character' and `lookup-integer' access
! hash tables defined by the Lisp function `define-translation-hash-table'.
  
  +++
! ** 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.
  
  +++
! ** There is a new Warnings facility; see the functions `warn'
! and `display-warning'.
  
  +++
! ** 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.
  
! ---
! ** When pure storage overflows while dumping, Emacs now prints how
! much pure storage it will approximately need.
  
  +++
! ** 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.)
  
! ---
! ** The new function `merge-coding-systems' fills in unspecified aspects
! of one coding system from another coding system.
  
! +++
! ** 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.
  
! ---
! ** 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.
  
! If the form is not "ok to call", that means Emacs asks for
! confirmation as before.
  
  +++
  ** Controlling the default left and right fringe widths.
--- 2461,3440 ----
  mode-lines in inverse-video.
  
  ---
! ** The game `mpuz' is enhanced.
  
! `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.
  
  ---
! ** display-battery has been replaced by display-battery-mode.
  
  ---
! ** 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'.
  
! ---
! ** global-whitespace-mode is a new alias for whitespace-global-mode.
  
  +++
! ** The command `list-text-properties-at' has been deleted because
! C-u C-x = gives the same information and more.
  
! ---
! ** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
  
! ---
! ** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
  
! ---
! ** cplus-md.el has been removed to avoid problems with Custom.
  
! 
! * New modes and packages in Emacs 22.1
  
  +++
! ** New package benchmark.el contains simple support for convenient
! timing measurements of code (including the garbage collection component).
  
  +++
! ** Calc is now part of the Emacs distribution.
  
! 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'.
  
! ---
! ** `cfengine-mode' is a major mode for editing GNU Cfengine
! configuration files.
  
  +++
! ** 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.
  
  ---
! ** 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 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 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'.
  
  +++
! ** 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 new Lisp library fringe.el controls the appearance of fringes.
  
! ---
! ** GDB-Script-mode is used for files like .gdbinit.
  
  +++
! ** 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.
  
! Use M-x gdba to start GDB-UI.
  
! ---
! ** The new package ibuffer provides a powerful, completely
! customizable replacement for buff-menu.el.
  
  ---
! ** 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.
  
  +++
! ** 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 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.
  
! There is now a keyboard macro ring which stores the most recently
! defined macros.
  
! 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 normal macro bindings C-x (, C-x ), and C-x e now interfaces to
! the keyboard macro ring.
  
! The C-x e command now automatically terminates the current macro
! before calling it, if used while defining a macro.
  
! 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.
  
! 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.
  
  +++
! ** 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 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.
  
! ** The printing package is now part of the Emacs distribution.
  
! 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.
  
  +++
! ** The new python.el package is used to edit Python and Jython programs.
  
! ---
! ** 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, ...
  
! There is also Global Reveal mode which affects all buffers.
  
! ---
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** The new global minor mode `size-indication-mode' (off by default)
! shows the size of accessible part of the buffer on the mode line.
  
  +++
! ** 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.
  
! +++
! ** The thumbs.el package allows you to preview image files as thumbnails
! and can be invoked from a Dired buffer.
  
  +++
! ** Tramp is now part of the distribution.
  
! 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).
  
! Shell connections can be acquired via `rsh', `ssh', `telnet' and also
! `su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
  
! If you want to disable Tramp you should set
  
!   (setq tramp-default-method "ftp")
  
! ---
! ** 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 URL package (which had been part of W3) is now part of Emacs.
  
! ---
! ** 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'.
  
! +++
! ** The wdired.el package allows you to use normal editing commands on Dired
! buffers to change filenames, permissions, etc...
  
! 
! * Incompatible Lisp Changes in Emacs 22.1
  
  +++
! ** 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.
  
  +++
! ** `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'.)
  
! +++
! ** 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.
! 
! * Lisp Changes in Emacs 22.1
  
! +++
! ** 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:
  
!    #!/usr/bin/emacs --script
  
! +++
! ** 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:
  
!   emacs -batch -L .. -L /tmp --eval "(require 'foo)"
  
! 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 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 `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'.
  
  +++
! ** The argument to forward-word, backward-word, forward-to-indentation
! and backward-to-indentation is now optional, and defaults to 1.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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).
  
! ---
! ** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
! If it is non-nil, it specifies which buffers to list.
  
! +++
! ** The kill-buffer-hook is now permanent-local.
  
! +++
! ** `auto-save-file-format' has been renamed to
! `buffer-auto-save-file-format' and made into a permanent local.
  
! +++
! ** 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.
  
! +++
! ** copy-file now takes an additional option arg MUSTBENEW.
  
! This argument works like the MUSTBENEW argument of write-file.
  
! +++
! ** 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.
  
  +++
! ** `visited-file-modtime' and `calendar-time-from-absolute' now return
! a list of two integers, instead of a cons.
  
! +++
! ** `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 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.
  
  +++
! ** 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.
  
  +++
! ** read-from-minibuffer now accepts an additional argument KEEP-ALL
! saying to put all inputs in the history list, even empty ones.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
! Spaces inside of constructs such as [..] and *, +, ? are never
! replaced with search-spaces-regexp.
  
  +++
! ** 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.
  
  +++
! ** skip-chars-forward and skip-chars-backward now handle
! character classes such as [:alpha:], along with individual characters
! and ranges.
  
! ---
! ** In `replace-match', the replacement text no longer inherits
! properties from surrounding text.
  
! +++
! ** 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.
  
  +++
! ** 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 macro define-obsolete-variable-alias combines defvaralias and
! make-obsolete-variable.  The macro define-obsolete-function-alias
! combines defalias and make-obsolete.
  
  +++
! ** Enhancements to keymaps.
  
! *** Cleaner way to enter key sequences.
  
! 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.
  
! - The new function `command-remapping' returns the binding for a
!   remapped command in the current keymaps, or nil if not remapped.
  
! - key-binding now remaps interactive commands unless the optional
!   third argument NO-REMAP is non-nil.
  
! - 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).
  
! - The new variable `this-original-command' contains the original
!   command before remapping.  It is equal to `this-command' when the
!   command was not remapped.
  
! *** If text has a `keymap' property, that keymap takes precedence
! over minor mode keymaps.
  
! *** 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.
  
! *** Dense keymaps now handle inheritance correctly.
! Previously a dense keymap would hide all of the simple-char key
! bindings of the parent keymap.
  
! *** `define-key-after' now accepts keys longer than 1.
  
! *** New function `current-active-maps' returns a list of currently
! active keymaps.
  
! *** New function `describe-buffer-bindings' inserts the list of all
! defined keys and their definitions.
  
! *** New function `keymap-prompt' returns the prompt-string of a keymap
  
! *** (map-keymap FUNCTION KEYMAP) applies the function to each binding
! in the keymap.
  
! *** New variable emulation-mode-map-alists.
  
! 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.
  
  +++
! ** Atomic change groups.
  
! 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:
  
!   (atomic-change-group
!     (insert foo)
!     (delete-region x y))
  
! 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 you need something more sophisticated, you can directly call the
! lower-level functions that `atomic-change-group' uses.  Here is how.
  
! 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.
  
! Before you change the buffer again, you must activate the change
! group.  Pass the handle to `activate-change-group' afterward to
! do this.
  
! 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.
  
! 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.
  
! 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:
  
!   (nconc (prepare-change-group buffer-1)
!          (prepare-change-group buffer-2))
  
! 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'.
  
! 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.
  
  +++
! ** 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.
  
  +++
! ** New `yank-handler' text property may be used to control how
! previously killed text on the kill-ring is reinserted.
  
! The value of the yank-handler property must be a list with one to four
! elements with the following format:
!   (FUNCTION PARAM NOEXCLUDE UNDO).
  
! 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:
  
!   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 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.
  
! *** 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.
  
! *** 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 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.
  
  +++
! ** 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).
  
! 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.
  
  +++
! ** 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.
  
  +++
! ** Enhancements to process support
  
! *** Function list-processes now has an optional argument; if non-nil,
! only the processes whose query-on-exit flag is set are listed.
  
! *** 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 new low-level functions process-plist and set-process-plist are
! used to access and replace the entire property list of a process.
  
! *** 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.
  
! *** Adaptive read buffering of subprocess output.
  
! 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 new function `call-process-shell-command' executes a shell
! command command synchronously in a separate process.
! 
! *** The new function `process-file' is similar to `call-process', but
! obeys file handlers.  The file handler is chosen based on
! default-directory.
! 
! *** The new function `set-process-filter-multibyte' sets the
! multibyteness of a string given to a process's filter.
! 
! *** 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
  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
  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.
  
  +++
! ** Enhanced networking support.
  
! *** 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.
  
! - 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.
  
! To test for the availability of a given feature, use featurep like this:
!   (featurep 'make-network-process '(:type datagram))
  
! *** Original open-network-stream is now emulated using make-network-process.
  
! *** New function open-network-stream-nowait.
  
! 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".
  
! *** New function open-network-stream-server.
  
! 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.
  
! *** New functions process-datagram-address and set-process-datagram-address.
  
! These functions are used with datagram-based network processes to get
! and set the current address of the remote partner.
  
! *** New function format-network-address.
  
! 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.
  
! *** 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.
  
! 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.
  
! *** 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.
  
! *** New function network-interface-list.
  
! This function returns a list of network interface names and their
! current network addresses.
  
! *** New function network-interface-info.
  
! This function returns the network address, hardware address, current
! status, and other information about a specific network interface.
  
! *** 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".
  
  +++
! ** 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.
  
  +++
! ** 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 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
! return window edges in units of pixels, rather than columns and lines.
  
  +++
! ** The new macro `with-selected-window' temporarily switches the
! selected window without impacting the order of buffer-list.
  
  +++
! ** `select-window' takes an optional second argument `norecord', like
! `switch-to-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'.
  
! +++
! ** 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.
  
  +++
! ** Customizable fringe bitmaps
! 
! *** New function 'define-fringe-bitmap' can now be used to create new
! fringe bitmaps, as well as change the built-in fringe bitmaps.
! 
! To change a built-in bitmap, do (require 'fringe) and use the symbol
! identifing the bitmap such as `left-truncation or `continued-line'.
! 
! *** New function 'destroy-fringe-bitmap' may be used to destroy a
! previously created bitmap, or restore a built-in bitmap.
  
! *** 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.
  
! *** 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.
  
! 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,3762 ****
  fringe bitmaps is 8 pixels.
  
  +++
! ** Per-window fringes 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
--- 3457,3466 ----
  fringe bitmaps is 8 pixels.
  
  +++
! ** Per-window fringe and scrollbar 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,3782 ****
  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
  controlling the width and position of scroll-bars.
  
  To control the scroll-bar of a window, either set the buffer-local
--- 3477,3483 ----
  displaying the buffer in a window, or use `set-window-buffer' to force
  an update of the display margins.
  
! *** 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,4263 ****
  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.
  
  +++
! ** 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').
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
! 
! ---
! ** 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.
  
  +++
! ** 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
  
!    (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
  
! DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
! declaration specifiers supported are:
  
! (indent INDENT)
!       Set NAME's `lisp-indent-function' property to INDENT.
  
! (edebug DEBUG)
!       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
!       equivalent to writing a `def-edebug-spec' for the macro.
  
  +++
! ** 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.
  
! - The new function `command-remapping' returns the binding for a
!   remapped command in the current keymaps, or nil if not remapped.
  
! - key-binding now remaps interactive commands unless the optional
!   third argument NO-REMAP is non-nil.
  
! - 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).
  
! - The new variable `this-original-command' contains the original
!   command before remapping.  It is equal to `this-command' when the
!   command was not remapped.
  
  +++
! ** New variable emulation-mode-map-alists.
  
! 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.
  
  +++
! ** Atomic change groups.
  
! 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:
  
!   (atomic-change-group
!     (insert foo)
!     (delete-region x y))
  
! 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 you need something more sophisticated, you can directly call the
! lower-level functions that `atomic-change-group' uses.  Here is how.
  
! 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.
  
! Before you change the buffer again, you must activate the change
! group.  Pass the handle to `activate-change-group' afterward to
! do this.
  
! 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.
  
! 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.
  
! 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:
  
!   (nconc (prepare-change-group buffer-1)
!          (prepare-change-group buffer-2))
  
! 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'.
  
! 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.
  
  +++
! ** New variable char-property-alias-alist.
  
! 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.
  
  +++
! ** 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'.
  
  +++
! ** New function remove-list-of-text-properties.
  
! 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.
  
  +++
! ** New function insert-for-yank.
  
! 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.
  
  +++
! ** New function insert-buffer-substring-as-yank.
  
! This function works like `insert-buffer-substring', but removes the
! text properties in the `yank-excluded-properties' list.
  
  +++
! ** New function insert-buffer-substring-no-properties.
  
! This function is like insert-buffer-substring, but removes all
! text properties from the inserted substring.
  
  +++
! ** New `yank-handler' text property may be used to control how
! previously killed text on the kill-ring is reinserted.
  
! The value of the yank-handler property must be a list with one to four
! elements with the following format:
!   (FUNCTION PARAM NOEXCLUDE UNDO).
  
! 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:
  
!   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 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.
  
  +++
! *** 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.
  
  +++
! ** New function display-supports-face-attributes-p may be used to test
! whether a given set of face attributes is actually displayable.
  
! 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.
  
! ---
! ** 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).
  
! +++
! ** 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.
  
! +++
! ** New functions face-attribute-relative-p and merge-face-attribute
! help with handling relative face attributes.
  
  +++
! ** 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.
  
  +++
! ** Enhancements to process support
  
! *** Function list-processes now has an optional argument; if non-nil,
! only the processes whose query-on-exit flag is set are listed.
  
! *** 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 new low-level functions process-plist and set-process-plist are
! used to access and replace the entire property list of a process.
  
! *** 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.
  
  ---
! *** Adaptive read buffering of subprocess output.
  
! 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.
  
  +++
! ** Enhanced networking support.
  
! *** 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.
  
! - 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.
  
! To test for the availability of a given feature, use featurep like this:
!   (featurep 'make-network-process '(:type datagram))
  
! *** Original open-network-stream is now emulated using make-network-process.
  
! *** New function open-network-stream-nowait.
  
! 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".
  
! *** New function open-network-stream-server.
  
! 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.
  
! *** New functions process-datagram-address and set-process-datagram-address.
  
! These functions are used with datagram-based network processes to get
! and set the current address of the remote partner.
  
! *** New function format-network-address.
  
! 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.
  
! *** 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.
  
! 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.
  
! *** 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.
  
! *** New function network-interface-list.
  
! This function returns a list of network interface names and their
! current network addresses.
  
! *** New function network-interface-info.
  
! This function returns the network address, hardware address, current
! status, and other information about a specific network interface.
  
  +++
! ** New function copy-tree.
  
  +++
! ** New function substring-no-properties.
  
  +++
! ** New function minibuffer-selected-window.
  
! +++
! ** New function `call-process-shell-command'.
  
  +++
! ** New function `process-file'.
! 
! This is similar to `call-process', but obeys file handlers.  The file
! handler is chosen based on default-directory.
  
  ---
! ** 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.
  
  +++
! ** 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.
  
! ---
! ** 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))))
  
  +++
  ** File local variables.
--- 3489,4193 ----
  of the display margins.
  
  +++
! ** When using non-toolkit scroll bars with the default width,
! the scroll-bar-width frame parameter value is nil.
  
  +++
! ** 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.
  
  +++
! ** 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 buffer local line-spacing variable may now have a float value,
! which is used as a height relative to the default frame line height.
  
! +++
! ** 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.
! 
! +++
! *** Mouse events may now include image object in addition to string object.
  
  +++
! *** Mouse events include relative x and y pixel coordinates relative to
! the top left corner of the object (image or character) clicked on.
  
  +++
! *** Mouse events include the pixel width and height of the object
! (image or character) clicked on.
  
  +++
! *** 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.
  
  +++
! ** 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.
  
! +++
! ** 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 display space :width and :align-to text properties are now
! supported on text terminals.
  
! +++
! ** Arguments for remove-overlays are now optional, so that you can
! remove all overlays in the buffer by just calling (remove-overlay).
  
  +++
! ** New variable char-property-alias-alist.
  
! 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** (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.
  
! Fontsets can specify a font on a per-character basis; when the fontset
! does that, this value may not be accurate.
  
! +++
! ** New function display-supports-face-attributes-p may be used to test
! whether a given set of face attributes is actually displayable.
  
! 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.
  
! ---
! ** 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 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).
  
! +++
! ** 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.
  
! ---
! ** `set-fontset-font', `fontset-info', `fontset-font' now operate on
! the default fontset if the argument NAME is nil..
  
! ---
! ** 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).
  
  +++
! ** 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.
  
! +++
! ** New functions face-attribute-relative-p and merge-face-attribute
! help with handling relative face attributes.
  
  +++
! ** 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.
  
! +++
! ** New standard font-lock face `font-lock-preprocessor-face'.
  
! +++
! ** 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'.
  
! ---
! ** 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:
  
!       s{
!               foo
!       }{
!               bar
!       }e
  
! 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.
  
! +++
! ** 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.
  
! ---
! ** 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.
  
! +++
! ** A file name handler can declare which operations it handles.
  
! 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.
  
! This is useful for autoloaded handlers, to prevent them from being
! autoloaded when not really necessary.
  
! +++
! ** `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'.
  
  +++
! ** Major mode functions now run the new normal hook
! `after-change-major-mode-hook', at their very end, after the mode hooks.
  
! ---
! ** 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.
  
  +++
! ** Major modes can define `eldoc-documentation-function'
! locally to provide Eldoc functionality by some method appropriate to
! the language.
  
  +++
! ** define-derived-mode by default creates a new empty abbrev table.
! It does not copy abbrevs from the parent mode's abbrev table.
  
! +++
! ** define-minor-mode now accepts arbitrary additional keyword arguments
! and simply passes them to defcustom, if applicable.
  
  +++
! ** 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.
  
! +++
! ** `minor-mode-list' now holds a list of minor mode 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 function `eql' is now available without requiring the CL package.
  
  +++
! ** 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.
  
! +++
! ** 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.
  
  +++
! ** A hex escape in a string forces the string to be multibyte.
! An octal escape makes it unibyte.
  
! +++
! ** `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.
  
! +++
! ** New function `string-to-multibyte' converts a unibyte string to a
! multibyte string with the same individual character codes.
  
! +++
! ** 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).
  
  +++
! ** `sit-for' can now be called with args (SECONDS &optional NODISP).
  
  +++
! ** 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 `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
  
!    (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
  
! DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
! declaration specifiers supported are:
  
! (indent INDENT)
!       Set NAME's `lisp-indent-function' property to INDENT.
  
! (edebug DEBUG)
!       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
!       equivalent to writing a `def-edebug-spec' for the macro.
  
  +++
! ** 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.
  
  +++
! ** The new macro dynamic-completion-table supports using functions
! as a dynamic completion table.
  
!   (dynamic-completion-table FUN)
  
! 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 new macro lazy-completion-table initializes a variable
! as a lazy completion table.
  
!   (lazy-completion-table VAR FUN &rest 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.
  
! +++
! ** `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).
  
! +++
! ** `load-history' now records (defun . FUNNAME) when a function is
! defined.  For a variable, it records just the variable name.
  
  ---
! ** 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.
  
! +++
! ** The function symbol-file can now search specifically for function or
! variable definitions.
  
  +++
! ** `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.
  
! +++
! ** `declare' is now a macro.  This change was made mostly for
! documentation purposes and should have no real effect on Lisp code.
  
! +++
! ** Byte compiler changes:
  
! *** 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.
  
! *** The new macro `with-no-warnings' suppresses all compiler warnings
! inside its body.  In terms of execution, it is equivalent to `progn'.
  
! *** 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:
  
!   (if (fboundp 'foo) <then> <else>)
!   (if (boundp 'foo) <then> <else)
  
! 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.
  
! *** `(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).
  
! +++
! ** There is a new Warnings facility; see the functions `warn'
! and `display-warning'.
  
! ---
! ** 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.
  
! +++
! ** 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.
  
! ---
! ** set-buffer-file-coding-system now takes an additional argument,
! NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
  
! +++
! ** 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.)
  
! ---
! ** The new function `merge-coding-systems' fills in unspecified aspects
! of one coding system from another coding system.
  
! ---
! ** 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 `decode-coding-inserted-region' decodes a region as if
! it is read from a file without decoding.
  
  +++
! ** Function `translate-region' accepts also a char-table as TABLE
! argument.
  
  +++
! ** The new translation table `translation-table-for-input'
! is used for customizing self-insertion.  The character to
! be inserted is translated through it.
  
! ---
! ** New CCL functions `lookup-character' and `lookup-integer' access
! hash tables defined by the Lisp function `define-translation-hash-table'.
  
  +++
! ** 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.
  
  ---
! ** New function `redirect-debugging-output' can be used to redirect
! debugging output on the stderr file handle to a file.
  
! +++
! ** `makehash' is now obsolete.  Use `make-hash-table' instead.
  
  +++
! ** The macro `with-syntax-table' does not copy the table any more.
  
! +++
! ** New variables `gc-elapsed' and `gcs-done' provide extra information
! on garbage collection.
  
! +++
! ** New function `locale-info' accesses locale information.
  
! +++
! ** 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.
  
! 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,4299 ****
  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.
  
! +++
! ** New function format-mode-line.
  
! This returns the mode-line or header-line of the selected (or a
! specified) window as a string with or without text properties.
  
  +++
! ** Functions `get' and `plist-get' no longer signals an error for
! a malformed property list.  They also detect cyclic lists.
  
  +++
! ** 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'.
  
  +++
! ** New function `tool-bar-local-item-from-menu'
  
! 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 function `atan' now accepts an optional second argument.
--- 4196,4242 ----
  properties--any specified text properties are discarded.
  
  +++
! ** 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.
  
! ---
! ** 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.
  
! If the form is not "ok to call", that means Emacs asks for
! confirmation as before.
  
  +++
! ** 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').
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! +++
! ** 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,4321 ****
  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.
  
! +++
! ** 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.
  
  +++
  ** The new mode-line construct `(:propertize ELT PROPS...)' can be
--- 4246,4255 ----
  equivalent to the standard C library function `atan2'.)
  
  +++
! ** New function format-mode-line.
  
! 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
***************
*** 4334,4425 ****
  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:
  
!       s{
!               foo
!       }{
!               bar
!       }e
  
! 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.
  
  ---
  ** describe-vector now takes a second argument `describer' which is
--- 4268,4286 ----
  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'.
  
! +++
! ** 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.
  
  ---
  ** describe-vector now takes a second argument `describer' which is
***************
*** 4429,4597 ****
  ** defcustom and other custom declarations now use a default group
  (the last prior group defined in the same file) when no :group was given.
  
  +++
  ** 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.
  
! ---
! ** 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.
  
! ---
! ** In `replace-match', the replacement text no longer inherits
! properties from surrounding text.
  
  +++
! ** 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.
  
  +++
! ** New function `buffer-local-value'.
  
! 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.
  
  ---
! ** 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.
  
! +++
! ** 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.
  
  ---
! ** 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 `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.
  
  +++
! ** define-minor-mode now accepts arbitrary additional keyword arguments
! and simply passes them to defcustom, if applicable.
  
  +++
! ** define-derived-mode by default creates a new empty abbrev table.
! It does not copy abbrevs from the parent mode's 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.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
! ---
! ** `define-key-after' now accepts keys longer than 1.
  
  +++
! ** The local variable `no-byte-compile' in elisp files is now obeyed.
  
  +++
! ** 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.
  
  +++
! ** New functions `keymap-prompt' and `current-active-maps'.
  
! ---
! ** New function `describe-buffer-bindings'.
  
  +++
! ** New vars `exec-suffixes' and `load-suffixes' used when
! searching for an executable resp. an elisp file.
  
  +++
! ** 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.
  
  +++
! ** 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.
  
  +++
! ** 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 variables most-positive-fixnum and most-negative-fixnum
! hold the largest and smallest possible integer values.
  
! ---
! ** 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.
  
! ---
! ** 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.
  
! ---
! ** New function x-send-client-message sends a client message when
! running under X.
  
  +++
! ** Arguments for remove-overlays are now optional, so that you can remove
! all overlays in the buffer by just calling (remove-overlay).
  
! ** New packages:
  
  +++
! *** 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.
  
! Use M-x gdba to start GDB-UI.
  
  *** The new package syntax.el provides an efficient way to find the
  current syntactic context (as returned by parse-partial-sexp).
--- 4290,4515 ----
  ** 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.
  
  ---
! ** 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.
  
! +++
! ** 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.
  
! +++
! ** New vars `exec-suffixes' and `load-suffixes' used when
! searching for an executable resp. an elisp file.
  
  +++
! ** 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 variables most-positive-fixnum and most-negative-fixnum
! hold the largest and smallest possible integer values.
  
! ---
! ** 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 x-send-client-message sends a client message when
! running under X.
  
! ---
! ** easy-mmode-define-global-mode has been renamed to
! define-global-minor-mode.  The old name remains as an alias.
  
  ---
! ** 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 `assoc-string' replaces `assoc-ignore-case' and
! `assoc-ignore-representation', which are still available, but have
! been declared obsolete.
  
  +++
! *** 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.
  
  +++
! *** 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.
  
  +++
! *** New function copy-tree makes a copy of a tree, recursively copying
! both cars and cdrs.
  
  +++
! *** 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 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.
  
! +++
! *** 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 new primitive `get-internal-run-time' returns the processor
! run time used by Emacs since start-up.
  
  +++
! *** The new function insert-buffer-substring-as-yank works like
! `insert-buffer-substring', but removes the text properties in the
! `yank-excluded-properties' list.
  
  +++
! *** The new function insert-buffer-substring-no-properties is like
! insert-buffer-substring, but removes all text properties from the
! inserted substring.
  
! +++
! *** 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 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.
  
  +++
! *** 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.
  
! +++
! *** 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'.
  
! *** 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.
  
! +++
! *** New function minibuffer-selected-window returns the window which
! was selected when entering the minibuffer.
  
! +++
! *** The new function `modify-all-frames-parameters' modifies parameters
! for all (existing and future) frames.
  
! +++
! *** 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.
  
! ---
! *** New function quail-find-key returns a list of keys to type in the
! current input method to input a character.
  
  +++
! *** The new function `rassq-delete-all' deletes all elements from an
! alist whose cdr is `eq' to a specified value.
  
  +++
! *** 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 new primitive `set-file-times' sets a file's access and
! modification times.  Magic file name handlers can handle this
! operation.
  
! +++
! *** New function substring-no-properties returns a substring without
! text properties.
  
! +++
! *** 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.
  
! +++
! *** `syntax-class' extracts the class of a syntax code (as returned
! by syntax-after).
  
  +++
! *** New function `tool-bar-local-item-from-menu'
  
! 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.
  
  +++
! *** New function window-body-height.
! This is like window-height but does not count the mode line
! or the header line.
  
! +++
! *** (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,4616 ****
--- 4529,4582 ----
  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.
  
  * Installation changes in Emacs 21.3
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]