Suggest to use --color if the terminal capabilities lie.
[bpt/emacs.git] / etc / NEWS
index b1114e2..e246f33 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
 GNU Emacs NEWS -- history of user-visible changes.  2001-03-15
-Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
 For older news, see the file ONEWS
 
+Temporary note:
+ +++ indicates that the appropriate manual has already been updated.
+ --- means no change in the manuals is called for.
+When you add a new item, please add it without either +++ or ---
+so we will look at it
+
+\f
+* Installation Changes in Emacs 21.3
+
+** Emacs now supports new configure options `--program-prefix',
+`--program-suffix' and `--program-transform-name' that affect the names of
+installed programs.
+
+---
+** Leim is now part of the Emacs distribution.
+You no longer need to download a separate tarball in order to build
+Emacs with Leim.
+
+** Support for FreeBSD/Alpha has been added.
+
+\f
+* Changes in Emacs 21.3
+
++++
+** Emacs can now be invoked in full-screen mode on a windowed display.
+
+When Emacs is invoked on a window system, the new command-line options
+`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
+whose width, height, or both width and height take up the entire
+screen size.  (For now, this works only on GNU and Unix systems, and
+not with every window manager.)
+
+** Info-index finally offers completion.
+
+** Controlling the left and right fringe widths.
+
+The left and right fringe widths can now be controlled by setting the
+`left-fringe' and `right-fringe' frame parameters to an integer value
+specifying the width in pixels.  Setting the width to 0 effectively
+removes the corresponding fringe.
+
+The actual fringe widths may deviate from the specified widths, since
+the combined fringe widths must match an integral number of columns.
+The extra width is distributed evenly between the left and right fringe.
+For force a specific fringe width, specify the width as a negative
+integer (if both widths are negative, only the left fringe gets the
+specified width).
+
+Setting the width to nil (the default), restores the default fringe
+width which is the minimum number of pixels necessary to display any
+of the currently defined fringe bitmaps.  The width of the built-in
+fringe bitmaps is 8 pixels.
+
+** Changes in C-h bindings:
+
+C-h e displays the *Messages* buffer.
+
+C-h followed by a control character is used for displaying files
+    that do not change:
+
+C-h C-f displays the FAQ.
+C-h C-e displays the PROBLEMS file.
+
+The info-search bindings on C-h C-f, C-h C-k and C-h C-i
+have been moved to C-h F, C-h K and C-h S.
+
+** C-w in incremental search now grabs either a character or a word,
+making the decision in a heuristic way.  This new job is done by the
+command `isearch-yank-word-or-char'.  To restore the old behavior,
+bind C-w to `isearch-yank-word' in `isearch-mode-map'.
+
+** In GUD mode when talking to GDB, C-x C-a C-j "jumps" the program
+counter to the specified source line (the one where point is).
+
+** hide-ifdef-mode now uses overlays rather than selective-display
+to hide its text.  This should be mostly transparent but slightly
+changes the behavior of motion commands line C-e and C-p.
+
+** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace.  This means you can now use them as shell wildcards
+too.  If you want to use just plain `*' as a wildcard, type `*""'; the
+doublequotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
+
+** Unquoted `$' in file names do not signal an error any more when
+the corresponding environment variable does not exist.
+Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
+is only rarely needed.
+
+** jit-lock can now be delayed with `jit-lock-defer-time'.
+
+If this variable is non-nil, its value should be the amount of Emacs
+idle time in seconds to wait before starting fontification.  For
+example, if you set `jit-lock-defer-time' to 0.25, fontification will
+only happen after 0.25s of idle time.
+
+** If you hit M-C-SPC (mark-sexp) repeatedly, the marked region
+will now be extended each time, so you can mark the next two sexps with
+M-C-SPC M-C-SPC, for example.
+
+** In the *Occur* buffer, `o' switches to it in another window, and
+C-o displays the current line's occurrence in another window without
+switching to it.
+
+** When you specify a frame size with --geometry, the size applies to
+all frames you create.  A position specified with --geometry only
+affects the initial frame.
+
++++
+** M-h (mark-paragraph) now accepts a prefix arg.
+With positive arg, M-h marks the current and the following paragraphs;
+if the arg is negative, it marks the current and the preceding
+paragraphs.
+
+** In Dired, the w command now copies the current line's file name
+into the kill ring.
+
+** The variables dired-free-space-program and dired-free-space-args
+have been renamed to directory-free-space-program and
+directory-free-space-args, and they now apply whenever Emacs puts a
+directory listing into a buffer.
+
+** mouse-wheels can now scroll a specific fraction of the window
+(rather than a fixed number of lines) and the scrolling is `progressive'.
+
+** The keyboard-coding-system is now automatically set based on
+your current locale settings.  If it turns out that your terminal
+does not support the encoding implied by your locale (for example,
+it inserts non-ASCII chars if you hit M-i), you will need to add
+
+       (set-keyboard-coding-system nil)
+
+to your .emacs to revert to the old behavior.
+
+** A new coding system `euc-tw' has been added for traditional Chinese
+in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
+Big 5 is then converted to CNS.
+
++++
+** Emacs now reads the standard abbrevs file ~/.abbrev_defs
+automatically at startup, if it exists.  When Emacs offers to save
+modified buffers, it saves the abbrevs too if they have changed.  It
+can do this either silently or asking for confirmation first,
+according to the value of `save-abbrevs'.
+
+** Display of hollow cursors now obeys the buffer-local value (if any)
+of `cursor-in-non-selected-windows' in the buffer that the cursor
+appears in.
+
+** The default values of `tooltip-delay' and `tooltip-hide-delay'
+were changed.
+
+** On terminals whose erase-char is ^H (Backspace), Emacs
+now uses normal-erase-is-backspace-mode.
+
+** Etags changes.
+
+*** In Prolog, etags creates tags for rules in addition to predicates.
+
+*** In Perl, packages are tags.  Subroutine tags are named from their
+package.  You can jump to sub tags as you did before, by the sub name, or
+additionally by looking for package::sub.
+
+*** New language PHP: tags are functions, classes and defines.  If
+the --members option is specified to etags, tags are vars also.
+
++++
+** The command line option --no-windows has been changed to
+--no-window-system.  The old one still works, but is deprecated.
+
+** `buffer-menu' and `list-buffers' now list buffers whose names begin
+with a space, if they visit files.
+
+** You can now customize fill-nobreak-predicate to control where
+filling can break lines.  We provide two sample predicates,
+fill-single-word-nobreak-p and fill-french-nobreak-p.
+
+** New user option `add-log-always-start-new-record'.
+When this option is enabled, M-x add-change-log-entry will always
+start a new record regardless of when the last record is.
+
+** New user option `sgml-xml'.
+When this option is enabled, SGML tags are inserted in XML style,
+i.e., there is always a closing tag.
+When not customized, it becomes buffer-local when it can be inferred
+from the file name or buffer contents.
+
+** New user option `isearch-resume-enabled'.
+This option can be disabled, to avoid the normal behaviour of isearch
+which puts calls to `isearch-resume' in the command history.
+
+** When the *scratch* buffer is recreated, its mode is set from
+initial-major-mode, which normally is lisp-interaction-mode,
+instead of using default-major-mode.
+
+** Byte compiler warning and error messages have been brought more
+in line with the output of other GNU tools.
+
+** Lisp-mode now uses font-lock-doc-face for the docstrings.
+
+** perl-mode has a new variable `perl-indent-continued-arguments'.
+
+** `special-display-buffer-names' and `special-display-regexps' now
+understand two new boolean pseudo-frame-parameters `same-frame' and
+`same-window'.
+
+** When pure storage overflows while dumping, Emacs now prints how
+much pure storage it will approximately need.
+
+** M-x setenv now expands environment variables of the form `$foo' and
+`${foo}' in the specified new value of the environment variable.  To
+include a `$' in the value, use `$$'.
+
++++
+** File-name completion can now ignore directories.
+If an element of the list in `completion-ignored-extensions' ends in a
+slash `/', it indicates a subdirectory that should be ignored when
+completing file names.  Elements of `completion-ignored-extensions'
+which do not end in a slash are never considered when a completion
+candidate is a directory.
+
+** New user option `inhibit-startup-buffer-menu'.
+When loading many files, for instance with `emacs *', Emacs normally
+displays a buffer menu.  This option turns the buffer menu off.
+
+** Rmail now displays 5-digit message ids in its summary buffer.
+
+** When using M-x revert-buffer in a compilation buffer to rerun a
+compilation, it is now made sure that the compilation buffer is reused
+in case it has been renamed.
+
+** On MS Windows, the "system caret" now follows the cursor.
+This enables Emacs to work better with programs that need to track
+the cursor, for example screen magnifiers and text to speech programs.
+
+** Tooltips now work on MS Windows.
+See the Emacs 21.1 NEWS entry for tooltips for details.
+
+** Pointing devices with more than 3 buttons are now supported on MS Windows.
+The new variable `w32-pass-extra-mouse-buttons-to-system' controls
+whether Emacs should handle the extra buttons itself (the default), or
+pass them to Windows to be handled with system-wide functions.
+
+---
+** A French translation of the `Emacs Survival Guide' is available.
+
+---
+** A French translation of the Emacs Tutorial is available.
+
+** New modes and packages
+
++++
+*** Calc is now part of the Emacs distribution.
+
+Calc is an advanced desk calculator and mathematical tool written in
+Emacs Lisp.  Its documentation is in a separate manual; within Emacs,
+type "C-h i m calc RET" to read that manual.  A reference card is
+available in `etc/calccard.tex' and `etc/calccard.ps'.
+
++++
+*** The Emacs Lisp Reference Manual is now part of the distribution.
+
+The ELisp reference manual in Info format is built as part of the
+Emacs build procedure and installed together with the Emacs User
+Manual.  A menu item was added to the menu bar that makes it easy
+accessible (Help->More Manuals->Emacs Lisp Reference).
+
+*** The Introduction to Programming in Emacs Lisp manual is now part of
+the distribution.
+
+This manual is now part of the standard distribution and is installed,
+together with the Emacs User Manual, into the Info directory.  A menu
+item was added to the menu bar that makes it easy accessible
+(Help->More Manuals->Introduction to Emacs Lisp).
+
+*** The ruler-mode.el library provides a minor mode for displaying an
+"active" ruler in the header line.  You can use the mouse to visually
+change the `fill-column', `window-margins' and `tab-stop-list'
+settings.
+
+*** The reveal.el package provides the minor modes `reveal-mode' and
+`global-reveal-mode' which will make text visible on the fly as you
+move your cursor into hidden region of the buffer.
+It should work with any package that uses overlays to hide parts
+of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
+
+*** master-mode.el implements a minor mode for scrolling a slave
+buffer without leaving your current buffer, the master buffer.
+
+It can be used by sql.el, for example: the SQL buffer is the master
+and its SQLi buffer is the slave.  This allows you to scroll the SQLi
+buffer containing the output from the SQL buffer containing the
+commands.
+
+This is how to use sql.el and master.el together: the variable
+sql-buffer contains the slave buffer.  It is a local variable in the
+SQL buffer.
+
+(add-hook 'sql-mode-hook
+   (function (lambda ()
+              (master-mode t)
+              (master-set-slave sql-buffer))))
+(add-hook 'sql-set-sqli-hook
+   (function (lambda ()
+              (master-set-slave sql-buffer))))
+
+\f
+* Lisp Changes in Emacs 21.3
+
+** Already true in Emacs 21.1, but not emphasized clearly enough:
+
+Multibyte buffers can now faithfully record all 256 character codes
+from 0 to 255.  As a result, most of the past reasons to use unibyte
+buffers no longer exist.  We only know of three reasons to use them
+now:
+
+1. If you prefer to use unibyte text all of the time.
+
+2. For reading files into temporary buffers, when you want to avoid
+the time it takes to convert the format.
+
+3. For binary files where format conversion would be pointless and
+wasteful.
+
+** If text has a `keymap' property, that keymap takes precedence
+over minor mode keymaps.
+
+** A hex escape in a string forces the string to be multibyte.
+An octal escape makes it unibyte.
+
+** The position after an invisible, intangible character
+is considered an unacceptable value for point;
+intangibility processing effectively treats the following character
+as part of the intangible region even if it is not itself intangible.
+
+Thus, point can go before an invisible, intangible region, but not
+after it.  This prevents C-f and C-b from appearing to stand still on
+the screen.
+
++++
+** define-abbrev now accepts an optional argument SYSTEM-FLAG.  If
+non-nil, this marks the abbrev as a "system" abbrev, which means that
+it won't be stored in the user's abbrevs file if he saves the abbrevs.
+Major modes that predefine some abbrevs should always specify this
+flag.
+
+** Support for Mocklisp has been removed.
+
+** The function insert-string is now obsolete.
+
+** The precedence of file-name-handlers has been changed.
+Instead of blindly choosing the first handler that matches,
+find-file-name-handler now gives precedence to a file-name handler
+that matches near the end of the file name.  More specifically, the
+handler whose (match-beginning 0) is the largest is chosen.
+In case of ties, the old "first matched" rule applies.
+
+** Dense keymaps now handle inheritance correctly.
+Previously a dense keymap would hide all of the simple-char key
+bindings of the parent keymap.
+
+** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
+If a piece of text with that property gets contextually refontified
+(see jit-lock-defer-contextually), then all of that text will
+be refontified.  This is useful when the syntax of a textual element
+depends on text several lines further down (and when font-lock-multiline
+is not appropriate to solve that problem).  For example in Perl:
+
+       s{
+               foo
+       }{
+               bar
+       }e
+
+Adding/removing the last `e' changes the `bar' from being a piece of
+text to being a piece of code, so you'd put a jit-lock-defer-multiline
+property over the second half of the command to force (deferred)
+refontification of `bar' whenever the `e' is added/removed.
+
+** describe-vector now takes a second argument `describer' which is
+called to print the entries' values.  It defaults to `princ'.
+
+** defcustom and other custom declarations now use a default group
+(the last group defined in the same file) when no :group was given.
+
+** emacsserver now runs pre-command-hook and post-command-hook when
+it receives a request from emacsclient.
+
+** The variable `recursive-load-depth-limit' has been deleted.
+Emacs now signals an error if the same file is loaded with more
+than 3 levels of nesting.
+
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Indented-Text mode.
+
+** If a major mode function has a non-nil `no-clone-indirect'
+property, `clone-indirect-buffer' signals an error if you use
+it in that buffer.
+
+** If you set `query-replace-skip-read-only' non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
+
+** In `replace-match', the replacement text no longer inherits
+properties from surrounding text.
+
+** New function `buffer-local-value'.
+
+- Function: buffer-local-value variable buffer
+
+This function returns the buffer-local binding of VARIABLE (a symbol)
+in buffer BUFFER.  If VARIABLE does not have a buffer-local binding in
+buffer BUFFER, it returns the default value of VARIABLE instead.
+
+** The default value of `paragraph-start' and `indent-line-function' has
+been changed to reflect the one used in Text mode rather than the one
+used in Indented Text mode.
+
+** New function `text-clone-create'.  Text clones are chunks of text
+that are kept identical by transparently propagating changes from one
+clone to the other.
+
+** font-lock can manage arbitrary text-properties beside `face'.
+*** the FACENAME returned in font-lock-keywords can be a list
+of the form (face FACE PROP1 VAL1 PROP@ VAL2 ...) so you can set
+other properties than `face'.
+*** font-lock-extra-managed-props can be set to make sure those extra
+properties are automatically cleaned up by font-lock.
+
+** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
+are used by define-derived-mode to make sure the mode hook for the
+parent mode is run at the end of the child mode.
+
+** `provide' and `featurep' now accept an optional second argument
+to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
+and run any code associated with the provided feature.
+
+** The variable `compilation-parse-errors-filename-function' can
+be used to transform filenames found in compilation output.
+
++++
+** Functions `file-name-sans-extension' and `file-name-extension' now
+ignore the leading dots in file names, so that file names such as
+`.emacs' are treated as extensionless.
+
+** Functions `user-uid' and `user-real-uid' now return floats if the
+user UID doesn't fit in a Lisp integer.  Function `user-full-name'
+accepts a float as UID parameter.
+
+** `define-key-after' now accepts keys longer than 1.
+
+** `define-derived-mode' now accepts nil as the parent.
+
+** The local variable `no-byte-compile' in elisp files is now obeyed.
+
+** New functions `keymap-prompt' and `current-active-maps'.
+
+** New function `describe-buffer-bindings'.
+
+** New vars `exec-suffixes' and `load-suffixes' used when
+searching for an executable resp. an elisp file.
+
+** Variable aliases have been implemented
+
+- Macro: defvaralias ALIAS-VAR BASE-VAR
+
+This defines the symbol ALIAS-VAR as a variable alias for symbol
+BASE-VAR.  This means that retrieving the value of ALIAS-VAR returns
+the value of BASE-VAR, and changing the value of ALIAS-VAR changes the
+value of BASE-VAR.
+
+- Function: indirect-variable VARIABLE
+
+This function returns the variable at the end of the chain of aliases
+of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
+defined as an alias, the function returns VARIABLE.
+
+It might be noteworthy that variables aliases work for all kinds of
+variables, including buffer-local and frame-local variables.
+
+** Functions from `post-gc-hook' are run at the end of garbage
+collection.  The hook is run with GC inhibited, so use it with care.
+
+** If the second argument to `copy-file' is the name of a directory,
+the file is copied to that directory instead of signaling an error.
+
+** The variables most-positive-fixnum and most-negative-fixnum
+have been moved from the CL package to the core.
+
+** On MS Windows, locale-coding-system is used to interact with the OS.
+The Windows specific variable w32-system-coding-system, which was
+formerly used for that purpose is now an alias for locale-coding-system.
+
+** New packages:
+
+*** The new package syntax.el provides an efficient way to find the
+current syntactic context (as returned by parse-partial-sexp).
+
+*** The TCL package tcl-mode.el was replaced by tcl.el.
+This was actually done in Emacs-21.1, and was not documented.
+
+*** The new package Ibuffer provides a powerful, completely
+customizable replacement for buff-menu.el.
+
 \f
 * Installation Changes in Emacs 21.1
 
