]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs--rel--22
authorMiles Bader <miles@gnu.org>
Tue, 12 Aug 2008 15:54:59 +0000 (15:54 +0000)
committerMiles Bader <miles@gnu.org>
Tue, 12 Aug 2008 15:54:59 +0000 (15:54 +0000)
Patches applied:

 * emacs--rel--22  (patch 287-293)

   - Update from CVS: src/term.c (syms_of_term): Fix last change.
   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1374

1  2 
etc/NEWS.22

diff --cc etc/NEWS.22
index 2a7ab4371a5ffef5ffbf3fa433d2990b0976cfeb,0000000000000000000000000000000000000000..f16323a70dd456e42d8709388bc1c4bf473d9ba9
mode 100644,000000..100644
--- /dev/null
@@@ -1,5585 -1,0 +1,5610 @@@
 +GNU Emacs NEWS -- history of user-visible changes.
 +
 +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 +          Free Software Foundation, Inc.
 +See the end of the file for license conditions.
 +
 +Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
 +If possible, use M-x report-emacs-bug.
 +
 +This file is about changes in Emacs version 22.
 +
 +See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes
 +in older Emacs versions.
 +
 +You can narrow news to a specific version by calling `view-emacs-news'
 +with a prefix argument or by typing C-u C-h C-n.
 +\f
 +* About external Lisp packages
 +
 +When you upgrade to Emacs 22 from a previous version, some older
 +versions of external Lisp packages are known to behave badly.
 +So in general, it is recommended that you upgrade to the latest
 +versions of any external Lisp packages that you are using.
 +
 +You should also be aware that many Lisp packages have been included
 +with Emacs 22 (see the extensive list below), and you should remove
 +any older versions of these packages to ensure that the Emacs 22
 +version is used.  You can use M-x list-load-path-shadows to find such
 +older packages.
 +
 +Some specific packages that are known to cause problems are given
 +below.  Emacs tries to warn you about these through `bad-packages-alist'.
 +
 +** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
 +
 +** cua.el, cua-mode.el: remove old versions.
 +
 +\f
