*** empty log message ***
[bpt/emacs.git] / etc / NEWS
index 81e3e2c..ce10e82 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,5 +1,5 @@
-GNU Emacs NEWS -- history of user-visible changes.  23 Jan 1999
-Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+GNU Emacs NEWS -- history of user-visible changes.  5 Jan 2000
+Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
@@ -10,9 +10,102 @@ For older news, see the file ONEWS.
 
 ** `movemail' defaults to supporting POP.  You can turn this off using
 the --without-pop configure option, should that be necessary.
+
+** There are new configure options associated with the support for
+images and toolkit scrollbars.  Use the --help option to list them.
 \f
 * Changes in Emacs 21.1
 
+** Emacs now refuses to load compiled Lisp files which weren't
+compiled with Emacs.  Set `load-dangerous-libraries' to t to change
+this behavior.
+
+The reason for this change is an incompatible change in XEmacs' byte
+compiler.  Files compiled with XEmacs can contain byte codes that let
+Emacs dump core.
+
+** New X resources recognized
+
+*** The X resource `synchronous', class `Synchronous', specifies
+whether Emacs should run in synchronous mode.  Synchronous mode
+is useful for debugging X problems.
+
+Example:
+
+  emacs.synchronous: true
+
+*** The X resource `visualClass, class `VisualClass', specifies the
+visual Emacs should use.  The resource's value should be a string of
+the form `CLASS-DEPTH', where CLASS is the name of the visual class,
+and DEPTH is the requested color depth as a decimal number.  Valid
+visual class names are
+
+  TrueColor
+  PseudoColor
+  DirectColor
+  StaticColor
+  GrayScale
+  StaticGray
+
+Visual class names specified as X resource are case-insensitive, i.e.
+`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
+meaning.
+
+The program `xdpyinfo' can be used to list the visual classes
+supported on your display, and which depths they have.  If
+`visualClass' is not specified, Emacs uses the display's default
+visual.
+
+Example:
+
+  emacs.visualClass: TrueColor-8
+
+*** The X resource `privateColormap', class `PrivateColormap',
+specifies that Emacs should use a private colormap if it is using the
+default visual, and that visual is of class PseudoColor.  Recognized
+resource values are `true' or `on'.
+
+Example:
+
+  emacs.privateColormap: true
+
+** The menu bar configuration has changed.  The new configuration is
+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
+be customized.
+
+** The variable `echo-keystrokes' may now have a floating point value.
+
+** C-x 5 1 runs the new command delete-other-frames which deletes
+all frames except the selected one.
+
+** If your init file is compiled (.emacs.elc), `user-init-file' is set
+to the source name (.emacs.el), if that exists, after loading it.
+
+** The help string specified for a menu-item whose definition contains
+the property `:help HELP' is now displayed under X either in the echo
+area or with tooltips.
+
+** New user option `read-mail-command' specifies a command to use to
+read mail from the menu etc.
+
+** Changes in Outline mode.
+
+There is now support for Imenu to index headings.  A new command
+`outline-headers-as-kill' copies the visible headings in the region to
+the kill ring, e.g. to produce a table of contents.
+
+** New command M-x check-parens can be used to find unbalanced paren
+groups and strings in buffers in Lisp mode (or other modes).
+
+** You can now easily create new *Info* buffers using either M-x clone-buffer
+or C-u m <entry> RET.  M-x clone-buffer can also be used on *Help* and
+several other special buffers.
+
 ** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse)
 under XFree86.  To enable this, simply put (mwheel-install) in your
 .emacs file.
@@ -218,7 +311,7 @@ M-mouse-2 switches to the previous buffer in the buffer list.
 
 - Mouse-3 on the buffer-name displays a buffer menu.
 
-- Mouse-1 on the read-only status in the mode line (`%' or `*')
+- Mouse-2 on the read-only status in the mode line (`%' or `*')
 toggles the read-only status.
 
 - Mouse-3 on the mode name display a minor-mode menu.
@@ -286,6 +379,8 @@ notably at the end of lines.
 All these functions have been rewritten to avoid inserting unwanted
 spaces, and an optional prefix now allows them to behave the old way.
 
+There is a new command M-x replace-rectangle.
+
 ** The new command M-x query-replace-regexp-eval acts like
 query-replace-regexp, but takes a Lisp expression which is evaluated
 after each match to get the replacement text.
@@ -305,6 +400,63 @@ specifies a number of lines.  If nil, don't resize.
 
 Default is 0.25.
 
+** Changes to hideshow.el
+
+Hideshow is now at version 5.x.  It uses a new algorithms for block
+selection and traversal and includes more isearch support.
+
+*** Generalized block selection and traversal
+
+A block is now recognized by three things: its start and end regexps
+(both strings), and a match-data selector (an integer) specifying
+which sub-expression in the start regexp serves as the place where a
+`forward-sexp'-like function can operate.  Hideshow always adjusts
+point to this sub-expression before calling `hs-forward-sexp-func'
+(which for most modes evaluates to `forward-sexp').
+
+If the match-data selector is not specified, it defaults to zero,
+i.e., the entire start regexp is valid, w/ no prefix.  This is
+backwards compatible with previous versions of hideshow.  Please see
+the docstring for variable `hs-special-modes-alist' for details.
+
+*** Isearch support for updating mode line
+
+During incremental search, if Hideshow minor mode is active, hidden
+blocks are temporarily shown.  The variable `hs-headline' records the
+line at the beginning of the opened block (preceding the hidden
+portion of the buffer), and the mode line is refreshed.  When a block
+is re-hidden, the variable is set to nil.
+
+To show `hs-headline' in the mode line, you may wish to include
+something like this in your .emacs.
+
+       (add-hook 'hs-minor-mode-hook
+         (lambda ()
+           (add-to-list 'mode-line-format 'hs-headline)))
+
+** Changes to Change Log mode and Add-Log functions
+
+If you invoke `add-change-log-entry' from a backup file, it makes an
+entry appropriate for the file's parent.  This is useful for making
+log entries by comparing a version with deleted functions.
+
+New command M-x change-log-merge merges another log into the current
+buffer, fixing old-style date formats if necessary.
+
+Change Log mode now adds a file's version number to change log entries
+if user-option `change-log-version-info-enabled' is non-nil.
+
+The search for a file's 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.
+
+** 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.
+
 ** Comint (subshell) changes
 
 Comint now includes new features to send commands to running processes
@@ -318,6 +470,15 @@ 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.
 
+** Changes to Rmail mode
+
+*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
+like `j'.
+
+*** There is a new user option `rmail-digest-end-regexps' that
+specifies the regular expressions to detect the line that ends a
+digest message.
+
 ** Changes to TeX mode
 
 The default mode has been changed from `plain-tex-mode' to
@@ -344,6 +505,11 @@ The default mode has been changed from `plain-tex-mode' to
     to show locations in LaTeX documents where a particular entry has
     been cited.
 
+** Emacs Lisp mode now allows multiple levels of outline headings.
+The level of a heading is determined from the number of leading
+semicolons in a heading line.  Toplevel forms starting with a `('
+in column 1 are always made leaves.
+
 ** The M-x time-stamp command (most commonly used on write-file-hooks)
 has the following new features:
 
@@ -380,6 +546,21 @@ cause the customizations to fail in earlier versions of Emacs.
 Custom buffers when you've done with them or just bury them (the
 default).
 
+*** The keyword :set-after in defcustom allows to specify dependencies
+between custom options.  Example:
+
+  (defcustom default-input-method nil
+    "*Default input method for multilingual text (a string).
+  This is the input method activated automatically by the command
+  `toggle-input-method' (\\[toggle-input-method])."
+    :group 'mule
+    :type '(choice (const nil) string)
+    :set-after '(current-language-environment))
+
+This specifies that default-input-method should be set after
+current-language-environment even if default-input-method appears
+first in a custom-set-variables statement.
+
 ** New features in evaluation commands
 
 The commands to evaluate Lisp expressions, such as C-M-x in Lisp
@@ -398,9 +579,155 @@ is, delete only empty directories.
 command will copy directories recursively.  The default is, do not
 copy directories recursively.
 
+*** In command `dired-do-shell-command' (usually bound to `!') a `?'
+in the shell command has a special meaning similar to `*', but with
+the difference that the command will be run on each file individually.
+
 ** The variable mail-specify-envelope-from controls whether to
 use the -f option when sending mail.
 
+** CC mode changes.
+
+Note: This release contains changes that might not be compatible with
+current user setups (although it's believed that these
+incompatibilities will only show in very uncommon circumstances).
+However, since the impact is uncertain, these changes may be rolled
+back depending on user feedback.  Therefore there's no forward
+compatibility guarantee wrt the new features introduced in this
+release.
+
+*** New initialization procedure for the style system.
+When the initial style for a buffer is determined by CC Mode (from the
+variable c-default-style), the global values of style variables now
+take precedence over the values specified by the chosen style.  This
+is different than the old behavior: previously, the style-specific
+settings would override the global settings.  This change makes it
+possible to do simple configuration in the intuitive way with
+Customize or with setq lines in one's .emacs file.
+
+By default, the global value of every style variable is the new
+special symbol set-from-style, which causes the value to be taken from
+the style system.  This means that in effect, only an explicit setting
+of a style variable will cause the "overriding" behavior described
+above.
+
+Also note that global settings override style-specific settings *only*
+when the initial style of a buffer is chosen by a CC Mode major mode
+function.  When a style is chosen in other ways --- for example, by a
+call like (c-set-style "gnu") in a hook, or via M-x c-set-style ---
+then the style-specific values take precedence over any global style
+values.  In Lisp terms, global values override style-specific values
+only when the new second argument to c-set-style is non-nil; see the
+function documentation for more info.
+
+The purpose of these changes is to make it easier for users,
+especially novice users, to do simple customizations with Customize or
+with setq in their .emacs files.  On the other hand, the new system is
+intended to be compatible with advanced users' customizations as well,
+such as those that choose styles in hooks or whatnot.  This new system
+is believed to be almost entirely compatible with current
+configurations, in spite of the changed precedence between style and
+global variable settings when a buffer's default style is set.
+
+(Thanks to Eric Eide for clarifying this explanation a bit.)
+
+**** c-offsets-alist is now a customizable variable.
+This became possible as a result of the new initialization behavior.
+
+This variable is treated slightly differently from the other style
+variables; instead of using the symbol set-from-style, it will be
+completed with the syntactic symbols it doesn't already contain when
+the style is first initialized.  This means it now defaults to the
+empty list to make all syntactic elements get their values from the
+style system.
+
+**** Compatibility variable to restore the old behavior.
+In case your configuration doesn't work with this change, you can set
+c-old-style-variable-behavior to non-nil to get the old behavior back
+as far as possible.
+
+*** Improvements to line breaking and text filling.
+CC Mode now handles this more intelligently and seamlessly wrt the
+surrounding code, especially inside comments.  For details see the new
+chapter about this in the manual.
+
+**** New variable to recognize comment line prefix decorations.
+The variable c-comment-prefix-regexp has been added to properly
+recognize the line prefix in both block and line comments.  It's
+primarily used to initialize the various paragraph recognition and
+adaptive filling variables that the text handling functions uses.
+
+**** New variable c-block-comment-prefix.
+This is a generalization of the now obsolete variable
+c-comment-continuation-stars to handle arbitrary strings.
+
+**** CC Mode now uses adaptive fill mode.
+This to make it adapt better to the paragraph style inside comments.
+
+It's also possible to use other adaptive filling packages inside CC
+Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/).
+A new convenience function c-setup-filladapt sets up Filladapt for use
+inside CC Mode.
+
+Note though that the 2.12 version of Filladapt lacks a feature that
+causes it to work suboptimally when c-comment-prefix-regexp can match
+the empty string (which it commonly does).  A patch for that is
+available from the CC Mode web site (http://www.python.org/emacs/
+cc-mode/).
+
+**** It's now possible to selectively turn off auto filling.
+The variable c-ignore-auto-fill is used to ignore auto fill mode in
+specific contexts, e.g. in preprocessor directives and in string
+literals.
+
+**** New context sensitive line break function c-context-line-break.
+It works like newline-and-indent in normal code, and adapts the line
+prefix according to the comment style when used inside comments.  If
+you're normally using newline-and-indent, you might want to switch to
+this function.
+
+*** Fixes to IDL mode.
+It now does a better job in recognizing only the constructs relevant
+to IDL.  E.g. it no longer matches "class" as the beginning of a
+struct block, but it does match the CORBA 2.3 "valuetype" keyword.
+Thanks to Eric Eide.
+
+*** Improvements to the Whitesmith style.
+It now keeps the style consistently on all levels and both when
+opening braces hangs and when they don't.
+
+**** New lineup function c-lineup-whitesmith-in-block.
+
+*** New lineup functions c-lineup-template-args and c-indent-multi-line-block.
+See their docstrings for details.  c-lineup-template-args does a
+better job of tracking the brackets used as parens in C++ templates,
+and is used by default to line up continued template arguments.
+
+*** c-lineup-comment now preserves alignment with a comment on the
+previous line.  It used to instead preserve comments that started in
+the column specified by comment-column.
+
+*** c-lineup-C-comments handles "free form" text comments.
+In comments with a long delimiter line at the start, the indentation
+is kept unchanged for lines that start with an empty comment line
+prefix.  This is intended for the type of large block comments that
+contain documentation with its own formatting.  In these you normally
+don't want CC Mode to change the indentation.
+
+*** The `c' syntactic symbol is now relative to the comment start
+instead of the previous line, to make integers usable as lineup
+arguments.
+
+*** All lineup functions have gotten docstrings.
+
+*** More preprocessor directive movement functions.
+c-down-conditional does the reverse of c-up-conditional.
+c-up-conditional-with-else and c-down-conditional-with-else are
+variants of these that also stops at "#else" lines (suggested by Don
+Provan).
+
+*** Minor improvements to many movement functions in tricky situations.
+
 ** Isearch changes
 
 *** In Isearch mode, mouse-2 in the echo area now yanks the current
@@ -426,6 +753,12 @@ matches are automatically cleared when you end the search.  If it is
 set to nil, you can remove the highlights manually with `M-x
 isearch-lazy-highlight-cleanup'.
 
+** Changes in sort.el
+
+The function sort-numeric-fields interprets numbers starting with `0'
+as octal and numbers starting with `0x' or `0X' as hexadecimal.  The
+new user-option sort-numberic-base can be used to specify a default
+numeric base.
 
 ** Ange-ftp allows you to specify of a port number in remote file
 names cleanly.  It is appended to the host name, separated by a hash
@@ -471,6 +804,33 @@ variables are tagged.
 *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
 for PSWrap.
 
+** Changes in etags.el
+
+*** You can display additional output with M-x tags-apropos by setting
+the new variable tags-apropos-additional-actions.
+
+If non-nil, the variable's value should be a list of triples (TITLE
+FUNCTION TO-SEARCH).  For each triple, M-x tags-apropos processes
+TO-SEARCH and lists tags from it.  TO-SEARCH should be an alist,
+obarray, or symbol.  If it is a symbol, the symbol's value is used.
+
+TITLE is a string to use to label the list of tags from TO-SEARCH.
+
+FUNCTION is a function to call when an entry is selected in the Tags
+List buffer.  It is called with one argument, the selected symbol.
+
+A useful example value for this variable might be something like:
+
+  '(("Emacs Lisp" Info-goto-emacs-command-node obarray)
+    ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray)
+    ("SCWM" scwm-documentation scwm-obarray))
+
+*** The face tags-tag-face can be used to customize the appearance
+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.
+
 ** Emacs now attempts to determine the initial language environment
 and preferred and locale coding systems systematically from the
 LC_ALL, LC_CTYPE, and LANG environment variables during startup.