@@ -130,6 +636,12 @@ 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-dialog-box' is
 non-nil.
 
+** File selection dialog on MS-Windows is supported.
+
+When a file is visited by clicking File->Open, the MS-Windows version
+now pops up a standard file selection dialog where you can select a
+file to visit.  File->Save As also pops up that dialog.
+
 ** Toolkit scroll bars.
 
 Emacs now uses toolkit scroll bars if available.  When configured for
@@ -169,8 +681,7 @@ if Emacs has been built with XPM image support.  Otherwise monochrome
 icons will be used.
 
 To make the tool bar more useful, we need contributions of extra icons
-for specific modes (with copyright assignments).  Contributions would
-also be useful to touch up some of the PBM icons manually.
+for specific modes (with copyright assignments).
 
 ** Tooltips.
 
@@ -230,13 +741,9 @@ have enabled one.
 
 Currently, the following actions have been defined:
 
-- Mouse-1 on the buffer name in the mode line switches between two
-buffers.
-
-- Mouse-2 on the buffer-name switches to the next buffer, and
-M-mouse-2 switches to the previous buffer in the buffer list.
+- Mouse-1 on the buffer name in the mode line goes to the next buffer.
 
-- Mouse-3 on the buffer-name displays a buffer menu.
+- Mouse-3 on the buffer-name goes to the previous buffer.
 
 - Mouse-2 on the read-only or modified status in the mode line (`%' or
 `*') toggles the status.
@@ -489,6 +996,11 @@ Lisp Coding Convention".
     S-f9 ethio-replace-space                unchanged
     C-f9 ethio-toggle-space                 f2
 
+** There are new Leim input methods.
+New input methods "turkish-postfix", "turkish-alt-postfix",
+"greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim
+package.
+
 ** The rule of input method "slovak" is slightly changed.  Now the
 rules for translating "q" and "Q" to "`" (backquote) are deleted, thus
 typing them inserts "q" and "Q" respectively.  Rules for translating
@@ -770,7 +1282,7 @@ printed representation and an unabbreviated one.
 The default value of eval-expression-debug-on-error is t, so any error
 during evaluation produces a backtrace.
 
-*** The function `eval-defun' (M-C-x) now loads Edebug and instruments
+*** The function `eval-defun' (C-M-x) now loads Edebug and instruments
 code when called with a prefix argument.
 
 ** CC mode changes.
@@ -1326,6 +1838,17 @@ an envelope-from address different from user-mail-address.
 ** The variable mail-specify-envelope-from controls whether to
 use the -f option when sending mail.
 
+** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the
+current message in the internal `emacs-mule' encoding, rather than in
+the encoding taken from the variable `buffer-file-coding-system'.
+This allows to save messages whose characters cannot be safely encoded
+by the buffer's coding system, and makes sure the message will be
+displayed correctly when you later visit the target Rmail file.
+
+If you want your Rmail files be encoded in a specific coding system
+other than `emacs-mule', you can customize the variable
+`rmail-file-coding-system' to set its value to that coding system.
+
 ** Changes to TeX mode
 
 *** The default mode has been changed from `plain-tex-mode' to
@@ -1418,7 +1941,7 @@ Fontlock mode is active.
 *** Isearch now puts a call to `isearch-resume' in the command history,
 so that searches can be resumed.
 
-*** In Isearch mode, M-C-s and M-C-r are now bound like C-s and C-r,
+*** In Isearch mode, C-M-s and C-M-r are now bound like C-s and C-r,
 respectively, i.e. you can repeat a regexp isearch with the same keys
 that started the search.
 
@@ -2140,6 +2663,9 @@ is measured in pixels.
 ** The new global minor mode `auto-image-file-mode' allows image files
 to be visited as images.
 
+** Two new user-options `grep-command' and `grep-find-command'
+were added to compile.el.
+
 ** Withdrawn packages
 
 *** mldrag.el has been removed.  mouse.el provides the same
@@ -2158,7 +2684,8 @@ See the sections below for details.
 
 ** Since `format' preserves text properties, the idiom
 `(format "%s" foo)' no longer works to copy and remove properties.
-Use `copy-sequence' and `set-text-properties'.
+Use `copy-sequence' to copy the string, then use `set-text-properties'
+to remove the properties of the copy.
 
 ** Since the `keymap' text property now has significance, some code
 which uses both `local-map' and `keymap' properties (for portability)
@@ -2228,7 +2755,7 @@ will not have any effect when support for this variable is removed.
 
 ** Function assq-delete-all replaces function assoc-delete-all.
 
-** The new function amimate-string, from lisp/play/animate.el 
+** The new function animate-string, from lisp/play/animate.el
 allows the animated display of strings.
 
 ** The new function `interactive-form' can be used to obtain the
@@ -2325,7 +2852,7 @@ comparison is done with `eq'.
 
 ** The meaning of the `:weakness WEAK' argument of make-hash-table
 has been changed: WEAK can now have new values `key-or-value' and
-`key-and-value', in addtion the `nil', `key', `value', and `t'.
+`key-and-value', in addition the `nil', `key', `value', and `t'.
 
 ** Function `aset' stores any multibyte character in any string
 without signaling "Attempt to change char length of a string".  It may
@@ -2436,10 +2963,272 @@ patterns are checked against file contents instead of file names.
 \f
 * Lisp changes in Emacs 21.1 (see following page for display-related features)
 
-Note that +++ before an item means the Lisp manual has been updated.
---- means that I have decided it does not need to be in the Lisp manual.
-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 new package rx.el provides an alternative sexp notation for
+regular expressions.
+
+- Function: rx-to-string SEXP
+
+Translate SEXP into a regular expression in string notation.
+
+- Macro: rx SEXP
+
+Translate SEXP into a regular expression in string notation.
+
+The following are valid subforms of regular expressions in sexp
+notation.
+
+STRING
+     matches string STRING literally.
+
+CHAR
+     matches character CHAR literally.
+
+`not-newline'
+     matches any character except a newline.
+                       .
+`anything'
+     matches any character
+
+`(any SET)'
+     matches any character in SET.  SET may be a character or string.
+     Ranges of characters can be specified as `A-Z' in strings.
+
+'(in SET)'
+     like `any'.
+
+`(not (any SET))'
+     matches any character not in SET
+
+`line-start'
+     matches the empty string, but only at the beginning of a line
+     in the text being matched
+
+`line-end'
+     is similar to `line-start' but matches only at the end of a line
+
+`string-start'
+     matches the empty string, but only at the beginning of the
+     string being matched against.
+
+`string-end'
+     matches the empty string, but only at the end of the
+     string being matched against.
+
+`buffer-start'
+     matches the empty string, but only at the beginning of the
+     buffer being matched against.
+
+`buffer-end'
+     matches the empty string, but only at the end of the
+     buffer being matched against.
+
+`point'
+     matches the empty string, but only at point.
+
+`word-start'
+     matches the empty string, but only at the beginning or end of a
+     word.
+
+`word-end'
+     matches the empty string, but only at the end of a word.
+
+`word-boundary'
+     matches the empty string, but only at the beginning or end of a
+     word.
+
+`(not word-boundary)'
+     matches the empty string, but not at the beginning or end of a
+     word.
+
+`digit'
+     matches 0 through 9.
+
+`control'
+     matches ASCII control characters.
+
+`hex-digit'
+     matches 0 through 9, a through f and A through F.
+
+`blank'
+     matches space and tab only.
+
+`graphic'
+     matches graphic characters--everything except ASCII control chars,
+     space, and DEL.
+
+`printing'
+     matches printing characters--everything except ASCII control chars
+     and DEL.
+
+`alphanumeric'
+     matches letters and digits.  (But at present, for multibyte characters,
+     it matches anything that has word syntax.)
+
+`letter'
+     matches letters.  (But at present, for multibyte characters,
+     it matches anything that has word syntax.)
+
+`ascii'
+     matches ASCII (unibyte) characters.
+
+`nonascii'
+     matches non-ASCII (multibyte) characters.
+
+`lower'
+     matches anything lower-case.
+
+`upper'
+     matches anything upper-case.
+
+`punctuation'
+     matches punctuation.  (But at present, for multibyte characters,
+     it matches anything that has non-word syntax.)
+
+`space'
+     matches anything that has whitespace syntax.
+
+`word'
+     matches anything that has word syntax.
+
+`(syntax SYNTAX)'
+     matches a character with syntax SYNTAX.  SYNTAX must be one
+     of the following symbols.
+
+     `whitespace'              (\\s- in string notation)
+     `punctuation'             (\\s.)
+     `word'                    (\\sw)
+     `symbol'                  (\\s_)
+     `open-parenthesis'                (\\s()
+     `close-parenthesis'       (\\s))
+     `expression-prefix'       (\\s')
+     `string-quote'            (\\s\")
+     `paired-delimiter'                (\\s$)
+     `escape'                  (\\s\\)
+     `character-quote'         (\\s/)
+     `comment-start'           (\\s<)
+     `comment-end'             (\\s>)
+
+`(not (syntax SYNTAX))'
+     matches a character that has not syntax SYNTAX.
+
+`(category CATEGORY)'
+     matches a character with category CATEGORY.  CATEGORY must be
+     either a character to use for C, or one of the following symbols.
+
+     `consonant'                       (\\c0 in string notation)
+     `base-vowel'                      (\\c1)
+     `upper-diacritical-mark'          (\\c2)
+     `lower-diacritical-mark'          (\\c3)
+     `tone-mark'                       (\\c4)
+     `symbol'                          (\\c5)
+     `digit'                           (\\c6)
+     `vowel-modifying-diacritical-mark'        (\\c7)
+     `vowel-sign'                      (\\c8)
+     `semivowel-lower'                 (\\c9)
+     `not-at-end-of-line'              (\\c<)
+     `not-at-beginning-of-line'                (\\c>)
+     `alpha-numeric-two-byte'          (\\cA)
+     `chinse-two-byte'                 (\\cC)
+     `greek-two-byte'                  (\\cG)
+     `japanese-hiragana-two-byte'      (\\cH)
+     `indian-tow-byte'                 (\\cI)
+     `japanese-katakana-two-byte'      (\\cK)
+     `korean-hangul-two-byte'          (\\cN)
+     `cyrillic-two-byte'               (\\cY)
+     `ascii'                           (\\ca)
+     `arabic'                          (\\cb)
+     `chinese'                         (\\cc)
+     `ethiopic'                                (\\ce)
+     `greek'                           (\\cg)
+     `korean'                          (\\ch)
+     `indian'                          (\\ci)
+     `japanese'                                (\\cj)
+     `japanese-katakana'               (\\ck)
+     `latin'                           (\\cl)
+     `lao'                             (\\co)
+     `tibetan'                         (\\cq)
+     `japanese-roman'                  (\\cr)
+     `thai'                            (\\ct)
+     `vietnamese'                      (\\cv)
+     `hebrew'                          (\\cw)
+     `cyrillic'                                (\\cy)
+     `can-break'                       (\\c|)
+
+`(not (category CATEGORY))'
+     matches a character that has not category CATEGORY.
+
+`(and SEXP1 SEXP2 ...)'
+     matches what SEXP1 matches, followed by what SEXP2 matches, etc.
+
+`(submatch SEXP1 SEXP2 ...)'
+     like `and', but makes the match accessible with `match-end',
+     `match-beginning', and `match-string'.
+
+`(group SEXP1 SEXP2 ...)'
+     another name for `submatch'.
+
+`(or SEXP1 SEXP2 ...)'
+     matches anything that matches SEXP1 or SEXP2, etc.  If all
+     args are strings, use `regexp-opt' to optimize the resulting
+     regular expression.
+
+`(minimal-match SEXP)'
+     produce a non-greedy regexp for SEXP.  Normally, regexps matching
+     zero or more occurrances of something are \"greedy\" in that they
+     match as much as they can, as long as the overall regexp can
+     still match.  A non-greedy regexp matches as little as possible.
+
+`(maximal-match SEXP)'
+     produce a greedy regexp for SEXP.   This is the default.
+
+`(zero-or-more SEXP)'
+     matches zero or more occurrences of what SEXP matches.
+
+`(0+ SEXP)'
+     like `zero-or-more'.
+
+`(* SEXP)'
+     like `zero-or-more', but always produces a greedy regexp.
+
+`(*? SEXP)'
+     like `zero-or-more', but always produces a non-greedy regexp.
+
+`(one-or-more SEXP)'
+     matches one or more occurrences of A.
+
+`(1+ SEXP)'
+     like `one-or-more'.
+
+`(+ SEXP)'
+     like `one-or-more', but always produces a greedy regexp.
+
+`(+? SEXP)'
+     like `one-or-more', but always produces a non-greedy regexp.
+
+`(zero-or-one SEXP)'
+     matches zero or one occurrences of A.
+
+`(optional SEXP)'
+     like `zero-or-one'.
+
+`(? SEXP)'
+     like `zero-or-one', but always produces a greedy regexp.
+
+`(?? SEXP)'
+     like `zero-or-one', but always produces a non-greedy regexp.
+
+`(repeat N SEXP)'
+     matches N occurrences of what SEXP matches.
+
+`(repeat N M SEXP)'
+     matches N to M occurrences of what SEXP matches.
+
+`(eval FORM)'
+      evaluate FORM and insert result.   If result is a string,
+      `regexp-quote' it.
+
+`(regexp REGEXP)'
+      include REGEXP in string notation in the result.
 
 *** The features `md5' and `overlay' are now provided by default.
 
