*** empty log message ***
[bpt/emacs.git] / etc / NEWS
index 090bdf1..cd7f69e 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.
@@ -13,6 +13,51 @@ the --without-pop configure option, should that be necessary.
 \f
 * Changes in Emacs 21.1
 
+** 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.
+
+The variables `mwheel-follow-mouse' and `mwheel-scroll-amount'
+determine where and by how much buffers are scrolled.
+
+** Listing buffers with M-x list-buffers (C-x C-b) now shows
+abbreviated file names.  Abbreviations can be customized by changing
+`directory-abbrev-alist'.
+
+** Reading from the mini-buffer now reads from standard input if Emacs
+is running in batch mode.  For example,
+
+  (message "%s" (read t))
+
+will read a Lisp expression from standard input and print the result
+to standard output.
+
 ** Faces and frame parameters.
 
 There are four new faces `scroll-bar', `border', `cursor' and `mouse'.
@@ -25,7 +70,7 @@ parameter `mouse-color' and face `mouse'.
 
 Changing frame parameter `font' sets font-related attributes of the
 `default' face and vice versa.  Setting frame parameters
-`foreground-color' or `background-color' sets the colors of the 
+`foreground-color' or `background-color' sets the colors of the
 `default' face and vice versa.
 
 ** New face `menu'.
@@ -199,7 +244,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.
@@ -207,7 +252,7 @@ toggles the read-only status.
 ** LessTif/Motif file selection dialog.
 
 When Emacs is configured to use LessTif or Motif, reading a file name
-from a menu will pop up a file selection dialog if `use-dialogs' is
+from a menu will pop up a file selection dialog if `use-dialog-box' is
 non-nil.
 
 ** Emacs can display faces on TTY frames.
@@ -286,6 +331,90 @@ 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
+and redirect the output to a designated buffer or buffers.
+
+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.
+
+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
+`latex-mode'.
+
 ** Changes to RefTeX mode
 
 *** RefTeX has new support for index generation.  Index entries can be
@@ -307,6 +436,11 @@ Default is 0.25.
     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:
 
@@ -343,6 +477,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
@@ -351,11 +500,6 @@ print-level, print-length, and debug-on-error based on the
 customizable variables eval-expression-print-level,
 eval-expression-print-length, and eval-expression-debug-on-error.
 
-** 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.
-
 ** Dired changes
 
 *** New variable `dired-recursive-deletes' determines if the delete
@@ -366,12 +510,187 @@ 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.
 
-** In Isearch mode, mouse-2 in the echo area now yanks the current
+** 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
 selection into the search string rather than giving an error.
 
+*** There is a new lazy highlighting feature in incremental search.
+
+Lazy highlighting is switched on/off by customizing variable
+`isearch-lazy-highlight'.  When active, all matches for the current
+search string are highlighted.  The current match is highlighted as
+before using face `isearch' or `region'.  All other matches are
+highlighted using face `isearch-lazy-highlight-face' which defaults to
+`secondary-selection'.  
+
+The extra highlighting makes it easier to anticipate where the cursor
+will end up each time you press C-s or C-r to repeat a pending search.
+Highlighting of these additional matches happens in a deferred fashion
+using "idle timers," so the cycles needed do not rob isearch of its
+usual snappy response.
+
+If `isearch-lazy-highlight-cleanup' is set to t, highlights for
+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 ocatal 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
 sign, e.g. `/foo@bar.org#666:mumble'.  (This syntax comes from EFS.)
@@ -382,13 +701,110 @@ Shell script mode (sh-script) can now indent scripts for shells
 derived from sh and rc.  The indentation style is customizeable, and
 sh-script can attempt to "learn" the current buffer's style.
 
+** Etags changes.
+
+*** In DOS, etags looks for file.cgz if it cannot find file.c.
+
+*** New option --ignore-case-regex is an alternative to --regex.  It is now
+possible to bind a regexp to a language, by prepending the regexp with
+{lang}, where lang is one of the languages that `etags --help' prints out.
+This feature is useful especially for regex files, where each line contains
+a regular expression.  The manual contains details.
+
+*** In C and derived languages, etags creates tags for function
+declarations when given the --declarations option.
+
+*** In C++, tags are created for "operator".  The tags have the form
+"operator+", without spaces between the keyword and the operator.
+
+*** New language Ada: tags are functions, procedures, packages, tasks, and
+types.
+
+*** In Fortran, procedure is no more tagged.
+
+*** In Java, tags are created for "interface".
+
+*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
+are now tagged.
+
+*** In Perl, the --globals option tags global variables.  my and local
+variables are tagged.
+
+*** New language Python: def and class at the beginning of a line are tags.
+
+*** .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.
+
 ** New language environments `Latin-8' and `Latin-9'.
 These correspond respectively to the ISO character sets 8859-14
 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign).  There is
 currently no specific input method support for them.
 