@@ -486,8 +846,92 @@ appropriate for C-style escape sequences in strings.
 
 ** SGML mode's default `sgml-validate-command' is now `nsgmls'.
 
+** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file.
+
 ** New modes and packages
 
+*** The new command M-x re-builder offers a convenient interface for
+authoring regular expressions with immediate visual feedback.
+
+The buffer from which the command was called becomes the target for
+the regexp editor popping up in a separate window.  Matching text in
+the target buffer is immediately color marked during the editing.
+Each sub-expression of the regexp will show up in a different face so
+even complex regexps can be edited and verified on target data in a
+single step.
+
+On displays not supporting faces the matches instead blink like
+matching parens to make them stand out.  On such a setup you will
+probably also want to use the sub-expression mode when the regexp
+contains such to get feedback about their respective limits.
+
+*** glasses-mode is a minor mode that makes
+unreadableIdentifiersLikeThis readable.  It works as glasses, without
+actually modifying content of a buffer.
+
+*** The package ebnf2ps translates an EBNF to a syntactic chart in
+PostScript.
+
+Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
+
+The ad-hoc default EBNF syntax has the following elements:
+
+    ;          comment (until end of line)
+    A          non-terminal
+    "C"                terminal
+    ?C?                special
+    $A         default non-terminal
+    $"C"       default terminal
+    $?C?       default special
+    A = B.     production (A is the header and B the body)
+    C D                sequence (C occurs before D)
+    C | D      alternative (C or D occurs)
+    A - B      exception (A excluding B, B without any non-terminal)
+    n * A      repetition (A repeats n (integer) times)
+    (C)                group (expression C is grouped together)
+    [C]                optional (C may or not occurs)
+    C+         one or more occurrences of C
+    {C}+       one or more occurrences of C
+    {C}*       zero or more occurrences of C
+    {C}                zero or more occurrences of C
+    C / D      equivalent to: C {D C}*
+    {C || D}+  equivalent to: C {D C}*
+    {C || D}*  equivalent to: [C {D C}*]
+    {C || D}   equivalent to: [C {D C}*]
+
+Please, see ebnf2ps documentation for EBNF syntax and how to use it.
+
+*** The package align.el will align columns within a region, using M-x
+align.  Its mode-specific rules, based on regular expressions,
+determine where the columns should be split.  In C and C++, for
+example, it will align variable names in declaration lists, or the
+equal signs of assignments.
+
+*** `paragraph-indent-minor-mode' is a new minor mode supporting
+paragraphs in the same style as `paragraph-indent-text-mode'.
+
+*** bs.el is a new package for buffer selection similar to
+list-buffers or electric-buffer-list.  Use M-x bs-show to display a
+buffer menu with this package.  You can use M-x bs-customize to
+customize the package.
+
+*** calculator.el is a small calculator package that is intended to
+replace desktop calculators such as xcalc and calc.exe.  Actually, it
+is not too small - it has more features than most desktop calculators,
+and can be customized easily to get many more functions.  It should
+not be confused with "calc" which is a much bigger mathematical tool
+which answers different needs.
+
+*** The minor modes cwarn-mode and global-cwarn-mode highlights
+suspicious C and C++ constructions.  Currently, assignments inside
+expressions, semicolon following `if', `for' and `while' (except, of
+course, after a `do .. while' statement), and C++ functions with
+reference parameters are recognized.  The modes require font-lock mode
+to be enabled.
+
+*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files
+containing diff3-style conflict markers, such as generated by RCS.
+
 *** 5x5.el is a simple puzzle game.
 
 *** hl-line.el provides a minor mode to highlight the current line.