++* Changes in Emacs 22.3
++
++** Support for several obsolete platforms will be removed in the next
++major version of Emacs: Apollo, Acorn, Alliant, Amdahl, Altos 3068,
++Bull DPX/2, Bull SPS-7, AT&T UNIX 7300, AT&T 3b, Aviion Berkeley 4.1
++to 4.3, Celerity, Clipper, Convergent S series, Convex, Cydra, DG/UX,
++Dual, Elxsi, ESIX, Fujitsu F301, GEC 63, Gould, Honeywell XPS100,
++i860, IBM ps/2 aix386, Harris CXUX, Harris Night Hawk 1200/3000,
++Harris Power PC, HP 9000 series 200 or 300, HLH Orion, Hitachi
++SR2001/SR2201, IBM PS/2, Integrated Solutions 386, Integrated
++Solutions Optimum V, Iris, Irix < v6, ISC Unix, ISI 68000, Masscomp
++5000, Megatest 68000, Motorola System V/88, ns16000, National
++Semiconductor 32000, osf1 (s/osf*) Paragon i860, PFU A-series, Plexus,
++Pyramid, RTU 3.0, RISCiX SCO 3.2, sh3el, Sinix, Stride, Sun 1-3, Sun
++RoadRunner, Sequent Symmetry, Sony News, SunOS 4, System V rel 0 to 3,
++Tadpole 68k machines, tahoe, Tandem Integrity S2, targon31, Tektronix,
++TI Nu, NCR Tower 32, U-station, Ultrix, UMAX, UniPlus 5.2, Whitechapel
++Computer Works MG1, Wicat, and Xenix.
++
++*** Support for systems without alloca will be removed.
++
++*** Support for Sun windows will be removed.
++
++*** Support for VMS will be removed.
++
 +* Incompatible Editing Changes in Emacs 22.3
 +
 +** The following input methods were removed in Emacs 22.2, but this was
 +not advertised: danish-alt-postfix, esperanto-alt-postfix,
 +finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
 +norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
 +and swedish-alt-postfix.  Use the versions without "alt-", which are
 +identical.
 +
 +\f
 +* Installation Changes in Emacs 22.2
 +
 +** Emacs is now licensed under the GNU GPL version 3 (or later).
 +
 +** Support for GNU/kFreeBSD (GNU userland and FreeBSD kernel) was added.
 +
 +** Deprecated machine types and operating systems
 +
 +Certain machine types and operating systems have been deprecated.  On
 +these systems, configure will print a warning and exit, and you must
 +edit the configure script for compilation to proceed.  The deprecated
 +systems will not be supported at all in Emacs 23.  We are not aware of
 +anyone running Emacs on these systems; if you are, please email
 +emacs-devel@gnu.org to take it off the list of deprecated systems.
 +
 +*** Deprecated machine types
 +pmax, hp9000s300, ibm370aix, ncr386, ews4800, mips-siemens, powerpcle,
 +and tandem-s2
 +
 +*** Deprecated operating systems
 +bsd386, bsdos2-1, bsdos2, bsdos3, bsdos4, bsd4-1, bsd4-2, bsd4-3,
 +usg5-0, usg5-2-2, usg5-2, usg5-3, ultrix4-3, 386bsd, hpux, hpux8,
 +hpux9, hpux9shr, hpux10, hpux10-20, aix3-1, aix3-2-5, aix3-2, aix4-1,
 +nextstep, ux4800, uxpds, and uxpv
 +
 +* Changes in Emacs 22.2
 +
 +** `describe-project' is renamed to `describe-gnu-project'.
 +
 +** `view-todo' is renamed to `view-emacs-todo'.
 +
 +** `find-name-dired' now uses -iname rather than -name
 +for case-insensitive filesystems.  The default behavior is determined
 +by the value of `read-file-name-completion-ignore-case'; if you don't
 +like that, customize the value of the new option `find-name-arg'.
 +
 +** In Image mode, whenever the displayed image is wider and/or higher
 +than the window, the usual keys for moving the cursor cause the image
 +to be scrolled horizontally or vertically instead.
 +
 +** Emacs can use stock icons in the tool bar when compiled with Gtk+.
 +However, this feature is disabled by default.  To enable it, put
 +
 +  (setq icon-map-list '(x-gtk-stock-map))
 +
 +in your .emacs or some other startup file.  For more information, see
 +the documentation for the two variables icon-map-list and x-gtk-stock-map.
 +
 +** Scrollbars follow the system theme on Windows XP and later.
 +Windows XP introduced themed scrollbars, but applications have to take
 +special steps to use them. Emacs now has the appropriate resources linked
 +in to make it use the scrollbars from the system theme.
 +
 +** focus-follows-mouse defaults to nil on MS Windows.
 +Previously this variable was incorrectly documented as having no effect
 +on MS Windows, and the default was inappropriate for the majority of
 +Windows installations. Users of software which modifies the behavior of
 +Windows to cause focus to follow the mouse will now need to explicitly set
 +this variable.
 +
 +** `bad-packages-alist' will warn about external packages that are known
 +to cause problems in this version of Emacs.
 +
 +** The values of `dired-recursive-deletes' and `dired-recursive-copies'
 +have been changed to `top'.  This means that the user is asked once,
 +before deleting/copying the indicated directory recursively.
 +
 +** `browse-url-emacs' loads a URL into an Emacs buffer.  Handy for *.el URLs.
 +
 +** The command gdba has been removed as gdb works now for those cases where it
 +was needed.  In text command mode, if you have problems before execution has
 +started, use M-x gud-gdb.
 +
 +** desktop.el now detects conflicting uses of the desktop file.
 +When loading the desktop, desktop.el can now detect that the file is already
 +in use.  The default behavior is to ask the user what to do, but you can
 +customize it with the new option `desktop-load-locked-desktop'.  When saving,
 +desktop.el warns about attempts to overwrite a desktop file if it determines
 +that the desktop being saved is not an update of the one on disk.
 +
 +** Compilation mode now correctly respects the value of
 +`compilation-scroll-output' between invocations.  Previously, output
 +was mistakenly scrolled on compiles after the first.  Customize
 +`compilation-scroll-output' if you want to retain the scrolling.
 +
 +** `font-lock-comment-face' no longer differs from the default on
 +displays with fewer than 16 colors and dark background (e.g. older
 +xterms and the Linux console).  On such displays, only the comment
 +delimiters will appear to be fontified (in the new face
 +`font-lock-comment-delimiter-face').  To restore the old appearance,
 +customize `font-lock-comment-face'. Another alternative is to use a
 +newer terminal emulator that supports more colors (256 is now common).
 +For example, for xterm compatible emulators that support 256 colors,
 +you can run emacs like this: 
 +env TERM=xterm-256color emacs -nw
 +(This was new in Emacs 22.1, but was not described.  In Emacs 22.1
 +this also happened for terminals with a light background, that is not
 +the case anymore).
 +
 +* New Modes and Packages in Emacs 22.2
 +
 +** bibtex-style-mode helps you write BibTeX's *.bst files.
 +
 +** The new package css-mode.el provides a major mode for editing CSS files.
 +
 +** The new package vera-mode.el provides a major mode for editing Vera files.
 +
 +** The new package verilog-mode.el provides a major mode for editing Verilog files.
 +
 +** The new package socks.el implements the SOCKS v5 protocol.
 +
 +** VC
 +
 +*** VC backends can provide completion of revision names.
 +
 +*** VC backends can provide extra menu entries to the "Version Control" menu.
 +This can be used to add menu entries for backend specific functions.
 +
 +*** VC has some support for Mercurial (Hg).
 +
 +*** VC has some support for Monotone (Mtn).
 +
 +*** VC has some support for Bazaar (Bzr).
 +
 +*** VC has some support for Git.
 +
 +* Incompatible Lisp Changes in Emacs 22.2
 +
 +** shell.el no longer defines the aliases `dirtrack-toggle' and
 +`dirtrack-mode' for `shell-dirtrack-mode'.  These names were removed
 +because they clash with commands provided by dirtrack.el.  Use
 +`shell-dirtrack-mode' instead.
 +
 +* Lisp Changes in Emacs 22.2.
 +
 +** Frame-local variables are deprecated and are slated for removal.
 +They can easily be emulated.  Rather than calling `make-variable-frame-local'
 +and accessing the variable value directly, explicitly check for a
 +frame-parameter, and if there is one, use its value in preference to
 +that of the variable.  Note that buffer-local values should take
 +precedence over frame-local ones, so you may wish to check `local-variable-p'
 +first.
 +
 +** The function invisible-p returns non-nil if the character
 +after a specified position is invisible.
 +
 +** inhibit-modification-hooks is bound to t while running modification hooks.
 +As a happy consequence, after-change-functions and before-change-functions
 +are not bound to nil any more while running an (after|before)-change-function.
 +
 +** New function `window-full-width-p' returns t if a window is as wide
 +as its frame.
 +
 +** The new function `image-refresh' refreshes all images associated
 +with a given image specification.
 +
 +** The new function `combine-and-quote-strings' concatenates a list of strings
 +using a specified separator.  If a string contains double quotes, they
 +are escaped in the output.
 +
 +** The new function `split-string-and-unquote' performs the inverse operation to
 +`combine-and-quote-strings', i.e. splits a single string into a list
 +of strings, undoing any quoting added by `combine-and-quote-strings'.
 +(For some separator/string combinations, the original strings cannot
 +be recovered.)
 +
 +\f
 +* Installation Changes in Emacs 22.1
 +
 +** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
 +when you run configure.  This requires Gtk+ 2.4 or newer.  This port
 +provides a way to display multilingual text in menus (with some caveats).
 +
 +** The Emacs Lisp Reference Manual is now part of the distribution.
 +
 +The Emacs Lisp Reference Manual in Info format is built as part of the
 +Emacs build procedure and installed together with the Emacs User
 +Manual.  A menu item was added to the menu bar to make it easily
 +accessible (Help->More Manuals->Emacs Lisp Reference).
 +
 +** The Introduction to Programming in Emacs Lisp manual is now part of
 +the distribution.
 +
 +This manual is now part of the standard distribution and is installed,
 +together with the Emacs User Manual, into the Info directory.  A menu
 +item was added to the menu bar to make it easily accessible
 +(Help->More Manuals->Introduction to Emacs Lisp).
 +
 +** Leim is now part of the Emacs distribution.
 +You no longer need to download a separate tarball in order to build
 +Emacs with Leim.
 +
 +** Support for MacOS X was added.
 +See the files mac/README and mac/INSTALL for build instructions.
 +
 +** Mac OS 9 port now uses the Carbon API by default.  You can also
 +create a non-Carbon build by specifying `NonCarbon' as a target.  See
 +the files mac/README and mac/INSTALL for build instructions.
 +
 +** Support for a Cygwin build of Emacs was added.
 +
 +** Support for GNU/Linux systems on X86-64 machines was added.
 +
 +** Support for GNU/Linux systems on S390 machines was added.
 +
 +** Support for GNU/Linux systems on Tensilica Xtensa machines was added.
 +
 +** Support for FreeBSD/Alpha has been added.
 +
 +** New translations of the Emacs Tutorial are available in the
 +following languages: Brasilian Portuguese, Bulgarian, Chinese (both
 +with simplified and traditional characters), French, Russian, 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.
 +
 +** New translations of the Emacs reference card are available in the
 +Brasilian Portuguese and Russian.  The corresponding PostScript files
 +are also included.
 +
 +** A French translation of the `Emacs Survival Guide' is available.
 +
 +** 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.  You can control this with the
 +configure option `--with-game-dir'.  The specific user that Emacs uses
 +to own the game scores is controlled by `--with-game-user'.  If access
 +to a game user is not available, then scores will be stored separately
 +in each user's home directory.
 +
 +** 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'.
 +
 +** Emacs can now be built without sound support.
 +
 +** Emacs Lisp source files are compressed by default if `gzip' is available.
 +
 +** All images used in Emacs have been consolidated in etc/images and subdirs.
 +See also the changes to `find-image', documented below.
 +
 +** Emacs comes with a new set of icons.
 +These icons are displayed on the taskbar and/or titlebar when Emacs
 +runs in a graphical environment.  Source files for these icons can be
 +found in etc/images/icons.  (You can't change the icons displayed by
 +Emacs by changing these files directly.  On X, the icon is compiled
 +into the Emacs executable; see gnu.h in the source tree.  On MS
 +Windows, see nt/icons/emacs.ico.)
 +
 +** The `emacsserver' program has been removed, replaced with Lisp code.
 +
 +** The `yow' program has been removed.
 +Use the corresponding Emacs feature instead.
 +
 +** The Emacs terminal emulation in term.el uses a different terminfo name.
 +The Emacs terminal emulation in term.el now uses "eterm-color" as its
 +terminfo name, since term.el now supports color.
 +
 +** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
 +contents of buffers from a core dump and save them to files easily, should
 +Emacs crash.
 +
 +** Building with -DENABLE_CHECKING does not automatically build with union
 +types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
 +
 +** When pure storage overflows while dumping, Emacs now prints how
 +much pure storage it will approximately need.
 +
 +\f
 +* Startup Changes in Emacs 22.1
 +
 +** Init file changes
 +If the init file ~/.emacs does not exist, Emacs will try
 +~/.emacs.d/init.el or ~/.emacs.d/init.elc.  Likewise, if the shell init file
 +~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
 +
 +** 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-splash-screen' (which is also aliased as
 +`inhibit-startup-message').
 +
 +** 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.
 +
 +** New command line option -nbc or --no-blinking-cursor disables
 +the blinking cursor on graphical terminals.
 +
 +** 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 -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.
 +
 +** 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.)
 +
 +** 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.
 +
 +** Emacs built for MS-Windows now behaves like Emacs on X does,
 +with respect to its frame position: if you don't specify a position
 +(in your .emacs init file, in the Registry, or with the --geometry
 +command-line option), Emacs leaves the frame position to the Windows'
 +window manager.
 +
 +** The command line option --no-windows has been changed to
 +--no-window-system.  The old one still works, but is deprecated.
 +
 +** If the environment variable DISPLAY specifies an unreachable X display,
 +Emacs will now startup as if invoked with the --no-window-system option.
 +
 +** 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'.
 +
 +** 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.
 +
 +** The default is now to use a bitmap as the icon.
 +The command-line options --icon-type, -i have been replaced with
 +options --no-bitmap-icon, -nbi to turn the bitmap icon off.
 +
 +** If the environment variable EMAIL is defined, Emacs now uses its value
 +to compute the default value of `user-mail-address', in preference to
 +concatenation of `user-login-name' with the name of your host machine.
 +
 +\f
 +* Incompatible Editing Changes in Emacs 22.1
 +
 +** You can now follow links by clicking Mouse-1 on the link.
 +
 +See below for more details.
 +
 +** When the undo information of the current command gets really large
 +(beyond the value of `undo-outer-limit'), Emacs discards it and warns
 +you about it.
 +
 +** When Emacs prompts for file names, SPC no longer completes the file name.
 +This is so filenames with embedded spaces could be input without the
 +need to quote the space with a C-q.  The underlying changes in the
 +keymaps that are active in the minibuffer are described below under
 +"New keymaps for typing file names".
 +
 +If you want the old behavior back, add these two key bindings to your
 +~/.emacs init file:
 +
 +  (define-key minibuffer-local-filename-completion-map
 +            " " 'minibuffer-complete-word)
 +  (define-key minibuffer-local-must-match-filename-map
 +            " " 'minibuffer-complete-word)
 +
 +** 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.
 +
 +** In incremental search, C-w is changed.  M-%, C-M-w and C-M-y are special.
 +
 +See below under "incremental search changes".
 +
 +** 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.
 +
 +** C-u M-g M-g switches to the most recent previous buffer,
 +and goes to the specified line in that buffer.
 +
 +When goto-line starts to execute, if there's a number in the buffer at
 +point then it acts as the default argument for the minibuffer.
 +
 +** M-o now is the prefix key for setting text properties;
 +M-o M-o requests refontification.
 +
 +** C-x C-f RET (find-file), 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.
 +
 +You can get the old behavior by typing C-x C-f M-n RET, which fetches
 +the actual file name into 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'.
 +
 +** 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.
 +
 +** `apply-macro-to-region-lines' now operates on all lines that begin
 +in the region, rather than on all complete lines in the region.
 +
 +** line-move-ignore-invisible now defaults to t.
 +
 +** Adaptive filling misfeature removed.
 +It no longer treats `NNN.' or `(NNN)' as a prefix.
 +
 +** The old bindings C-M-delete and C-M-backspace have been deleted,
 +since there are situations where one or the other will shut down
 +the operating system or your X server.
 +
 +** The register compatibility key bindings (deprecated since Emacs 19)
 +have been removed:
 +  C-x /   point-to-register (Use: C-x r SPC)
 +  C-x j   jump-to-register  (Use: C-x r j)
 +  C-x x   copy-to-register  (Use: C-x r s)
 +  C-x g   insert-register   (Use: C-x r i)
 +
 +\f
 +* Editing Changes in Emacs 22.1
 +
 +** The max size of buffers and integers has been doubled.
 +On 32bit machines, it is now 256M (i.e. 268435455).
 +
 +** !MEM FULL! at the start of the mode line indicates that Emacs
 +cannot get any more memory for Lisp data.  This often means it could
 +crash soon if you do things that use more memory.  On most systems,
 +killing buffers will get out of this state.  If killing buffers does
 +not make !MEM FULL! disappear, you should save your work and start
 +a new Emacs.
 +
 +** `undo-only' does an undo which does not redo any previous undo.
 +
 +** 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.
 +
 +** New command `kill-whole-line' kills an entire line at once.
 +By default, it is bound to C-S-<backspace>.
 +
 +** M-SPC (just-one-space) when given a numeric argument N
 +converts whitespace around point to N spaces.
 +
 +** You can now switch buffers in a cyclic order with C-x C-left
 +(previous-buffer) and C-x C-right (next-buffer).  C-x left and
 +C-x right can be used as well.  The functions keep a different buffer
 +cycle for each frame, using the frame-local buffer list.
 +
 +** C-x 5 C-o displays a specified buffer in another frame
 +but does not switch to that frame.  It's the multi-frame
 +analogue of C-x 4 C-o.
 +
 +** `special-display-buffer-names' and `special-display-regexps' now
 +understand two new boolean pseudo-frame-parameters `same-frame' and
 +`same-window'.
 +
 +** New commands to operate on pairs of open and close characters:
 +`insert-pair', `delete-pair', `raise-sexp'.
 +
 +** M-x setenv now expands environment variable references.
 +
 +Substrings of the form `$foo' and `${foo}' in the specified new value
 +now refer to the value of environment variable foo.  To include a `$'
 +in the value, use `$$'.
 +
 +** 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 Paragraph-Indent Text mode.
 +
 +** The default for the paper size (variable ps-paper-type) is taken
 +from the locale.
 +
 +** Help command changes:
 +
 +*** Changes in C-h bindings:
 +
 +C-h e displays the *Messages* buffer.
 +
 +C-h d runs apropos-documentation.
 +
 +C-h r visits the Emacs Manual in Info.
 +
 +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
 +
 +*** 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.
 +
 +*** 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').  In
 +addition, it now makes hyperlinks to URLs as well if the URL is
 +enclosed in single quotes and preceded by `URL'.
 +
 +*** 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 command `list-text-properties-at' has been deleted because
 +C-u C-x = gives the same information and more.
 +
 +*** 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 you 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.
 +
 +** Mark command changes:
 +
 +*** A prefix argument is no longer required to repeat a jump to a
 +previous mark if you set `set-mark-command-repeat-pop' to t.  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 type C-M-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.
 +
 +*** 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.
 +
 +*** 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.
 +
 +** Incremental Search changes:
 +
 +*** M-% typed in isearch mode invokes `query-replace' or
 +`query-replace-regexp' (depending on search mode) with the current
 +search string used as the string to replace.
 +
 +*** C-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.
 +
 +*** 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.
 +
 +*** 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'.
 +
 +** Replace command changes:
 +
 +*** 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 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-regexp-eval' is now
 +deprecated since it offers no additional functionality.
 +
 +*** 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.
 +
 +*** 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.
 +
 +** Local variables lists:
 +
 +*** If the local variables list contains any variable-value pairs that
 +are not known to be safe, Emacs shows a prompt asking whether to apply
 +the local variables list as a whole.  In earlier versions, a prompt
 +was only issued for variables explicitly marked as risky (for the
 +definition of risky variables, see `risky-local-variable-p').
 +
 +At the prompt, you can choose to save the contents of this local
 +variables list to `safe-local-variable-values'.  This new customizable
 +option is a list of variable-value pairs that are known to be safe.
 +Variables can also be marked as safe with the existing
 +`safe-local-variable' property (see `safe-local-variable-p').
 +However, risky variables will not be added to
 +`safe-local-variable-values' in this way.
 +
 +*** The variable `enable-local-variables' controls how local variable
 +lists are handled.  t, the default, specifies the standard querying
 +behavior.  :safe means use only safe values, and ignore the rest.
 +:all means set all variables, whether or not they are safe.
 +nil means ignore them all.  Anything else means always query.
 +
 +*** 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.
 +
 +*** In processing a local variables list, Emacs strips the prefix and
 +suffix from every line before processing all the lines.
 +
 +*** Text properties in local variables.
 +
 +A file local variables list cannot specify a string with text
 +properties--any specified text properties are discarded.
 +
 +** File operation changes:
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** Auto Compression mode is now enabled by default.
 +
 +*** If the user visits a file larger than `large-file-warning-threshold',
 +Emacs asks for confirmation.
 +
 +*** 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.
 +
 +*** 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 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.)
 +
 +*** 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.  It now asks if you
 +wish save your changes and not just offer to kill the buffer.
 +
 +*** 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 new option `write-region-inhibit-fsync' disables calls to fsync
 +in `write-region'.  This can be useful on laptops to avoid spinning up
 +the hard drive upon each file save.  Enabling this variable may result
 +in data loss, use with care.
 +
 +** Minibuffer changes:
 +
 +*** 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.
 +
 +*** The new file-name-shadow-mode is turned ON by default, so that when
 +entering a file name, any prefix which Emacs will ignore is dimmed.
 +
 +*** 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.
 +
 +Above fontification is always done when listing completions is
 +triggered at minibuffer.  If you want to fontify completions whose
 +listing is triggered at the other normal buffer, you have to pass
 +the common prefix of completions to `display-completion-list' as
 +its second argument.
 +
 +*** File-name completion can now ignore specified 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.
 +
 +*** New user option `history-delete-duplicates'.
 +If set to t when adding a new history element, all previous identical
 +elements are deleted from the history list.
 +
 +** Redisplay changes:
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** Angle icons in the fringes can indicate the buffer boundaries.  In
 +addition, up and down arrow bitmaps in the fringe indicate which ways
 +the window can be scrolled.
 +
 +This behavior is activated by setting the buffer-local variable
 +`indicate-buffer-boundaries' to a non-nil value.  The default value of
 +this variable is found in `default-indicate-buffer-boundaries'.
 +
 +If value is `left' or `right', both angle and arrow bitmaps are
 +displayed in the left or right fringe, resp.
 +
 +The value can also be an alist which specifies the presence and
 +position of each bitmap individually.
 +
 +For example, ((top . left) (t .  right)) places the top angle bitmap
 +in left fringe, the bottom angle bitmap in right fringe, and both
 +arrow bitmaps in right fringe.  To show just the angle bitmaps in the
 +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' can be set to nil to
 +revert to the old behavior of continuing such lines.
 +
 +*** A window can 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.
 +
 +*** When a window has display margin areas, the fringes are now
 +displayed between the margins and the buffer's text area, rather than
 +outside those margins.
 +
 +*** New face `escape-glyph' highlights control characters and escape glyphs.
 +
 +*** Non-breaking space and hyphens are now displayed with a special
 +face, either nobreak-space or escape-glyph.  You can turn this off or
 +specify a different mode by setting the variable `nobreak-char-display'.
 +
 +*** 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.
 +
 +*** Moving or scrolling through images (and other lines) taller than
 +the window now works sensibly, by automatically adjusting the window's
 +vscroll property.
 +
 +*** Preemptive redisplay now adapts to current load and bandwidth.
 +
 +To avoid preempting redisplay on fast computers, networks, and displays,
 +the arrival of new input is now performed at regular intervals during
 +redisplay.  The new variable `redisplay-preemption-period' specifies
 +the period; the default is to check for input every 0.1 seconds.
 +
 +*** The %c and %l constructs are now ignored in frame-title-format.
 +Due to technical limitations in how Emacs interacts with windowing
 +systems, these constructs often failed to render properly, and could
 +even cause Emacs to crash.
 +
 +*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar
 +will expand as needed, but not contract automatically.  To contract
 +the tool bar, you must type C-l.
 +
 +*** New customize option `overline-margin' controls the space between
 +overline and text.
 +
 +*** New variable `x-underline-at-descent-line' controls the relative
 +position of the underline.  When set, it overrides the
 +`x-use-underline-position-properties' variables.
 +
 +** New faces:
 +
 +*** `mode-line-highlight' is the standard face indicating mouse sensitive
 +elements on mode-line (and header-line) like `highlight' face on text
 +areas.
 +
 +*** `mode-line-buffer-id' is the standard face for buffer identification
 +parts of the mode line.
 +
 +*** `shadow' face defines the appearance of the "shadowed" text, i.e.
 +the text which should be less noticeable than the surrounding text.
 +This can be achieved by using shades of grey in contrast with either
 +black or white default foreground color.  This generic shadow face
 +allows customization of the appearance of shadowed text in one place,
 +so package-specific faces can inherit from it.
 +
 +*** `vertical-border' face is used for the vertical divider between windows.
 +
 +** Font-Lock (syntax highlighting) changes:
 +
 +*** All modes now support using M-x font-lock-mode to toggle
 +fontification, even those such as Occur, Info, and comint-derived
 +modes that do their own fontification in a special way.
 +
 +The variable `Info-fontify' is no longer applicable; to disable
 +fontification in Info, remove `turn-on-font-lock' from
 +`Info-mode-hook'.
 +
 +*** New standard font-lock face `font-lock-comment-delimiter-face'.
 +This is used for the characters that indicate the start of a comment,
 +e.g. `;' in Lisp mode.
 +
 +*** New standard font-lock face `font-lock-preprocessor-face'.
 +
 +*** Easy to overlook single character negation can now be font-locked.
 +You can use the new variable `font-lock-negation-char-face' and the face of
 +the same name to customize this.  Currently the cc-modes, sh-script-mode,
 +cperl-mode and make-mode support this.
 +
 +*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
 +features assume that an open-paren in column 0 is always outside of
 +any string or comment, Font-Lock now highlights any such open-paren in
 +bold-red if it is inside a string or a comment, to indicate that it
 +can cause trouble.  You should rewrite the string or comment so that
 +the open-paren is not in column 0.
 +
 +*** M-o now is the prefix key for setting text properties;
 +M-o M-o requests refontification.
 +
 +*** The default settings for JIT stealth lock parameters are changed.
 +The default value for the user option jit-lock-stealth-time is now nil
 +instead of 3.  This setting of jit-lock-stealth-time disables stealth
 +fontification: on today's machines, it may be a bug in font lock
 +patterns if fontification otherwise noticeably degrades interactivity.
 +If you find movement in infrequently visited buffers sluggish (and the
 +major mode maintainer has no better idea), customizing
 +jit-lock-stealth-time to a non-nil value will let Emacs fontify
 +buffers in the background when it considers the system to be idle.
 +jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to
 +cause less load than the old defaults.
 +
 +*** 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.
 +
 +*** lazy-lock is considered obsolete.
 +
 +The `lazy-lock' package is superseded by `jit-lock' and is considered
 +obsolete.  `jit-lock' is activated by default; if you wish to continue
 +using `lazy-lock', activate it in your ~/.emacs like this:
 +  (setq font-lock-support-mode 'lazy-lock-mode)
 +
 +If you invoke `lazy-lock-mode' directly rather than through
 +`font-lock-support-mode', it now issues a warning:
 +  "Use font-lock-support-mode rather than calling lazy-lock-mode"
 +
 +** Menu support:
 +
 +*** A menu item "Show/Hide" was added to the top-level menu "Options".
 +This menu allows you to turn various display features on and off (such
 +as the fringes, the tool bar, the speedbar, and the menu bar itself).
 +You can also move the vertical scroll bar to either side here or turn
 +it off completely.  There is also a menu-item to toggle displaying of
 +current date and time, current line and column number in the mode-line.
 +
 +*** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
 +
 +*** The 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'.
 +
 +*** 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 menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
 +Pressing F10 shows the first menu in the menu bar.  Navigation is done with
 +the arrow keys, select with the return key and cancel with the escape keys.
 +
 +*** 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 pop down on pressing
 +ESC, like they do for Gtk+, Mac and W32.
 +
 +*** For the Gtk+ version, you can make Emacs use the old file dialog
 +by setting the variable `x-gtk-use-old-file-dialog' to t.  Default is to use
 +the new dialog.
 +
 +*** You can exit dialog windows and menus by typing C-g.
 +
 +** Buffer Menu changes:
 +
 +*** 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.
 +
 +*** 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.
 +
 +** Mouse changes:
 +
 +*** 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-sensitive dual behavior.  (If you prefer the old
 +behavior, set the user option `mouse-1-click-follows-link' to nil.)
 +
 +Depending on the current mode, a Mouse-2 click in Emacs can 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'.
 +
 +*** If you set the new variable `mouse-autoselect-window' to a non-nil
 +value, windows are automatically selected as you move the mouse from
 +one Emacs window to another, even within a frame.  A minibuffer window
 +can be selected only when it is active.
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** Under X, mouse-wheel-mode is turned on by default.
 +
 +*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
 +
 +People tend to push the mouse wheel (which counts as a mouse-2 click)
 +unintentionally while turning the wheel, so these clicks are now
 +ignored.  You can customize this with the mouse-wheel-click-event and
 +mouse-wheel-inhibit-click-time variables.
 +
 +*** mouse-wheels can now scroll a specific fraction of the window
 +(rather than a fixed number of lines) and the scrolling is `progressive'.
 +
 +** Multilingual Environment (Mule) changes:
 +
 +*** You can disable character translation for a file using the -*-
 +construct.  Include `enable-character-translation: nil' inside the
 +-*-...-*- to disable any character translation that may happen by
 +various global and per-coding-system translation tables.  You can also
 +specify it in a local variable list at the end of the file.  For
 +shortcut, instead of using this long variable name, you can append the
 +character "!" at the end of coding-system name specified in -*-
 +construct or in a local variable list.  For example, if a file has the
 +following header, it is decoded by the coding system `iso-latin-1'
 +without any character translation:
 +;; -*- coding: iso-latin-1!; -*-
 +
 +*** 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 can result in using the different coding systems as
 +default in some locale (e.g. vi_VN).
 +
 +*** The keyboard-coding-system is now automatically set based on your
 +current locale settings if you are not using a window system.  This
 +can 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 `Unibyte Mode'.
 +
 +*** The new command `set-file-name-coding-system' (C-x RET F) sets
 +coding system for encoding and decoding file names.  A new menu item
 +(Options->Mule->Set Coding Systems->For File Name) invokes this
 +command.
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** New language environments (set up automatically according to the
 +locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto,
 +French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam,
 +Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian,
 +Welsh,Latin-6, Windows-1255.
 +
 +*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
 +belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for
 +Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard,
 +lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
 +russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer,
 +ucs, vietnamese-telex, welsh.
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** 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 UTF-7 coding system is available in the library `utf-7'.
 +
 +*** 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 in 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.  All coding systems defined in
 +`code-pages' are auto-loaded.
 +
 +*** 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.
 +
 +** Customize changes:
 +
 +*** Custom themes are collections of customize options.  Create a
 +custom theme with M-x customize-create-theme.  Use M-x load-theme to
 +load and enable a theme, and M-x disable-theme to disable it.  Use M-x
 +enable-theme to enable a disabled theme.
 +
 +*** 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:
 +
 +*** 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
 +double quotes make no difference in the shell, but they prevent
 +special treatment in `dired-do-shell-command'.
 +
 +*** The Dired command `dired-goto-file' is now bound to j, not M-g.
 +This is to avoid hiding the global key binding of M-g.
 +
 +*** 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, the w command now stores the current line's file name
 +into the kill ring.  With a zero prefix arg, it stores the absolute file name.
 +
 +*** In 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.
 +
 +*** 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.
 +
 +** Comint changes:
 +
 +*** The new INSIDE_EMACS environment variable is set to "t" in subshells
 +running inside Emacs.  This supersedes the EMACS environment variable,
 +which will be removed in a future Emacs release.  Programs that need
 +to know whether they are started inside Emacs should check INSIDE_EMACS
 +instead of EMACS.
 +
 +*** 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 properties 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.
 +
 +** M-x Compile changes:
 +
 +*** 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.
 +
 +*** New user option `compilation-environment'.
 +This option allows you to specify environment variables for inferior
 +compilation processes without affecting the environment that all
 +subprocesses inherit.
 +
 +*** New user option `compilation-disable-input'.
 +If this is non-nil, send end-of-file as compilation process input.
 +
 +*** 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.
 +
 +*** When the left fringe is displayed, an arrow points to current message in
 +the compilation buffer.
 +
 +*** The new variable `compilation-context-lines' controls lines of leading
 +context before the current message.  If nil and the left fringe is displayed,
 +it doesn't scroll the compilation output window.  If there is no left fringe,
 +no arrow is displayed and a value of nil means display the message at the top
 +of the window.
 +
 +** Occur mode changes:
 +
 +*** The new command `multi-occur' is just like `occur', except it can
 +search multiple buffers.  There is also a new command
 +`multi-occur-in-matching-buffers' which allows you to specify the
 +buffers to search by their filenames or buffer names.  Internally,
 +Occur mode has been rewritten, and now uses font-lock, among other
 +changes.
 +
 +*** You can now use next-error (C-x `) and previous-error to advance to
 +the next/previous matching line found by M-x occur.
 +
 +*** 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.
 +
 +** Grep changes:
 +
 +*** Grep has been decoupled from compilation mode setup.
 +
 +There's a new separate package grep.el, with its 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.
 +
 +*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
 +more user-friendly versions of `grep' and `grep-find', which prompt
 +separately for the regular expression to match, the files to search,
 +and the base directory for the search.  Case sensitivity of the
 +search is controlled by the current value of `case-fold-search'.
 +
 +These commands build the shell commands based on the new variables
 +`grep-template' (lgrep) and `grep-find-template' (rgrep).
 +
 +The files to search can use aliases defined in `grep-files-aliases'.
 +
 +Subdirectories listed in `grep-find-ignored-directories' such as those
 +typically used by various version control systems, like CVS and arch,
 +are automatically skipped by `rgrep'.
 +
 +*** The grep commands provide highlighting support.
 +
 +Hits are fontified in green, and hits in binary files in orange.  Grep buffers
 +can be saved and automatically revisited.
 +
 +*** New option `grep-highlight-matches' highlights 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.
 +
 +*** The new variables `grep-window-height' and `grep-scroll-output' override
 +the corresponding compilation mode settings, for grep commands only.
 +
 +** Cursor display changes:
 +
 +*** Emacs can produce an underscore-like (horizontal bar) cursor.
 +The underscore cursor is set by putting `(cursor-type . hbar)' in
 +default-frame-alist.  It supports variable heights, like the `bar'
 +cursor does.
 +
 +*** The variable `cursor-in-non-selected-windows' can now be set to any
 +of the recognized cursor types.
 +
 +*** 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.
 +
 +*** On text terminals, the variable `visible-cursor' controls whether Emacs
 +uses the "very visible" cursor (the default) or the normal cursor.
 +
 +*** The X resource cursorBlink can be used to turn off cursor blinking.
 +
 +*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
 +now controlled by the variable `blink-cursor-alist'.
 +
 +** X Windows Support:
 +
 +*** Emacs now supports drag and drop for X.  Dropping a file on a window
 +opens it, dropping text inserts the text.  Dropping a file on a dired
 +buffer copies or moves the file to that directory.
 +
 +*** 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 can
 +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).
 +
 +** Xterm support:
 +
 +*** If you enable Xterm Mouse mode, Emacs will respond 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 (and later versions),
 +they might not work on some older versions of xterm, or on some
 +proprietary versions.
 +The various keys generated by xterm when the "modifyOtherKeys"
 +resource is set are also supported.
 +
 +** Character terminal color support changes:
 +
 +*** 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.
 +
 +** ebnf2ps changes:
 +
 +*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
 +shape drawing.
 +The extra width is used to avoid that the arrowhead and the terminal border
 +overlap.  It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
 +
 +*** New option `ebnf-arrow-scale' which specify the arrow scale.
 +Values lower than 1.0, shrink the arrow.
 +Values greater than 1.0, expand the arrow.
 +\f
 +* New Modes and Packages in Emacs 22.1
 +
 +** 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.
 +
 +The cua-selection-mode enables the CUA keybindings for the region but
 +does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a
 +replacement for pc-selection-mode.
 +
 +In addition, cua provides unified rectangle support with visible
 +rectangle highlighting: Use C-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 can 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.
 +
 +** 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")
 +
 +Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
 +tramp-unload-tramp.
 +
 +** The image-dired.el package allows you to easily view, tag and in
 +other ways manipulate image files and their thumbnails, using dired as
 +the main interface.  Image-Dired provides functionality to generate
 +simple image galleries.
 +
 +** 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.
 +
 +** Calc is now part of the Emacs distribution.
 +
 +Calc is an advanced desk calculator and mathematical tool written in
 +Emacs Lisp.  The prefix for Calc has been changed to `C-x *' and Calc
 +can be started with `C-x * *'.  The Calc manual is separate from the
 +Emacs manual; within Emacs, type "C-h i m calc RET" to read the
 +manual.  A reference card is available in `etc/calccard.tex' and
 +`etc/calccard.ps'.
 +
 +** Org mode is now part of the Emacs distribution
 +
 +Org mode is a mode for keeping notes, maintaining ToDo lists, and
 +doing project planning with a fast and effective plain-text system.
 +It also contains a plain-text table editor with spreadsheet-like
 +capabilities.
 +
 +The Org mode table editor can be integrated into any major mode by
 +activating the minor mode, Orgtbl mode.
 +
 +The documentation for org-mode is in a separate manual; within Emacs,
 +type "C-h i m org RET" to read that manual.  A reference card is
 +available in `etc/orgcard.tex' and `etc/orgcard.ps'.
 +
 +** ERC is now part of the Emacs distribution.
 +
 +ERC is a powerful, modular, and extensible IRC client for Emacs.
 +
 +To see what modules are available, type
 +M-x customize-option erc-modules RET.
 +
 +To start an IRC session with ERC, type M-x erc, and follow the prompts
 +for server, port, and nick.
 +
 +** Rcirc is now part of the Emacs distribution.
 +
 +Rcirc is an Internet relay chat (IRC) client.  It supports
 +simultaneous connections to multiple IRC servers.  Each discussion
 +takes place in its own buffer.  For each connection you can join
 +several channels (many-to-many) and participate in private
 +(one-to-one) chats.  Both channel and private chats are contained in
 +separate buffers.
 +
 +To start an IRC session using the default parameters, type M-x irc.
 +If you type C-u M-x irc, it prompts you for the server, nick, port and
 +startup channel parameters before connecting.
 +
 +** The new package ibuffer provides a powerful, completely
 +customizable replacement for buff-menu.el.
 +
 +** Newsticker is now part of the Emacs distribution.
 +
 +Newsticker asynchronously retrieves headlines (RSS) from a list of news
 +sites, prepares these headlines for reading, and allows for loading the
 +corresponding articles in a web browser.  Its documentation is in a
 +separate manual.
 +
 +** The wdired.el package allows you to use normal editing commands on Dired
 +buffers to change filenames, permissions, etc...
 +
 +** 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.
 +
 +** 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 noticeable.  The display method can
 +be displayed by customizing the variable `file-name-shadow-properties'.
 +
 +** Emacs' keyboard macro facilities have been enhanced by the new
 +kmacro package.
 +
 +Keyboard macros are now defined and executed via the F3 and F4 keys:
 +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 original macro bindings C-x (, C-x ), and C-x e are still
 +available, but they now interface to the keyboard macro ring too.
 +
 +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 variables 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 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 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 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.
 +
 +** 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 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.
 +
 +** 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.
 +
 +** 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.
 +
 +** 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 new package flymake.el does on-the-fly syntax checking of program
 +source files.  See the Flymake's Info manual for more details.
 +
 +** savehist saves minibuffer histories between sessions.
 +To use this feature, turn on savehist-mode in your `.emacs' file.
 +
 +** 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 file t-mouse.el is now part of Emacs and provides access to mouse
 +events from the console.  It still requires gpm to work but has been updated
 +for Emacs 22.  In particular, the mode-line is now position sensitive.
 +
 +** The new package scroll-lock.el provides the Scroll Lock minor mode
 +for pager-like scrolling.  Keys which normally move point by line or
 +paragraph will scroll the buffer by the respective amount of lines
 +instead and point will be kept vertically fixed relative to window
 +boundaries during scrolling.
 +
 +** 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 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.
 +
 +** GDB-Script-mode is used for files like .gdbinit.
 +
 +** The new package dns-mode.el adds syntax highlighting of DNS master files.
 +It is a modern replacement for zone-mode.el, which is now obsolete.
 +
 +** `cfengine-mode' is a major mode for editing GNU Cfengine
 +configuration files.
 +
 +** The TCL package tcl-mode.el was replaced by tcl.el.
 +This was actually done in Emacs-21.1, and was not documented.
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 22.1:
 +
 +** Changes in Dired
 +
 +*** Bindings for Image-Dired added.
 +Several new keybindings, all starting with the C-t prefix, have been
 +added to Dired.  They are all bound to commands in Image-Dired.  As a
 +starting point, mark some image files in a dired buffer and do C-t d
 +to display thumbnails of them in a separate buffer.
 +
 +** Info mode changes
 +
 +*** 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.
 +
 +*** `Info-index' offers completion.
 +
 +*** http and ftp links in Info are now operational: they look like cross
 +references and following them calls `browse-url'.
 +
 +*** 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
 +around 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-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-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-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.
 +
 +*** A numeric prefix argument of `info' selects an Info buffer
 +with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
 +
 +*** 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.
 +
 +*** The default value for `Info-scroll-prefer-subnodes' is now nil.
 +
 +** Emacs server changes
 +
 +*** 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 Lisp
 +expression and to use the given display when visiting files.
 +
 +*** User option `server-mode' can be used to start a server process.
 +
 +** Locate changes
 +
 +*** By default, reverting the *Locate* buffer now just runs the last
 +`locate' command back over again without offering to update the locate
 +database (which normally only works if you have root privileges).  If
 +you prefer the old behavior, set the new customizable option
 +`locate-update-when-revert' to t.
 +
 +** Desktop package
 +
 +*** Desktop saving is now a minor mode, `desktop-save-mode'.
 +
 +*** The 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 command line option --no-desktop
 +
 +*** 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. Determines 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 hooks:
 +  - desktop-after-read-hook run after a desktop is loaded.
 +  - desktop-no-desktop-file-hook run when no desktop file is found.
 +
 +** Recentf changes
 +
 +The recent file list is now automatically cleaned up when recentf mode is
 +enabled.  The new option `recentf-auto-cleanup' controls when to do
 +automatic cleanup.
 +
 +The ten most recent files can be quickly opened by using the shortcut
 +keys 1 to 9, and 0, when the recent list is displayed in a buffer via
 +the `recentf-open-files', or `recentf-open-more-files' commands.
 +
 +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-handlers', you can
 +specify functions that successively transform recent file names.  For
 +example, if set to `file-truename' plus `abbreviate-file-name', the
 +same file will not be in the recent list with different symbolic
 +links, and the file name will be abbreviated.
 +
 +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.
 +
 +** Auto-Revert changes
 +
 +*** 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 you 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 can 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.
 +
 +** Changes in Shell Mode
 +
 +*** Shell output normally scrolls so that the input line is at the
 +bottom of the window -- thus showing the maximum possible text.  (This
 +is similar to the way sequential output to a terminal works.)
 +
 +** Changes in Hi Lock
 +
 +*** hi-lock-mode now only affects a single buffer, and a new function
 +`global-hi-lock-mode' enables Hi Lock in all buffers.  By default, if
 +hi-lock-mode is used in what appears to be the initialization file, a
 +warning message suggests to use global-hi-lock-mode instead.  However,
 +if the new variable `hi-lock-archaic-interface-deduce' is non-nil,
 +using hi-lock-mode in an initialization file will turn on Hi Lock in all
 +buffers and no warning will be issued (for compatibility with the
 +behavior in older versions of Emacs).
 +
 +** Changes in Allout
 +
 +*** Topic cryptography added, enabling easy gpg topic encryption and
 +decryption.  Per-topic basis enables interspersing encrypted-text and
 +clear-text within a single file to your heart's content, using symmetric
 +and/or public key modes.  Time-limited key caching, user-provided
 +symmetric key hinting and consistency verification, auto-encryption of
 +pending topics on save, and more, make it easy to use encryption in
 +powerful ways.  Encryption behavior customization is collected in the
 +allout-encryption customization group.
 +
 +*** Default command prefix was changed to "\C-c " (control-c space), to
 +avoid intruding on user's keybinding space.  Customize the
 +`allout-command-prefix' variable to your preference.
 +
 +*** Some previously rough topic-header format edge cases are reconciled.
 +Level 1 topics use the mode's comment format, and lines starting with the
 +asterisk - for instance, the comment close of some languages (eg, c's "*/"
 +or mathematica's "*)") - at the beginning of line are no longer are
 +interpreted as level 1 topics in those modes.
 +
 +*** Many or most commonly occurring "accidental" topics are disqualified.
 +Text in item bodies that looks like a low-depth topic is no longer mistaken
 +for one unless its first offspring (or that of its next sibling with
 +offspring) is only one level deeper.
 +
 +For example, pasting some text with a bunch of leading asterisks into a
 +topic that's followed by a level 3 or deeper topic will not cause the
 +pasted text to be mistaken for outline structure.
 +
 +The same constraint is applied to any level 2 or 3 topics.
 +
 +This settles an old issue where typed or pasted text needed to be carefully
 +reviewed, and sometimes doctored, to avoid accidentally disrupting the
 +outline structure.  Now that should be generally unnecessary, as the most
 +prone-to-occur accidents are disqualified.
 +
 +*** Allout now refuses to create "containment discontinuities", where a
 +topic is shifted deeper than the offspring-depth of its container.  On the
 +other hand, allout now operates gracefully with existing containment
 +discontinuities, revealing excessively contained topics rather than either
 +leaving them hidden or raising an error.
 +
 +*** Navigation within an item is easier.  Repeated beginning-of-line and
 +end-of-line key commands (usually, ^A and ^E) cycle through the
 +beginning/end-of-line and then beginning/end of topic, etc.  See new
 +customization vars `allout-beginning-of-line-cycles' and
 +`allout-end-of-line-cycles'.
 +
 +*** New or revised allout-mode activity hooks enable creation of
 +cooperative enhancements to allout mode without changes to the mode,
 +itself.
 +
 +See `allout-exposure-change-hook', `allout-structure-added-hook',
 +`allout-structure-deleted-hook', and `allout-structure-shifted-hook'.
 +
 +`allout-exposure-change-hook' replaces the existing
 +`allout-view-change-hook', which is being deprecated.  Both are still
 +invoked, but `allout-view-change-hook' will eventually be ignored.
 +`allout-exposure-change-hook' is called with explicit arguments detailing
 +the specifics of each change (as are the other new hooks), making it easier
 +to use than the old version.
 +
 +There is a new mode deactivation hook, `allout-mode-deactivate-hook', for
 +coordinating with deactivation of allout-mode.  Both that and the mode
 +activation hook, `allout-mode-hook' are now run after the `allout-mode'
 +variable is changed, rather than before.
 +
 +*** Allout now uses text overlay's `invisible' property for concealed text,
 +instead of selective-display.  This simplifies the code, in particular
 +avoiding the need for kludges for isearch dynamic-display, discretionary
 +handling of edits of concealed text, undo concerns, etc.
 +
 +*** There are many other fixes and refinements, including:
 +
 +   - repaired inhibition of inadvertent edits to concealed text, without
 +     inhibiting undo; we now reveal undo changes within concealed text.
 +   - auto-fill-mode is now left inactive when allout-mode starts, if it
 +     already was inactive.  also, `allout-inhibit-auto-fill' custom
 +     configuration variable makes it easy to disable auto fill in allout
 +     outlines in general or on a per-buffer basis.
 +   - allout now tolerates fielded text in outlines without disruption.
 +   - hot-spot navigation now is modularized with a new function,
 +     `allout-hotspot-key-handler', enabling easier use and enhancement of
 +     the functionality in allout addons.
 +   - repaired retention of topic body hanging indent upon topic depth shifts
 +   - bulleting variation is simpler and more accommodating, both in the
 +     default behavior and in ability to vary when creating new topics
 +   - mode deactivation now does cleans up effectively, more properly
 +     restoring affected variables and hooks to former state, removing
 +     overlays, etc.  see `allout-add-resumptions' and
 +     `allout-do-resumptions', which replace the old `allout-resumptions'.
 +   - included a few unit-tests for interior functionality.  developers can
 +     have them automatically run at the end of module load by customizing
 +     the option `allout-run-unit-tests-on-load'.
 +   - many, many other, more minor tweaks, fixes, and refinements.
 +   - version number incremented to 2.2
 +
 +** Hideshow mode changes
 +
 +*** 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 variable `hs-allow-nesting' non-nil means that hiding a block does
 +not discard the hidden state of any "internal" blocks; when the parent
 +block is later shown, the internal blocks remain hidden.  Default is nil.
 +
 +** FFAP changes
 +
 +*** 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 the file name to `find-file' with non-nil WILDCARDS
 +argument, which visits multiple files, and C-x d passes it to `dired'.
 +
 +** Changes in Skeleton
 +
 +*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
 +
 +`@' has reverted to only setting `skeleton-positions' and no longer
 +sets `skeleton-point'.  Skeletons which used @ to mark
 +`skeleton-point' independent of `_' should now use `-' instead.  The
 +updated `skeleton-insert' docstring explains these new features along
 +with other details of skeleton construction.
 +
 +*** The variables `skeleton-transformation', `skeleton-filter', and
 +`skeleton-pair-filter' have been renamed to
 +`skeleton-transformation-function', `skeleton-filter-function', and
 +`skeleton-pair-filter-function'.  The old names are still available
 +as aliases.
 +
 +** HTML/SGML changes
 +
 +*** 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.
 +
 +*** The variable `sgml-transformation' has been renamed to
 +`sgml-transformation-function'.  The old name is still available as
 +alias.
 +
 +*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
 +
 +** TeX modes
 +
 +*** New major mode Doctex mode, for *.dtx files.
 +
 +*** 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.
 +
 +** RefTeX mode changes
 +
 +*** Changes to RefTeX's table of contents
 +
 +The new command keys "<" and ">" in the TOC buffer promote/demote the
 +section at point or all sections in the current region, with full
 +support for multifile documents.
 +
 +The new command `reftex-toc-recenter' (`C-c -') shows the current
 +section in the TOC buffer without selecting the TOC window.
 +Recentering can happen automatically in idle time when the option
 +`reftex-auto-recenter-toc' is turned on.  The highlight in the TOC
 +buffer stays when the focus moves to a different window.  A dedicated
 +frame can show the TOC with the current section always automatically
 +highlighted.  The frame is created and deleted from the toc buffer
 +with the `d' key.
 +
 +The toc window can be split off horizontally instead of vertically.
 +See new option `reftex-toc-split-windows-horizontally'.
 +
 +Labels can be renamed globally from the table of contents using the
 +key `M-%'.
 +
 +The new command `reftex-goto-label' jumps directly to a label
 +location.
 +
 +*** Changes related to citations and BibTeX database files
 +
 +Commands that insert a citation now prompt for optional arguments when
 +called with a prefix argument.  Related new options are
 +`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
 +
 +The new command `reftex-create-bibtex-file' creates a BibTeX database
 +with all entries referenced in the current document.  The keys "e" and
 +"E" allow to produce a BibTeX database file from entries marked in a
 +citation selection buffer.
 +
 +The command `reftex-citation' uses the word in the buffer before the
 +cursor as a default search string.
 +
 +The support for chapterbib has been improved.  Different chapters can
 +now use BibTeX or an explicit `thebibliography' environment.
 +
 +The macros which specify the bibliography file (like \bibliography)
 +can be configured with the new option `reftex-bibliography-commands'.
 +
 +Support for jurabib has been added.
 +
 +*** Global index matched may be verified with a user function.
 +
 +During global indexing, a user function can verify an index match.
 +See new option `reftex-index-verify-function'.
 +
 +*** Parsing documents with many labels can be sped up.
 +
 +Operating in a document with thousands of labels can be sped up
 +considerably by allowing RefTeX to derive the type of a label directly
 +from the label prefix like `eq:' or `fig:'.  The option
 +`reftex-trust-label-prefix' needs to be configured in order to enable
 +this feature.  While the speed-up is significant, this may reduce the
 +quality of the context offered by RefTeX to describe a label.
 +
 +*** Miscellaneous changes
 +
 +The macros which input a file in LaTeX (like \input, \include) can be
 +configured in the new option `reftex-include-file-commands'.
 +
 +RefTeX supports global incremental search.
 +
 +** 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 by inserting fields that may occur but are not
 +present.
 +
 +*** 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.
 +
 +*** The new command `bibtex-complete' completes word fragment before
 +point according to context (bound to M-tab).
 +
 +*** In BibTeX mode the command `fill-paragraph' (M-q) fills
 +individual fields of a BibTeX entry.
 +
 +*** The new variable `bibtex-autofill-types' contains a list of entry
 +types for which fields are filled automatically (if possible).
 +
 +*** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
 +locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
 +Crossref fields are clickable (bound to mouse-2, RET).
 +
 +*** The 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.
 +
 +*** If the new variable `bibtex-autoadd-commas' is non-nil,
 +automatically add missing commas at end of BibTeX fields.
 +
 +*** The new command `bibtex-copy-summary-as-kill' pushes summary
 +of BibTeX entry to kill ring (bound to C-c C-t).
 +
 +*** If the new variable `bibtex-parse-keys-fast' is non-nil,
 +use fast but simplified algorithm for parsing BibTeX keys.
 +
 +*** The new variables bibtex-expand-strings and
 +bibtex-autokey-expand-strings control the expansion of strings when
 +extracting the content of a BibTeX field.
 +
 +*** The variables `bibtex-autokey-name-case-convert' and
 +`bibtex-autokey-titleword-case-convert' have been renamed to
 +`bibtex-autokey-name-case-convert-function' and
 +`bibtex-autokey-titleword-case-convert-function'.  The old names are
 +still available as aliases.
 +
 +** GUD changes
 +
 +*** 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 can separate the input/output of your program from
 +that of GDB and watches expressions in the speedbar.  It also uses features of
 +Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
 +breakpoints.
 +
 +To use this package just type M-x gdb.  See the Emacs manual if you want the
 +old behavior.
 +
 +*** GUD mode has its own tool bar for controlling execution of the inferior
 +and other common debugger commands.
 +
 +*** 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).
 +
 +*** The variable tooltip-gud-tips-p has been removed.  GUD tooltips can now be
 +toggled independently of normal tooltips with the minor mode
 +`gud-tooltip-mode'.
 +
 +*** 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.
 +
 +*** GUD mode improvements for jdb:
 +
 +**** Search for source files using jdb classpath and class information.
 +Fast startup since there is no need to scan all source files up front.
 +There is also no need to create and maintain lists of source
 +directories to scan.  Look at `gud-jdb-use-classpath' and
 +`gud-jdb-classpath' customization variables documentation.
 +
 +**** The previous method of searching for source files has been
 +preserved in case someone still wants/needs to use it.
 +Set `gud-jdb-use-classpath' to nil.
 +
 +**** Supports the standard breakpoint (gud-break, gud-clear)
 +set/clear operations from Java source files under the classpath, stack
 +traversal (gud-up, gud-down), and run until current stack finish
 +(gud-finish).
 +
 +**** Supports new jdb (Java 1.2 and later) in addition to oldjdb
 +(Java 1.1 jdb).
 +
 +*** Added jdb Customization Variables
 +
 +**** `gud-jdb-command-name'.  What command line to use to invoke jdb.
 +
 +**** `gud-jdb-use-classpath'.  Allows selection of java source file searching
 +method: set to t for new method, nil to scan `gud-jdb-directories' for
 +java sources (previous method).
 +
 +**** `gud-jdb-directories'.  List of directories to scan and search for Java
 +classes using the original gud-jdb method (if `gud-jdb-use-classpath'
 +is nil).
 +
 +*** Minor Improvements
 +
 +**** The STARTTLS wrapper (starttls.el) can now use GNUTLS
 +instead of the OpenSSL based `starttls' tool.  For backwards
 +compatibility, it prefers `starttls', but you can toggle
 +`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
 +`starttls' tool).
 +
 +**** Do not allow debugger output history variable to grow without bounds.
 +
 +** Lisp mode changes
 +
 +*** Lisp mode now uses `font-lock-doc-face' for doc strings.
 +
 +*** C-u C-M-q in Emacs Lisp mode pretty-prints the list 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.
 +
 +** Changes to cmuscheme
 +
 +*** Emacs now offers to start Scheme if the user tries to
 +evaluate a Scheme expression but no Scheme subprocess is running.
 +
 +*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
 +is the name of the Scheme interpreter) exists, its contents are sent
 +to the Scheme subprocess upon startup.
 +
 +*** There are new commands to instruct the Scheme interpreter to trace
 +procedure calls (`scheme-trace-procedure') and to expand syntactic forms
 +(`scheme-expand-current-form').  The commands actually sent to the Scheme
 +subprocess are controlled by the user options `scheme-trace-command',
 +`scheme-untrace-command' and `scheme-expand-current-form'.
 +
 +** Ewoc changes
 +
 +*** The new function `ewoc-delete' deletes specified nodes.
 +
 +*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
 +a newline after each pretty-printed entry and after the header and footer.
 +This allows you to create multiple-entry ewocs on a single line and to
 +effect "invisible" nodes by arranging for the pretty-printer to not print
 +anything for those nodes.
 +
 +For example, these two sequences of expressions behave identically:
 +
 +;; NOSEP nil
 +(defun PP (data) (insert (format "%S" data)))
 +(ewoc-create 'PP "start\n")
 +
 +;; NOSEP t
 +(defun PP (data) (insert (format "%S\n" data)))
 +(ewoc-create 'PP "start\n\n" "\n" t)
 +
 +** CC mode changes
 +
 +*** The CC Mode manual has been extensively revised.
 +The information about using CC Mode has been separated from the larger
 +and more difficult chapters about configuration.
 +
 +*** New Minor Modes
 +**** Electric Minor Mode toggles the electric action of non-alphabetic keys.
 +The new command c-toggle-electric-mode is bound to C-c C-l.  Turning the
 +mode off can be helpful for editing chaotically indented code and for
 +users new to CC Mode, who sometimes find electric indentation
 +disconcerting.  Its current state is displayed in the mode line with an
 +'l', e.g. "C/al".
 +
 +**** Subword Minor Mode makes Emacs recognize word boundaries at upper case
 +letters in StudlyCapsIdentifiers.  You enable this feature by C-c C-w.  It can
 +also be used in non-CC Mode buffers.  :-) Contributed by Masatake YAMATO.
 +
 +*** 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 line-up 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.
 +
 +**** 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 and Movement Commands
 +These commands all work for AWK buffers.  The notion of "defun" has
 +been augmented to include AWK pattern-action pairs - the standard
 +"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
 +extended definition.
 +
 +**** "awk" style, Auto-newline Insertion and Clean-ups
 +A new style, "awk" has been introduced, and this is now the default
 +style for AWK code.  With auto-newline enabled, the clean-up
 +c-one-liner-defun (see above) is useful.
 +
 +*** 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; Just-In-Time-Lock mode should be enabled for
 +the highest font lock level (by default, it is).  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 three kinds of doc comment styles are recognized: Sun's
 +Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C).  (The
 +last was contributed by Masatake YAMATO).  This is by no means a
 +complete list of the most common tools; if your doc comment extractor
 +of choice is missing then please drop a note to bug-cc-mode@gnu.org.
 +
 +**** Better handling of C++ templates.
 +As a side effect of the more accurate font locking, C++ templates are
 +now handled much better.  The angle brackets that delimit them are
 +given parenthesis syntax so that they can be navigated like other
 +parens.
 +
 +This also improves indentation of templates, although there still is
 +work to be done in that area.  E.g. it's required that multiline
 +template clauses are written in full and then refontified to be
 +recognized, and the indentation of nested templates is a bit odd and
 +not as configurable as it ought to be.
 +
 +**** Improved handling of Objective-C and CORBA IDL.
 +Especially the support for Objective-C and IDL has gotten an overhaul.
 +The special "@" declarations in Objective-C are handled correctly.
 +All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
 +handled correctly, also wrt indentation.
 +
 +*** Changes in Key Sequences
 +**** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
 +
 +**** c-toggle-hungry-state is no longer bound to C-c C-d.
 +This binding has been taken over by c-hungry-delete-forwards.
 +
 +**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
 +c-toggle-auto-state remains as an alias.
 +
 +**** The new commands c-hungry-backspace and c-hungry-delete-forwards
 +have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
 +C-c C-d (or C-c C-<delete> or C-c <delete>) respectively.  These
 +commands delete entire blocks of whitespace with a single
 +key-sequence.  [N.B. "DEL" is the <backspace> key.]
 +
 +**** The new command c-toggle-electric-mode is bound to C-c C-l.
 +
 +**** The new command c-subword-mode is bound to C-c C-w.
 +
 +*** C-c C-s (`c-show-syntactic-information') now highlights the anchor
 +position(s).
 +
 +*** 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 new functions `c-hungry-backspace' and `c-hungry-delete-forward'
 +provide hungry deletion without having to toggle a mode.  They are
 +bound to C-c C-DEL and C-c C-d (and several variants, for the benefit
 +of different keyboard setups.  See "Changes in key sequences" above).
 +
 +*** Better control over `require-final-newline'.
 +
 +The variable `c-require-final-newline' specifies which of the modes
 +implemented by CC mode should insert final newlines.  Its value is a
 +list of modes, and only those modes should do it.  By default the list
 +includes C, C++ and Objective-C modes.
 +
 +Whichever modes are in this list will set `require-final-newline'
 +based on `mode-require-final-newline'.
 +
 +*** 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 analyzed 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 calls `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.
 +These are variables whose values vary between CC Mode's different
 +languages.  See the comment blurb near the top of cc-langs.el.
 +
 +**** New initialization functions.
 +The initialization procedure has been split up into more functions to
 +give better control: `c-basic-common-init', `c-font-lock-init', and
 +`c-init-language-vars'.
 +
 +*** Changes in analysis of nested syntactic constructs.
 +The syntactic analysis engine has better handling of cases where
 +several syntactic constructs appear nested on the same line.  They are
 +now handled as if each construct started on a line of its own.
 +
 +This means that CC Mode now indents some cases differently, and
 +although it's more consistent there might be cases where the old way
 +gave results that's more to one's liking.  So if you find a situation
 +where you think that the indentation has become worse, please report
 +it to bug-cc-mode@gnu.org.
 +
 +**** New syntactic symbol substatement-label.
 +This symbol is used when a label is inserted between a statement and
 +its substatement.  E.g:
 +
 +    if (x)
 +      x_is_true:
 +        do_stuff();
 +
 +*** Better handling of multiline macros.
 +
 +**** 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' puts 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 is
 +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 clean-ups
 +
 +**** `comment-close-slash'.
 +With this clean-up, a block (i.e. c-style) comment can be terminated by
 +typing a slash at the start of a line.
 +
 +**** `c-one-liner-defun'
 +This clean-up compresses a short enough defun (for example, an AWK
 +pattern/action pair) onto a single line.  "Short enough" is configurable.
 +
 +*** 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.
 +
 +**** `c-lineup-argcont'
 +Lines up continued function arguments after the preceding comma.
 +
 +*** Added toggle for syntactic indentation.
 +The function `c-toggle-syntactic-indentation' can be used to toggle
 +syntactic indentation.
 +
 +*** 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.
 +
 +** Changes in Makefile mode
 +
 +*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
 +
 +The former two couldn't be differentiated before, and the latter three
 +are new.  Font-locking is robust now and offers new customizable
 +faces.
 +
 +*** The variable `makefile-query-one-target-method' has been renamed
 +to `makefile-query-one-target-method-function'.  The old name is still
 +available as alias.
 +
 +** Sql changes
 +
 +*** The variable `sql-product' controls the highlighting 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 highlighting 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'.
 +
 +*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
 +
 +** Fortran mode changes
 +
 +*** 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.
 +
 +*** 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'.
 +
 +*** 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.
 +
 +*** The new function `f90-backslash-not-special' can be used to change
 +the syntax of backslashes in F90 buffers.
 +
 +** Miscellaneous programming mode changes
 +
 +*** In sh-script, a continuation line is only indented if the backslash was
 +preceded by a SPC or a TAB.
 +
 +*** Perl mode has a new variable `perl-indent-continued-arguments'.
 +
 +*** 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.
 +
 +*** Prolog mode has a new variable `prolog-font-lock-keywords'
 +to support use of font-lock.
 +
 +** VC Changes
 +
 +*** New backends for Subversion and Meta-CVS.
 +
 +*** The new variable `vc-cvs-global-switches' specifies 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.
 +
 +*** The key C-x C-q only changes the read-only state of the buffer
 +(toggle-read-only).  It no longer checks files in or out.
 +
 +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' file:
 +
 +    (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
 +
 +The function `vc-toggle-read-only' will continue to exist.
 +
 +*** 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
 +
 +** pcl-cvs changes
 +
 +*** 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.
 +
 +** Diff changes
 +
 +*** M-x diff uses Diff mode instead of Compilation mode.
 +
 +*** Diff mode key bindings changed.
 +
 +These are the new bindings:
 +
 +C-c C-e   diff-ediff-patch  (old M-A)
 +C-c C-n   diff-restrict-view   (old M-r)
 +C-c C-r   diff-reverse-direction  (old M-R)
 +C-c C-u   diff-context->unified   (old M-U)
 +C-c C-w   diff-refine-hunk  (old C-c C-r)
 +
 +To convert unified to context format, use C-u C-c C-u.
 +In addition, C-c C-u now operates on the region
 +in Transient Mark mode when the mark is active.
 +
 +** EDiff changes.
 +
 +***  When comparing directories.
 +Typing D brings up a buffer that lists the differences between the contents of
 +directories.  Now it is possible to use this buffer to copy the missing files
 +from one directory to another.
 +
 +*** When comparing files or buffers.
 +Typing the = key now offers to perform the word-by-word comparison of the
 +currently highlighted regions in an inferior Ediff session.  If you answer 'n'
 +then it reverts to the old behavior and asks the user to select regions for
 +comparison.
 +
 +*** The new command `ediff-backup' compares a file with its most recent
 +backup using `ediff'.  If you specify the name of a backup file,
 +`ediff-backup' compares it with the file of which it is a backup.
 +
 +** Etags changes.
 +
 +*** New regular expressions features
 +
 +**** New syntax for regular expressions, multi-line regular expressions.
 +
 +The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
 +only for backward compatibility.  The new equivalent syntax is
 +--regex=/regex/i.  More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
 +where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
 +more characters among `i' (ignore case), `m' (multi-line) and `s'
 +(single-line).  The `m' and `s' modifiers behave as in Perl regular
 +expressions: `m' allows regexps to match more than one line, while `s'
 +(which implies `m') means that `.' matches newlines.  The ability to
 +span newlines allows writing of much more powerful regular expressions
 +and rapid prototyping for tagging new languages.
 +
 +**** Regular expressions can use char escape sequences as in GCC.
 +
 +The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
 +respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
 +CR, TAB, VT.
 +
 +**** Regular expressions can be bound to a given language.
 +
 +The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
 +only for files of language LANGUAGE, and ignored otherwise.  This is
 +particularly useful when storing regexps in a file.
 +
 +**** Regular expressions can be read from a file.
 +
 +The --regex=@regexfile option means read the regexps from a file, one
 +per line.  Lines beginning with space or tab are ignored.
 +
 +*** New language parsing features
 +
 +**** New language HTML.
 +
 +Tags are generated for `title' as well as `h1', `h2', and `h3'.  Also,
 +when `name=' is used inside an anchor and whenever `id=' is used.
 +
 +**** New language PHP.
 +
 +Functions, classes and defines are tags.  If the --members option is
 +specified to etags, variables are tags also.
 +
 +**** New language Lua.
 +
 +All functions are tagged.
 +
 +**** The `::' qualifier triggers C++ parsing in C file.
 +
 +Previously, only the `template' and `class' keywords had this effect.
 +
 +**** The GCC __attribute__ keyword is now recognized and ignored.
 +
 +**** In C and derived languages, etags creates tags for #undef
 +
 +**** In Makefiles, constants are tagged.
 +
 +If you want the old behavior instead, thus avoiding to increase the
 +size of the tags file, use the --no-globals option.
 +
 +**** In Perl, packages are tags.
 +
 +Subroutine tags are named from their package.  You can jump to sub tags
 +as you did before, by the sub name, or additionally by looking for
 +package::sub.
 +
 +**** In Prolog, etags creates tags for rules in addition to predicates.
 +
 +**** New default keywords for TeX.
 +
 +The new keywords are def, newcommand, renewcommand, newenvironment and
 +renewenvironment.
 +
 +*** Honor #line directives.
 +
 +When Etags parses an input file that contains C preprocessor's #line
 +directives, it creates tags using the file name and line number
 +specified in those directives.  This is useful when dealing with code
 +created from Cweb source files.  When Etags tags the generated file, it
 +writes tags pointing to the source file.
 +
 +*** New option --parse-stdin=FILE.
 +
 +This option is mostly useful when calling etags from programs.  It can
 +be used (only once) in place of a file name on the command line.  Etags
 +reads from standard input and marks the produced tags as belonging to
 +the file FILE.
 +
 +** Ctags changes.
 +
 +*** Ctags now allows duplicate tags
 +
 +** Rmail changes
 +
 +*** Support for `movemail' from GNU mailutils was added to Rmail.
 +
 +This version of `movemail' allows you 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.
 +
 +*** The new commands rmail-end-of-message and rmail-summary end-of-message,
 +by default bound to `/', go to the end of the current mail message in
 +Rmail and Rmail summary buffers.
 +
 +*** Rmail now displays 5-digit message ids in its summary buffer.
 +
 +** 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.
 +
 +** MH-E changes.
 +
 +Upgraded to MH-E version 8.0.3.  There have been major changes since
 +version 5.0.2; see MH-E-NEWS for details.
 +
 +** Miscellaneous mail changes
 +
 +*** The new variable `mail-default-directory' specifies
 +`default-directory' for mail buffers.  This directory is used for
 +auto-save files of mail buffers.  It defaults to "~/".
 +
 +*** The mode line can indicate new mail in a directory or file.
 +
 +See the documentation of the user option `display-time-mail-directory'.
 +
 +** Calendar changes
 +
 +*** There is a new calendar package, icalendar.el, that can be used to
 +convert Emacs diary entries to/from the iCalendar format.
 +
 +*** The new package cal-html.el writes HTML files with calendar and
 +diary entries.
 +
 +*** 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.
 +
 +*** 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 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'.
 +
 +*** 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 meanings of C-x < and C-x > have been interchanged.
 +< means to scroll backward in time, and > means to scroll forward.
 +
 +*** You can now use < and >, instead of C-x < and C-x >, to scroll
 +the calendar left or right.
 +
 +*** 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 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 new variable `calendar-minimum-window-height' affects the
 +window generated by the function `generate-calendar-window'.
 +
 +** Speedbar changes
 +
 +*** Speedbar items can now be selected by clicking mouse-1, based on
 +the `mouse-1-click-follows-link' mechanism.
 +
 +*** The new command `speedbar-toggle-line-expansion', bound to SPC,
 +contracts or expands the line under the cursor.
 +
 +*** New command `speedbar-create-directory', bound to `M'.
 +
 +*** The new commands `speedbar-expand-line-descendants' and
 +`speedbar-contract-line-descendants', bound to `[' and `]'
 +respectively, expand and contract the line under cursor with all of
 +its descendents.
 +
 +*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
 +means to display tool-tips for speedbar items.
 +
 +*** The new user option `speedbar-query-confirmation-method' controls
 +how querying is performed for file operations.  A value of 'always
 +means to always query before file operations; 'none-but-delete means
 +to not query before any file operations, except before a file
 +deletion.
 +
 +*** The new user option `speedbar-select-frame-method' specifies how
 +to select a frame for displaying a file opened with the speedbar.  A
 +value of 'attached means to use the attached frame (the frame that
 +speedbar was started from.)  A number such as 1 or -1 means to pass
 +that number to `other-frame'.
 +
 +*** SPC and DEL are no longer bound to scroll up/down in the speedbar
 +keymap.
 +
 +*** The frame management code in speedbar.el has been split into a new
 +`dframe' library.  Emacs Lisp code that makes use of the speedbar
 +should use `dframe-attached-frame' instead of
 +`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer',
 +`dframe-close-frame' instead of `speedbar-close-frame', and
 +`dframe-activity-change-focus-flag' instead of
 +`speedbar-activity-change-focus-flag'.  The variables
 +`speedbar-update-speed' and `speedbar-navigating-speed' are also
 +obsolete; use `dframe-update-speed' instead.
 +
 +** battery.el changes
 +
 +*** display-battery-mode replaces display-battery.
 +
 +*** battery.el now works on recent versions of OS X.
 +
 +** Games
 +
 +*** 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.
 +
 +** Obsolete and deleted packages
 +
 +*** 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.
 +
 +*** zone-mode.el is now obsolete.  Use dns-mode.el instead.
 +
 +*** cplus-md.el has been deleted.
 +
 +** Miscellaneous
 +
 +*** The variable `woman-topic-at-point' is renamed
 +to `woman-use-topic-at-point' and behaves differently: if this
 +variable is non-nil, the `woman' command uses the word at point
 +automatically, without asking for a confirmation.  Otherwise, the word
 +at point is suggested as default, but not inserted at the prompt.
 +
 +*** 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.
 +
 +Emacs provide two predicates, `fill-single-word-nobreak-p' and
 +`fill-french-nobreak-p', for use as the value of
 +`fill-nobreak-predicate'.
 +
 +*** M-x view-file and commands that use it now avoid interfering
 +with special modes such as Tar mode.
 +
 +*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
 +
 +*** 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.
 +
 +*** Commands `winner-redo' and `winner-undo', from winner.el, are now
 +bound to C-c <left> and C-c <right>, respectively.  This is an
 +incompatible change.
 +
 +*** The 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.
 +
 +*** In Outline mode, `hide-body' no longer hides lines at the top
 +of the file that precede the first header line.
 +
 +*** `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.
 +
 +*** In Artist mode the variable `artist-text-renderer' has been
 +renamed to `artist-text-renderer-function'.  The old name is still
 +available as alias.
 +
 +*** 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'.
 +
 +*** `partial-completion-mode' now handles partial completion on directory names.
 +
 +*** 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'.
 +
 +*** 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.
 +
 +*** M-x compare-windows now can automatically skip non-matching text to
 +resync points in both windows.
 +
 +*** PO translation files are decoded according to their MIME headers
 +when Emacs visits them.
 +
 +*** Telnet now prompts you for a port number with C-u M-x telnet.
 +
 +*** calculator.el now has radix grouping mode.
 +
 +To enable this, set `calculator-output-radix' non-nil.  In this mode a
 +separator character is used every few digits, making it easier to see
 +byte boundaries etc.  For more info, see the documentation of the
 +variable `calculator-radix-grouping-mode'.
 +
 +*** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
 +
 +*** The terminal emulation code in term.el has been improved; it can
 +run most curses applications now.
 +
 +*** Support for `magic cookie' standout modes has been removed.
 +
 +Emacs still works on terminals that require magic cookies in order to
 +use standout mode, but they can no longer display mode-lines in
 +inverse-video.
 +
 +\f
 +* Changes in Emacs 22.1 on non-free operating systems
 +
 +** The HOME directory defaults to Application Data under the user profile.
 +
 +If you used a previous version of Emacs without setting the HOME
 +environment variable and a `.emacs' was saved, then Emacs will continue
 +using C:/ as the default HOME.  But if you are installing Emacs afresh,
 +the default location will be the "Application Data" (or similar
 +localized name) subdirectory of your user profile.  A typical location
 +of this directory is "C:\Documents and Settings\USERNAME\Application Data",
 +where USERNAME is your user name.
 +
 +This change means that users can now have their own `.emacs' files on
 +shared computers, and the default HOME directory is less likely to be
 +read-only on computers that are administered by someone else.
 +
 +** Images are now supported on MS Windows.
 +
 +PBM and XBM images are supported out of the box.  Other image formats
 +depend on external libraries.  All of these libraries have been ported
 +to Windows, and can be found in both source and binary form at
 +http://gnuwin32.sourceforge.net/.  Note that libpng also depends on
 +zlib, and tiff depends on the version of jpeg that it was compiled
 +against.  For additional information, see nt/INSTALL.
 +
 +** Sound is now supported on MS Windows.
 +
 +WAV format is supported on all versions of Windows, other formats such
 +as AU, AIFF and MP3 may be supported in the more recent versions of
 +Windows, or when other software provides hooks into the system level
 +sound support for those formats.
 +
 +** Tooltips now work on MS Windows.
 +
 +See the Emacs 21.1 NEWS entry for tooltips for details.
 +
 +** Pointing devices with more than 3 buttons are now supported on MS Windows.
 +
 +The new variable `w32-pass-extra-mouse-buttons-to-system' controls
 +whether Emacs should handle the extra buttons itself (the default), or
 +pass them to Windows to be handled with system-wide functions.
 +
 +** 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.
 +
 +** Emacs takes note of colors defined in Control Panel on MS-Windows.
 +
 +The Control Panel defines some default colors for applications in much
 +the same way as wildcard X Resources do on X.  Emacs now adds these
 +colors to the colormap prefixed by System (eg SystemMenu for the
 +default Menu background, SystemMenuText for the foreground), and uses
 +some of them to initialize some of the default faces.
 +`list-colors-display' shows the list of System color names, in case
 +you wish to use them in other faces.
 +
 +** Running in a console window in Windows now uses the console size.
 +
 +Previous versions of Emacs erred on the side of having a usable Emacs
 +through telnet, even though that was inconvenient if you use Emacs in
 +a local console window with a scrollback buffer.  The default value of
 +w32-use-full-screen-buffer is now nil, which favors local console
 +windows.  Recent versions of Windows telnet also work well with this
 +setting.  If you are using an older telnet server then Emacs detects
 +that the console window dimensions that are reported are not sane, and
 +defaults to 80x25.  If you use such a telnet server regularly at a size
 +other than 80x25, you can still manually set
 +w32-use-full-screen-buffer to t.
 +
 +** Different shaped mouse pointers are supported on MS Windows.
 +
 +The mouse pointer changes shape depending on what is under the pointer.
 +
 +** On MS Windows, the "system caret" now follows the cursor.
 +
 +This enables Emacs to work better with programs that need to track the
 +cursor, for example screen magnifiers and text to speech programs.
 +When such a program is in use, the system caret is made visible
 +instead of Emacs drawing its own cursor. This seems to be required by
 +some programs. The new variable w32-use-visible-system-caret allows
 +the caret visibility to be manually toggled.
 +
 +** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
 +
 +Those systems use Unicode internally, so this allows Emacs to share
 +multilingual text with other applications.  On other versions of
 +MS Windows, Emacs now uses the appropriate locale coding-system, so
 +the clipboard should work correctly for your local language without
 +any customizations.
 +
 +** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
 +
 +** The variable `mac-keyboard-text-encoding' and the constants
 +`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
 +`kTextEncodingISOLatin2' are obsolete.
 +
 +** The variable `mac-command-key-is-meta' is obsolete.  Use
 +`mac-command-modifier' and `mac-option-modifier' instead.
 +\f
 +* Incompatible Lisp Changes in Emacs 22.1
 +
 +** 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.
 +
 +The function `comint-send-input' now accepts 3 optional arguments:
 +
 +  (comint-send-input &optional no-newline artificial)
 +
 +Callers sending input not from the user should use bind the 3rd
 +argument `artificial' to a non-nil value, to prevent Emacs from
 +deleting the part of subprocess output that matches the input.
 +
 +** The `read-file-name' function now returns a null string if the
 +user just types RET.
 +
 +** The variables post-command-idle-hook and post-command-idle-delay have
 +been removed.  Use run-with-idle-timer instead.
 +
 +** A hex or octal escape in a string constant forces the string to
 +be multibyte or unibyte, respectively.
 +
 +** The explicit method of creating a display table element by
 +combining a face number and a character code into a numeric
 +glyph code is deprecated.
 +
 +Instead, the new functions `make-glyph-code', `glyph-char', and
 +`glyph-face' must be used to create and decode glyph codes in
 +display tables.
 +
 +** `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'.)
 +
 +** The third argument of `accept-process-output' is now milliseconds.
 +It used to be microseconds.
 +
 +** The function find-operation-coding-system may be called with a cons
 +(FILENAME . BUFFER) in the second argument if the first argument
 +OPERATION is `insert-file-contents', and thus a function registered in
 +`file-coding-system-alist' is also called with such an argument.
 +
 +** When Emacs receives a USR1 or USR2 signal, this generates
 +input events: sigusr1 or sigusr2.  Use special-event-map to
 +handle these events.
 +
 +** The variable `memory-full' now remains t until
 +there is no longer a shortage of memory.
 +
 +** Support for Mocklisp has been removed.
 +
 +\f
 +* Lisp Changes in Emacs 22.1
 +
 +** General Lisp changes:
 +
 +*** New syntax: \s now stands for the SPACE character.
 +
 +`?\s' is a new way to write the space character.  You must make sure
 +it is not followed by a dash, since `?\s-...' indicates the "super"
 +modifier.  However, it would be strange to write a character constant
 +and a following symbol (beginning with `-') with no space between
 +them.
 +
 +`\s' stands for space in strings, too, but it is not really meant for
 +strings; it is easier and nicer just to write a space.
 +
 +*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
 +
 +For instance, you can use "\u0428" to specify a string consisting of
 +CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting
 +of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than
 +#xFFFF and thus needs the longer syntax).
 +
 +This syntax works for both character constants and strings.
 +
 +*** New function `unsafep' determines whether a Lisp form is safe.
 +
 +It 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 unknown function, alters global variable, etc.).
 +
 +*** The function `eql' is now available without requiring the CL package.
 +
 +*** The new function `memql' is like `memq', but uses `eql' for comparison,
 +that is, floats are compared by value and other elements with `eq'.
 +
 +*** New functions `string-or-null-p' and `booleanp'.
 +
 +`string-or-null-p' returns non-nil if OBJECT is a string or nil.
 +`booleanp' returns non-nil if OBJECT is t or nil.
 +
 +*** `makehash' is now obsolete.  Use `make-hash-table' instead.
 +
 +*** Minor change in the function `format'.
 +
 +Some flags that were accepted but not implemented (such as "*") are no
 +longer accepted.
 +
 +*** `add-to-list' takes an optional third argument, APPEND.
 +
 +If APPEND is non-nil, the 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 then.
 +
 +*** New function `add-to-ordered-list' is like `add-to-list' but
 +associates a numeric ordering of each element added to the list.
 +
 +*** New function `add-to-history' adds an element to a history list.
 +
 +Lisp packages should use this function to add elements to their
 +history lists.
 +
 +If `history-delete-duplicates' is non-nil, it removes duplicates of
 +the new element from the history list it updates.
 +
 +*** New function `copy-tree' makes a copy of a tree.
 +
 +It recursively copies through both CARs and CDRs.
 +
 +*** New function `delete-dups' deletes `equal' duplicate elements from a list.
 +
 +It modifies the list destructively, like `delete'.  Of several `equal'
 +occurrences of an element in the list, the one that's kept is the
 +first one.
 +
 +*** New function `rassq-delete-all'.
 +
 +(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
 +CDR is `eq' to the specified value.
 +
 +*** Functions `get' and `plist-get' no longer give errors for bad plists.
 +
 +They return nil for a malformed property list or if the list is
 +cyclic.
 +
 +*** New functions `lax-plist-get' and `lax-plist-put'.
 +
 +They are like `plist-get' and `plist-put', except that they compare
 +the property name using `equal' rather than `eq'.
 +
 +*** The function `number-sequence' makes 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).
 +
 +*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
 +
 +They hold the largest and smallest possible integer values.
 +
 +*** The function `expt' handles negative exponents differently.
 +The value for `(expt A B)', if both A and B are integers and B is
 +negative, is now a float.  For example: (expt 2 -2) => 0.25.
 +
 +*** The function `atan' now accepts an optional second argument.
 +
 +When called with 2 arguments, as in `(atan Y X)', `atan' returns the
 +angle in radians between the vector [X, Y] and the X axis.  (This is
 +equivalent to the standard C library function `atan2'.)
 +
 +*** New macro `with-case-table'
 +
 +This executes the body with the case table temporarily set to a given
 +case table.
 +
 +*** New macro `with-local-quit' temporarily allows quitting.
 +
 +A quit inside the body of `with-local-quit' is caught by the
 +`with-local-quit' form itself, but another quit will happen later once
 +the code that has inhibited quitting exits.
 +
 +This is for use around potentially blocking or long-running code
 +inside timer functions and `post-command-hook' functions.
 +
 +*** New macro `define-obsolete-function-alias'.
 +
 +This combines `defalias' and `make-obsolete'.
 +
 +*** New macro `eval-at-startup' specifies expressions to
 +evaluate when Emacs starts up.  If this is done after startup,
 +it evaluates those expressions immediately.
 +
 +This is useful in packages that can be preloaded.
 +
 +*** 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 can be tested using `eq'.
 +
 +*** A function or macro's doc string can now specify the calling pattern.
 +
 +You put this info in the doc string's last line.  It should be
 +formatted so as to match the regexp "\n\n(fn .*)\\'".  If you don't
 +specify this explicitly, Emacs determines it from the actual argument
 +names.  Usually that default is right, but not always.
 +
 +*** New variable `print-continuous-numbering'.
 +
 +When this is non-nil, successive calls to print functions use a single
 +numbering scheme 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.
 +
 +*** `list-faces-display' takes an optional argument, REGEXP.
 +
 +If it is non-nil, the function lists only faces matching this regexp.
 +
 +*** New hook `command-error-function'.
 +
 +By setting this variable to a function, you can control
 +how the editor command loop shows the user an error message.
 +
 +*** `debug-on-entry' accepts primitive functions that are not special forms.
 +
 +** Lisp code indentation features:
 +
 +*** The `defmacro' form can contain indentation and edebug declarations.
 +
 +These declarations specify how to indent the macro calls in Lisp mode
 +and how to debug them with Edebug.  You write them like this:
 +
 +   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
 +
 +DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
 +possible declaration specifiers 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,
 +      but this is cleaner.)
 +
 +*** cl-indent now allows customization of Indentation of backquoted forms.
 +
 +See the new user option `lisp-backquote-indentation'.
 +
 +*** cl-indent now handles indentation of simple and extended `loop' forms.
 +
 +The new user options `lisp-loop-keyword-indentation',
 +`lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can
 +be used to customize the indentation of keywords and forms in loop
 +forms.
 +
 +** Variable aliases:
 +
 +*** New function: 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.
 +
 +*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
 +`make-obsolete-variable'.
 +
 +*** New function: 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.
 +
 +** defcustom changes:
 +
 +*** The package-version keyword has been added to provide
 +`customize-changed-options' functionality to packages in the future.
 +Developers who make use of this keyword must also update the new
 +variable `customize-package-emacs-version-alist'.
 +
 +*** The new customization type `float' requires a floating point number.
 +
 +** String changes:
 +
 +*** A hex escape in a string constant forces the string to be multibyte.
 +
 +*** An octal escape in a string constant forces the string to be unibyte.
 +
 +*** New function `string-to-multibyte' converts a unibyte string to a
 +multibyte string with the same individual character codes.
 +
 +*** `split-string' now includes null substrings in the returned list if
 +the optional argument SEPARATORS is non-nil and there are matches for
 +SEPARATORS at the beginning or end of the string.  If SEPARATORS is
 +nil, or if the new optional third argument OMIT-NULLS is non-nil, all
 +empty matches are omitted from the returned list.
 +
 +*** The new function `assoc-string' replaces `assoc-ignore-case' and
 +`assoc-ignore-representation', which are still available, but have
 +been declared obsolete.
 +
 +*** New function `substring-no-properties' returns a substring without
 +text properties.
 +
 +** Displaying warnings to the user.
 +
 +See the functions `warn' and `display-warning', or the Lisp Manual.
 +If you want to be sure the warning will not be overlooked, this
 +facility is much better than using `message', since it displays
 +warnings in a separate window.
 +
 +** Progress reporters.
 +
 +These provide a simple and uniform way for commands to present
 +progress messages for the user.
 +
 +See the new functions `make-progress-reporter',
 +`progress-reporter-update', `progress-reporter-force-update',
 +`progress-reporter-done', and `dotimes-with-progress-reporter'.
 +
 +** Buffer positions:
 +
 +*** Function `compute-motion' now calculates the usable window
 +width if the WIDTH argument is nil.  If the TOPOS argument is nil,
 +the usable window height and width is used.
 +
 +*** The `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 presence of
 +large images.  To disable this feature, bind the new variable
 +`auto-window-vscroll' to nil.
 +
 +*** The argument to `forward-word', `backward-word' is optional.
 +
 +It defaults to 1.
 +
 +*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
 +
 +It defaults to 1.
 +
 +*** `field-beginning' and `field-end' take new optional argument, LIMIT.
 +
 +This argument tells them not to search beyond LIMIT.  Instead they
 +give up and return LIMIT.
 +
 +*** New function `window-line-height' is an efficient way to get
 +information about a specific text line in a window provided that the
 +window's display is up-to-date.
 +
 +*** New function `line-number-at-pos' returns the line number of a position.
 +
 +It an optional buffer position argument that defaults to point.
 +
 +*** Function `pos-visible-in-window-p' now returns the pixel coordinates
 +and partial visibility state of the corresponding row, if the PARTIALLY
 +arg is non-nil.
 +
 +*** 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 `mouse-on-link-p' tests if a position is in a clickable link.
 +
 +This is the function used by the new `mouse-1-click-follows-link'
 +functionality.
 +
 +** Text modification:
 +
 +*** The new function `buffer-chars-modified-tick' returns a buffer's
 +tick counter for changes to characters.  Each time text in that buffer
 +is inserted or deleted, the character-change counter is updated to the
 +tick counter (`buffer-modified-tick').  Text property changes leave it
 +unchanged.
 +
 +*** The new function `insert-for-yank' normally works like `insert', but
 +removes the text properties in the `yank-excluded-properties' list
 +and handles the `yank-handler' text property.
 +
 +*** The new function `insert-buffer-substring-as-yank' is like
 +`insert-for-yank' except that it gets the text from another buffer as
 +in `insert-buffer-substring'.
 +
 +*** The new function `insert-buffer-substring-no-properties' is like
 +`insert-buffer-substring', but removes all text properties from the
 +inserted substring.
 +
 +*** The new function `filter-buffer-substring' extracts a buffer
 +substring, passes it through a set of filter functions, and returns
 +the filtered substring.  Use it instead of `buffer-substring' or
 +`delete-and-extract-region' when copying text into a user-accessible
 +data structure, such as 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 adds to
 +`buffer-substring-filters' to remove soft newlines from the copied
 +text.
 +
 +*** 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.
 +
 +*** Text clones.
 +
 +The 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.
 +
 +*** The function `insert-string' is now obsolete.
 +
 +** Filling changes.
 +
 +*** In determining an adaptive fill prefix, Emacs now tries the function in
 +`adaptive-fill-function' _before_ matching the buffer line against
 +`adaptive-fill-regexp' rather than _after_ it.
 +
 +** 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.
 +
 +** Buffer-related changes:
 +
 +*** 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.
 +
 +*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
 +
 +If it is non-nil, it specifies which buffers to list.
 +
 +*** `kill-buffer-hook' is now a permanent local.
 +
 +*** The function `frame-or-buffer-changed-p' now lets you maintain
 +various status records in parallel.
 +
 +It takes a variable (a symbol) as argument.  If the variable is non-nil,
 +then its value should be a vector installed previously by
 +`frame-or-buffer-changed-p'.  If the frame names, buffer names, buffer
 +order, or their read-only or modified flags have changed, since the
 +time the vector's contents were recorded by a previous call to
 +`frame-or-buffer-changed-p', then the function returns t.  Otherwise
 +it returns nil.
 +
 +On the first call to `frame-or-buffer-changed-p', the variable's
 +value should be nil.  `frame-or-buffer-changed-p' stores a suitable
 +vector into the variable and returns t.
 +
 +If the variable is itself nil, then `frame-or-buffer-changed-p' uses,
 +for compatibility, an internal variable which exists only for this
 +purpose.
 +
 +*** The function `read-buffer' follows the convention for reading from
 +the minibuffer with a default value: if DEF is non-nil, the minibuffer
 +prompt provided in PROMPT is edited to show the default value provided
 +in DEF before the terminal colon and space.
 +
 +** Searching and matching changes:
 +
 +*** 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.
 +
 +*** 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 inside loops such as
 +`*', `+', and `?' are never replaced with `search-spaces-regexp'.
 +
 +*** New regular expression operators, `\_<' and `\_>'.
 +
 +These match 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.
 +
 +*** Functions `match-data' and `set-match-data' now have an optional
 +argument `reseat'.  When non-nil, all markers in the match data list
 +passed to these functions will be reseated to point to nowhere.
 +
 +*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
 +
 +*** 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'.
 +
 +** Undo changes:
 +
 +*** `buffer-undo-list' allows programmable elements.
 +
 +These elements 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.
 +
 +** Killing and yanking changes:
 +
 +*** New `yank-handler' text property can 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 can 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.
 +
 +** Syntax table changes:
 +
 +*** The new function `syntax-ppss' provides an efficient way to find the
 +current syntactic context at point.
 +
 +*** 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').
 +
 +*** The macro `with-syntax-table' no longer copies the syntax table.
 +
 +** File operation changes:
 +
 +*** New vars `exec-suffixes' and `load-suffixes' used when
 +searching for an executable or an Emacs Lisp file.
 +
 +*** New function `locate-file' searches for a file in a list of directories.
 +`locate-file' accepts a name of a file to search (a string), and two
 +lists: a list of directories to search in and a list of suffixes to
 +try; typical usage might use `exec-path' and `load-path' for the list
 +of directories, and `exec-suffixes' and `load-suffixes' for the list
 +of suffixes.  The function also accepts a predicate argument to
 +further filter candidate files.
 +
 +One advantage of using this function is that the list of suffixes in
 +`exec-suffixes' is OS-dependant, so this function will find
 +executables without polluting Lisp code with OS dependencies.
 +
 +*** The new function `file-remote-p' tests a file name and returns
 +non-nil if it specifies a remote file (one that Emacs accesses using
 +its own special methods and not directly through the file system).
 +The value in that case is an identifier for the remote file system.
 +
 +*** The 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.
 +
 +*** `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.
 +
 +*** 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.
 +
 +*** If `buffer-save-without-query' is non-nil in some buffer,
 +`save-some-buffers' will always save that buffer without asking (if
 +it's modified).
 +
 +*** `buffer-auto-save-file-format' is the new name for what was
 +formerly called `auto-save-file-format'.  It is now a permanent local.
 +
 +*** `visited-file-modtime' and `calendar-time-from-absolute' now return
 +a list of two integers, instead of a cons.
 +
 +*** The precedence of file name handlers has been changed.
 +
 +Instead of choosing the first handler that matches,
 +`find-file-name-handler' now gives precedence to a file name handler
 +that matches nearest the end of the file name.  More precisely, 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.
 +
 +*** The function `make-auto-save-file-name' is now handled by file
 +name handlers.  This will be exploited for remote files mainly.
 +
 +*** The function `file-name-completion' accepts an optional argument
 +PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
 +
 +*** The new primitive `set-file-times' sets a file's access and
 +modification times.  Magic file name handlers can handle this
 +operation.
 +
 +** Input changes:
 +
 +*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
 +display a prompt but don't use the minibuffer, now display the prompt
 +using the text properties (esp. the face) of the prompt string.
 +
 +*** The functions `read-event', `read-char', and `read-char-exclusive'
 +have a new optional argument SECONDS.  If non-nil, this specifies a
 +maximum time to wait for input, in seconds.  If no input arrives after
 +this time elapses, the functions stop waiting and return nil.
 +
 +*** An interactive specification can 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.
 +
 +*** 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.
 +
 +*** (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 by a quit, and t if
 +BODY was aborted by arrival of input.
 +
 +*** `recent-keys' now returns the last 300 keys.
 +
 +** Minibuffer changes:
 +
 +*** 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 `read-file-name' function now takes an additional argument which
 +specifies a predicate which the file name read must satisfy.  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 built-in `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' is for reading a directory name.
 +
 +It is like `read-file-name' except that the defaulting works better
 +for directories, and completion inside it shows only directories.
 +
 +*** The new variable `history-add-new-input' specifies whether to add new
 +elements in history.  If set to nil, minibuffer reading functions don't
 +add new elements to the history list, so it is possible to do this
 +afterwards by calling `add-to-history' explicitly.
 +
 +** Completion changes:
 +
 +*** The new function `minibuffer-completion-contents' returns the contents
 +of the minibuffer just before point.  That is what completion commands
 +operate on.
 +
 +*** 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 can 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 can 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)
 +
 +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 no
 +arguments.  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.
 +
 +** Abbrev changes:
 +
 +*** `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.
 +
 +*** The new function `copy-abbrev-table' copies an abbrev table.
 +
 +It returns a new abbrev table that is a copy of a given abbrev table.
 +
 +** 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"
 +
 +Actually, this format has existed since Emacs 20.1.
 +
 +*** 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' 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)
 +
 +When `my-mode' is enabled, its minor mode keymap is enabled too.  So
 +when the user types C-k, that runs the command `my-kill-line'.
 +
 +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', when `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.
 +
 +*** The definition of a key-binding passed to define-key can use XEmacs-style
 +key-sequences, such as [(control a)].
 +
 +*** New keymaps for typing file names
 +
 +Two new keymaps, `minibuffer-local-filename-completion-map'  and
 +`minibuffer-local-must-match-filename-map', apply whenever
 +Emacs reads a file name in the minibuffer.  These key maps override
 +the usual binding of SPC to `minibuffer-complete-word' (so that file
 +names with embedded spaces could be typed without the need to quote
 +the spaces).
 +
 +*** 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.
 +
 +*** 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.
 +
 +*** `key-binding' will now look up mouse-specific bindings.  The
 +keymaps consulted by `key-binding' will get adapted if the key
 +sequence is started with a mouse event.  Instead of letting the click
 +position be determined from the key sequence itself, it is also
 +possible to specify it with an optional argument explicitly.
 +
 +*** `define-key-after' now accepts keys longer than 1.
 +
 +*** (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.
 +
 +*** Dense keymaps now handle inheritance correctly.
 +
 +Previously a dense keymap would hide all of the simple-char key
 +bindings of the parent keymap.
 +
 +** Enhancements to process support
 +
 +*** 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, allowing them to produce more output before
 +Emacs tries to read it.
 +
 +*** Processes now have an associated property list where programs can
 +maintain process state and other per-process related information.
 +
 +Use the new functions `process-get' and `process-put' to access, add,
 +and modify elements on this property list.  Use the new functions
 +`process-plist' and `set-process-plist' to access and replace the
 +entire property list of a process.
 +
 +*** Function `list-processes' now has an optional argument; if non-nil,
 +it lists only the processes whose query-on-exit flag is set.
 +
 +*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
 +
 +These replace the old function `process-kill-without-query'.  That
 +function is still supported, but new code should use the new
 +functions.
 +
 +*** The new function `call-process-shell-command'.
 +
 +This executes a shell 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'.
 +
 +*** Function `signal-process' now accepts a process object or process
 +name in addition to a process id to identify the signaled process.
 +
 +*** Function `accept-process-output' has a new 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.
 +
 +*** A process filter function gets the output as multibyte string
 +if the process specifies t for its filter's multibyteness.
 +
 +That multibyteness is decided by the value of
 +`default-enable-multibyte-characters' when the process is created, and
 +you can change it later with `set-process-filter-multibyte'.
 +
 +*** The new function `set-process-filter-multibyte' sets the
 +multibyteness of the strings passed to the process's filter.
 +
 +*** The new function `process-filter-multibyte-p' returns the
 +multibyteness of the strings passed to the process's filter.
 +
 +*** 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.
 +
 +*** The new `make-network-process' function makes network connections.
 +It allows 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.
 +- IPv6 is supported (when available).  You may explicitly select IPv6
 +  using :family 'ipv6 arg.
 +- Non-blocking connect is supported using :nowait t arg.
 +- The process' property list can 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))
 +  (featurep 'make-network-process '(:family ipv6))
 +
 +*** The old `open-network-stream' now uses `make-network-process'.
 +
 +*** `process-contact' has an optional KEY argument.
 +
 +Depending on this argument, you can get the complete list of network
 +process properties or a specific property.  Using :local or :remote as
 +the KEY, you get the address of the local or remote end-point.
 +
 +An Inet address is represented as a 5 element vector, where the first
 +4 elements contain the IP address and the fifth is the port number.
 +
 +*** New functions `stop-process' and `continue-process'.
 +
 +These functions stop and restart communication through a network
 +connection.  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 `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.
 +
 +*** 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 functions `process-datagram-address', `set-process-datagram-address'.
 +
 +These functions are used with datagram-based network processes to get
 +and set the current address of the remote partner.
 +
 +*** Deleting a network process with `delete-process' calls the sentinel.
 +
 +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".
 +
 +** Using window objects:
 +
 +*** 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 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.
 +
 +*** New function `window-body-height'.
 +
 +This is like `window-height' but does not count the mode line or the
 +header line.
 +
 +*** The new function `adjust-window-trailing-edge' moves the right
 +or bottom edge of a window.  It does not move other window edges.
 +
 +*** The new macro `with-selected-window' temporarily switches the
 +selected window without impacting the order of `buffer-list'.
 +It saves and restores the current buffer, too.
 +
 +*** `select-window' takes an optional second argument NORECORD.
 +
 +This is 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'.  It also saves and restores the current
 +buffer.
 +
 +*** `set-window-buffer' has an optional argument KEEP-MARGINS.
 +
 +If non-nil, that says to preserve the window's current margin, fringe,
 +and scroll-bar settings.
 +
 +*** The new function `window-tree' returns a frame's window tree.
 +
 +*** The functions `get-lru-window' and `get-largest-window' take an optional
 +argument `dedicated'.  If non-nil, those functions do not ignore
 +dedicated windows.
 +
 +** Customizable fringe bitmaps
 +
 +*** 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 buffer-local variables `fringe-indicator-alist' and
 +`fringe-cursor-alist' maps between logical (internal) fringe indicator
 +and cursor symbols and the actual fringe bitmaps to be displayed.
 +This decouples the logical meaning of the fringe indicators from the
 +physical appearance, as well as allowing different fringe bitmaps to
 +be used in different windows showing different buffers.
 +
 +*** New function `define-fringe-bitmap' can now be used to create new
 +fringe bitmaps, as well as change the built-in fringe bitmaps.
 +
 +*** New function `destroy-fringe-bitmap' deletes a fringe bitmap
 +or restores a built-in one to its default value.
 +
 +*** New function `set-fringe-bitmap-face' specifies the 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.
 +
 +*** New function `fringe-bitmaps-at-pos' returns the current fringe
 +bitmaps in the display line at a given buffer position.
 +
 +** Other window fringe features:
 +
 +*** Controlling the default left and right fringe widths.
 +
 +The default left and right fringe widths for all windows of a frame
 +can now be controlled by setting the `left-fringe' and `right-fringe'
 +frame parameters to an integer value specifying the width in pixels.
 +Setting the width to 0 effectively removes the corresponding fringe.
 +
 +The actual default fringe widths for the frame may deviate from the
 +specified widths, since the combined fringe widths must match an
 +integral number of columns.  The extra width is distributed evenly
 +between the left and right fringe.  To force a specific fringe width,
 +specify the width as a negative integer (if both widths are negative,
 +only the left fringe gets the specified width).
 +
 +Setting the width to nil (the default), restores the default fringe
 +width which is the minimum number of pixels necessary to display any
 +of the currently defined fringe bitmaps.  The width of the built-in
 +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
 +`set-window-fringes'.
 +
 +To control the fringe position in a window, that is, whether fringes
 +are positioned between the display margins and the window's text area,
 +or at the edges of the window, either set the buffer-local variable
 +`fringes-outside-margins' or call `set-window-fringes'.
 +
 +The function `window-fringes' can be used to obtain the current
 +settings.  To make `left-fringe-width', `right-fringe-width', and
 +`fringes-outside-margins' take effect, you must set them before
 +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
 +variables `scroll-bar-mode' and `scroll-bar-width', or call
 +`set-window-scroll-bars'.  The function `window-scroll-bars' can be
 +used to obtain the current settings.  To make `scroll-bar-mode' and
 +`scroll-bar-width' take effect, you must set them before displaying
 +the buffer in a window, or use `set-window-buffer' to force an update
 +of the display margins.
 +
 +** Redisplay features:
 +
 +*** `sit-for' can now be called with args (SECONDS &optional NODISP).
 +
 +*** Iconifying or deiconifying a frame no longer makes sit-for return.
 +
 +*** New function `redisplay' causes an immediate redisplay if no input is
 +available, equivalent to (sit-for 0).  The call (redisplay t) forces
 +an immediate redisplay even if input is pending.
 +
 +*** 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.
 +
 +*** (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 cannot be accurate.
 +
 +*** You can define multiple overlay arrows via the new
 +variable `overlay-arrow-variable-list'.
 +
 +It contains a list of variables which contain overlay arrow position
 +markers, including the original `overlay-arrow-position' variable.
 +
 +Each variable on this list can 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 can 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 is a float or cons, the line spacing
 +is calculated as specified above for the `line-height' property.
 +
 +*** The buffer local `line-spacing' variable can 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 occurrences 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 can 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.
 +
 +*** Support for displaying image slices
 +
 +**** New display property (slice X Y WIDTH HEIGHT) can 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 can 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 can 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'.
 +
 +*** The function `find-image' now searches in etc/images/ and etc/.
 +The new variable `image-load-path' is a list of locations in which to
 +search for image files.  The default is to search in etc/images, then
 +in etc/, and finally in the directories specified by `load-path'.
 +Subdirectories of etc/ and etc/images are not recursively searched; if
 +you put an image file in a subdirectory, you have to specify it
 +explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
 +
 +  (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
 +
 +Note that all images formerly located in the lisp directory have been
 +moved to etc/images.
 +
 +*** New function `image-load-path-for-library' returns a suitable
 +search path for images relative to library. This function is useful in
 +external packages to save users from having to update
 +`image-load-path'.
 +
 +*** The new variable `max-image-size' defines the maximum size of
 +images that Emacs will load and display.
 +
 +*** The new variable `display-mm-dimensions-alist' can be used to
 +override incorrect graphical display dimensions returned by functions
 +`display-mm-height' and `display-mm-width'.
 +
 +** Mouse pointer features:
 +
 +*** 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 can now be
 +controlled/overridden via the `pointer' text property.
 +
 +** Mouse event enhancements:
 +
 +*** All mouse events now include a buffer position regardless of where
 +you clicked.  For mouse clicks in window margins and fringes, this is
 +a sensible buffer position corresponding to the surrounding text.
 +
 +*** Mouse events for clicks on window fringes now specify `left-fringe'
 +or `right-fringe' as the area.
 +
 +*** Mouse events include actual glyph column and row for all event types
 +and all areas.
 +
 +*** Mouse events can now indicate an image object clicked on.
 +
 +*** 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.
 +
 +*** Function `mouse-set-point' now works for events outside text area.
 +
 +*** `posn-point' now returns buffer position for non-text area events.
 +
 +*** New function `posn-area' returns window area clicked on (nil means
 +text area).
 +
 +*** New function `posn-actual-col-row' returns the actual glyph coordinates
 +of the mouse event position.
 +
 +*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
 +
 +These 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.
 +
 +** Text property and overlay changes:
 +
 +*** Arguments for `remove-overlays' are now optional, so that you can
 +remove all overlays in the buffer with just (remove-overlays).
 +
 +*** 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 function `remove-list-of-text-properties'.
 +
 +It is like `remove-text-properties' except that it takes a list of
 +property names as argument rather than a property list.
 +
 +** Face changes
 +
 +*** The variable `facemenu-unlisted-faces' has been removed.
 +Emacs has a lot more faces than in the past, and nearly all of them
 +needed to be excluded.  The new variable `facemenu-listed-faces' lists
 +the faces to include in the face menu.
 +
 +*** The new face attribute condition `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.
 +
 +*** New function `display-supports-face-attributes-p' can 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 can be overridden
 +by them).
 +
 +*** 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', `face-stipple'.
 +
 +These 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.
 +
 +*** 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.
 +
 +*** On terminals, faces with the :inverse-video attribute are displayed
 +with swapped foreground and background colors even when one of them is
 +not specified.  In previous releases of Emacs, if either foreground
 +or background color was unspecified, colors were not swapped.  This
 +was inconsistent with the face behavior under X.
 +
 +*** `set-fontset-font', `fontset-info', `fontset-font' now operate on
 +the default fontset if the argument NAME is nil..
 +
 +** Font-Lock changes:
 +
 +*** 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'.
 +
 +*** 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.
 +
 +*** 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-extend-region-functions' makes it possible to alter the way
 +the fontification region is chosen.  This can be used to prevent rounding
 +up to whole lines, or to extend the region to include all related lines
 +of multiline constructs so that such constructs get properly recognized.
 +
 +** Major mode mechanism changes:
 +
 +*** New variable `magic-mode-alist' determines major mode for a file by
 +looking at the file contents.  It takes precedence over `auto-mode-alist'.
 +
 +*** New variable `magic-fallback-mode-alist' determines major mode for a file by
 +looking at the file contents.  It is handled after `auto-mode-alist',
 +only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
 +
 +*** XML or SGML major mode is selected when file starts with an `<?xml'
 +or `<!DOCTYPE' declaration.
 +
 +*** An interpreter magic line (if present) takes precedence over the
 +file name when setting the major mode.
 +
 +*** If new variable `auto-mode-case-fold' is set to a non-nil value,
 +Emacs will perform a second case-insensitive search through
 +`auto-mode-alist' if the first case-sensitive search fails.  This
 +means that a file FILE.TXT is opened in text-mode, and a file
 +PROG.HTML is opened in html-mode.  Note however, that independent of
 +this setting, *.C files are usually recognized as C++ files.  It also
 +has no effect on systems with case-insensitive file names.
 +
 +*** All major mode functions should now run the new normal hook
 +`after-change-major-mode-hook', at their very end, after the mode
 +hooks.  `run-mode-hooks' does this automatically.
 +
 +*** Major modes can define `eldoc-documentation-function'
 +locally to provide Eldoc functionality by some method appropriate to
 +the language.
 +
 +*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
 +
 +*** 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-derived-mode' by default creates a new empty abbrev table.
 +It does not copy abbrevs from the parent mode's abbrev table.
 +
 +*** 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.
 +
 +** Minor mode changes:
 +
 +*** `define-minor-mode' now accepts arbitrary additional keyword arguments
 +and simply passes them to `defcustom', if applicable.
 +
 +*** `define-globalized-minor-mode'.
 +
 +This is a new name for what was formerly called
 +`easy-mmode-define-global-mode'.  The old name remains as an alias.
 +
 +*** `minor-mode-list' now holds a list of minor mode commands.
 +
 +** Command loop changes:
 +
 +*** The new function `called-interactively-p' does what many people
 +have mistakenly believed `interactive-p' to do: it returns t if the
 +calling function was called through `call-interactively'.
 +
 +Only use this when you cannot solve the problem by adding a new
 +INTERACTIVE argument to the command.
 +
 +*** 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.
 +
 +*** When a command returns, the command loop moves point 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.
 +
 +*** 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,
 +the next return to the command loop changes to nil.
 +
 +*** 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.
 +
 +*** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
 +when it receives a request from emacsclient.
 +
 +*** `current-idle-time' reports how long Emacs has been idle.
 +
 +** Lisp file loading changes:
 +
 +*** `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 function `symbol-file' can now search specifically for function,
 +variable or face 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.
 +
 +*** 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.
 +
 +** 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 into line with GNU standards
 +for these.  As a result, you can use next-error and friends on the
 +compilation output buffer.
 +
 +*** 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 can 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 can 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 Lisp 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.
 +
 +** Frame operations:
 +
 +*** 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 function `modify-all-frames-parameters' modifies parameters
 +for all (existing and future) frames.
 +
 +*** 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.
 +
 +*** When using non-toolkit scroll bars with the default width,
 +the `scroll-bar-width' frame parameter value is nil.
 +
 +** Mode line changes:
 +
 +*** 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
 +used to add text properties to mode-line elements.
 +
 +*** The new `%i' and `%I' constructs for `mode-line-format' can be used
 +to display the size of the accessible part of the buffer on the mode
 +line.
 +
 +*** Mouse-face on mode-line (and header-line) is now supported.
 +
 +** Menu manipulation changes:
 +
 +*** 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 easy-menu 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 easy-menu.
 +
 +*** `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.
 +
 +** Mule changes:
 +
 +*** 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.
 +
 +*** 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 variable `ascii-case-table' stores the case table for the
 +ascii character set.  Language environments (such as Turkish) may
 +alter the case correspondences of ASCII characters.  This variable
 +saves the original ASCII case table before any such changes.
 +
 +*** 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.
 +
 +*** New CCL functions `lookup-character' and `lookup-integer' access
 +hash tables defined by the Lisp function `define-translation-hash-table'.
 +
 +*** New function `quail-find-key' returns a list of keys to type in the
 +current input method to input a character.
 +
 +*** `set-buffer-file-coding-system' now takes an additional argument,
 +NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
 +
 +** Operating system access:
 +
 +*** The new primitive `get-internal-run-time' returns the processor
 +run time used by Emacs since start-up.
 +
 +*** 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 function `locale-info' accesses locale information.
 +
 +*** 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 `redirect-debugging-output' can be used to redirect
 +debugging output on the stderr file handle to a file.
 +
 +** GC changes:
 +
 +*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
 +as the heap size increases.
 +
 +*** New variables `gc-elapsed' and `gcs-done' provide extra information
 +on garbage collection.
 +
 +*** The normal hook `post-gc-hook' is run at the end of garbage collection.
 +
 +The hook is run with GC inhibited, so use it with care.
 +
 +** Miscellaneous:
 +
 +*** A number of hooks have been renamed to better follow the conventions:
 +
 +`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',
 +`delete-frame-hook' to `delete-frame-functions'.
 +
 +In each case the old name remains as an alias for the moment.
 +
 +*** Variable `local-write-file-hooks' is marked obsolete.
 +
 +Use the LOCAL arg of `add-hook'.
 +
 +*** New function `x-send-client-message' sends a client message when
 +running under X.
 +\f
 +* New Packages for Lisp Programming in Emacs 22.1
 +
 +** The new library button.el implements simple and fast `clickable
 +buttons' in Emacs buffers.  Buttons are much lighter-weight than the
 +`widgets' implemented by widget.el, and can be used by lisp code that
 +doesn't require the full power of widgets.  Emacs uses buttons for
 +such things as help and apropos buffers.
 +
 +** The new library tree-widget.el provides a 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 new library bindat.el provides functions to unpack and pack
 +binary data structures, such as network packets, to and from Lisp
 +data structures.
 +
 +** 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))))
 +
 +** The new library benchmark.el does timing measurements on Lisp code.
 +
 +This includes measuring garbage collection time.
 +
 +** The new library testcover.el does test coverage checking.
 +
 +This is so you can tell whether you've tested all paths in your Lisp
 +code.  It works with edebug.
 +
 +The function `testcover-start' instruments all functions in a given
 +file.  Then test your code.  The function `testcover-mark-all' adds
 +overlay "splotches" to the Lisp file's buffer to show where coverage
 +is lacking.  The 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.
 +
 +
 +\f
 +----------------------------------------------------------------------
 +This file is part of GNU Emacs.
 +
 +GNU Emacs is free software: you can redistribute it and/or modify
 +it under the terms of the GNU General Public License as published by
 +the Free Software Foundation, either version 3 of the License, or
 +(at your option) any later version.
 +
 +GNU Emacs is distributed in the hope that it will be useful,
 +but WITHOUT ANY WARRANTY; without even the implied warranty of
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
 +along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 +
 +\f
 +Local variables:
 +mode: outline
 +paragraph-separate: "[        \f]*$"
 +end:
 +
 +arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793