+** Fortran mode has a new command `fortran-strip-sqeuence-nos' to
+remove text past column 72.  The syntax class of `\' in Fortran is now
+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 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.
+
+*** 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.
@@ -474,10 +890,25 @@ M-x customize-variable RET recentf-mode RET.
 To change the number of recent files displayed and others options use
 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'.
+
 ** 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 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)
 
@@ -486,9 +917,93 @@ 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.
 
+** 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.
+
+  (with-syntax-table TABLE &rest BODY)
+
+Evaluate BODY with syntax table of current buffer set to a copy of
+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 Perl's 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
+decode strings passed to low-level message functions like strerror and
+time functions like strftime.  The new variables
+`system-messages-locale' and `system-time-locale' give the system
+locales to be used when invoking these two types of functions.
+
+The new function `set-locale-environment' sets the language
+environment, preferred coding system, and locale coding system from
+the system locale as specified by the LC_ALL, LC_CTYPE, and LANG
+environment variables.  Normally, it is invoked during startup and need
+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
@@ -506,14 +1021,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.
@@ -630,7 +1160,7 @@ Clear TABLE.
 Look up KEY in TABLE and return its associated VALUE or DEFAULT if
 not found.
 
-- Function: puthash KEY VALUE TABLE 
+- Function: puthash KEY VALUE TABLE
 
 Associate KEY with VALUE in TABLE.  If KEY is already associated with
 another value, replace the old value with VALUE.
@@ -652,7 +1182,7 @@ Return a hash code for Lisp object OBJ.
 
 Define a new hash table test named NAME.  If NAME is specified as
 a test in `make-hash-table', the table created will use TEST-FN for
-comparing keys, and HASH-FN to compute hash codes for keys.  Test 
+comparing keys, and HASH-FN to compute hash codes for keys.  Test
 and hash function are stored as symbol property `hash-table-test'
 of NAME with a value of (TEST-FN HASH-FN).
 
@@ -671,7 +1201,7 @@ be strings that are compared case-insensitively.
   (defun case-fold-string-hash (a)
     (sxhash (upcase a)))
 
-  (define-hash-table-test 'case-fold 'case-fold-string= 
+  (define-hash-table-test 'case-fold 'case-fold-string=
                           'case-fold-string-hash))
 
   (make-hash-table :test 'case-fold)
@@ -689,16 +1219,6 @@ a cons cell which is its own cdr.
 If you bind print-circle to a non-nil value, the Lisp printer outputs
 #N= and #N# constructs to represent circular and shared structure.
 
-You can also do several calls to print functions using a common
-set of #N= constructs; here is how.
-
-  (let ((print-circle t)
-        (print-continuous-numbering t)
-        print-number-table)
-    (print1 ...)
-    (print1 ...)
-    ...)
-
 +++
 ** If the second argument to `move-to-column' is anything but nil or
 t, that means replace a tab with spaces if necessary to reach the
@@ -819,6 +1339,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
@@ -827,6 +1352,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
 
@@ -846,18 +1383,18 @@ font names anymore and face merging now works as expected.
 Each face can specify the following display attributes:
 
    1. Font family or fontset alias name.
-   
+
    2. Relative proportionate width, aka character set width or set
    width (swidth), e.g. `semi-compressed'.
-   
+
    3. Font height in 1/10pt
-   
+
    4. Font weight, e.g. `bold'.
-   
+
    5. Font slant, e.g. `italic'.
-   
+
    6. Foreground color.
-   
+
    7. Background color.
 
    8. Whether or not characters should be underlined, and in what color.
@@ -884,7 +1421,7 @@ attributes mentioned above.
 There is also a global face alist `face-new-frame-defaults'.  Face
 definitions from this list are used to initialize faces of newly
 created frames.