@@ -576,12 +1020,31 @@ M-x customize-group RET recentf RET.
 *** elide-head.el provides a mechanism for eliding boilerplate header
 text.
 
+*** footnote.el provides `footnote-mode', a minor mode supporting use
+of footnotes.  It is intended for use with Message mode, but isn't
+specific to Message mode.
+
+*** diff-mode.el provides `diff-mode', a major mode for
+viewing/editing context diffs (patches).  It is selected for files
+with extension `.diff', `.diffs', `.patch' and `.rej'.
+
+*** EUDC, the Emacs Unified Directory Client, provides a common user
+interface to access directory servers using different directory
+protocols.  It has a separate manual.
+
+*** autoconf.el provides a major mode for editing configure.in files
+for Autoconf, selected automatically.
+
+*** windmove.el
+
 ** Withdrawn packages
 
 *** mldrag.el has been removed.  mouse.el provides the same
 functionality with aliases for the mldrag functions.
 
-*** eval-reg.el has been obsoleted by changes to edebug.el.
+*** eval-reg.el has been obsoleted by changes to edebug.el and removed.
+
+*** ph.el has been obsoleted by EUDC and removed.
 \f
 * Lisp changes in Emacs 21.1 (see following page for display-related features)
 
@@ -590,6 +1053,89 @@ Note that +++ before an item means the Lisp manual has been updated.
 When you add a new item, please add it without either +++ or ---
 so I will know I still need to look at it -- rms.
 
+** Emacs' reader supports CL read syntax for integers in bases
+other than 10.
+
+*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
+INTEGER optionally contains a sign.
+
+  #b1111 
+    => 15
+  #b-1111 
+    => -15
+
+*** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8).
+
+  #o666 
+    => 438
+
+*** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16).
+
+  #xbeef 
+    => 48815
+
+*** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36.
+
+  #2R-111 
+    => -7
+  #25rah 
+    => 267
+
+** The function documentation-property now evaluates the value of
+the given property to obtain a a string if it doesn't refer to etc/DOC
+and isn't a string.
+
++++
+** The last argument of `define-key-after' defaults to t for convenience.
+
+** The new function `replace-regexp-in-string' replaces all matches
+for a regexp in a string.
+
+** `mouse-position' now runs the abnormal hook
+`mouse-position-function'.
+
+** The function string-to-number now returns a float for numbers
+that don't fit into a Lisp integer.
+
+** The variable keyword-symbols-constants-flag has been removed.
+Keywords are now always considered constants.
+
++++
+** The new function `delete-and-extract-region' deletes text and
+returns it.
+
+** The function `clear-this-command-keys' now also clears the vector
+returned by function `recent-keys'.
+
++++
+** Variables `beginning-of-defun-function' and `end-of-defun-function'
+can be used to define handlers for the functions that find defuns.
+Major modes can define these locally instead of rebinding M-C-a
+etc. if the normal conventions for defuns are not appropriate for the
+mode.
+
++++
+** easy-mmode-define-minor-mode now takes an additional BODY argument
+and is renamed `define-minor-mode'.
+
++++
+** If an abbrev has a hook function which is a symbol, and that symbol
+has a non-nil `no-self-insert' property, the return value of the hook
+function specifies whether an expansion has been done or not.  If it
+returns nil, abbrev-expand also returns nil, meaning "no expansion has
+been performed."
+
+When abbrev expansion is done by typing a self-inserting character,
+and the abbrev has a hook with the `no-self-insert' property, and the
+hook function returns non-nil meaning expansion has been done,
+then the self-inserting character is not inserted.
+
++++
+** The function `intern-soft' now accepts a symbol as first argument.
+In this case, that exact symbol is looked up in the specified obarray,
+and the function's value is nil if it is not found.
+
++++
 ** The new macro `with-syntax-table' can be used to evaluate forms
 with the syntax table of the current buffer temporarily set to a
 specified table.
@@ -601,15 +1147,23 @@ TABLE.  The current syntax table is saved, BODY is evaluated, and the
 saved table is restored, even in case of an abnormal exit.  Value is
 what BODY returns.
 
++++
+** Regular expressions now support intervals \{n,m\} as well as
+Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
+
++++
 ** The optional argument BUFFER of function file-local-copy has been
 removed since it wasn't used by anything.
 
++++
 ** The file name argument of function `file-locked-p' is now required
 instead of being optional.
 
