*** empty log message ***
[bpt/emacs.git] / etc / NEWS
index db482de..4ac7c7f 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,5 +1,5 @@
-GNU Emacs NEWS -- history of user-visible changes.  2000-10-12
-Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+GNU Emacs NEWS -- history of user-visible changes.  2001-01-16
+Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
@@ -27,24 +27,74 @@ Unix-98-style support for large files if that is available.
 
 ** You can build a 64-bit Emacs for SPARC/Solaris systems which
 support 64-bit executables and also on Irix 6.5.  This increases the
-maximum buffer size.  See etc/MACHINES for instructions.
+maximum buffer size.  See etc/MACHINES for instructions.  Changes to
+build on other 64-bit systems should be straightforward modulo any
+necessary changes to unexec.
 
 ** Note that the MS-Windows port does not yet implement various of the
 new display features described below.
 
-** There is some code for Macintosh support, but this is from the
-Emacs 20 port.  It needs updating before this version of Emacs will
-work on Macintosh.
+** This version can be built for the Macintosh, but does not implement
+all of the new display features described below.  The port currently
+lacks unexec, asynchronous processes, and networking support.  See the
+"Emacs and the Mac OS" appendix in the Emacs manual, for the
+description of aspects specific to the Mac.
 
 \f
 * Changes in Emacs 21.1
 
-** `browse-url-gnome-moz' is a new option for
-`browse-url-browser-function', invoking Mozilla in GNOME.
+** The user option `backward-delete-char-untabify-method' controls the
+behaviour of `backward-delete-char-untabify'.  [This change was made
+in Emacs 20.3 but not mentioned then.]
+
+** The new user-option `confirm-kill-emacs' can be customized to
+let Emacs ask for confirmation before exiting.
+
+** The <home> and <end> keys now move to the beginning or end of the
+current line, respectively.  C-<home> and C-<end> move to the
+beginning and end of the buffer.
+
+** In Cperl mode `cperl-invalid-face' should now be a normal face
+symbol, not double-quoted.
+
+** Some packages are declared obsolete, to be removed in a future
+version.  They are:  auto-show, c-mode, hilit19, hscroll, ooutline,
+rnews, rnewspost.  Their implementations have been moved to
+lisp/obsolete.
 
 +++
-** The new global minor mode `auto-image-file-mode' allows image files
-to be visited as images.
+** The new Custom option `keyboard-coding-system' specifies a coding
+system for keyboard input.
+
++++
+** The new user-option `even-window-heights' can be set to nil
+to prevent `display-buffer' from evening out window heights.
+
++++
+** The new command `msdos-set-mouse-buttons' forces Emacs to behave
+as if the mouse had a specified number of buttons.  This comes handy
+with mice that don't report their number of buttons correctly.  One
+example is the wheeled mice, which report 3 buttons, but clicks on the
+middle button are not passed to the MS-DOS version of Emacs.
+
++++
+** The default for user-option `next-line-add-newlines' has been
+changed to nil, i.e. C-n will no longer add newlines at the end of a
+buffer by default.
+
+** The new command M-x delete-trailing-whitespace RET will delete the
+trailing whitespace within the current restriction.  You can also add
+this function to `write-file-hooks' or `local-write-file-hooks'.
+
+** When visiting a file with M-x find-file-literally, no newlines will
+be added to the end of the buffer because of `require-final-newline'.
+
+** auto-compression mode is no longer enabled just by loading jka-compr.el.
+To control it, set `auto-compression-mode' via Custom or use the
+`auto-compression-mode' command.
+
+** `browse-url-gnome-moz' is a new option for
+`browse-url-browser-function', invoking Mozilla in GNOME.
 
 +++
 ** The functions `keep-lines', `flush-lines' and `how-many' now
@@ -91,12 +141,17 @@ Getting Mail -> Mail Sources
 
 *** Gnus is now a MIME-capable reader.  This affects many parts of
 Gnus, and adds a slew of new commands.  See the manual for details.
+Separate MIME packages like RMIME, mime-compose etc., will probably no
+longer work; remove them and use the native facilities.
+
+The FLIM/SEMI package still works with Emacs 21, but if you want to
+use the native facilities, you must remove any mailcap.el[c] that was
+installed by FLIM/SEMI version 1.13 or earlier.
 
 *** Gnus has also been multilingualized.  This also affects too many
-parts of Gnus to summarize here, and adds many new variables.
-Separate MIME packages like SEMI will not work.  There are built-in
-facilities equivalent to those of gnus-mule.el, which is now just a
-compatibility layer.
+parts of Gnus to summarize here, and adds many new variables.  There
+are built-in facilities equivalent to those of gnus-mule.el, which is
+now just a compatibility layer.
 
 *** gnus-auto-select-first can now be a function to be
 called to position point.
@@ -116,7 +171,7 @@ ever-changing layouts.
 
 *** Gnus can now read IMAP mail via nnimap.
 
-*** There is image support.
+*** There is image support of various kinds and some sound support.
 
 ** When your terminal can't display characters from some of the ISO
 8859 character sets but can display Latin-1, you can display
@@ -150,12 +205,15 @@ and displays information about that.
 ** When an error is signaled during the loading of the user's init
 file, Emacs now pops up the *Messages* buffer.
 
-** Polish and German translations of Emacs' reference card have been
-added.  They are named `pl-refcard.tex' and `de-refcard.tex'.
-Postscript files are included.
+** Polish, German, and French translations of Emacs' reference card
+have been added.  They are named `pl-refcard.tex', `de-refcard.tex' and
+`fr-refcard.tex'.  Postscript files are included.
+
+** An `Emacs Survival Guide', etc/survival.tex, is available.
 
 ** A reference card for Dired has been added.  Its name is