-   
+
 A face doesn't have to specify all attributes.  Those not specified
 have a nil value.  Faces specifying all attributes are called
 `fully-specified'.
@@ -941,7 +1478,7 @@ unused fonts.
 
 +++
 *** Font selection.
-   
+
 Font selection tries to find the best available matching font for a
 given (charset, face) combination.  This is done slightly differently
 for faces specifying a fontset, or a font family name.
@@ -1008,7 +1545,7 @@ REGISTRY-AND-ENCODING is a string giving the registry and encoding of
 the font.  The result list is sorted according to the current setting
 of the face font sort order.
 
-- Function: x-font-family-list 
+- Function: x-font-family-list
 
 Return a list of available font families on FRAME.  If FRAME is
 omitted or nil, use the selected frame.  Value is a list of conses
@@ -1160,7 +1697,7 @@ from X resources:
   :underline           attributeUnderline      Face.AttributeUnderline
   :inverse-video       attributeInverse        Face.AttributeInverse
   :stipple             attributeStipple        Face.AttributeStipple
-       or              attributeBackgroundPixmap 
+       or              attributeBackgroundPixmap
                                                Face.AttributeBackgroundPixmap
   :font                        attributeFont           Face.AttributeFont
   :bold                        attributeBold           Face.AttributeBold
@@ -1188,13 +1725,29 @@ 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.
+
 +++
 ** The minibuffer prompt is now actually inserted in the minibuffer.
 
@@ -1210,20 +1763,76 @@ There is now code to support an abstraction called `fields' in emacs
 buffers.  A field is a contiguous region of text with the same `field'
 text-property.
 
-Certain functions, such as forward-word, forward-sentence,
+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
+to the boundary between fieldsbeginning-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).
-
-The new function constrain-to-field may be used to achieve similar
-behavior; other new field functions include field-beginning, field-end,
-erase-field, and field-string.
+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 many
+a separate field from the user-input part of the buffer, so that common
 editing commands treat the user's text separately from the prompt.
 
+The following functions are defined for operating on fields:
+
+- Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE
+
+Return the position closest to NEW-POS that is in the same field as OLD-POS.
+A field is a region of text with the same `field' property.
+If NEW-POS is nil, then the current point is used instead, and set to the
+constrained position if that is is different.
+
+If OLD-POS is at the boundary of two fields, then the allowable
+positions for NEW-POS depends on the value of the optional argument
+ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
+constrained to the field that has the same `field' text-property
+as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
+is non-nil, NEW-POS is constrained to the union of the two adjacent
+fields.
+
+If the optional argument ONLY-IN-LINE is non-nil and constraining
+NEW-POS would move it to a different line, NEW-POS is returned
+unconstrained.  This useful for commands that move by line, like
+C-n or C-a, which should generally respect field boundaries
+only in the case where they can still move to the right line.
+
+- Function: erase-field &optional POS
+
+Erases the field surrounding POS.
+A field is a region of text with the same `field' property.
+If POS is nil, the position of the current buffer's point is used.
+
+- Function: field-beginning &optional POS ESCAPE-FROM-EDGE
+
+Return the beginning of the field surrounding POS.
+A field is a region of text with the same `field' property.
+If POS is nil, the position of the current buffer's point is used.
+If ESCAPE-FROM-EDGE is non-nil and POS is already at beginning of an
+field, then the beginning of the *previous* field is returned.
+
+- Function: field-end &optional POS ESCAPE-FROM-EDGE
+
+Return the end of the field surrounding POS.
+A field is a region of text with the same `field' property.
+If POS is nil, the position of the current buffer's point is used.
+If ESCAPE-FROM-EDGE is non-nil and POS is already at end of a field,
+then the end of the *following* field is returned.
+
+- Function: field-string &optional POS
+
+Return the contents of the field surrounding POS as a string.
+A field is a region of text with the same `field' property.
+If POS is nil, the position of the current buffer's point is used.
+
+- Function: field-string-no-properties &optional POS
+
+Return the contents of the field around POS, without text-properties.
+A field is a region of text with the same `field' property.
+If POS is nil, the position of the current buffer's point is used.
+
 +++
 ** Image support.
 
@@ -1245,7 +1854,8 @@ IMAGE is an image specification.
 Image specifications are lists of the form `(image PROPS)' where PROPS
 is a property list whose keys are keyword symbols.  Each
 specifications must contain a property `:type TYPE' with TYPE being a
-symbol specifying the image type, e.g. `xbm'.
+symbol specifying the image type, e.g. `xbm'.  Properties not
+described below are ignored.
 
 The following is a list of properties all image types share.
 
@@ -1256,7 +1866,7 @@ of the image's height to use for its ascent.  Default is 50.
 
 `:margin MARGIN'
 
-MARGIN must be a number >= 0 specifying how many pixels to put as 
+MARGIN must be a number >= 0 specifying how many pixels to put as
 margin around the image.  Default is 0.
 
 `:relief RELIEF'
@@ -1288,6 +1898,12 @@ 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
 
@@ -1348,11 +1964,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.
 
@@ -1365,8 +1976,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'
 
@@ -1398,7 +2009,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))
@@ -1437,8 +2048,8 @@ lisp/gs.el.
 
 *** Lisp interface.
 