++++
 ** The new built-in error `text-read-only' is signaled when trying to
 modify read-only text.
 
++++
 ** New functions and variables for locales.
 
 The new variable `locale-coding-system' specifies how to encode and
@@ -626,14 +1180,17 @@ not be invoked thereafter.  It uses the new variables
 `locale-language-names', `locale-charset-language-names', and
 `locale-preferred-coding-systems' to make its decisions.
 
++++
 ** syntax tables now understand nested comments.
 To declare a comment syntax as allowing nesting, just add an `n'
 modifier to either of the characters of the comment end and the comment
 start sequences.
 
++++
 ** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
 because `bitmap' is more in line with the usual X terminology.
 
++++
 ** New function `propertize'
 
 The new function `propertize' can be used to conveniently construct
@@ -651,14 +1208,29 @@ specified value of that property.  Example:
 +++
 ** push and pop macros.
 
-A simple version of the push and pop macros of Common Lisp
-is now defined in Emacs Lisp.  These macros allow only symbols
+Simple versions of the push and pop macros of Common Lisp
+are now defined in Emacs Lisp.  These macros allow only symbols
 as the place that holds the list to be changed.
 
 (push NEWELT LISTNAME)  add NEWELT to the front of LISTNAME's value.
 (pop LISTNAME)          return first elt of LISTNAME, and remove it
                        (thus altering the value of LISTNAME).
 
+** New dolist and dotimes macros.
+
+Simple versions of the dolist and dotimes macros of Common Lisp
+are now defined in Emacs Lisp.
+
+(dolist (VAR LIST [RESULT]) BODY...)
+      Execute body once for each element of LIST,
+      using the variable VAR to hold the current element.
+      Then return the value of RESULT, or nil if RESULT is omitted.
+
+(dotimes (VAR COUNT [RESULT]) BODY...)
+      Execute BODY with VAR bound to successive integers running from 0,
+      inclusive, to COUNT, exclusive.
+      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.
@@ -954,6 +1526,11 @@ The following sound properties are supported:
 FILE is a file name.  If FILE isn't an absolute name, it will be
 searched relative to `data-directory'.
 