-`dired-ref.tex'.
+`dired-ref.tex'.  A French translation is available in
+`fr-drdref.tex'.
 
 ** The new variable `auto-mode-interpreter-regexp' contains a regular
 expression matching interpreters, for file mode determination.
@@ -176,10 +234,25 @@ menu or the Edit menu if there is no major mode menu.
 ** Variable `load-path' is no longer customizable because it contains
 a version-dependent component.
 
-** The <delete> function key is now bound to `delete-char' by default.
-Note that this takes effect only on window systems.  On TTYs, Emacs
-will receive ASCII 127 when the DEL key is pressed.  This
-character is still bound as before.
+** The new user-option `delete-key-deletes-forward' can be set to
+let the Delete function key delete forward instead of backward.
+
+On window systems, the default value of this option is chosen
+according to the keyboard used.  If the keyboard has both a Backspace
+key and a Delete key, and both are mapped to their usual meanings, the
+option's default value is set to t, so that Backspace can be used to
+delete backward, and Delete can be used used to delete forward
+
+If not running under a window system, setting this option accomplishes
+a similar effect by mapping C-h, which is usually generated by the
+Backspace key, to DEL, and by mapping DEL to C-d via
+`keyboard-translate'.  The former functionality of C-h is available on
+the F1 key.  You should probably not use this setting if you don't
+have both Backspace, Delete and F1 keys.
+
+Programmatically, you can call function
+delete-key-deletes-forward-mode to toggle the behavior of the Delete
+key.
 
 ** Item Save Options on the Options menu allows saving options set
 using that menu.
@@ -224,7 +297,8 @@ coding systems such as cpXXX and cyrillic-koi8.
 +++
 ** M-; now calls comment-dwim which tries to do something clever based
 on the context.  M-x kill-comment is now an alias to comment-kill,
-defined on newcomment.el.
+defined in newcomment.el.  You can choose different styles of region
+commenting with the variable `comment-style'.
 
 +++
 ** The function `getenv' is now callable interactively.
@@ -255,7 +329,7 @@ be put below text lines on the affected frame or frames.
 
 +++
 - By setting X resource `lineSpacing', class `LineSpacing'.  This is
-equivalent ot specifying the frame parameter.
+equivalent to specifying the frame parameter.
 
 - By specifying `--line-spacing=N' or `-lsp N' on the command line.
 
@@ -335,6 +409,7 @@ Example:
 more CUA-compliant.  The most significant change is that Options is
 now a separate menu-bar item, with Mule and Customize as its submenus.
 
++++
 ** User-option `show-cursor-in-non-selected-windows' controls how to
 display the cursor in non-selected windows.  If nil, no cursor is
 shown, if non-nil a hollow box cursor is shown.  This option can
@@ -368,16 +443,20 @@ a string of hexadecimal numbers read from the mini-buffer.
 
 ** Changes in Texinfo mode.
 
-** A couple of new key bindings have been added for inserting Texinfo
+*** A couple of new key bindings have been added for inserting Texinfo
 macros
 
   Key binding  Macro
   -------------------------
   C-c C-c C-s  @strong
   C-c C-c C-e  @emph
-  C-c C-c u    @url
+  C-c C-c u    @uref
   C-c C-c q     @quotation
   C-c C-c m    @email
+  C-c C-o       @<block> ... @end <block>
+  M-RET         @item
+
+*** The " key now inserts either " or `` or '' depending on context.
 
 ** Changes in Outline mode.
 
@@ -483,7 +562,7 @@ Faces are supported on terminals that can display color or fonts.
 These terminal capabilities are auto-detected.  Details can be found
 under Lisp changes, below.
 
-** New default font is Courier 12pt.
+** New default font is Courier 12pt under X.
 
 +++
 ** When using a windowing terminal, each Emacs window now has a cursor
@@ -495,8 +574,16 @@ truncation marks, continuation marks, overlay arrows and alike.  The
 foreground, background, and stipple of these areas can be changed by
 customizing face `fringe'.
 
-** The mode line under X is now drawn with shadows by default.  You
-can change its appearance by modifying the face `modeline'.
+** The mode line under X is now drawn with shadows by default.
+You can change its appearance by modifying the face `mode-line'.
+In particular, setting the `:box' attribute to nil turns off the 3D
+appearance of the mode line.  (The 3D appearance makes the mode line
+occupy more space, and thus might cause the first or the last line of
+the window to be partially obscured.)
+
+The variable `mode-line-inverse-video', which was used in older
+versions of emacs to make the mode-line stand out, now defaults to nil,
+and its use is deprecated.
 
 ** LessTif support.
 
@@ -600,14 +687,25 @@ Horizontal scrolling now happens automatically if
 `automatic-hscrolling' is set (the default).  This setting can be
 customized.
 
+If a window is scrolled horizontally with set-window-hscroll, or
+scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound
+for automatic horizontal scrolling.  Automatic scrolling will scroll
+the text more to the left if necessary, but won't scroll the text more
+to the right than the column set with set-window-hscroll etc.
+
 +++
 ** Tool bar support.
 
 Emacs supports a tool bar at the top of a frame under X.  For details
 of how to define a tool bar, see the page describing Lisp-level
 changes.  Tool-bar global minor mode controls whether or not it is
-displayed.  To make the tool bar more useful, we need contributions of
-extra icons for specific modes (with copyright assignments).
+displayed and is on by default.  The appearance of the bar is improved
+if Emacs has been built with XPM image support.  Otherwise monochrome
+icons will be used.
+
+To make the tool bar more useful, we need contributions of extra icons
+for specific modes (with copyright assignments).  Contributions would
+also be useful manually to touch up some of the PBM icons.
 
 +++
 ** Mouse-sensitive mode line.
@@ -631,7 +729,7 @@ M-mouse-2 switches to the previous buffer in the buffer list.
 - Mouse-2 on the read-only or modified status in the mode line (`%' or
 `*') toggles the status.
 
-- Mouse-3 on the mode name display a minor-mode menu.
+- Mouse-3 on the mode name displays a minor-mode menu.
 
 ** LessTif/Motif file selection dialog.
 
@@ -649,6 +747,9 @@ Underlined faces are displayed underlined if possible.  Other face
 attributes such as `overline', `strike-through', and `box' are ignored
 on terminals.
 
+The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now
+supported on character terminals.
+
 ** Sound support
 
 Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware
@@ -684,7 +785,7 @@ variable is found in `default-indicate-empty-lines'.
 ** There is a new "aggressive" scrolling method.
 
 When scrolling up because point is above the window start, if the