-The variable `image-types' contains a list of those image types 
-which are supported in the current configuration.  
+The variable `image-types' contains a list of those image types
+which are supported in the current configuration.
 
 Images are stored in an image cache and removed from the cache when
 they haven't been displayed for `image-cache-eviction-delay seconds.
@@ -1504,15 +2115,15 @@ The function `set-window-vscroll' can be used to set the vertical
 scrolling value.  Here is an example of how these function might be
 used.
 
-  (global-set-key [A-down] 
-    #'(lambda () 
+  (global-set-key [A-down]
+    #'(lambda ()
         (interactive)
-       (set-window-vscroll (selected-window) 
+       (set-window-vscroll (selected-window)
                             (+ 0.5 (window-vscroll)))))
-  (global-set-key [A-up] 
+  (global-set-key [A-up]
     #'(lambda ()
        (interactive)
-       (set-window-vscroll (selected-window) 
+       (set-window-vscroll (selected-window)
                            (- (window-vscroll) 0.5)))))
 
 +++
@@ -1544,37 +2155,37 @@ automatically so that all tool bar items are visible.
 Tool bar items are defined using `define-key' with a prefix-key
 `tool-bar'.  For example `(define-key global-map [tool-bar item1] ITEM)'
 where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
-   
+
 CAPTION is the caption of the item, If it's not a string, it is
 evaluated to get a string.  The caption is currently not displayed in
 the tool bar, but it is displayed if the item doesn't have a `:help'
 property (see below).
-   
+
 BINDING is the tool bar item's binding.  Tool bar items with keymaps as
 binding are currently ignored.
 
 The following properties are recognized:
 
 `:enable FORM'.
-   
+
 FORM is evaluated and specifies whether the tool bar item is enabled
 or disabled.
-   
+
 `:visible FORM'
-   
+
 FORM is evaluated and specifies whether the tool bar item is displayed.
-   
+
 `:filter FUNCTION'
 
 FUNCTION is called with one parameter, the same list BINDING in which
 FUNCTION is specified as the filter.  The value FUNCTION returns is
 used instead of BINDING to display this item.
-   
+
 `:button (TYPE SELECTED)'
 
 TYPE must be one of `:radio' or `:toggle'.  SELECTED is evaluated
 and specifies whether the button is selected (pressed) or not.
-   
+
 `:image IMAGES'
 
 IMAGES is either a single image specification or a vector of four
@@ -1587,9 +2198,9 @@ meaning of each of the four elements:
      1         enabled and deselected
      2         disabled and selected
      3         disabled and deselected
-   
+
 `:help HELP-STRING'.
-   
+
 Gives a help string to display for the tool bar item.  This help
 is displayed when the mouse is moved over the item.
 
@@ -1599,7 +2210,7 @@ If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
 resize to show all defined tool bar items.  It will never grow larger
 than 1/4 of the frame's size.
 
-If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be 
+If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be
 raised when the mouse moves over them.
 
 You can add extra space between tool bar items by setting
@@ -1612,7 +2223,7 @@ You can change the shadow thickness of tool bar buttons by setting
 *** Tool-bar clicks with modifiers.
 
 You can bind commands to clicks with control, shift, meta etc. on