+- `:data DATA'
+
+DATA is a string containing sound data.  Either :file or :data
+may be present, but not both.
+
 - `:volume VOLUME'
 
 VOLUME must be an integer in the range 0..100 or a float in the range
@@ -962,6 +1539,18 @@ VOLUME must be an integer in the range 0..100 or a float in the range
 Other properties are ignored.
 
 ** `multimedia' is a new Finder keyword and Custom group.
+
+** keywordp is a new predicate to test efficiently for an object being
+a keyword symbol.
+
+** Changes to garbage collection
+
+*** The function garbage-collect now additionally returns the number
+of live and free strings.
+
+*** There is a new variable `strings-consed' holding the number of
+strings that have been consed so far.
+
 \f
 * New Lisp-level Display features in Emacs 21.1
 
@@ -1323,13 +1912,41 @@ specification can be
 +++
 ** Support functions for colors on text-only terminals.
 
-The function `face-register-tty-color' can be used to define colors
-for use on TTY frames.  It maps a color name to a color number on the
-terminal.  Emacs defines a couple of default color mappings by
+The function `tty-color-define' can be used to define colors for use
+on TTY and MSDOS frames.  It maps a color name to a color number on
+the terminal.  Emacs defines a couple of common color mappings by
 default.  You can get defined colors with a call to