@@ -2453,7 +3242,7 @@ restriction to be restored incorrectly.
 when they find 8-bit characters.  Previously, they included `ascii' in a
 multibyte buffer and `unknown' in a unibyte buffer.
 
-*** The functions `set-buffer-modified', `string-as-multibyte' and
+*** The functions `set-buffer-multibyte', `string-as-multibyte' and
 `string-as-unibyte' change the byte sequence of a buffer or a string
 if it contains a character from the `eight-bit-control' character set.
 
@@ -2702,7 +3491,7 @@ 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
+Major modes can define these locally instead of rebinding C-M-a
 etc. if the normal conventions for defuns are not appropriate for the
 mode.
 
@@ -3177,11 +3966,6 @@ below).
 \f
 * New Lisp-level Display features in Emacs 21.1
 
-Note that +++ before an item means the Lisp manual has been updated.
---- means that I have decided it does not need to be in the Lisp manual.
-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 tty-suppress-bold-inverse-default-colors can be used
 to make Emacs avoid displaying text with bold black foreground on TTYs.
 
@@ -6500,9 +7284,7 @@ display that character.  It will display an empty box instead.
 
 The fontset height and width are determined by the ASCII characters
 (that is, by the font in the fontset which is used for ASCII
-characters).  If another font in the fontset has a different height,
-or the wrong width, then characters assigned to that font are clipped,
-and displayed within a box if highlight-wrong-size-font is non-nil.
+characters).
 
 *** Defining fontsets.
 
