Up date.
[bpt/emacs.git] / etc / NEWS
index ef72eb4..d54c0e1 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,32 @@ the --without-pop configure option, should that be necessary.
 \f
 * Changes in Emacs 21.1
 
+** 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'.
@@ -207,7 +233,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 +312,74 @@ 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
+
+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'.
+
 ** Changes to TeX mode
 
 The default mode has been changed from `plain-tex-mode' to
@@ -312,6 +406,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:
 
@@ -348,6 +447,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
@@ -366,12 +480,181 @@ 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'.
+
+
 ** 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.)
@@ -386,11 +669,17 @@ sh-script can attempt to "learn" the current buffer's style.
 
 *** 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. 
+"operator+", without spaces between the keyword and the operator.
 
 *** New language Ada: tags are functions, procedures, packages, tasks, and
 types.
@@ -407,9 +696,35 @@ variables are tagged.
 
 *** New language Python: def and class at the beginning of a line are tags.
 
-*** .ss files are Scheme files.
+*** .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:
 
-*** New option --ignore-case-regex is an alternative to --regex.
+  '(("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
@@ -420,8 +735,31 @@ 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
 
+*** 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.
@@ -510,16 +848,20 @@ 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.
-
-** Not new, but not mentioned before:
-M-w when Transient Mark mode is enabled disables the mark.
-
 \f
 * Lisp changes in Emacs 21.1 (see following page for display-related features)
 
@@ -528,23 +870,62 @@ 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.
 
+** Variables `beginning-of-defun' and `end-of-defun', can be used to
+define handlers for the functions of the same names.  Major modes can
+define these locally instead of rebinding M-C-a etc. if the normal
+definitions of the functions 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 only a hook, and that hook has a non-nil
+`no-self-insert' property, the return value of the hook specifies
+whether an expansion has been done or not.  If it returns nil, no
+expansion has been performed.  The character leading to the call of
+the hook will then be self-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 `messages-locale' and
-`time-locale' give the system locales to be used during the next
-invocations of these two types of functions; the new variables
-`previous-messages-locale' and `previous-time-locale' give the locales
-most recently used.
+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.  It is normally invoked during startup.  It
-uses the new variables `locale-language-names',
-`locale-charset-language-names', and `locale-preferred-coding-systems'
-to make its decisions.
+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'
@@ -874,6 +1255,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
@@ -882,6 +1268,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
 
@@ -1243,13 +1641,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.
 
@@ -1265,20 +1679,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.
 
@@ -1300,7 +1770,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.
 
@@ -1343,6 +1814,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
 
@@ -1403,11 +1880,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.
 
@@ -1420,8 +1892,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'
 
@@ -1453,7 +1925,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))
@@ -1703,6 +2175,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.
@@ -1966,6 +2441,11 @@ 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.
+^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
 
@@ -5047,6 +5527,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
@@ -6889,7 +7371,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