-`tty-defined-colors'.  The function `face-clear-tty-colors' can be
+`defined-colors'.  The function `tty-color-clear' can be
 used to clear the mapping table.
 
+** Unified support for colors independent of frame type.
+
+The new functions `defined-colors', `color-defined-p', `color-values',
+and `display-color-p' work for any type of frame.  On frames whose
+type is neither x nor w32, these functions transparently map X-style
+color specifications to the closest colors supported by the frame
+display.  Lisp programs should use these new functions instead of the
+old `x-defined-colors', `x-color-defined-p', `x-color-values', and
+`x-display-color-p'.  (The old function names are still available for
+compatibility; they are now aliases of the new names.)  Lisp programs
+should no more look at the value of the variable window-system to
+modify their color-related behavior.
+
+The primitives `color-gray-p' and `color-supported-p' also work for
+any frame type.
+
+** Platform-independent functions to describe display capabilities.
+
+The new functions `display-mouse-p', `display-popup-menus-p',
+`display-graphic-p', `display-selections-p', `display-screens',
+`display-pixel-width', `display-pixel-height', `display-mm-width',
+`display-mm-height', `display-backing-store', `display-save-under',
+`display-planes', `display-color-cells', `display-visual-class', and
+`display-grayscale-p' describe the basic capabilities of a particular
+display.  Lisp programs should call these functions instead of testing
+the value of the variables `window-system' or `system-type', or calling
+platform-specific functions such as `x-display-pixel-width'.
+
 +++
 ** The minibuffer prompt is now actually inserted in the minibuffer.
 
@@ -1349,7 +1966,10 @@ Many emacs functions, such as forward-word, forward-sentence,
 forward-paragraph, beginning-of-line, etc., stop moving when they come
 to the boundary between fields; beginning-of-line and end-of-line will
 not let the point move past the field boundary, but other movement
-commands continue into the next field if repeated.
+commands continue into the next field if repeated.  Stopping at field
+boundaries can be suppressed programmatically by binding
+`inhibit-field-text-motion' to a non-nil value around calls to these
+functions.
 
 Now that the minibuffer prompt is inserted into the minibuffer, it is in
 a separate field from the user-input part of the buffer, so that common