-value of the buffer-local variable `scroll-up-aggessively' is a
+value of the buffer-local variable `scroll-up-aggressively' is a
 number, Emacs chooses a new window start so that point ends up that
 fraction of the window's height from the top of the window.
 
@@ -718,18 +819,27 @@ lisp-complete-symbol.
 ** Emacs now resizes mini-windows if appropriate.
 
 If a message is longer than one line, or minibuffer contents are
-longer than one line, Emacs now resizes the minibuffer window unless
-it is on a frame of its own.  You can control the maximum minibuffer
-window size by setting the following variable:
+longer than one line, Emacs can resize the minibuffer window unless it
+is on a frame of its own.  You can control resizing and the maximum
+minibuffer window size by setting the following variables:
 
 - User option: max-mini-window-height
 
 Maximum height for resizing mini-windows.  If a float, it specifies a
 fraction of the mini-window frame's height.  If an integer, it
-specifies a number of lines.  If nil, don't resize.
+specifies a number of lines.
 
 Default is 0.25.
 
+- User option: resize-mini-windows
+
+How to resize mini-windows.  If nil, don't resize.  If t, always
+resize to fit the size of the text.  If `grow-only', let mini-windows
+grow only, until they become empty, at which point they are shrunk
+again.
+
+Default is `grow-only'.
+
 ** The command `Info-search' now uses a search history.
 
 ** Changes to hideshow.el
@@ -840,30 +950,45 @@ version number is performed based on regular expressions from
 `change-log-version-number-regexp-list' which can be cutomized.
 Version numbers are only found in the first 10 percent of a file.
 
-*** Change Log mode now defines its own faces for font-lock
-highlighting.
+*** Change Log mode now defines its own faces for font-lock highlighting.
+
+** Changes to cmuscheme
+
+*** The user-option `scheme-program-name' has been renamed
+`cmuscheme-program-name' due to conflicts with xscheme.el.
 
 ** Changes in Font Lock
 
 *** The new function `font-lock-remove-keywords' can be used to remove
-font-lock keywords from the current buffer or from a specific major
-mode.
+font-lock keywords from the current buffer or from a specific major mode.
+
+*** Multiline patterns are now supported.  Modes using this, should
+set font-lock-multiline to t in their font-lock-defaults.
+
+*** `font-lock-syntactic-face-function' allows major-modes to choose
+the face used for each string/comment.
+
+*** A new standard face `font-lock-doc-face'.
+Meant for Lisp docstrings, Javadoc comments and other "documentation in code".
 
 ** Comint (subshell) changes
 
-By default, comint no longer uses the variable `comint-prompt-regexp' to
-distinguish prompts from user-input.  Instead, it notices which parts of
-the text were output by the process, and which entered by the user, and
-attaches `field' properties to allow emacs commands to use this information.
-Common movement commands, notably beginning-of-line, respect field
-boundaries in a fairly natural manner.
-To disable this feature, and use the old behavior, set the variable
-`comint-use-prompt-regexp-instead-of-fields' to a non-nil value.
+These changes generally affect all modes derived from comint mode, which
+include shell-mode, gdb-mode, scheme-interaction-mode, etc.
 