-a tool bar item.  If 
+a tool bar item.  If
 
   (define-key global-map [tool-bar shell]
     '(menu-item "Shell" shell
@@ -1648,6 +2259,9 @@ The same mechanism is used to determine the `face' and `help-echo'
 properties of strings in the mode line.  See `bindings.el' for an
 example.
 
+*** If a mode line element has the form `(:eval FORM)', FORM is
+evaluated and the result is used as mode line element.
+
 +++
 *** You can suppress mode-line display by setting the buffer-local
 variable mode-line-format to nil.
@@ -1909,8 +2523,13 @@ temporarily to nil, for example
   (let ((window-size-fixed nil))
      (enlarge-window 10))
 
-Likewise, an attempt to split a fixed-height window vertically, 
+Likewise, an attempt to split a fixed-height window vertically,
 or a fixed-width window horizontally results in a error.
+^L
+* Emacs 20.5 is a bug-fix release with no user-visible changes.
+
+** Not new, but not mentioned before:
+M-w when Transient Mark mode is enabled disables the mark.
 \f
 * Changes in Emacs 20.4
 
@@ -2165,7 +2784,7 @@ limit.
 
 *** \\1-expressions are now valid in `nnmail-split-methods'.
 
-*** The `custom-face-lookup' function has been removed.  
+*** The `custom-face-lookup' function has been removed.
 If you used this function in your initialization files, you must
 rewrite them to use `face-spec-set' instead.
 
@@ -2251,7 +2870,7 @@ customization group `reftex-finding-files'.
 
 *** The option `reftex-bibfile-ignore-list' has been renamed to
 `reftex-bibfile-ignore-regexps' and indeed can be fed with regular
-expressions. 
+expressions.
 
 *** Multiple Selection buffers are now hidden buffers.
 
@@ -2452,7 +3071,7 @@ requested feature cannot be loaded.
 
 ** In the function modify-face, an argument of (nil) for the
 foreground color, background color or stipple pattern
-means to clear out that attribute.  
+means to clear out that attribute.
 
 ** The `outer-window-id' frame property of an X frame
 gives the window number of the outermost X window for the frame.
@@ -2600,7 +3219,7 @@ that you can set it to t, nil, `default', or `complex-only'.
   when you are using complex input methods such as chinese-py.
 
   If the value is `default' (this is the default), extra guidance is
-  given in the following case: 
+  given in the following case:
     o When you are using a complex input method.
     o When you are using a simple input method but not in the minibuffer.
 
@@ -2790,7 +3409,7 @@ doing an isearch.  In order for this to happen search-invisible should
 be set to open (the default).  If an isearch match is inside a hidden
 outline the outline is made visible.  If you continue pressing C-s and
 the match moves outside the formerly invisible outline, the outline is
-made invisible again. 
+made invisible again.
 
 ** Mail reading and sending changes
 
@@ -2882,7 +3501,7 @@ the file named in the current Dired buffer line.  `v v' invokes
 
 The new command `v t' (vc-dired-toggle-terse-mode) allows you to
 toggle between terse display (only locked files) and full display (all
-VC files plus subdirectories).  There is also a special command, 
+VC files plus subdirectories).  There is also a special command,
 `* l', to mark all files currently locked.
 
 Giving a prefix argument to C-x v d now does the same thing as in
@@ -2957,7 +3576,7 @@ automatically in compilation-mode windows.
 *** Multiline macros are now handled, both as they affect indentation,
 and as recognized syntax.  New syntactic symbol cpp-macro-cont is
 assigned to second and subsequent lines of a multiline macro
-definition. 
+definition.
 
 *** A new style "user" which captures all non-hook-ified
 (i.e. top-level) .emacs file variable settings and customizations.
@@ -2989,7 +3608,7 @@ variable c-initialize-on-load controls this and is t by default.
 
 ** Changes to hippie-expand.
 
-*** New customization variable `hippie-expand-dabbrev-skip-space'. If 
+*** New customization variable `hippie-expand-dabbrev-skip-space'. If
 non-nil, trailing spaces may be included in the abbreviation to search for,
 which then gives the same behavior as the original `dabbrev-expand'.
 
@@ -3018,9 +3637,9 @@ against the first word in the title.
 *** Autokey generation now uses all words from the title, not just
 capitalized words.  To avoid conflicts with existing customizations,
 bibtex-autokey-titleword-ignore is set up such that words starting with
-lowerkey characters will still be ignored.  Thus, if you want to use 
+lowerkey characters will still be ignored.  Thus, if you want to use
 lowercase words from the title, you will have to overwrite the
-bibtex-autokey-titleword-ignore standard setting. 
+bibtex-autokey-titleword-ignore standard setting.
 
 *** Case conversion of names and title words for automatic key
 generation is more flexible.  Variable bibtex-autokey-preserve-case is
@@ -3048,15 +3667,15 @@ vcursor, but doesn't disable it, after any non-vcursor command.
 
 ** Ispell changes.
 
-*** You can now spell check comments and strings in the current 
-buffer with M-x ispell-comments-and-strings.  Comments and strings 
+*** You can now spell check comments and strings in the current
+buffer with M-x ispell-comments-and-strings.  Comments and strings
 are identified by syntax tables in effect.
 
 *** Generic region skipping implemented.
 A single buffer can be broken into a number of regions where text will
 and will not be checked.  The definitions of the regions can be user
 defined.  New applications and improvements made available by this
-include: 
+include:
 
     o URLs are automatically skipped
     o EMail message checking is vastly improved.
@@ -3077,7 +3696,7 @@ entire multifile document in order to parse the document.  The new
 recursive parser scans the individual files.
 
 *** Parsing only part of a document.
-    
+
 Reparsing of changed document parts can now be made faster by enabling
 partial scans.  To use this feature, read the documentation string of
 the variable `reftex-enable-partial-scans' and set the variable to t.
@@ -3289,7 +3908,7 @@ default value changed.  For example,
      :group 'foo
      :version "20.3")
 