@@ -1477,6 +2097,13 @@ search for the image in `data-directory'.  Some image types support
 building images from data.  When this is done, no `:file' property
 may be present in the image specification.
 
+`:data DATA'
+
+Get image data from DATA.  (As of this writing, this is not yet
+supported for image type `postscript').  Either :file or :data may be
+present in an image specification, but not both.  All image types
+support strings as DATA, some types allow additional types of DATA.
+
 *** Supported image types
 
 **** XBM, image type `xbm'.
@@ -1536,11 +2163,6 @@ name.
 XPM images can be built from memory instead of files.  In that case,
 add a `:data' property instead of a `:file' property.
 
-`:data DATA'
-
-DATA must be a string containing an XPM image.  The contents of the
-string are of the same format as that of XPM files.
-
 The XPM library uses libz in its implementation so that it is able
 to display compressed images.
 
@@ -1553,8 +2175,8 @@ defined.
 **** JPEG, image type `jpeg'
 
 Support for JPEG images requires the external library `libjpeg',
-package `jpegsrc.v6a.tar.gz', or later.  There are no additional image
-properties defined.
+package `jpegsrc.v6a.tar.gz', or later.  Additional image properties
+are:
 
 **** TIFF, image type `tiff'
 
@@ -1586,7 +2208,7 @@ every 0.1 seconds.
 (defun display-anim (buffer file idx max first-time)
   (when (= idx max)
     (setq idx 0))
-  (let ((img (create-image file nil :index idx)))
+  (let ((img (create-image file nil nil :index idx)))
     (save-excursion
       (set-buffer buffer)
       (goto-char (point-min))
@@ -2102,6 +2724,13 @@ temporarily to nil, for example
 
 Likewise, an attempt to split a fixed-height window vertically,
 or a fixed-width window horizontally results in a error.
+
+** The cursor-type frame parameter is now supported on MS-DOS
+terminals.  When Emacs starts, it by default changes the cursor shape
+to a solid box, as it does on Unix.  The `cursor-type' frame parameter
+overrides this as it does on Unix, except that the bar cursor is
+horizontal rather than vertical (since the MS-DOS display doesn't
+support a vertical-bar cursor).
 ^L
 * Emacs 20.5 is a bug-fix release with no user-visible changes.
 
@@ -2246,6 +2875,18 @@ current codepage when it starts.
 
 ** Mail changes
 
+*** When mail is sent using compose-mail (C-x m), and if
+`mail-send-nonascii' is set to the new default value `mime',
+appropriate MIME headers are added.  The headers are added only if
+non-ASCII characters are present in the body of the mail, and no other
+MIME headers are already present.  For example, the following three
+headers are added if the coding system used in the *mail* buffer is
+latin-1:
+
+  MIME-version: 1.0
+  Content-type: text/plain; charset=iso-8859-1
+  Content-Transfer-Encoding: 8bit
+
 *** The new variable default-sendmail-coding-system specifies the
 default way to encode outgoing mail.  This has higher priority than
 default-buffer-file-coding-system but has lower priority than
@@ -5026,10 +5667,22 @@ variables as buffer-local variables.
 *** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts.
 Use M-x dsssl-mode.
 
-** The emacsclient program now accepts an option --no-wait which tells
+** Changes to the emacsclient program
+
+*** If a socket can't be found, and environment variables LOGNAME or
+USER are set, emacsclient now looks for a socket based on the UID
+associated with the name.  That is an emacsclient running as root
+can connect to an Emacs server started by a non-root user.
+
+*** The emacsclient program now accepts an option --no-wait which tells
 it to return immediately without waiting for you to "finish" the
 buffer in Emacs.
 
+*** The new option --alternate-editor allows to specify an editor to
+use if Emacs is not running.  The environment variable
+ALTERNATE_EDITOR can be used for the same effect; the command line
+option takes precedence.
+
 ** M-x eldoc-mode enables a minor mode in which the echo area
 constantly shows the parameter list for function being called at point
 (in Emacs Lisp and Lisp Interaction modes only).
@@ -5188,6 +5841,8 @@ from `bibtex-string-files' are searched.
 
 ** Iso Accents mode now supports Latin-3 as an alternative.
 
+** The command next-error now opens blocks hidden by hideshow.
+
 ** The function using-unix-filesystems has been replaced by the
 functions add-untranslated-filesystem and remove-untranslated-filesystem.
 Each of these functions takes the name of a drive letter or directory
@@ -7030,7 +7685,7 @@ lm-synopsis extracts first line "synopsis'"information.
 ----------------------------------------------------------------------
 Copyright information:
 
-Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000 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