-Comint now includes new features to send commands to running processes
+*** By default, comint no longer uses the variable `comint-prompt-regexp'
+to distinguish prompts from user-input.  Instead, it notices which
+parts of the text were output by the process, and which entered by the
+user, and attaches `field' properties to allow emacs commands to use
+this information.  Common movement commands, notably beginning-of-line,
+respect field boundaries in a fairly natural manner.  To disable this
+feature, and use the old behavior, customize the user option
+`comint-use-prompt-regexp-instead-of-fields'.
+
+*** Comint now includes new features to send commands to running processes
 and redirect the output to a designated buffer or buffers.
 
-The command M-x comint-redirect-send-command reads a command and
+*** The command M-x comint-redirect-send-command reads a command and
 buffer name from the mini-buffer.  The command is sent to the current
 buffer's process, and its output is inserted into the specified buffer.
 
@@ -871,14 +996,28 @@ The command M-x comint-redirect-send-command-to-process acts like
 M-x comint-redirect-send-command but additionally reads the name of
 the buffer whose process should be used from the mini-buffer.
 
-Packages based on comint.el like shell-mode, and scheme-interaction-mode
-now highlight user input and program prompts, and support choosing
-previous input with mouse-2.  To control these feature, see the
-user-options `comint-highlight-input' and `comint-highlight-prompt'.
+*** Packages based on comint now highlight user input and program prompts,
+and support choosing previous input with mouse-2.  To control these features,
+see the user-options `comint-highlight-input' and `comint-highlight-prompt'.
+
+*** The new command `comint-write-output' (usually bound to `C-c C-s')
+saves the output from the most recent command to a file.  With a prefix
+argument, it appends to the file.
+
+*** The command `comint-kill-output' has been renamed `comint-delete-output'
+(usually bound to `C-c C-o'); the old name is aliased to it for
+compatibility.
+
+*** The new function `comint-add-to-input-history' adds commands to the input
+ring (history).
+
+*** The new variable `comint-input-history-ignore' is a regexp for
+identifying history lines that should be ignored, like tcsh time-stamp
+strings, starting with a `#'.  The default value of this variable is "^#".
 
 ** Changes to Rmail mode
 
-*** The new user-option rmail-rmail-user-mail-address-regexp can be
+*** The new user-option rmail-user-mail-address-regexp can be
 set to fine tune the identification of of the correspondent when
 receiving new mail.  If it matches the address of the sender, the
 recipient is taken as correspondent of a mail.  If nil, the default,
@@ -907,9 +1046,15 @@ in which folder to put messages automatically.
 
 ** Changes to TeX mode
 
-The default mode has been changed from `plain-tex-mode' to
+*** The default mode has been changed from `plain-tex-mode' to
 `latex-mode'.
 
+*** latex-mode now has a simple indentation algorithm.
+
+*** M-f and M-p jump around \begin...\end pairs.
+
+*** Added support for outline-minor-mode.
+
 ** Changes to RefTeX mode
 
 *** RefTeX has new support for index generation.  Index entries can be
@@ -958,8 +1103,8 @@ file names.
 ** Tooltips.
 
 Tooltips are small X windows displaying a help string at the current
-mouse position.  To use them, use the Lisp package `tooltip' which you
-can access via the user option `tooltip-mode'.
+mouse position.  The Lisp package `tooltip' implements them.  You can
+turn them off via the user option `tooltip-mode'.
 
 Tooltips also provides support for GUD debugging.  If activated,
 variable values can be displayed in tooltips by pointing at them with
@@ -1055,6 +1200,11 @@ accurate or inaccurate as it is.
 *** Dired now properly handles undo changes of adding/removing `-R'
 from ls switches.
 
+*** Dired commands that prompt for a destination file now allow the use
+of the `M-n' command in the minibuffer to insert the source filename,
+which the user can then edit.  This only works if there is a single
+source file, not when operating on multiple marked files.
+
 ** The variable mail-specify-envelope-from controls whether to
 use the -f option when sending mail.
 
@@ -1307,6 +1457,8 @@ types.
 *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
 are now tagged.
 
+*** In makefiles, tags the targets.
+
 *** In Perl, the --globals option tags global variables.  my and local
 variables are tagged.
 
@@ -1347,6 +1499,12 @@ of tags in the output of M-x tags-apropos.
 *** Setting tags-apropos-verbose to a non-nil value displays the
 names of tags files in the *Tags List* buffer.
 
+*** You can now search for tags that are part of the filename itself.
+If you have tagged the files topfile.c subdir/subfile.c
+/tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c",
+"dir/sub", "tempfile", "tempfile.c".  If the tag matches the filename,
+point will go to the beginning of the file.
+
 +++
 ** Emacs now attempts to determine the initial language environment
 and preferred and locale coding systems systematically from the
@@ -1361,6 +1519,11 @@ GNU Intlfonts doesn't support these yet; there are basic 8859-14 and
 releases have 8859-15.  There are new Latin-8 and Latin-9 prefix
 (only) and Polish slash input methods in Leim.
 
++++
+** New language environments `Dutch' and `Spanish'.
+These new environments mainly select appropriate translations
+of the tutorial.
+
 +++
 ** Fortran mode has a new command `fortran-strip-sequence-nos' to
 remove text past column 72.  The syntax class of `\' in Fortran is now
@@ -1424,6 +1587,51 @@ checks are always done now.
 VC Dired buffers are now kept up-to-date during all version control
 operations.
 
+`vc-diff' output is now displayed in `diff-mode'.
+`vc-print-log' uses `log-view-mode'.
+`vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'.
+
+The command C-x v m (vc-merge) now accepts an empty argument as the
+first revision number.  This means that any recent changes on the
+current branch should be picked up from the repository and merged into
+the working file (``merge news'').
+
+The commands C-x v s (vc-create-snapshot) and C-x v r
+(vc-retrieve-snapshot) now ask for a directory name from which to work
+downwards.
+
+*** Multiple Backends
+
+VC now lets you register files in more than one backend.  This is
+useful, for example, if you are working with a slow remote CVS
+repository.  You can then use RCS for local editing, and occasionally
+commit your changes back to CVS, or pick up changes from CVS into your
+local RCS archives.
+
+To make this work, the ``more local'' backend (RCS in our example)
+should come first in `vc-handled-backends', and the ``more remote''
+backend (CVS) should come later.  (The default value of
+`vc-handled-backends' already has it that way.)
+
+If you have a file registered in one backend already, you can register
+it in a second one by using C-x v i (vc-register) again.
+Alternatively, you can commit changes to another backend (say, RCS),
+by typing C-u C-x v v RCS RET (i.e. vc-next-action now accepts a
+backend name as a revision number).  When using the latter approach,
+VC registers the file in the more local backend if that hasn't already
+happened, and commits to a branch based on the current revision number
+from the more remote backend.
+
+If a file is registered in multiple backends, you can switch to
+another one using C-x v b (vc-switch-backend).  This does not change
+any files, it only changes VC's perspective on the file.  Use this to
+pick up changes from CVS while working under RCS locally.
+
+After you are done with your local RCS editing, you can commit your
+changes back to CVS using C-u C-x v v CVS RET.  In this case, the
+local RCS archive is removed after the commit, and the log entry
+buffer is initialized to contain the entire RCS change log of the file.
+
 *** Changes for CVS
 
 There is a new user option, `vc-cvs-stay-local'.  If it is `t' (the
@@ -1434,10 +1642,23 @@ regexp to match against repository hostnames; only files from hosts
 that match it are treated locally.  If the variable is nil, then VC
 queries the repository just as often as it does for local files.
 
+If `vc-cvs-stay-local' is on, then VC also makes local backups of
+repository versions.  This means that ordinary diffs (C-x v =) and
+revert operations (C-x v u) can be done completely locally, without
+any repository interactions at all.  The name of a local version
+backup of FILE is FILE.~REV.~, where REV is the repository version
+number.  This format is similar to that used by C-x v ~
+(vc-version-other-window), except for the trailing dot.  As a matter
+of fact, the two features can each use the files created by the other,
+the only difference being that files with a trailing `.' are deleted
+automatically after commit.  (This feature doesn't work on MS-DOS,
+since DOS disallows more than a single dot in the trunk of a file
+name.)
+
 If `vc-cvs-stay-local' is on, and there have been changes in the
 repository, VC notifies you about it when you actually try to commit.
 If you want to check for updates from the repository without trying to
-commit, you can either use C-u C-x v m to perform an update on the
+commit, you can either use C-x v m RET to perform an update on the
 current file, or you can use C-x v r RET to get an update for an
 entire directory tree.
 
@@ -1446,6 +1667,11 @@ The new user option `vc-cvs-use-edit' indicates whether VC should call
 is only meaningful if the CVSREAD variable is set, or if files are
 "watched" by other developers.)
 
+The commands C-x v s (vc-create-snapshot) and C-x v r
+(vc-retrieve-snapshot) are now also implemented for CVS.  If you give
+an empty argument to the latter, that performs a `cvs update',
+starting at the given directory.
+
 *** Lisp Changes in VC
 
 VC has been restructured internally to make it modular.  You can now
@@ -1458,8 +1684,90 @@ of vc.el for a detailed list of them).  To make VC use that library,
 you need to put it somewhere into Emacs' load path and add the atom
 `FOO' to the list `vc-handled-backends'.
 
+*** The customizable EDT emulation package now supports the EDT
+SUBS command and EDT scroll margins.  It also works with more
+terminal/keyboard configurations and it now works under XEmacs.
+See etc/edt-user.doc for more information.
+
 ** New modes and packages
 
+*** The new global minor mode `minibuffer-electric-default-mode'
+automatically hides the `(default ...)' part of minibuffer prompts when
+the default is not applicable.
+
+*** Artist is an Emacs lisp package that allows you to draw lines,
+rectangles and ellipses by using your mouse and/or keyboard.  The
+shapes are made up with the ascii characters |, -, / and \.
+
+Features are:
+
+- Intersecting: When a `|' intersects with a `-', a `+' is
+  drawn, like this:   |         \ /
+                    --+--        X
+                      |         / \
+
+- Rubber-banding: When drawing lines you can interactively see the
+  result while holding the mouse button down and moving the mouse.  If
+  your machine is not fast enough (a 386 is a bit too slow, but a
+  pentium is well enough), you can turn this feature off.  You will
+  then see 1's and 2's which mark the 1st and 2nd endpoint of the line
+  you are drawing.
+
+- Arrows: After having drawn a (straight) line or a (straight)
+  poly-line, you can set arrows on the line-ends by typing < or >.
+
+- Flood-filling: You can fill any area with a certain character by
+  flood-filling.
+
+- Cut copy and paste: You can cut, copy and paste rectangular
+  regions.  Artist also interfaces with the rect package (this can be
+  turned off if it causes you any trouble) so anything you cut in
+  artist can be yanked with C-x r y and vice versa.
+
+- Drawing with keys: Everything you can do with the mouse, you can
+  also do without the mouse.
+
+- Aspect-ratio: You can set the variable artist-aspect-ratio to
+  reflect the height-width ratio for the font you are using. Squares
+  and circles are then drawn square/round.  Note, that once your
+  ascii-file is shown with font with a different height-width ratio,
+  the squares won't be square and the circles won't be round.
+
+- Drawing operations: The following drawing operations are implemented:
+
+    lines              straight-lines
+    rectangles         squares
+    poly-lines         straight poly-lines
+    ellipses           circles
+    text (see-thru)    text (overwrite)
+    spray-can          setting size for spraying
+    vaporize line      vaporize lines
+    erase characters   erase rectangles
+
+  Straight lines are lines that go horizontally, vertically or
+  diagonally.  Plain lines go in any direction.  The operations in
+  the right column are accessed by holding down the shift key while
+  drawing.
+
+  It is possible to vaporize (erase) entire lines and connected lines
+  (rectangles for example) as long as the lines being vaporized are
+  straight and connected at their endpoints.  Vaporizing is inspired
+  by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>.
+
+- Picture mode compatibility: Artist is picture mode compatible (this
+  can be turned off).
+
++++
+*** The new package Eshell is an operating system command shell
+implemented entirely in Emacs Lisp.  Use `M-x eshell' to invoke it.
+It functions similarly to bash and zsh, and allows running of Lisp
+functions and external commands using the same syntax.  It supports
+history lists, aliases, extended globbing, smart scrolling, etc.  It
+will work on any platform Emacs has been ported to.  And since most of
+the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been
+rewritten in Lisp, it offers an operating-system independent shell,
+all within the scope of your Emacs process.
+
 +++
 *** The new package timeclock.el is a mode is for keeping track of time
 intervals.  You can use it for whatever purpose you like, but the
@@ -1490,6 +1798,8 @@ parser. It doesn't parse the DTDs however.
 *** The comment operations are now provided by the newcomment.el
 package which allows different styles of comment-region and should
 be more robust while offering the same functionality.
+`comment-region' now doesn't always comment a-line-at-a-time, but only
+comments the region, breaking the line at point if necessary.
 
 +++
 *** The Ebrowse package implements a C++ class browser and tags
@@ -1614,7 +1924,7 @@ containing diff3-style conflict markers, such as generated by RCS.
 
 *** ansi-color.el translates ANSI terminal escapes into text-properties.
 
-Please note: if `ansi-color-for-shell-mode' and
+Please note: if `ansi-color-for-comint-mode and
 `global-font-lock-mode' are non-nil, loading ansi-color.el will
 disable font-lock and add `ansi-color-apply' to
 `comint-preoutput-filter-functions' for all shell-mode buffers.  This
@@ -1633,7 +1943,8 @@ the text at point.
 +++
 *** fortune.el uses the fortune program to create mail/news signatures.
 
-*** whitespace.el ???
+*** whitespace.el is a package for warning about and cleaning bogus
+whitespace in a file.
 
 *** PostScript mode (ps-mode) is a new major mode for editing PostScript
 files. It offers: interaction with a PostScript interpreter, including
@@ -1747,6 +2058,19 @@ Fill mode.
 *** gnus-mule.el is now just a compatibility layer over the built-in
 Gnus facilities.
 
+*** pcomplete.el is a library that provides programmable completion
+facilities for Emacs, similar to what zsh and tcsh offer.  The main
+difference is that completion functions are written in Lisp, meaning
+they can be profiled, debugged, etc.
+
++++
+** Refill minor mode provides preliminary support for keeping
+paragraphs filled as you modify them.
+
++++
+** The new global minor mode `auto-image-file-mode' allows image files
+to be visited as images.
+
 ** Withdrawn packages
 
 *** mldrag.el has been removed.  mouse.el provides the same
@@ -1757,9 +2081,97 @@ functionality with aliases for the mldrag functions.
 *** ph.el has been obsoleted by EUDC and removed.
 
 \f
+* Incompatible Lisp changes
+
+There are a few Lisp changes which are not backwards-compatible and
+may require changes to existing code. Here is a list for reference.
+See the sections below for details.
+
+** Since `format' preserves text properties, the idiom
+`(format %s foo)' no longer works to copy and remove properties.
+Use `copy-sequence' and `set-text-properties'.
+
+** Since the `keymap' text property now has significance, some code
+which uses both `local-map' and `keymap' properties (for portability)
+may, for instance, give rise to duplicate menus when the keymaps from
+these properties are active.
+
+** The change in the treatment of non-ASCII characters in search
+ranges may affect some code.
+
+** A non-nil value for the LOCAL arg of add-hook makes the hook
+buffer-local even if `make-local-hook' hasn't been called, which might
+make a difference to some code.
+
+** The new treatment of the minibuffer prompt might affect code which
+operates on the minibuffer.
+
+** The new character sets `eight-bit-control' and `eight-bit-graphic'
+cause `no-conversion' and `emacs-mule-unix' coding systems to produce
+different results when reading files with non-ASCII characters
+(previously, both coding systems would produce the same results).
+Specifically, `no-conversion' interprets each 8-bit byte as a separate
+character.  This makes `no-conversion' inappropriate for reading
+multibyte text, e.g. buffers written to disk in their internal MULE
+encoding (auto-saving does that, for example).  If a Lisp program
+reads such files with `no-conversion', each byte of the multibyte
+sequence, including the MULE leading codes such as \201, is treated as
+a separate character, which prevents them from being interpreted in
+the buffer as multibyte characters.
+
+Therefore, Lisp programs that read files which contain the internal
+MULE encoding should use `emacs-mule-unix'.  `no-conversion' is only
+appropriate for reading truly binary files.
+
+** Code that relies on the obsolete `before-change-function' and
+`after-change-function' to detect buffer changes will now fail.  Use
+`before-change-functions' and `after-change-functions' instead.
+
+** Code that uses `concat' with integer args now gets an error, as
+long promised.
+
+** `scroll-left' and `scroll-right' are only effective when
+`automatic-hscrolling' is nil.
+
+\f
 * Lisp changes made after edition 2.6 of the Emacs Lisp Manual,
 (Display-related features are described in a page of their own below.)
 
+** The new hook `kbd-macro-termination-hook' is run at the end of of
+function execute-kbd-macro.  Functions on this hook are called with no
+args.  The hook is run independent of how the macro was terminated
+(signal or normal termination).
+
++++
+** Functions `butlast' and `nbutlast' for removing trailing elements
+from a list are now available without requiring the CL package.
+
++++
+** The new user-option `even-window-heights' can be set to nil
+to prevent `display-buffer' from evening out window heights.
+
++++
+** The user-option `face-font-registry-alternatives' specifies
+alternative font registry names to try when looking for a font.
+
+** Function `md5' calculates the MD5 "message digest"/"checksum".
+
++++
+** Function `delete-frame' runs `delete-frame-hook' before actually
+deleting the frame.  The hook is called with one arg, the frame
+being deleted.
+
++++
+** `add-hook' now makes the hook local if called with a non-nil LOCAL arg.
+
++++
+** The treatment of non-ASCII characters in search ranges has changed.
+If a range in a regular expression or the arg of
+skip-chars-forward/backward starts with a unibyte character C and ends
+with a multibyte character C2, the range is divided into two: one is
+C..?\377, the other is C1..C2, where C1 is the first character of C2's
+charset.
+
 +++
 ** The new function `display-message-or-buffer' displays a message in
 the echo area or pops up a buffer, depending on the length of the
@@ -1768,10 +2180,12 @@ message.
 ** The new macro `with-auto-compression-mode' allows evaluating an
 expression with auto-compression-mode enabled.
 
++++
 ** In image specifications, `:heuristic-mask' has been replaced
 with the more general `:mask' property.
 
-** Image specifications accept more `:algorithm's.
++++
+** Image specifications accept more `:conversion's.
 
 ** A `?' can be used in a symbol name without escaping it with a
 backslash.
@@ -1807,6 +2221,7 @@ a list, vector, or string.  The comparison is done with `equal'.
 Return a copy of LIST with all occurences of ELT removed.  The
 comparison is done with `eq'.
 
++++
 ** The function `delete' now also works with vectors and strings.
 
 ** The meaning of the `:weakness WEAK' argument of make-hash-table
@@ -1817,12 +2232,14 @@ has been changed.
 without signaling "Attempt to change char length of a string".  It may
 convert a unibyte string to multibyte if necessary.
 
++++
 ** The value of the `help-echo' text property is called as a function
 or evaluated, if it is not a string already, to obtain a help string.
 
 ** Function `make-obsolete' now has an optional arg to say when the
 function was declared obsolete.
 
++++
 ** Function `plist-member' is renamed from `widget-plist-member' (which is
 retained as an alias).
 
@@ -1832,10 +2249,14 @@ is automatically converted to Emacs' form.
 
 ** The new function `window-list' has been defined
 
-- Function: window-list &optional WINDOW MINIBUF ALL-FRAMES
+- Function: window-list &optional FRAME WINDOW MINIBUF
 
-Return a list of windows in canonical order.  The parameters WINDOW,
-MINIBUF and ALL-FRAMES are defined like for `next-window'.
+Return a list of windows on FRAME, starting with WINDOW.  FRAME nil or
+omitted means use the selected frame.  WINDOW nil or omitted means use
+the selected window.  MINIBUF t means include the minibuffer window,
+even if it isn't active.  MINIBUF nil or omitted means include the
+minibuffer window only if it's active.  MINIBUF neither nil nor t
+means never include the minibuffer window.
 
 ** There's a new function `some-window' defined as follows
 
@@ -1885,22 +2306,28 @@ meaning no limit.
 coding-system if buffer-file-coding-system is `undecided' and
 DEFAULT-CODING-SYSTEM is not specified,
 
-** The function `subr-arity' provides information on the argument list
-of a primitive.
++++
+** The function `subr-arity' provides information about the argument
+list of a primitive.
+
+** `where-is-internal' now also accepts a list of keymaps.
 
++++
 ** The text property `keymap' specifies a key map which overrides the
 buffer's local map and the map specified by the `local-map' property.
 This is probably what most current uses of `local-map' want, rather
 than replacing the local map.
 
-** The obsolete variables before-change-function and
-after-change-function are no longer acted upon and have been removed.
+** The obsolete variables `before-change-function' and
+`after-change-function' are no longer acted upon and have been
+removed.  Use `before-change-functions' and `after-change-functions'
+instead.
 
 ** The function `apropos-mode' runs the hook `apropos-mode-hook'.
 
 +++
-** `concat' no longer accepts individual integer arguments, as
-promised long ago.
+** `concat' no longer accepts individual integer arguments,
+as promised long ago.
 
 ** The new function `float-time' returns the current time as a float.
 \f
@@ -1995,9 +2422,10 @@ a composition at a specified position in a buffer or a string.
 *** The function `decompose-composite-char' is now labeled as
 obsolete.
 
-** The new character set `mule-unicode-0100-24ff' is introduced for
-Unicode characters of the range U+0100..U+24FF.  Currently, this
-character set is not used.
+** The new character sets `mule-unicode-0100-24ff',
+`mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' are introduced
+for Unicode characters in the range U+0100..U+24FF, U+2500..U+33FF,
+U+E000..U+FFFF respectively.
 
 ** The new character sets `japanese-jisx0213-1' and
 `japanese-jisx0213-2' are introduced for the new Japanese standard JIS
@@ -2188,6 +2616,9 @@ what BODY returns.
 +++
 ** Regular expressions now support intervals \{n,m\} as well as
 Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
+Also backreferences like \2 are now considered as an error if the
+corresponding subgroup does not exist (or is not closed yet).
+Previously it would have been silently turned into `2' (ignoring the `\').
 
 +++
 ** The optional argument BUFFER of function file-local-copy has been
@@ -2270,8 +2701,10 @@ are now defined in Emacs Lisp.
       Then return the value of RESULT, or nil if RESULT is omitted.
 
 +++
-** Regular expressions now support Posix character classes such
-as [:alpha:], [:space:] and so on.
+** Regular expressions now support Posix character classes such as
+[:alpha:], [:space:] and so on.  These must be used within a character
+class--for instance, [-[:digit:].+] matches digits or a period
+or a sign.
 
 [:digit:]  matches 0 through 9
 [:cntrl:]  matches ASCII control characters
@@ -2575,10 +3008,19 @@ may be present, but not both.
 VOLUME must be an integer in the range 0..100 or a float in the range
 0..1.  This property is optional.
 
+- `:device DEVICE'
+
+DEVICE is a string specifying the system device on which to play the
+sound.  The default device is system-dependent.
+
 Other properties are ignored.
 
+An alternative interface is called as
+(play-sound-file FILE &optional VOLUME DEVICE).
+
 ** `multimedia' is a new Finder keyword and Custom group.
 
++++
 ** keywordp is a new predicate to test efficiently for an object being
 a keyword symbol.
 
@@ -2594,11 +3036,21 @@ strings that have been consed so far.
 * Lisp-level Display features added after release 2.6 of the Emacs
 Lisp Manual
 
-*** On window systems, `glyph-table' is no longer used.
++++
+** The user-option `resize-mini-windows' controls how Emacs resizes
+mini-windows.
+
++++
+** The function `pos-visible-in-window-p' now has a third optional
+argument, PARTIALLY.  If a character is only partially visible, nil is
+returned, unless PARTIALLY is non-nil.
+
+** On window systems, `glyph-table' is no longer used.
 
 +++
 ** Help strings in menu items are now used to provide `help-echo' text.
 
++++
 ** The function `image-size' can be used to determine the size of an
 image.
 
@@ -2612,6 +3064,7 @@ character units (fractions of the width/height of the frame's default
 font).  FRAME is the frame on which the image will be displayed.
 FRAME nil or omitted means use the selected frame.
 
++++
 ** The function `image-mask-p' can be used to determine if an image
 has a mask bitmap.
 
@@ -2755,7 +3208,7 @@ Currently all unibyte text, i.e. all buffers with
 registry and encoding `face-default-registry'.  This is consistent
 with the fact that languages can also be set globally, only.
 
-++++
++++
 **** Clearing face caches.
 
 The Lisp function `clear-face-cache' can be called to clear face caches
@@ -2789,9 +3242,19 @@ that font selection first tries to find a good match for the font
 width specified by a face, then---within fonts with that width---tries
 to find a best match for the specified font height, etc.
 
-Setting `face-alternative-font-family-alist' allows the user to
-specify alternative font families to try if a family specified by a
-face doesn't exist.
+Setting `face-font-family-alternatives' allows the user to specify
+alternative font families to try if a family specified by a face
+doesn't exist.
+
+Setting `face-font-registry-alternatives' allows the user to specify
+all alternative font registry names to try for a face speciying a
+registry.
+
+Please note that the iterpretations of the above two variables are
+slightly different.
+
+Setting face-ignored-fonts allows the user to ignore specific fonts.
+
 
 +++
 **** Scalable fonts
@@ -3058,6 +3521,9 @@ platform-specific functions such as `x-display-pixel-width'.
 ** The minibuffer prompt is now actually inserted in the minibuffer.
 
 This makes it possible to scroll through the prompt, if you want to.
+To disallow this completely (like previous versions of emacs), customize
+the variable `minibuffer-prompt-properties', and turn on the
+`Inviolable' option.
 
 The function minubuffer-prompt-end returns the current position of the
 end of the minibuffer prompt, if the minibuffer is current.
@@ -3189,15 +3655,16 @@ overlays that apply to the image.
 
 `:margin MARGIN'
 
-MARGIN must be a number >= 0 specifying how many pixels to put as
-margin around the image.  Default is 0.
+MARGIN must be either a number >= 0 specifying how many pixels to put
+as margin around the image, or a pair (X . Y) with X specifying the
+horizontal margin and Y specifying the vertical margin.  Default is 0.
 
 `:relief RELIEF'
 
 RELIEF is analogous to the `:relief' attribute of faces.  Puts a relief
 around an image.
 
-`:algorithm ALGO'
+`:conversion ALGO'
 
 Apply an image algorithm to the image before displaying it.
 
@@ -3279,7 +3746,7 @@ properties supported are
 FG must be a string specifying the image foreground color.  Default
 is the frame's foreground.
 
-`:background FG'
+`:background BG'
 
 BG must be a string specifying the image foreground color.  Default is
 the frame's background color.
@@ -3336,8 +3803,18 @@ to display compressed images.
 **** PBM, image type `pbm'
 
 PBM images don't require an external library.  Color, gray-scale and
-mono images are supported.  There are no additional image properties
-defined.
+mono images are supported.  Additional image properties supported for
+mono images are
+
+`:foreground FG'
+
+FG must be a string specifying the image foreground color.  Default
+is the frame's foreground.
+
+`:background FG'
+
+BG must be a string specifying the image foreground color.  Default is
+the frame's background color.
 
 **** JPEG, image type `jpeg'
 
@@ -3596,6 +4073,10 @@ toolbar items generally, and `tool-bar-add-item-from-menu' can be used
 to define a toolbar item with a binding copied from an item on the
 menu bar.
 
+The default bindings use a menu-item :filter to derive the tool-bar
+dynamically from variable `tool-bar-map' which may be set
+buffer-locally to override the global map.
+
 *** Tool-bar-related variables.
 
 If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
@@ -3607,7 +4088,8 @@ raised when the mouse moves over them.
 
 You can add extra space between tool bar items by setting
 `tool-bar-button-margin' to a positive integer specifying a number of
-pixels.  Default is 1.
+pixels, or a pair of integers (X . Y) specifying horizontal and
+vertical margins .  Default is 1.
 
 You can change the shadow thickness of tool bar buttons by setting
 `tool-bar-button-relief' to an integer.  Default is 3.
@@ -3762,13 +4244,13 @@ as display specification.
 
 *** Other display properties
 
-- :space-width FACTOR
+- (space-width FACTOR)
 
 Specifies that space characters in the text having that property
 should be displayed FACTOR times as wide as normal; FACTOR must be an
 integer or float.
 
-- :height HEIGHT
+- (height HEIGHT)
 
 Display text having this property in a font that is smaller or larger.
 
@@ -3787,13 +4269,13 @@ height as argument.  The function should return the new height to use.
 Otherwise, HEIGHT is evaluated to get the new height, with the symbol
 `height' bound to the current specified font height.
 
-- :raise FACTOR
+- (raise FACTOR)
 
 FACTOR must be a number, specifying a multiple of the current
 font's height.  If it is positive, that means to display the characters
 raised.  If it is negative, that means to display them lower down.  The
 amount of raising or lowering is computed without taking account of the
-`:height' subproperty.
+`height' subproperty.
 
 *** Conditional display properties
 
@@ -3938,7 +4420,7 @@ horizontal rather than vertical (since the MS-DOS display doesn't
 support a vertical-bar cursor).
 
 
-^L
+\f
 * Emacs 20.7 is a bug-fix release with few user-visible changes
 
 ** It is now possible to use CCL-based coding systems for keyboard
@@ -3957,12 +4439,12 @@ exceptions are such coding systems that handle 2-byte character sets
 ** Support for Macintosh PowerPC-based machines running GNU/Linux has
 been added.
 
-^L
+\f
 * Emacs 20.6 is a bug-fix release with one user-visible change
 
 ** Support for ARM-based non-RISCiX machines has been added.
 
-^L
+\f
 * Emacs 20.5 is a bug-fix release with no user-visible changes.
 
 ** Not new, but not mentioned before:
@@ -8923,7 +9405,7 @@ lm-synopsis extracts first line "synopsis'"information.
 ----------------------------------------------------------------------
 Copyright information:
 
-Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the