-   (defgroup foo-group nil "The foo group."  
+   (defgroup foo-group nil "The foo group."
      :version "20.3")
 
 If an entire new group is added or the variables in it have the
@@ -3457,7 +4076,7 @@ The supported properties include
                  item is enabled.
 :visible FORM     Evaluate FORM to determine whether the
                  item should appear in the menu.
-:filter FILTER-FN 
+:filter FILTER-FN
                  FILTER-FN is a function of one argument,
                  which will be REAL-BINDING.
                  It should return a binding to use instead.
@@ -4206,7 +4825,7 @@ presumably identical to the last checked-in version, the command now asks
 which version to compare with.
 
 ** When using hideshow.el, incremental search can temporarily show hidden
-blocks if a match is inside the block. 
+blocks if a match is inside the block.
 
 The block is hidden again if the search is continued and the next match
 is outside the block.  By customizing the variable
@@ -4403,10 +5022,10 @@ for output.
 
 *** nntp.el has been totally rewritten in an asynchronous fashion.
 
-*** Article prefetching functionality has been moved up into 
-Gnus.  
+*** Article prefetching functionality has been moved up into
+Gnus.
 
-*** Scoring can now be performed with logical operators like 
+*** Scoring can now be performed with logical operators like
 `and', `or', `not', and parent redirection.
 
 *** Article washing status can be displayed in the
@@ -4451,7 +5070,7 @@ generating lines in buffers.
     (setq gnus-use-adaptive-scoring '(word))
 
 *** Scores can be decayed.
+
     (setq gnus-decay-scores t)
 
 *** Scoring can be performed using a regexp on the Date header.  The
@@ -4486,7 +5105,7 @@ sorting functions, and each topic can be sorted independently.
     See the commands under the `G P' submap.
 
 *** Cached articles can be pulled into the groups.
-  
+
     Use the `Y c' command.
 
 *** Score files are now applied in a more reliable order.
@@ -4497,7 +5116,7 @@ sorting functions, and each topic can be sorted independently.
 
 *** More hooks and functions have been added to remove junk
 from incoming mail before saving the mail.
+
     See `nnmail-prepare-incoming-header-hook'.
 
 *** The nnml mail backend now understands compressed article files.
@@ -4553,10 +5172,10 @@ Note that this only takes effect if you do it *before* cc-mode.el is
 loaded.
 
 If you typically edit more than one style of C (or C++, Objective-C,
-Java) code in a single Emacs session, you may want to make the CC Mode 
+Java) code in a single Emacs session, you may want to make the CC Mode
 style variables have buffer local values.  By default, all buffers
-share the same style variable settings; to make them buffer local, set 
-c-style-variables-are-local-p to t in your .emacs file.  Note that you 
+share the same style variable settings; to make them buffer local, set
+c-style-variables-are-local-p to t in your .emacs file.  Note that you
 must do this *before* CC Mode is loaded.
 
 *** The new variable c-indentation-style holds the C style name
@@ -4602,7 +5221,7 @@ for the year of the selected date, or the following/previous years.
 
 ** ps-print changes
 
-There are some new user variables for customizing the page layout.  
+There are some new user variables for customizing the page layout.
 
 *** Paper size, paper orientation, columns
 
@@ -4614,12 +5233,12 @@ It defaults to `letter'.
 If you need other sizes, see the variable `ps-page-dimensions-database'.
 
 The variable `ps-landscape-mode' determines the orientation
-of the printing on the page.  nil, the default, means "portrait" mode, 
+of the printing on the page.  nil, the default, means "portrait" mode,
 non-nil means "landscape" mode.
 
 The variable `ps-number-of-columns' must be a positive integer.
 It determines the number of columns both in landscape and portrait mode.
-It defaults to 1. 
+It defaults to 1.
 
 *** Horizontal layout
 
@@ -4639,14 +5258,14 @@ If the variable `ps-print-header' is nil, no header is printed.  Then
 `ps-header-offset' is not relevant and `ps-top-margin' represents the
 margin above the text.
 
-If the variable `ps-print-header-frame' is non-nil, a gaudy 
+If the variable `ps-print-header-frame' is non-nil, a gaudy
 framing box is printed around the header.
 
 The contents of the header are determined by `ps-header-lines',
 `ps-show-n-of-n', `ps-left-header' and `ps-right-header'.
 
-The height of the header is determined by `ps-header-line-pad', 
-`ps-header-font-family', `ps-header-title-font-size' and 
+The height of the header is determined by `ps-header-line-pad',
+`ps-header-font-family', `ps-header-title-font-size' and
 `ps-header-font-size'.
 
 *** Font managing
@@ -4656,13 +5275,13 @@ used for ordinary text.  Its value must be a key symbol in the alist
 `ps-font-info-database'.  You can add other font families by adding
 elements to this alist.
 
-The variable `ps-font-size' determines the size of the font 
+The variable `ps-font-size' determines the size of the font
 for ordinary text.  It defaults to 8.5 points.
 
 ** hideshow changes.
 
 *** now supports hiding of blocks of single line comments (like // for
-C++, ; for lisp). 
+C++, ; for lisp).
 
 *** Support for java-mode added.
 
@@ -4676,7 +5295,7 @@ way!  This is run by default when entering the `hs-minor-mode'.
 *** Now uses overlays instead of `selective-display', so is more
 robust and a lot faster.
 
-*** A block beginning can span multiple lines. 
+*** A block beginning can span multiple lines.
 
 *** The new variable `hs-show-hidden-short-form' if t, directs hideshow
 to show only the beginning of a block when it is hidden.  See the
@@ -4803,7 +5422,7 @@ stubs.
 
 The user options `ada-compiler-make', `ada-make-options',
 `ada-language-version', `ada-compiler-syntax-check', and
-`ada-compile-options' are used within these commands. 
+`ada-compile-options' are used within these commands.
 
 *** Ada mode can now work with Outline minor mode.  The outline level
 is calculated from the indenting, not from syntactic constructs.
@@ -4830,10 +5449,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).
@@ -4888,7 +5519,7 @@ different environments (equation, figure, ...) and has full support for
 multifile documents.  To use it, select a buffer with a LaTeX document and
 turn the mode on with M-x reftex-mode.  Here are the main user commands:
 