@@ -6993,7 +7775,7 @@ new key           dired.el binding                old key
   * @          dired-mark-symlinks             @  (binding deleted)
   * u          dired-unmark                    u
   * DEL                dired-unmark-backward           DEL
-  * ?          dired-unmark-all-files          M-C-?
+  * ?          dired-unmark-all-files          C-M-?
   * !          dired-unmark-all-marks
   * %          dired-mark-files-regexp         % m
   * C-n                dired-next-marked-file          M-}
@@ -7065,7 +7847,7 @@ another have been added.
 generating lines in buffers.
 
 *** Several commands in the group buffer can be undone with
-`M-C-_'.
+`C-M-_'.
 
 *** Scoring can be done on words using the new score type `w'.
 
@@ -7086,7 +7868,7 @@ the native server.
    `M-x gnus-group-clear-data-on-native-groups'
 
 *** A new command for reading collections of documents
-(nndoc with nnvirtual on top) has been added -- `M-C-d'.
+(nndoc with nnvirtual on top) has been added -- `C-M-d'.
 
 *** Process mark sets can be pushed and popped.
 
@@ -7832,7 +8614,7 @@ entries to the BibTeX kill ring, from where they can be yanked back by
 appropriate functions.
 
 *** New interactive functions for repositioning and marking of
-entries. They are bound by default to M-C-l and M-C-h.
+entries. They are bound by default to C-M-l and C-M-h.
 
 *** New hook bibtex-clean-entry-hook. It is called after entry has
 been cleaned.