-C-c (    reftex-label        
+C-c (    reftex-label
    Creates a label semi-automatically.  RefTeX is context sensitive and
    knows which kind of label is needed.
 
@@ -4906,7 +5537,7 @@ C-c &    reftex-view-crossref
 C-c =    reftex-toc
    Shows a table of contents of the (multifile) document.  From there you
    can quickly jump to every section.
+
 Under X, RefTeX installs a "Ref" menu in the menu bar, with additional
 commands.  Press `?' to get help when a prompt mentions this feature.
 Full documentation and customization examples are in the file
@@ -4992,6 +5623,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
@@ -5035,10 +5668,10 @@ related to the GNU format has now been fixed.)
 ** Changes in Viper
 
 *** The startup file is now .viper instead of .vip
-*** All variable/function names have been changed to start with viper- 
+*** All variable/function names have been changed to start with viper-
     instead of vip-.
 *** C-\ now simulates the meta-key in all Viper states.
-*** C-z in Insert state now escapes to Vi for the duration of the next 
+*** C-z in Insert state now escapes to Vi for the duration of the next
 Viper command. In Vi and Insert states, C-z behaves as before.
 *** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states.
 *** _ is no longer the meta-key in Vi state.
@@ -5204,7 +5837,7 @@ instance) and vice versa.
 To use this package load it using
     M-x load-library [enter] ogonek
 Then, you may get an explanation by calling one of
-    M-x ogonek-jak        -- in Polish  
+    M-x ogonek-jak        -- in Polish
     M-x ogonek-how        -- in English
 The info specifies the commands and variables provided as well as the
 ways of customization in `.emacs'.
@@ -5310,7 +5943,7 @@ adding one of these suffixes.
 
 *** string-to-number now takes an optional second argument BASE
 which specifies the base to use when converting an integer.
-If BASE is omitted, base 10 is used. 
+If BASE is omitted, base 10 is used.
 
 We have not implemented other radices for floating point numbers,
 because that would be much more work and does not seem useful.
@@ -5397,7 +6030,7 @@ This means that some Lisp programs, which assume that a character is
 always one buffer position, need to be changed.
 
 However, all ASCII characters are always one buffer position.
+
 *** The regexp [\200-\377] no longer matches all non-ASCII characters,
 because when enable-multibyte-characters is non-nil, these characters
 have codes that are not in the range octal 200 to octal 377.  However,
@@ -5711,16 +6344,16 @@ t when it should hide it.
 *** add-to-invisibility-spec, remove-from-invisibility-spec
 
 Modes that use overlays to hide portions of a buffer should set the
-invisible property of the overlay to the mode's name (or another symbol) 
-and modify the `buffer-invisibility-spec' to include that symbol. 
+invisible property of the overlay to the mode's name (or another symbol)
+and modify the `buffer-invisibility-spec' to include that symbol.
 Use  `add-to-invisibility-spec' and `remove-from-invisibility-spec' to
-manipulate the `buffer-invisibility-spec'. 
+manipulate the `buffer-invisibility-spec'.
 Here is an example of how to do this:
 
  ;; If we want to display an ellipsis:
- (add-to-invisibility-spec '(my-symbol . t)) 
+ (add-to-invisibility-spec '(my-symbol . t))
  ;; If you don't want ellipsis:
- (add-to-invisibility-spec 'my-symbol) 
+ (add-to-invisibility-spec 'my-symbol)
 
   ...
  (overlay-put  (make-overlay beginning end)  'invisible 'my-symbol)
@@ -5957,7 +6590,7 @@ at the end of the keymap.  If the keymap is a menu, this means it
 goes after the other menu items.
 
 ** If you have a program that makes several changes in the same area
-of the buffer, you can use the macro combine-after-change-calls 
+of the buffer, you can use the macro combine-after-change-calls
 around that Lisp code to make it faster when after-change hooks
 are in use.
 
@@ -6050,7 +6683,7 @@ is how %S normally pads to two positions.
 ** imenu.el changes.
 
 You can now specify a function to be run when selecting an
-item from menu created by imenu. 
+item from menu created by imenu.
 
 An example of using this feature: if we define imenu items for the
 #include directives in a C file, we can open the included file when we
@@ -6159,7 +6792,7 @@ previously released version, except in the message composition area.
 Below is a list of the more user-visible changes.  Coding changes
 between Gnus 5.1 and 5.2 are more extensive.
 
-*** A new message composition mode is used.  All old customization 
+*** A new message composition mode is used.  All old customization
 variables for mail-mode, rnews-reply-mode and gnus-msg are now
 obsolete.
 
@@ -6173,7 +6806,7 @@ missing articles are represented by empty nodes.
     To disable this:  (setq gnus-message-archive-group nil)
 
 *** Partial thread regeneration now happens when articles are
-referred. 
+referred.
 
 *** Gnus can make use of GroupLens predictions:
 
@@ -6184,7 +6817,7 @@ referred.
     (setq gnus-use-trees t)
 
 *** An nn-like pick-and-read minor mode is available for the summary
-buffers. 
+buffers.
 
     (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
 
@@ -6211,7 +6844,7 @@ groups of groups.
 *** Caching is possible in virtual groups.
 
 *** nndoc now understands all kinds of digests, mail boxes, rnews news
-batches, ClariNet briefs collections, and just about everything else. 
+batches, ClariNet briefs collections, and just about everything else.
 
 *** Gnus has a new backend (nnsoup) to create/read SOUP packets.
 
@@ -6244,11 +6877,11 @@ articles with the `*' command.
 
 *** All mail backends support fetching articles by Message-ID.
 
-*** Duplicate mail can now be treated properly.  See the 
+*** Duplicate mail can now be treated properly.  See the
 `nnmail-treat-duplicates' variable.
 
 *** All summary mode commands are available directly from the article
-buffer. 
+buffer.
 
 *** Frames can be part of `gnus-buffer-configuration'.
 
@@ -6258,21 +6891,21 @@ buffer.
 
     (setq gnus-use-nocem t)
 
-*** Groups can be made permanently visible. 
+*** Groups can be made permanently visible.
 
     (setq gnus-permanently-visible-groups "^nnml:")
 
-*** Many new hooks have been introduced to make customizing easier. 
+*** Many new hooks have been introduced to make customizing easier.
 
 *** Gnus respects the Mail-Copies-To header.
 
-*** Threads can be gathered by looking at the References header. 
+*** Threads can be gathered by looking at the References header.
 
-    (setq gnus-summary-thread-gathering-function 
+    (setq gnus-summary-thread-gathering-function
           'gnus-gather-threads-by-references)
 
 *** Read articles can be stored in a special backlog buffer to avoid
-refetching.  
+refetching.
 
     (setq gnus-keep-backlog 50)
 
@@ -6286,11 +6919,11 @@ buffer to allow easier treatment.
     (setq gnus-prompt-before-saving t)
 
 *** gnus-uu can view decoded files asynchronously while fetching
-articles. 
+articles.
 
     (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
 
-*** Filling in the article buffer now works properly on cited text. 
+*** Filling in the article buffer now works properly on cited text.
 
 *** Hiding cited text adds buttons to toggle hiding, and how much
 cited text to hide is now customizable.
@@ -6616,7 +7249,7 @@ pressing both mouse buttons.
 
 *** A number of packages and commands which previously failed or had
 restricted functionality on MS-DOS, now work.  The most important ones
-are: 
+are:
 
 **** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
 now works.
@@ -6834,7 +7467,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