summaryrefslogtreecommitdiff
path: root/etc/NEWS.19
diff options
context:
space:
mode:
authorKim F. Storm <storm@cua.dk>2006-06-04 01:01:51 +0000
committerKim F. Storm <storm@cua.dk>2006-06-04 01:01:51 +0000
commit9a21d88ba1c249264c225cb64d24cdb3b57b73e1 (patch)
tree7176b48a33f88583cd7ffd452c551e8a681e9b3b /etc/NEWS.19
parent71ee3e042e4bc6464430e25574a440d15e14a328 (diff)
downloademacs-9a21d88ba1c249264c225cb64d24cdb3b57b73e1.tar.gz
Reorganize NEWS and ONEWS.* files into NEWS for current major version
and NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for older version. Update copyright notices.
Diffstat (limited to 'etc/NEWS.19')
-rw-r--r--etc/NEWS.196540
1 files changed, 6540 insertions, 0 deletions
diff --git a/etc/NEWS.19 b/etc/NEWS.19
new file mode 100644
index 00000000000..2d2e5f57066
--- /dev/null
+++ b/etc/NEWS.19
@@ -0,0 +1,6540 @@
+GNU Emacs NEWS -- history of user-visible changes. 1992.
+Copyright (C) 1993, 1994, 1995, 2001, 2006 Free Software Foundation, Inc.
+See the end for copying conditions.
+
+This file is about changes in emacs versions 19.
+
+
+
+* Emacs 19.34 is a bug-fix release with no user-visible changes.
+
+
+
+* Changes in Emacs 19.33.
+
+** Bibtex mode no longer turns on Auto Fill automatically. (No major
+mode should do that--it is the user's choice.)
+
+** The variable normal-auto-fill-function specifies the function to
+use for auto-fill-function, if and when Auto Fill is turned on.
+Major modes can set this locally to alter how Auto Fill works.
+
+
+
+* Editing Changes in Emacs 19.32
+
+** C-x f with no argument now signals an error.
+To set the fill column at the current column, use C-u C-x f.
+
+** Expanding dynamic abbrevs with M-/ is now smarter about case
+conversion. If you type the abbreviation with mixed case, and it
+matches the beginning of the expansion including case, then the
+expansion is copied verbatim. Using SPC M-/ to copy an additional
+word always copies it verbatim except when the previous copied word is
+all caps.
+
+** On a non-windowing terminal, which can display only one Emacs frame
+at a time, creating a new frame with C-x 5 2 also selects that frame.
+
+When using a display that can show multiple frames at once, C-x 5 2
+does make the frame visible, but does not select it. This is the same
+as in previous Emacs versions.
+
+** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a
+non-X terminal on Unix. Of course, only one frame is visible at any
+time, since your terminal doesn't have the ability to display multiple
+frames.
+
+** On Windows, set win32-pass-alt-to-system to a non-nil value
+if you would like tapping the Alt key to invoke the Windows menu.
+This feature is not enabled by default; since the Alt key is also the
+Meta key, it is too easy and painful to activate this feature by
+accident.
+
+** The command apply-macro-to-region-lines repeats the last defined
+keyboard macro once for each complete line within the current region.
+It does this line by line, by moving point to the beginning of that
+line and then executing the macro.
+
+This command is not new, but was never documented before.
+
+** You can now use Mouse-1 to place the region around a string constant
+(something surrounded by doublequote characters or other delimiter
+characters of like syntax) by double-clicking on one of the delimiting
+characters.
+
+** Font Lock mode
+
+*** Font Lock support modes
+
+Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see
+below) in a flexible way. Rather than adding the appropriate function to the
+hook font-lock-mode-hook, you can use the new variable font-lock-support-mode
+to control which modes have Fast Lock mode or Lazy Lock mode turned on when
+Font Lock mode is enabled.
+
+For example, to use Fast Lock mode when Font Lock mode is turned on, put:
+
+ (setq font-lock-support-mode 'fast-lock-mode)
+
+in your ~/.emacs.
+
+*** lazy-lock
+
+The lazy-lock package speeds up Font Lock mode by making fontification occur
+only when necessary, such as when a previously unfontified part of the buffer
+becomes visible in a window. When you create a buffer with Font Lock mode and
+Lazy Lock mode turned on, the buffer is not fontified. When certain events
+occur (such as scrolling), Lazy Lock makes sure that the visible parts of the
+buffer are fontified. Lazy Lock also defers on-the-fly fontification until
+Emacs has been idle for a given amount of time.
+
+To use this package, put in your ~/.emacs:
+
+ (setq font-lock-support-mode 'lazy-lock-mode)
+
+To control the package behavior, see the documentation for `lazy-lock-mode'.
+
+** Changes in BibTeX mode.
+
+*** For all entries allow spaces and tabs between opening brace or
+paren and key.
+
+*** Non-escaped double-quoted characters (as in `Sch"of') are now
+supported.
+
+** Gnus changes.
+
+Gnus, the Emacs news reader, has undergone further rewriting. Many new
+commands and variables have been added. There should be no
+significant incompatibilities between this Gnus version and the
+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
+variables for mail-mode, rnews-reply-mode and gnus-msg are now
+obsolete.
+
+*** Gnus is now able to generate "sparse" threads -- threads where
+missing articles are represented by empty nodes.
+
+ (setq gnus-build-sparse-threads 'some)
+
+*** Outgoing articles are stored on a special archive server.
+
+ To disable this: (setq gnus-message-archive-group nil)
+
+*** Partial thread regeneration now happens when articles are
+referred.
+
+*** Gnus can make use of GroupLens predictions:
+
+ (setq gnus-use-grouplens t)
+
+*** A trn-line tree buffer can be displayed.
+
+ (setq gnus-use-trees t)
+
+*** An nn-like pick-and-read minor mode is available for the summary
+buffers.
+
+ (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
+
+*** In binary groups you can use a special binary minor mode:
+
+ `M-x gnus-binary-mode'
+
+*** Groups can be grouped in a folding topic hierarchy.
+
+ (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
+
+*** Gnus can re-send and bounce mail.
+
+ Use the `S D r' and `S D b'.
+
+*** Groups can now have a score, and bubbling based on entry frequency
+is possible.
+
+ (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
+
+*** Groups can be process-marked, and commands can be performed on
+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.
+
+*** Gnus has a new backend (nnsoup) to create/read SOUP packets.
+
+*** The Gnus cache is much faster.
+
+*** Groups can be sorted according to many criteria.
+
+ For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank)
+
+*** New group parameters have been introduced to set list-address and
+expiration times.
+
+*** All formatting specs allow specifying faces to be used.
+
+*** There are several more commands for setting/removing/acting on
+process marked articles on the `M P' submap.
+
+*** The summary buffer can be limited to show parts of the available
+articles based on a wide range of criteria. These commands have been
+bound to keys on the `/' submap.
+
+*** Articles can be made persistent -- as an alternative to saving
+articles with the `*' command.
+
+*** All functions for hiding article elements are now toggles.
+
+*** Article headers can be buttonized.
+
+ (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head)
+
+*** All mail backends support fetching articles by Message-ID.
+
+*** Duplicate mail can now be treated properly. See the
+`nnmail-treat-duplicates' variable.
+
+*** All summary mode commands are available directly from the article
+buffer.
+
+*** Frames can be part of `gnus-buffer-configuration'.
+
+*** Mail can be re-scanned by a daemonic process.
+
+*** Gnus can make use of NoCeM files to filter spam.
+
+ (setq gnus-use-nocem t)
+
+*** Groups can be made permanently visible.
+
+ (setq gnus-permanently-visible-groups "^nnml:")
+
+*** 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.
+
+ (setq gnus-summary-thread-gathering-function
+ 'gnus-gather-threads-by-references)
+
+*** Read articles can be stored in a special backlog buffer to avoid
+refetching.
+
+ (setq gnus-keep-backlog 50)
+
+*** A clean copy of the current article is always stored in a separate
+buffer to allow easier treatment.
+
+*** Gnus can suggest where to save articles. See `gnus-split-methods'.
+
+*** Gnus doesn't have to do as much prompting when saving.
+
+ (setq gnus-prompt-before-saving t)
+
+*** gnus-uu can view decoded files asynchronously while fetching
+articles.
+
+ (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
+
+*** 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.
+
+ (setq gnus-cited-lines-visible 2)
+
+*** Boring headers can be hidden.
+
+ (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers)
+
+*** Default scoring values can now be set from the menu bar.
+
+*** Further syntax checking of outgoing articles have been added.
+
+The Gnus manual has been expanded. It explains all these new features
+in greater detail.
+
+
+* Lisp Changes in Emacs 19.32
+
+** The function set-visited-file-name now accepts an optional
+second argument NO-QUERY. If it is non-nil, then the user is not
+asked for confirmation in the case where the specified file already
+exists.
+
+** The variable print-length applies to printing vectors and bitvectors,
+as well as lists.
+
+** The new function keymap-parent returns the parent keymap
+of a given keymap.
+
+** The new function set-keymap-parent specifies a new parent for a
+given keymap. The arguments are KEYMAP and PARENT. PARENT must be a
+keymap or nil.
+
+** Sometimes menu keymaps use a command name, a symbol, which is really
+an automatically generated alias for some other command, the "real"
+name. In such a case, you should give that alias symbol a non-nil
+menu-alias property. That property tells the menu system to look for
+equivalent keys for the real name instead of equivalent keys for the
+alias.
+
+
+
+* Editing Changes in Emacs 19.31
+
+** Freedom of the press restricted in the United States.
+
+Emacs has been censored in accord with the Communications Decency Act.
+This includes removing some features of the doctor program. That law
+was described by its supporters as a ban on pornography, but it bans
+far more than that. The Emacs distribution has never contained any
+pornography, but parts of it were nonetheless prohibited.
+
+For information on US government censorship of the Internet, and what
+you can do to bring back freedom of the press, see the web site
+`http://www.vtw.org/'.
+
+** A note about C mode indentation customization.
+
+The old (Emacs 19.29) ways of specifying a C indentation style
+do not normally work in the new implementation of C mode.
+It has its own methods of customizing indentation, which are
+much more powerful than the old C mode. See the Editing Programs
+chapter of the manual for details.
+
+However, you can load the library cc-compat to make the old
+customization variables take effect.
+
+** Marking with the mouse.
+
+When you mark a region with the mouse, the region now remains
+highlighted until the next input event, regardless of whether you are
+using M-x transient-mark-mode.
+
+** Improved Windows NT/95 support.
+
+*** Emacs now supports scroll bars on Windows NT and Windows 95.
+
+*** Emacs now supports subprocesses on Windows 95. (Subprocesses used
+to work on NT only and not on 95.)
+
+*** There are difficulties with subprocesses, though, due to problems
+in Windows, beyond the control of Emacs. They work fine as long as
+you run Windows applications. The problems arise when you run a DOS
+application in a subprocesses. Since current shells run as DOS
+applications, these problems are significant.
+
+If you run a DOS application in a subprocess, then the application is
+likely to busy-wait, which means that your machine will be 100% busy.
+However, if you don't mind the temporary heavy load, the subprocess
+will work OK as long as you tell it to terminate before you start any
+other DOS application as a subprocess.
+
+Emacs is unable to terminate or interrupt a DOS subprocess.
+You have to do this by providing input directly to the subprocess.
+
+If you run two DOS applications at the same time in two separate
+subprocesses, even if one of them is asynchronous, you will probably
+have to reboot your machine--until then, it will remain 100% busy.
+Windows simply does not cope when one Windows process tries to run two
+separate DOS subprocesses. Typing CTL-ALT-DEL and then choosing
+Shutdown seems to work although it may take a few minutes.
+
+** M-x resize-minibuffer-mode.
+
+This command, not previously mentioned in NEWS, toggles a mode in
+which the minibuffer window expands to show as many lines as the
+minibuffer contains.
+
+** `title' frame parameter and resource.
+
+The `title' X resource now specifies just the frame title, nothing else.
+It does not affect the name used for looking up other X resources.
+It works by setting the new `title' frame parameter, which likewise
+affects just the displayed title of the frame.
+
+The `name' parameter continues to do what it used to do:
+it specifies the frame name for looking up X resources,
+and also serves as the default for the displayed title
+when the `title' parameter is unspecified or nil.
+
+** Emacs now uses the X toolkit by default, if you have a new
+enough version of X installed (X11R5 or newer).
+
+** When you compile Emacs with the Motif widget set, Motif handles the
+F10 key by activating the menu bar. To avoid confusion, the usual
+Emacs binding of F10 is replaced with a no-op when using Motif.
+
+If you want to be able to use F10 in Emacs, you can rebind the Motif
+menubar to some other key which you don't use. To do so, add
+something like this to your X resources file. This example rebinds
+the Motif menu bar activation key to S-F12:
+
+ Emacs*defaultVirtualBindings: osfMenuBar : Shift<Key>F12
+
+** In overwrite mode, DEL now inserts spaces in most cases
+to replace the characters it "deletes".
+
+** The Rmail summary now shows the number of lines in each message.
+
+** Rmail has a new command M-x unforward-rmail-message, which extracts
+a forwarded message from the message that forwarded it. To use it,
+select a message which contains a forwarded message and then type the command.
+It inserts the forwarded message as a separate Rmail message
+immediately after the selected one.
+
+This command also undoes the textual modifications that are standardly
+made, as part of forwarding, by Rmail and other mail reader programs.
+
+** Turning off saving of .saves-... files in your home directory.
+
+Each Emacs session writes a file named .saves-... in your home
+directory to record which files M-x recover-session should recover.
+If you exit Emacs normally with C-x C-c, it deletes that file. If
+Emacs or the operating system crashes, the file remains for M-x
+recover-session.
+
+You can turn off the writing of these files by setting
+auto-save-list-file-name to nil. If you do this, M-x recover-session
+will not work.
+
+Some previous Emacs versions failed to delete these files even on
+normal exit. This is fixed now. If you are thinking of turning off
+this feature because of past experiences with versions that had this
+bug, it would make sense to check whether you still want to do so
+now that the bug is fixed.
+
+** Changes to Version Control (VC)
+
+There is a new variable, vc-follow-symlinks. It indicates what to do
+when you visit a link to a file that is under version control.
+Editing the file through the link bypasses the version control system,
+which is dangerous and probably not what you want.
+
+If this variable is t, VC follows the link and visits the real file,
+telling you about it in the echo area. If it is `ask' (the default),
+VC asks for confirmation whether it should follow the link. If nil,
+the link is visited and a warning displayed.
+
+** iso-acc.el now lets you specify a choice of language.
+Languages include "latin-1" (the default) and "latin-2" (which
+is designed for entering ISO Latin-2 characters).
+
+There are also choices for specific human languages such as French and
+Portuguese. These are subsets of Latin-1, which differ in that they
+enable only the accent characters needed for particular language.
+The other accent characters, not needed for the chosen language,
+remain normal.
+
+** Posting articles and sending mail now has M-TAB completion on various
+header fields (Newsgroups, To, CC, ...).
+
+Completion in the Newsgroups header depends on the list of groups
+known to your news reader. Completion in the Followup-To header
+offers those groups which are in the Newsgroups header, since
+Followup-To usually just holds one of those.
+
+Completion in fields that hold mail addresses works based on the list
+of local users plus your aliases. Additionally, if your site provides
+a mail directory or a specific host to use for any unrecognized user
+name, you can arrange to query that host for completion also. (See the
+documentation of variables `mail-directory-process' and
+`mail-directory-stream'.)
+
+** A greatly extended sgml-mode offers new features such as (to be configured)
+skeletons with completing read for tags and attributes, typing named
+characters including optionally all 8bit characters, making tags invisible
+with optional alternate display text, skipping and deleting tag(pair)s.
+
+Note: since Emacs' syntax feature cannot limit the special meaning of ', " and
+- to inside <>, for some texts the result, especially of font locking, may be
+wrong (see `sgml-specials' if you get wrong results).
+
+The derived html-mode configures this with tags and attributes more or
+less HTML3ish. It also offers optional quick keys like C-c 1 for
+headline or C-c u for unordered list (see `html-quick-keys'). Edit /
+Text Properties / Face or M-g combinations create tags as applicable.
+Outline minor mode is supported and level 1 font-locking tries to
+fontify tag contents (which only works when they fit on one line, due
+to a limitation in font-lock).
+
+External viewing via browse-url can occur automatically upon saving.
+
+** M-x imenu-add-to-menubar now adds to the menu bar for the current
+buffer only. If you want to put an Imenu item in the menu bar for all
+buffers that use a particular major mode, use the mode hook, as in
+this example:
+
+ (add-hook 'emacs-lisp-mode-hook
+ '(lambda () (imenu-add-to-menubar "Index")))
+
+** Changes in BibTeX mode.
+
+*** Field names may now contain digits, hyphens, and underscores.
+
+*** Font Lock mode is now supported.
+
+*** bibtex-make-optional-field is no longer interactive.
+
+*** If bibtex-maintain-sorted-entries is non-nil, inserting new
+entries is now done with a faster algorithm. However, inserting
+will fail in this case if the buffer contains invalid entries or
+isn't in sorted order, so you should finish each entry with C-c C-c
+(bibtex-close-entry) after you have inserted or modified it.
+The default value of bibtex-maintain-sorted-entries is nil.
+
+*** Function `show-all' is no longer bound to a key, since C-u C-c C-q
+does the same job.
+
+*** Entries with quotes inside quote-delimited fields (as `author =
+"Stefan Sch{\"o}f"') are now supported.
+
+*** Case in field names doesn't matter anymore when searching for help
+text.
+
+** Font Lock mode
+
+*** Global Font Lock mode
+
+Font Lock mode can be turned on globally, in buffers that support it, by the
+new command global-font-lock-mode. You can use the new variable
+font-lock-global-modes to control which modes have Font Lock mode automagically
+turned on. By default, this variable is set so that Font Lock mode is turned
+on globally where the buffer mode supports it.
+
+For example, to automagically turn on Font Lock mode where supported, put:
+
+ (global-font-lock-mode t)
+
+in your ~/.emacs.
+
+*** Local Refontification
+
+In Font Lock mode, editing a line automatically refontifies that line only.
+However, if your change alters the syntactic context for following lines,
+those lines remain incorrectly fontified. To refontify them, use the new
+command M-g M-g (font-lock-fontify-block).
+
+In certain major modes, M-g M-g refontifies the entire current function.
+(The variable font-lock-mark-block-function controls how to find the
+current function.) In other major modes, M-g M-g refontifies 16 lines
+above and below point.
+
+With a prefix argument N, M-g M-g refontifies N lines above and below point.
+
+** Follow mode
+
+Follow mode is a new minor mode combining windows showing the same
+buffer into one tall "virtual window". The windows are typically two
+side-by-side windows. Follow mode makes them scroll together as if
+they were a unit. To use it, go to a frame with just one window,
+split it into two side-by-side windows using C-x 3, and then type M-x
+follow-mode.
+
+M-x follow-mode turns off Follow mode if it is already enabled.
+
+To display two side-by-side windows and activate Follow mode, use the
+command M-x follow-delete-other-windows-and-split.
+
+** hide-show changes.
+
+The hooks hs-hide-hooks and hs-show-hooks have been renamed
+to hs-hide-hook and hs-show-hook, to follow the convention for
+normal hooks.
+
+** Simula mode now has a menu containing the most important commands.
+The new command simula-indent-exp is bound to C-M-q.
+
+** etags can now handle programs written in Erlang. Files are
+recognised by the extensions .erl and .hrl. The tagged lines are
+those that begin a function, record, or macro.
+
+** MSDOS Changes
+
+*** It is now possible to compile Emacs with the version 2 of DJGPP.
+Compilation with DJGPP version 1 also still works.
+
+*** The documentation of DOS-specific aspects of Emacs was rewritten
+and expanded; see the ``MS-DOS'' node in the on-line docs.
+
+*** Emacs now uses ~ for backup file names, not .bak.
+
+*** You can simulate mouse-3 on two-button mice by simultaneously
+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:
+
+**** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
+now works.
+
+**** `Ediff' works (in a single-frame mode).
+
+**** `M-x display-time' can be used on MS-DOS (due to the new
+implementation of Emacs timers, see below).
+
+**** `Dired' supports Unix-style shell wildcards.
+
+**** The `c-macro-expand' command now works as on other platforms.
+
+**** `M-x recover-session' works.
+
+**** `M-x list-colors-display' displays all the available colors.
+
+**** The `TPU-EDT' package works.
+
+
+* Lisp changes in Emacs 19.31.
+
+** The function using-unix-filesystems on Windows NT and Windows 95
+tells Emacs to read and write files assuming that they reside on a
+remote Unix filesystem. No CR/LF translation is done on any files in
+this case. Invoking using-unix-filesystems with t activates this
+behavior, and invoking it with any other value deactivates it.
+
+** Change in system-type and system-configuration values.
+
+The value of system-type on a Linux-based GNU system is now `lignux',
+not `linux'. This means that some programs which use `system-type'
+need to be changed. The value of `system-configuration' will also
+be different.
+
+It is generally recommended to use `system-configuration' rather
+than `system-type'.
+
+See the file LINUX-GNU in this directory for more about this.
+
+** The functions shell-command and dired-call-process
+now run file name handlers for default-directory, if it has them.
+
+** Undoing the deletion of text now restores the positions of markers
+that pointed into or next to the deleted text.
+
+** Timers created with run-at-time now work internally to Emacs, and
+no longer use a separate process. Therefore, they now work more
+reliably and can be used for shorter time delays.
+
+The new function run-with-timer is a convenient way to set up a timer
+to run a specified amount of time after the present. A call looks
+like this:
+
+ (run-with-timer SECS REPEAT FUNCTION ARGS...)
+
+SECS says how many seconds should elapse before the timer happens.
+It may be an integer or a floating point number. When the timer
+becomes ripe, the action is to call FUNCTION with arguments ARGS.
+
+REPEAT gives the interval for repeating the timer (measured in
+seconds). It may be an integer or a floating point number. nil or 0
+means don't repeat at all--call FUNCTION just once.
+
+*** with-timeout provides an easy way to do something but give
+up if too much time passes.
+
+ (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
+
+This executes BODY, but gives up after SECONDS seconds.
+If it gives up, it runs the TIMEOUT-FORMS and returns the value
+of the last one of them. Normally it returns the value of the last
+form in BODY.
+
+*** You can now arrange to call a function whenever Emacs is idle for
+a certain length of time. To do this, call run-with-idle-timer. A
+call looks like this:
+
+ (run-with-idle-timer SECS REPEAT FUNCTION ARGS...)
+
+SECS says how many seconds of idleness should elapse before the timer
+runs. It may be an integer or a floating point number. When the
+timer becomes ripe, the action is to call FUNCTION with arguments
+ARGS.
+
+Emacs becomes idle whenever it finishes executing a keyboard or mouse
+command. It remains idle until it receives another keyboard or mouse
+command.
+
+REPEAT, if non-nil, means this timer should be activated again each
+time Emacs becomes idle and remains idle for SECS seconds The timer
+does not repeat if Emacs *remains* idle; it runs at most once after
+each time Emacs becomes idle.
+
+If REPEAT is nil, the timer runs just once, the first time Emacs is
+idle for SECS seconds.
+
+*** post-command-idle-hook is now obsolete; you shouldn't use it at
+all, because it interferes with the idle timer mechanism. If your
+programs use post-command-idle-hook, convert them to use idle timers
+instead.
+
+*** y-or-n-p-with-timeout lets you ask a question but give up if
+there is no answer within a certain time.
+
+ (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE)
+
+asks the question PROMPT (just like y-or-n-p). If the user answers
+within SECONDS seconds, it returns the answer that the user gave.
+Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE.
+
+** Minor change to `encode-time': you can now pass more than seven
+arguments. If you do that, the first six arguments have the usual
+meaning, the last argument is interpreted as the time zone, and the
+arguments in between are ignored.
+
+This means that it works to use the list returned by `decode-time' as
+the list of arguments for `encode-time'.
+
+** The default value of load-path now includes the directory
+/usr/local/share/emacs/VERSION/site-lisp In addition to
+/usr/local/share/emacs/site-lisp. You can use this new directory for
+site-specific Lisp packages that belong with a particular Emacs
+version.
+
+It is not unusual for a Lisp package that works well in one Emacs
+version to cause trouble in another. Sometimes packages need updating
+for incompatible changes; sometimes they look at internal data that
+has changed; sometimes the package has been installed in Emacs itself
+and the installed version should be used. Whatever the reason for the
+problem, this new feature makes it easier to solve.
+
+** When your program contains a fixed file name (like .completions or
+.abbrev.defs), the file name usually needs to be different on operating
+systems with limited file name syntax.
+
+Now you can avoid ad-hoc conditionals by using the function
+convert-standard-filename to convert the file name to a proper form
+for each operating system. Here is an example of use, from the file
+completions.el:
+
+(defvar save-completions-file-name
+ (convert-standard-filename "~/.completions")
+ "*The filename to save completions to.")
+
+This sets the variable save-completions-file-name to a value that
+depends on the operating system, because the definition of
+convert-standard-filename depends on the operating system. On
+Unix-like systems, it returns the specified file name unchanged. On
+MS-DOS, it adapts the name to fit the limitations of that system.
+
+** The interactive spec N now returns the numeric prefix argument
+rather than the raw prefix argument. (It still reads a number using the
+minibuffer if there is no prefix argument at all.)
+
+** When a process is deleted, this no longer disconnects the process
+marker from its buffer position.
+
+** The variable garbage-collection-messages now controls whether
+Emacs displays a message at the beginning and end of garbage collection.
+The default is nil, meaning there are no messages.
+
+** The variable debug-ignored-errors specifies certain kinds of errors
+that should not enter the debugger. Its value is a list of error
+condition symbols and/or regular expressions. If the error has any
+of the condition symbols listed, or if any of the regular expressions
+matches the error message, then that error does not enter the debugger,
+regardless of the value of debug-on-error.
+
+This variable is initialized to match certain common but uninteresting
+errors that happen often during editing.
+
+** The new function error-message-string converts an error datum
+into its error message. The error datum is what condition-case
+puts into the variable, to describe the error that happened.
+
+** Anything that changes which buffer appears in a given window
+now runs the window-scroll-functions for that window.
+
+** The new function get-buffer-window-list returns a list of windows displaying
+a buffer. The function is called with the buffer (a buffer object or a buffer
+name) and two optional arguments specifying the minibuffer windows and frames
+to search. Therefore this function takes optional args like next-window etc.,
+and not get-buffer-window.
+
+** buffer-substring now runs the hook buffer-access-fontify-functions,
+calling each function with two arguments--the range of the buffer
+being accessed. buffer-substring-no-properties does not call them.
+
+If you use this feature, you should set the variable
+buffer-access-fontified-property to a non-nil symbol, which is a
+property name. Then, if all the characters in the buffer range have a
+non-nil value for that property, the buffer-access-fontify-functions
+are not called. When called, these functions should put a non-nil
+property on the text that they fontify, so that they won't get called
+over and over for the same text.
+
+** Changes in lisp-mnt.el
+
+*** The lisp-mnt package can now recognize file headers that are written
+in the formats used by the `what' command and the RCS `ident' command:
+
+;; @(#) HEADER: text
+;; $HEADER: text $
+
+in addition to the normal
+
+;; HEADER: text
+
+*** The commands lm-verify and lm-synopsis are now interactive. lm-verify
+checks that the library file has proper sections and headers, and
+lm-synopsis extracts first line "synopsis'"information.
+
+
+
+* Editing Changes in Emacs 19.30.
+
+** Be sure to recompile your byte-compiled Emacs Lisp files
+if you last compiled them with Emacs 19.28 or earlier.
+You can use M-x byte-force-recompile to recompile all the .elc files
+in a specified directory.
+
+** Emacs now provides multiple-frame support on Windows NT
+and Windows 95.
+
+** M-x column-number-mode toggles a minor mode which displays
+the current column number in the mode line.
+
+** Line Number mode is now enabled by default.
+
+** M-x what-line now displays the line number in the accessible
+portion of the buffer as well as the line number in the full buffer,
+when narrowing is in effect.
+
+** If you type a M-x command that has an equivalent key binding,
+the equivalent is shown in the minibuffer before the command executes.
+This feature is enabled by default for the sake of beginning users.
+You can turn the feature off by setting suggest-key-bindings to nil.
+
+** The menu bar is now visible on text-only terminals. To choose a
+command from the menu bar when you have no mouse, type M-`
+(Meta-Backquote) or F10. To turn off menu bar display,
+do (menu-bar-mode -1).
+
+** Whenever you invoke a minibuffer, it appears in the minibuffer
+window that the current frame uses.
+
+Emacs can only use one minibuffer window at a time. If you activate
+the minibuffer while a minibuffer window is active in some other
+frame, the outer minibuffer window disappears while the inner one is
+active.
+
+** Echo area messages always appear in the minibuffer window that the
+current frame uses. If a minibuffer is active in some other frame,
+the echo area message does not hide it even temporarily.
+
+** The minibuffer now has a menu-bar menu. You can use it to exit or
+abort the minibuffer, or to ask for completion.
+
+** Dead-key and composite character processing is done in the standard
+X11R6 manner (through the default "input method" using the
+/usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if
+it works in xterm, it should also work in emacs now.
+
+** Mouse changes
+
+*** You can now use the mouse when running Emacs in an xterm.
+Use M-x xterm-mouse-mode to let emacs take control over the mouse.
+
+*** C-mouse-1 now once again provides a menu of buffers to select.
+S-mouse-1 is now the way to select a default font for the frame.
+
+*** There is a new mouse-scroll-min-lines variable to control the
+minimum number of lines scrolled by dragging the mouse outside a
+window's edge.
+
+*** Dragging mouse-1 on a vertical line that separates windows
+now moves the line, thus changing the widths of the two windows.
+(This feature is available only if you don't have vertical scroll bars.
+If you do use them, a scroll bar separates two side-by-side windows.)
+
+*** Double-click mouse-1 on a character with "symbol" syntax (such as
+underscore, in C mode) selects the entire symbol surrounding that
+character. (Double-click mouse-1 on a letter selects a whole word.)
+
+** When incremental search wraps around to the beginning (or end) of
+the buffer, if you keep on searching until you go past the original
+starting point of the search, the echo area changes from "Wrapped" to
+"Overwrapped". That tells you that you are revisiting matches that
+you have already seen.
+
+** Filling changes.
+
+*** If the variable colon-double-space is non-nil, the explicit fill
+commands put two spaces after a colon.
+
+*** Auto-Fill mode now supports Adaptive Fill mode just as the
+explicit fill commands do. The variable adaptive-fill-regexp
+specifies a regular expression to match text at the beginning of
+a line that should be the fill prefix.
+
+*** Adaptive Fill mode can take a fill prefix from the first line of a
+paragraph, *provided* that line is not a paragraph-starter line.
+
+Paragraph-starter lines are indented lines that start a new
+paragraph because they are indented. This indentation shouldn't
+be copied to additional lines.
+
+Whether indented lines are paragraph lines depends on the value of the
+variable paragraph-start. Some major modes set this; you can set it
+by hand or in mode hooks as well. For editing text in which paragraph
+first lines are not indented, and which contains paragraphs in which
+all lines are indented, you should use Indented Text mode or arrange
+for paragraph-start not to match these lines.
+
+*** You can specify more complex ways of choosing a fill prefix
+automatically by setting `adaptive-fill-function'. This function
+is called with point after the left margin of a line, and it should
+return the appropriate fill prefix based on that line.
+If it returns nil, that means it sees no fill prefix in that line.
+
+** Gnus changes.
+
+Gnus, the Emacs news reader, has been rewritten and expanded. Most
+things that worked with the old version should still work with the new
+version. Code that relies heavily on Gnus internals is likely to
+fail, though.
+
+*** Incompatibilities with the old GNUS.
+
+**** All interactive commands have kept their names, but many internal
+functions have changed names.
+
+**** The summary mode gnus-uu commands have been moved from the `C-c
+C-v' keymap to the `X' keymap.
+
+**** There can now be several summary buffers active at once.
+Variables that are relevant to each summary buffer are buffer-local to
+that buffer.
+
+**** Old hilit code doesn't work at all. Gnus performs its own
+highlighting based not only on what's visible in the buffer, but on
+other data structures.
+
+**** Old packages like `expire-kill' will no longer work.
+
+**** `C-c C-l' in the group buffer no longer switches to a different
+buffer, but instead lists killed groups in the group buffer.
+
+*** New features.
+
+**** The look of all buffers can be changed by setting format-like
+variables.
+
+**** Local spool and several NNTP servers can be used at once.
+
+**** Groups can be combined into virtual groups.
+
+**** Different mail formats can be read much the same way as one would
+read newsgroups. All the mail backends implement mail expiry schemes.
+
+**** Gnus can use various strategies for gathering threads that have
+lost their roots (thereby gathering loose sub-threads into one thread)
+or it can go back and retrieve enough headers to build a complete
+thread.
+
+**** Killed groups can be read.
+
+**** Gnus can do partial group updates - you do not have to retrieve
+the entire active file just to check for new articles in a few groups.
+
+**** Gnus implements a sliding scale of subscribedness to groups.
+
+**** You can score articles according to any number of criteria. You
+can get Gnus to score articles for you using adaptive scoring.
+
+**** Gnus maintains a dribble buffer that is auto-saved the normal
+Emacs manner, so it should be difficult to lose much data on what you
+have read if your machine should go down.
+
+**** Gnus now has its own startup file (`.gnus.el') to avoid
+cluttering up the `.emacs' file.
+
+**** You can set the process mark on both groups and articles and
+perform operations on all the marked items.
+
+**** You can grep through a subset of groups and create a group from
+the results.
+
+**** You can list subsets of groups using matches on group names or
+group descriptions.
+
+**** You can browse foreign servers and subscribe to groups from those
+servers.
+
+**** Gnus can pre-fetch articles asynchronously on a second connection
+to the servers.
+
+**** You can cache articles locally.
+
+**** Gnus can fetch FAQs to and descriptions of groups.
+
+**** Digests (and other files) can be used as the basis for groups.
+
+**** Articles can be highlighted and customized.
+
+** Changes to Version Control (VC)
+
+*** General changes (all backends).
+
+VC directory listings (C-x v d) are now kept up to date when you do a
+vc-next-action (C-x v v) on the marked files. The `g' command updates
+the buffer properly. `=' in a VC dired buffer produces a version
+control diff, not an ordinary diff.
+
+*** CVS changes.
+
+Under CVS, you no longer need to type C-x C-q before you can edit a
+file. VC doesn't write-protect unmodified buffers anymore; you can
+freely change them at any time. The mode line keeps track of the
+file status.
+
+If you do want unmodified files to be write-protected, set your
+CVSREAD environment variable. VC sees this and behaves accordingly;
+that will give you the behavior of Emacs 19.29, similar to that under
+RCS and SCCS. In this mode, if the variable vc-mistrust-permissions
+is nil, VC learns the modification state from the file permissions.
+When setting CVSREAD for the first time, you should check out the
+whole module anew, so that the file permissions are set correctly.
+
+VC also works with remote repositories now. When you visit a file, it
+doesn't run "cvs status" anymore, so there shouldn't be any long delays.
+
+Directory listings under VC/CVS have been enhanced. Type C-x v d, and
+you get a list of all files in or below the current directory that are
+not up-to-date. The actual status (modified, merge, conflict, ...) is
+displayed for each file. If you give a prefix argument (C-u C-x v d),
+up-to-date files are also listed. You can mark any number of files,
+and execute the next logical version control command on them (C-x v v).
+
+*** Starting a new branch.
+
+If you try to lock a version that is not the latest on its branch,
+VC asks for confirmation in the minibuffer. If you say no, it offers
+to lock the latest version instead.
+
+*** RCS non-strict locking.
+
+VC can now handle RCS non-strict locking, too. In this mode, working
+files are always writable and you needn't lock the file before making
+changes, similar to the default mode under CVS. To enable non-strict
+locking for a file, use the "rcs -U" command.
+
+*** Sharing RCS master files.
+
+If you share RCS subdirs with other users (through symbolic links),
+and you always want to work on the latest version, set
+vc-consult-headers to nil and vc-mistrust-permissions to `t'.
+Then you see the state of the *latest* version on the mode line, not
+that of your working file. When you do a check out, VC overwrites
+your working file with the latest version from the master.
+
+*** RCS customization.
+
+There is a new variable vc-consult-headers. If it is t (the default),
+VC searches for RCS headers in working files (like `$Id$') and
+determines the state of the file from them, not from the master file.
+This is fast and more reliable when you use branches. (The variable
+was already present in Emacs 19.29, but didn't get mentioned in the
+NEWS.)
+
+** Calendar changes.
+
+*** New calendars supported: Chinese, Coptic, Ethiopic
+
+Here are the commands for converting to and from these calendars:
+
+ gC: calendar-goto-chinese-date
+ gk: calendar-goto-coptic-date
+ ge: calendar-goto-ethiopic-date
+
+ pC: calendar-print-chinese-date
+ pk: calendar-print-coptic-date
+ pe: calendar-print-ethiopic-date
+
+*** Printed calendars
+
+Calendar mode now has commands to produce fancy printed calendars via
+LaTeX. You can ask for a calendar for one or more days, weeks, months
+or years. The commands all start with `t'; see the manual for a list
+of them.
+
+*** New sexp diary entry type
+
+Reminders that apply in the days leading up to an event.
+
+** The CC-mode package now provides the default C and C++ modes.
+See the manual for documentation of its features.
+
+** The uniquify package chooses buffer names differently when you
+visit multiple files with the same name (in different directories).
+
+** RMAIL now always uses the movemail program when it renames an
+inbox file, so that it can interlock properly with the mailer
+no matter where it is delivering mail.
+
+** tex-start-of-header and tex-end-of-header are now regular expressions,
+not strings.
+
+** To enable automatic uncompression of compressed files,
+type M-x auto-compression-mode. (This command used to be called
+toggle-auto-compression, but was not documented before.) In Lisp,
+you can do
+
+ (auto-compression-mode 1)
+
+to turn the mode on.
+
+** The new pc-select package emulates the key bindings for cutting and
+pasting, and selection of regions, found in Windows, Motif, and the
+Macintosh.
+
+** Help buffers now use a special major mode, Help mode. This mode
+normally turns on View mode; it also provides a hook, help-mode-hook,
+which you can use for other customization.
+
+** Apropos now uses faces for enhanced legibility. It now describes
+symbol properties as well as their function definitions and variable
+values. You can use Mouse-2 or RET to get more information about a
+function definition, variable, or property.
+
+** Font Lock mode
+
+*** Supports Scheme, TCL and Help modes
+
+For example, to automatically turn on Font Lock mode in the *Help*
+buffer, put:
+
+ (add-hook 'help-mode-hook 'turn-on-font-lock)
+
+in your ~/.emacs.
+
+*** Enhanced fontification
+
+The structure of font-lock-keywords is extended to allow "anchored" keywords.
+Typically, a keyword item of font-lock-keywords comprises a regexp to search
+for and information to specify how the regexp should be highlighted. However,
+the highlighting information is extended so that it can be another keyword
+item. This keyword item, its regexp and highlighting information, is processed
+before resuming with the keyword item of which it is part.
+
+For example, a typical keyword item might be:
+
+ ("\\<anchor\\>" (0 anchor-face))
+
+which fontifies each occurrence of the discrete word "anchor" in the value of
+the variable anchor-face. However, the highlighting information can be used to
+fontify text that is anchored to the word "anchor". For example:
+
+ ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face)))
+
+which fontifies each occurrence of "anchor" as above, but for each occurrence
+of "anchor", each occurrence of "item", in any following comma separated list,
+is fontified in the value of the variable item-face. Thus the "item" text is
+anchored to the "anchor" text. See the variable documentation for further
+information.
+
+This feature is used to extend the level and quality of fontification in a
+number of modes. For example, C/C++ modes now have level 3 decoration that
+includes the fontification of variable and function names in declaration lists.
+In this instance, the "anchor" described in the above example is a type or
+class name, and an "item" is a variable or function name.
+
+*** Fontification levels
+
+The variables font-lock-maximum-decoration and font-lock-maximum-size are
+extended to specify levels and sizes for specific modes. The variable
+font-lock-maximum-decoration specifies the preferred level of fontification for
+modes that provide multiple levels (typically from "subdued" to "gaudy"). The
+variable font-lock-maximum-size specifies the buffer size for which buffer
+fontification is suppressed when Font Lock mode is turned on (typically because
+it would take too long).
+
+These variables can now specify values for individual modes, by supplying
+lists of mode names and values. For example, to use the above mentioned level
+3 decoration for buffers in C/C++ modes, and default decoration otherwise, put:
+
+ (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3)))
+
+in your ~/.emacs. Maximum buffer size values for individual modes are
+specified in the same way with the variable font-lock-maximum-size.
+
+*** Font Lock configuration
+
+The mechanism to provide default settings for Font Lock mode are the variables
+font-lock-defaults and font-lock-maximum-decoration. Typically, you should
+only need to change the value of font-lock-maximum-decoration. However, to
+support Font Lock mode for buffers in modes that currently do not support Font
+Lock mode, you should set a buffer local value of font-lock-defaults for that
+mode, typically via its mode hook.
+
+These variables are used by Font Lock mode to set the values of the variables
+font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table,
+font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search.
+
+You need not set these variables directly, and should not set them yourself
+since the underlining mechanism may change in future.
+
+** Archive mode is now the default mode for various sorts of
+archive files (files whose names end with .arc, .lzh, .zip, and .zoo).
+
+** You can automatically update the years in copyright notice by
+means of (add-hook 'write-file-hooks 'copyright-update).
+Optionally it can update the GPL version as well.
+
+** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can
+be automatically provided with a magic number and be made executable
+by their respective modes under control of various user variables.
+The mode must call (executable-set-magic "perl") or
+(executable-set-magic "make" "-f"). The latter for example has no
+effect on [Mm]akefile.
+
+** Shell script mode now supports over 15 different shells. The new
+command C-c ! executes the region, and optionally beginning of script
+as well, by passing them to the shell.
+
+Cases such as `sh' being a `bash' are now accounted for.
+Fontification now also does variables, the magic number and all
+builtin commands. Shell script mode no longer mingles `tab-width' and
+indentation style. The variable `sh-tab-width' has been renamed to
+`sh-indentation'. Empty lines are now indented like previous
+non-empty line, rather than just previous line.
+
+The annoying $ variable prompting has been eliminated. Instead, shell
+script mode uses `comint-dynamic-completion' for commands, variables
+and filenames.
+
+** Two-column mode now automatically scrolls both buffers together,
+which makes it possible to eliminate the special scrolling commands
+that used to do so.
+
+The commands that operate in two-column mode are no longer bound to
+keys outside that mode. f2 o will now position at the same point in
+associated buffer.
+
+the new command f2 RET inserts a newline in both buffers, at point and
+at the corresponding position in the associated buffer.
+
+** Skeleton commands now work smoothly as abbrev definitions. The
+element < no longer exists, ' is a new element.
+
+** The autoinsert insert facility for prefilling empty files as soon
+as they are found has been extended to accommodate skeletons or calling
+functions. See the function auto-insert.
+
+** TPU-edt Changes
+
+Loading tpu-edt no longer turns on tpu-edt mode. In fact, it is no
+longer necessary to explicitly load tpu-edt. All you need to do to
+turn on tpu-edt is run the tpu-edt function. Here's how to run
+tpu-edt instead of loading the file:
+
+ Running Emacs: Type emacs -f tpu-edt
+ not emacs -l tpu-edt
+
+ Within Emacs: Type M-x tpu-edt <ret>
+ not M-x load-library <ret> tpu-edt <ret>
+
+ In .emacs: Use (tpu-edt)
+ not (load "tpu-edt")
+
+The default name of the tpu-edt X key definition file has changed from
+~/.tpu-gnu-keys to ~/.tpu-keys. If you don't rename the file yourself,
+tpu-edt will offer to rename it the first time you invoke it under
+x-windows.
+
+** MS-DOS Enhancements:
+
+*** Better mouse control by adding the following functions [in dosfns.c]
+msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init.
+
+*** If another foreground/background color than the default is setup in
+your ~/_emacs, then the screen briefly flickers with the default
+colors before changing to the colors you have specified. To avoid
+this, the EMACSCOLORS environment variable exists. It shall be
+defined as a string with the following elements:
+
+ set EMACSCOLORS=fb;fb
+
+The first set of "fb" defines the initial foreground and background
+colors using standard dos color numbers (0=black,.., 7=white).
+If specified, the second set of "fb" defines the colors which are
+restored when you leave emacs.
+
+*** The new SUSPEND environment variable can now be set as the shell to
+use when suspending emacs. This can be used to override the stupid
+limitation on the environment of sub-shells in MS-DOS (they are just
+large enough to hold the currently defined variables, not leaving
+room for more); to overcome this limitation, add this to autoexec.bat:
+
+ set SUSPEND=%COMSPEC% /E:2000
+
+** The escape character can now be displayed on X frames. Try
+this:
+ (aset standard-display-table 27 (vector 27))
+after first creating a display table (you can do that by loading
+the disp-table library).
+
+** The new command-line option --eval specifies an expression to evaluate
+from the command line.
+
+** etags has now the ability to tag Perl files. They are recognised
+either by the .pm and .pl suffixes or by a first line which starts
+with `#!' and specifies a Perl interpreter. The tagged lines are
+those beginning with the `sub' keyword.
+
+New suffixes recognised are .hpp for C++; .f90 for Fortran; .bib,
+.ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for
+prolog (.pl is now Perl).
+
+** The files etc/termcap.dat and etc/termcap.ucb have been replaced
+with a new, merged, and much more comprehensive termcap file. The
+new file should include all the special entries from the old one.
+This new file is under active development as part of the ncurses
+project. If you have any questions about this file, or problems with
+an entry in it, email terminfo@ccil.org.
+
+
+* Lisp changes in Emacs 19.30.
+
+** New Data Types
+
+*** There is a new data type called a char-table which is an array
+indexed by a character. Currently this is mostly equivalent to a
+vector of length 256, but in the future, when a wider character set is
+in use, it will be different. To create one, call
+ (make-char-table SUBTYPE INITIAL-VALUE)
+
+SUBTYPE is a symbol that identifies the specific use of this
+character table. It can be any of these values:
+
+ syntax-table
+ display-table
+ keyboard-translate-table
+ case-table
+
+The function `char-table-subtype' returns the subtype of a char-table.
+You cannot alter the subtype of an existing char-table.
+
+A char-table has an element for each character code. It also has some
+"extra slots". The number of extra slots depends on the subtype and
+their use depends on the subtype. (Each subtype symbol has a
+`char-table-extra-slots' property that says how many extra slots to
+make.) Use (char-table-extra-slot TABLE N) to access extra slot N and
+(set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N.
+
+A char-table T can have a parent, which should be another char-table
+P. If you look for the value in T for character C, and the table T
+actually holds nil, P's element for character C is used instead.
+The functions `char-table-parent' and `set-char-table-parent'
+let you read or set the parent of a char-table.
+
+To scan all the values in a char-table, do not try to loop through all
+possible character codes. That would work for now, but will not work
+in the future. Instead, call map-char-table. (map-char-table
+FUNCTION TABLE) calls FUNCTION once for each character or character
+set that has a distinct value in TABLE. FUNCTION gets two arguments,
+RANGE and VALUE. RANGE specifies a range of TABLE that has one
+uniform value, and VALUE is the value in TABLE for that range.
+
+Currently, RANGE is always a vector containing a single character
+and it refers to that character alone. In the future, other kinds
+of ranges will occur. You can set the value for a given range
+with (set-char-table-range TABLE RANGE VALUE) and examine the value
+for a range with (char-table-range TABLE RANGE).
+
+*** Syntax tables are now represented as char-tables.
+All syntax tables other than the standard syntax table
+normally have the standard syntax table as their parent.
+Their subtype is `syntax-table'.
+
+*** Display tables are now represented as char-tables.
+Their subtype is `display-table'.
+
+*** Case tables are now represented as char-tables.
+Their subtype is `case-table'.
+
+*** The value of keyboard-translate-table may now be a char-table
+instead of a string. Normally the char-tables used for this purpose
+have the subtype `keyboard-translate-table', but that is not required.
+
+*** A new data type called a bool-vector is a vector of values
+that are either t or nil. To create one, do
+ (make-bool-vector LENGTH INITIAL-VALUE)
+
+** You can now specify, for each marker, how it should relocate when
+text is inserted at the place where the marker points. This is called
+the "insertion type" of the marker.
+
+To set the insertion type, do (set-marker-insertion-type MARKER TYPE).
+If TYPE is t, it means the marker advances when text is inserted. If
+TYPE is nil, it means the marker does not advance. (In Emacs 19.29,
+markers did not advance.)
+
+The function marker-insertion-type reports the insertion type of a
+given marker. The function copy-marker takes a second argument TYPE
+which specifies the insertion type of the new copied marker.
+
+** When you create an overlay, you can specify the insertion type of
+the beginning and of the end. To do this, you can use two new
+arguments to make-overlay: front-advance and rear-advance.
+
+** The new function overlays-in returns a list of the overlays that
+overlap a specified range of the buffer. The returned list includes
+empty overlays at the beginning of this range, as well as within the
+range.
+
+** The new hook window-scroll-functions is run when a window has been
+scrolled. The functions in this list are called just before
+redisplay, after the new window-start has been computed. Each function
+is called with two arguments--the window that has been scrolled, and its
+new window-start position.
+
+This hook is useful for on-the-fly fontification and other features
+that affect how the redisplayed text will look when it is displayed.
+
+The window-end value of the window is not valid when these functions
+are called. The computation of window-end is byproduct of actual
+redisplay of the window contents, which means it has not yet happened
+when the hook is run. Computing window-end specially in advance for
+the sake of these functions would cause a slowdown.
+
+The hook functions can determine where the text on the window will end
+by calling vertical-motion starting with the window-start position.
+
+** The new hook redisplay-end-trigger-functions is run whenever
+redisplay in window uses text that extends past a specified end
+trigger position. You set the end trigger position with the function
+set-window-redisplay-end-trigger. The functions are called with two
+arguments: the window, and the end trigger position. Storing nil for
+the end trigger position turns off the feature, and the trigger value
+is automatically reset to nil just after the hook is run.
+
+You can use the function window-redisplay-end-trigger to read a
+window's current end trigger value.
+
+** The new function insert-file-contents-literally inserts the
+contents of a file without any character set translation or decoding.
+
+** The new function safe-length computes the length of a list.
+It never gets an error--it treats any non-list like nil.
+If given a circular list, it returns an upper bound for the number
+of elements before the circularity.
+
+** replace-match now takes a fifth argument, SUBEXP. If SUBEXP is
+non-nil, that says to replace just subexpression number SUBEXP of the
+regexp that was matched, not the entire match. For example, after
+matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means
+to replace just the text that matched `\(ba*r\)'.
+
+** The new keymap special-event-map defines bindings for certain
+events that should be handled at a very low level--as soon as they
+are read. The read-event function processes these events itself,
+and never returns them.
+
+Events that are handled in this way do not echo, they are never
+grouped into key sequences, and they never appear in the value of
+last-command-event or (this-command-keys). They do not discard a
+numeric argument, they cannot be unread with unread-command-events,
+they may not appear in a keyboard macro, and they are not recorded
+in a keyboard macro while you are defining one.
+
+These events do, however, appear in last-input-event immediately after
+they are read, and this is the way for the event's definition to find
+the actual event.
+
+The events types iconify-frame, make-frame-visible and delete-frame
+are normally handled in this way.
+
+** encode-time now supports simple date arithmetic by means of
+out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH
+arguments; for example, day 0 means the day preceding the given month.
+Also, the ZONE argument can now be a TZ-style string.
+
+** command-execute and call-interactively now accept an optional third
+argument KEYS. If specified and non-nil, this specifies the key
+sequence containing the events that were used to invoke the command.
+
+** The environment variable NAME, if set, now specifies the value of
+(user-full-name), when Emacs starts up.
+
+
+
+* User Editing Changes in Emacs 19.29
+
+** If you run out of memory.
+
+If you get the error message "Virtual memory exhausted", type C-x s.
+That way of saving files has the least additional memory needs. Emacs
+19.29 keeps a reserve of memory which it makes available when this
+error happens; that is to ensure that C-x s can complete its work.
+
+Once you have saved your data, you can exit and restart Emacs, or use
+M-x kill-some-buffers to free up space. If you kill buffers
+containing a substantial amount of text, you can go on editing.
+
+Do not use M-x buffer-menu to save or kill buffers when you are out of
+memory, because that needs a fair amount memory itself and you may not
+have enough to get it started.
+
+** The format of compiled files has changed incompatibly.
+
+Byte-compiled files made with Emacs 19.29 normally use a new format
+that will not work in older Emacs versions. You can compile files
+in the old format if you wish; see "Changes in compilation," below.
+
+** Emacs 19.29 supports the DEC Alpha.
+
+** Emacs runs on Windows NT.
+
+This port does not yet support windowing features. It works like a
+text-only terminal, but it does support a mouse.
+
+In general, support for non-GNU-like operating systems is not a high
+priority for the GNU project. We merged in the support for Windows NT
+because that system is expected to be very widely used.
+
+** Emacs supports Motif widgets.
+
+You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif
+when you run configure.
+
+Motif defines collections of windows called "tab groups", and uses the
+tab key and the cursor keys to move between windows in a tab group.
+Emacs naturally does not support this--it has other uses for the tab
+key and cursor keys. Emacs does not support Motif accelerators either,
+because it uses its normal keymap event binding features.
+
+We give higher priority to operation with a free widget set than to
+operation with a proprietary one.
+
+** If Emacs or the computer crashes, you can recover all the files you
+were editing from their auto save files by typing M-x recover-session.
+This first shows you a list of recorded interrupted sessions. Move
+point to the one you choose, and type C-c C-c.
+
+Then recover-session asks about each of the files that were being
+edited during that session, asking whether to recover that file. If
+you answer y, it calls recover-file, which works in its normal
+fashion. It shows the dates of the original file and its auto-save
+file and asks once again whether to recover that file.
+
+When recover-session is done, the files you've chosen to recover
+are present in Emacs buffers. You should then save them.
+Only this--saving them--updates the files themselves.
+
+** Menu bar menus now stay up if you click on the menu bar item and
+release the mouse button within a certain amount of time. This is in
+the X Toolkit version.
+
+** The menu bar menus have been rearranged and split up to make for a
+better organization. Two new menu bar menus, Tools and Search,
+contain items that were formerly in the Files and Edit menus, as well
+as some that did not exist in the menu bar menus before.
+
+** Emacs can now display on more than one X display at the same time.
+Use the command make-frame-on-display to create a frame, specifying
+which display to use.
+
+** M-x talk-connect sets up a multi-user talk connection
+via Emacs. Specify the X display of the person you want to talk to.
+You can talk to any number of people (within reason) by using
+this command repeatedly to specify different people.
+
+Emacs does not make a fuss about security; the people who you talk to
+can use all Emacs features, including visiting and editing files. If
+this frightens you, don't use M-x talk-connect.
+
+** The range of integer values is now at least 2**28 on all machines.
+This means the maximum size of a buffer is at least 2**27-1,
+or 134,217,727.
+
+** When you start Emacs, you can now specify option names in
+long GNU form (starting with `--') and you can abbreviate the names.
+
+You can now specify the options in any order.
+The previous requirements about the order of options
+have been eliminated.
+
+The -L or --directory option lets you specify an additional
+directory to search for Lisp libraries (including libraries
+that you specify with the -l or --load options).
+
+** Incremental search in Transient Mark mode, if the mark is already
+active, now leaves the mark active and does not change its position.
+You can make incremental search deactivate the mark once again with
+this expression.
+
+ (add-hook 'isearch-mode-hook 'deactivate-mark)
+
+** C-delete now deletes a word backwards. This is for compatibility
+with some editors in the PC world. (This key is not available on
+ordinary ASCII terminals, because C-delete is not a distinct character
+on those terminals.)
+
+** ESC ESC ESC is now a command to escape from various temporary modes
+and states.
+
+** M-x pc-bindings-mode sets up bindings compatible with many PC editors.
+In particular, Delete and its variants delete forward instead of backward.
+Use Backspace to delete backward.
+
+C-Backspace kills backward a word (as C-Delete normally would).
+M-Backspace does undo.
+Home and End move to beginning and end of line
+C-Home and C-End move to beginning and end of buffer.
+
+** The key sequence for evaluating a Lisp expression using the minibuffer
+is now ESC :. It used to be ESC ESC, but we moved it to make way for
+the ESC ESC ESC feature, on the grounds that people who evaluate Lisp
+expressions are experienced users and can cope with a change.
+If you prefer the old ESC ESC binding, put in your `~/.emacs':
+
+ (global-set-key "\e\e" 'eval-expression)
+
+** The f1 function key is now equivalent to the help key. This is
+done with key-translation-map; delete the binding for f1 in that map
+if you want to use f1 for something else.
+
+** Mouse-3, in the simplest case, still sets the region. But now, it
+places the mark where point was, and sets point where you click.
+(It used to set the mark where you click and leave point alone.)
+
+If you position point with Mouse-1, then scroll with the scroll bar
+and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1
+even if it has scrolled off the screen (and point is no longer there).
+This makes it easier to select a region with the mouse which is bigger
+than a screenful.
+
+Any editing of the buffer, and any cursor motion or scrolling for any
+reason other than the scroll bar, cancels the special state set up by
+Mouse-1--so that a subsequent Mouse-3 click will use the actual value
+of point.
+
+** C-mouse-3 now pops up a mode-specific menu of commands--normally
+the same ones available in the mode's own menu bar menus.
+
+** C-mouse-2 now pops up a menu of faces, indentation, justification,
+and certain other text properties. This menu is also available
+through the menu-bar Edit menu. It is meant for use with Enriched
+mode.
+
+*** You can use this menu to change the face of the region.
+You can also set the face of the region with the new M-g command.
+
+*** The menu also includes commands for indenting the region,
+which locally changes the values of left-margin and fill-column that
+are used.
+
+*** All fill functions now indent every line to the left-margin. If
+there is also a fill-prefix, that goes after the margin indentation.
+
+*** Open-line and newline also make sure that the lines they create
+are indented to the left margin.
+
+*** It also allows you to set the "justification" of the region:
+whether it should be centered, flush right, and so forth. The fill
+functions (including auto-fill-mode) will maintain the justification
+and indentation that you request.
+
+*** The new function `list-colors-display' shows you what colors are
+available. This is also accessible from the C-mouse-2 menu.
+
+** You can now save and load files including their faces and other
+text-properties by using Enriched-mode. Files are saved in an
+extended version of the MIME text/enriched format. You can use the
+menus described above, or M-g and other keyboard commands, to
+alter the formatting information.
+
+** C-mouse-1 now pops up the menu for changing the frame's default font.
+
+** You can input Hyper, Super, Meta, and Alt characters, as well as
+non-ASCII control characters, on an ASCII-only terminal.
+To do this, use
+
+ C-x @ h -- hyper
+ C-x @ s -- super
+ C-x @ m -- meta
+ C-x @ a -- alt
+ C-x @ S -- shift
+ C-x @ c -- control
+
+These are not ordinary key sequences; they operate through
+function-key-map, which means they can be used even in the
+middle of an ordinary key sequence.
+
+** Outline minor mode and Hideif mode now use C-c @ as their prefix
+character.
+
+** Echo area messages are now logged in the "*Messages*" buffer. The
+size of this buffer is limited to message-log-max lines.
+
+** RET in various special modes for read-only buffers that contain
+lists of items now selects the item point is on. These modes include
+Dired, Compilation buffers, Buffer-menu, Tar mode, and Occur mode.
+(In Info, RET follows the reference near point; in completion list
+buffers, RET chooses the completion around point.)
+
+** set-background-color now updates the modeline face in a special
+way. If that face was previously set up to be reverse video, the
+reverse of the default face, then set-background-color updates it so
+that it remains the reverse of the default face.
+
+** The functions raise-frame and lower-frame are now commands.
+When used interactively, they apply to the selected frame.
+
+** M-x buffer-menu now displays the buffer list in the selected window.
+Use M-x buffer-menu-other-window to display it in another window.
+
+** M-w followed by a kill command now *does not* append the text in
+the kill ring. In consequence, M-w followed by C-w works as you would
+expect: it leaves the top of the kill ring matching the region that
+you killed.
+
+** In Lisp mode, the C-M-x command now executes defvar forms in a
+special way: it unconditionally sets the variable to the specified
+default value, if there is one. Normal execution of defvar does not
+alter the variable if it already has a non-void value.
+
+** In completion list buffers, the left and right arrow keys run the
+new commands previous-completion and next-completion. They move one
+completion at a time.
+
+** While doing completion in the minibuffer, the `prior' or `pageup'
+key switches to the completion list window.
+
+** When you exit the minibuffer with empty contents, the empty string
+is not put in the minibuffer history.
+
+** The default buffer for insert-buffer is now the "first" buffer
+other than the current one. If you have more than one window, this
+is a buffer visible in another window. (Usually it is the buffer
+that C-M-v would scroll.)
+
+** The etags program is now capable of recording tags based on regular
+expressions provided on the command line.
+
+This new feature allows easy support for constructs not normally
+handled by etags, such as the macros frequently used in big C/C++
+projects to define project-specific structures. It also enables the
+use of etags and TAGS files for languages not supported by etags.
+
+The Emacs manual section on Tags contains explanations and examples
+for Emacs's DEFVAR, VHDL, Cobol, Postscript and TCL.
+
+** Various mode-specific commands that used to be bound to C-c LETTER
+have been moved.
+
+*** In gnus-uu mode, gnus-uu-interactive-scan-directory is now on C-c C-d,
+and gnus-uu-interactive-save-current-file is on C-c C-z.
+
+*** In Scribe mode, scribe-insert-environment is now on C-c C-v,
+scribe-chapter is on C-c C-c, scribe-subsection is on C-c C-s,
+scribe-section is on C-c C-t, scribe-bracket-region-be is on C-c C-e,
+scribe-italicize-word is on C-c C-i, scribe-bold-word is on C-c C-b,
+and scribe-underline-word is on C-c C-u.
+
+*** In Gomoku mode, gomoku-human-takes-back is now on C-c C-b,
+gomoku-human-plays is on C-c C-p, gomoku-human-resigns is on C-c C-r,
+and gomoku-emacs-plays is on C-c C-e.
+
+*** In the Outline mode defined in allout.el,
+outline-rebullet-current-heading is now on C-c *.
+
+** M-s in Info now searches through the nodes of the Info file,
+just like s. The alias M-s was added so that you can use the same
+command for searches in both Info and Rmail.
+
+** iso-acc.el now lets you enter inverted-! and inverted-?
+with the sequences ~! and ~?.
+
+** M-x compare-windows now pushes mark in both windows before
+it starts moving point.
+
+** There are two new commands in Dired, A (dired-do-search)
+and Q (dired-do-query-replace). These are similar to tags-search and
+tags-query-replace, but instead of searching the list of files that
+appears in a tags table, they search all the files marked in Dired.
+
+** Changes to dabbrev.
+
+A new function, `dabbrev-completion' (bound to M-C-/), expands the
+unique part of an abbreviation.
+
+Dabbrev now looks for expansions in other buffers, looks for symbols
+instead of words and it works in the minibuffer.
+
+Dabbrev can be customized to work for shell scripts, with variables
+that sometimes have and sometimes haven't a leading "$". See the
+variable 'dabbrev-abbrev-skip-leading-regexp'.
+
+** In Rmail, the command rmail-input-menu has been eliminated. The
+feature of selecting an Rmail file from a menu is now implemented in
+another way.
+
+** Bookmarks changes.
+
+*** It now works to set bookmarks in Info nodes.
+
+*** Bookmarks can have annotations; type "C-h m" after doing
+"M-x list-bookmarks", for more information on annotations.
+
+*** The bookmark-jump popup menu function is now `bookmark-menu-jump', for
+those who bind it to a mouse click.
+
+*** The default bookmarks file name is now "~/.emacs.bmk". If you
+already have a bookmarks file, it will be renamed automagically when
+you next load it.
+
+** New package, ps-print.
+
+The ps-print package generates PostScript printouts of buffers or
+regions, and includes face attributes such as color, underlining,
+boldface and italics in the printed output.
+
+** New package, msb.
+
+The msb package provides a buffer-menu in the menubar with separate
+menus for different types of buffers.
+
+** `cpp.el' is a new library that can highlight or hide parts of a C
+file according to C preprocessor conditionals. To try it, run the
+command M-x cpp-highlight-buffer.
+
+** Changes in CC mode.
+
+*** c-set-offset and related functions and variables can now accept
+variable symbols. Also ++ and -- which mean 2* positive and negative
+c-basic-offset respectively.
+
+*** New variable, c-recognize-knr-p, which controls whether K&R C
+constructs will be recognized. Trying to recognize K&R constructs is a
+time hog so if you're programming strictly in ANSI C, set this
+variable to nil (it should already be nil in c++-mode).
+
+*** New variable, c-hanging-comment-ender-p for controlling
+c-fill-paragraph's behavior.
+
+*** New syntactic symbol: statement-case-open. This is assigned to lines
+containing an open brace just after a case/default label.
+
+*** New variable, c-progress-interval, which controls minibuffer update
+message displays during long re-indention. This is a new feature
+which prints percentage complete messages at specified intervals.
+
+** Makefile mode changes.
+
+*** The electric keys are not enabled by default.
+
+*** There is now a mode-specific menu bar menu.
+
+*** The mode supports font-lock, add-log, and imenu.
+
+*** The command M-TAB does completion of target names and variable names.
+
+** icomplete.el now works more like a minor mode. Use M-x icomplete-mode
+to turn it on and off.
+
+Icomplete now supports an `icomplete-minibuffer-setup-hook', which is
+run on minibuffer setup whenever icompletion will be occurring. This
+hook can be used to customize interoperation of icomplete with other
+minibuffer-specific packages, eg rsz-mini. See the doc string for
+more info.
+
+** Ediff change.
+
+Use ediff-revision instead of vc-ediff. It also replaces rcs-ediff,
+for those who use that; if you want to use a version control package
+other than vc.el, you must set the variable
+ediff-version-control-package to specify which package.
+
+** VC now supports branches with RCS.
+
+You can use C-u C-x C-q to select any branch or version by number.
+It reads the version number or branch number with the minibuffer,
+then checks out the file unlocked.
+
+Type C-x C-q again to lock the selected branch or version.
+When you check in changes to that branch or version, there are two
+possibilities:
+
+-- If you've selected a branch, or a version at the tip of a branch,
+then the new version adds to that branch. If you wish to create a
+new branch, use C-u C-x C-q to specify a version number when you check
+in the new version.
+
+-- If you've selected an inner version which is not the latest in its
+branch, then the new version automatically creates a new branch.
+
+** VC now supports CVS as well as RCS and SCCS.
+
+Since there are no locks in CVS, some things behave slightly
+different when the backend is CVS. When vc-next-action is invoked
+in a directory handled by CVS, it does the following:
+
+ If the file is not already registered, this registers it for version
+control. This does a "cvs add", but no "cvs commit".
+ If the file is added but not committed, it is committed.
+ If the file has not been changed, neither in your working area or
+in the repository, a message is printed and nothing is done.
+ If your working file is changed, but the repository file is
+unchanged, this pops up a buffer for entry of a log message; when you
+finish the log message with C-c C-c, that checks in the resulting
+changes along with the log message as change commentary. A writable
+file remains in existence.
+
+ If vc-next-action changes the repository file, it asks you
+whether to merge in the changes into your working copy.
+
+vc-directory, when started in a CVS file hierarchy, reports
+all files that are modified (and thus need to be committed).
+(When the backend is RCS or SCCS vc-directory reports all
+locked files).
+
+VC has no support for running the initial "cvs checkout" to get a
+working copy of a module. You can only use VC in a working copy of
+a module.
+
+You can disable the CVS support as follows:
+
+ (setq vc-master-templates (delq 'vc-find-cvs-master vc-master-templates))
+
+or by setting vc-handle-cvs to nil.
+
+This may be desirable if you run a non-standard version of CVS, or
+if CVS was compiled with FORCE_USE_EDITOR or (possibly)
+RELATIVE_REPOS.
+
+** Comint and shell mode changes:
+
+*** Completion works with file names containing quoted characters.
+
+File names containing special characters (such as " ", "!", etc.) that are
+quoted with a "\" character are recognised during completion. Special
+characters are quoted when they are inserted during completion.
+
+*** You can use M-x comint-truncate-buffer to truncate the buffer.
+
+When this command is run, the buffer is truncated to a maximum number
+of lines, specified by the variable comint-buffer-maximum-size. Just
+like the command comint-strip-ctrl-m, this can be run automatically
+during process output by doing this:
+
+(add-hook 'comint-output-filter-functions
+ 'comint-truncate-buffer)
+
+** Telnet mode buffer name changed.
+
+The buffer name for a Telnet buffer is now *telnet-HOST*, not
+ *HOST-telnet*. This is for consistency with other Emacs packages.
+
+** M-x man (man) is now faster and more robust. On systems where the
+entire man page is indented, the indentation is removed.
+
+The user option names that used to end in -p now end in -flag. The
+new names are: Man-reuse-okay-flag, Man-downcase-section-letters-flag,
+Man-circular-pages-flag. The Man-notify user option has been renamed to
+Man-notify-method and accepts one more value, `pushy', that just
+switches the current buffer to the manpage buffer, without switching
+frames nor changing your windows configuration.
+
+A new user option Man-fontify-manpage-flag disables fontification
+(thus speeding up man) when set to nil. Default is to fontify if a
+window system is used. Two new user options Man-overstrike-face
+(default 'bold) and Man-underline-face (default 'underline) can be set
+to the preferred faces to be used for the words that man overstrikes
+and underlines. Useful for those who like coloured man pages.
+
+Two new interactive functions are provided: Man-cleanup-manpage and
+Man-fontify-manpage. Both can be used on a buffer that contains the
+output of a `rsh host man manpage' command, or the output of an
+`nroff -man -Tman manpage' command to make them readable.
+Man-cleanup-manpage is faster, but does not fontify.
+
+** The new function modify-face makes it easy to specify
+all the attributes of a face, all at once.
+
+** Faces now support background stippling.
+
+Use the command set-face-stipple to specify the stipple-pattern for a
+face. Use face-stipple to access the specified stipple pattern. The
+existing face functions now handle the stipple pattern when
+appropriate.
+
+If you specify one of the standard gray colors as a face background
+color, and your display doesn't handle gray, Emacs automatically uses
+stipple instead to get the same effect.
+
+** Changes in Font Lock mode.
+
+*** Fontification
+
+Two new default faces are provided; `font-lock-variable-name-face' and
+`font-lock-reference-face'. The face `font-lock-doc-string-face' has
+been removed since it is the same as the existing
+`font-lock-string-face'. Where appropriate, fontification
+automatically uses these new faces.
+
+Fontification via commands `font-lock-mode' and
+`font-lock-fontify-buffer' is now cleanly interruptible (i.e., with
+C-g). If you interrupt during the fontification process, the buffer
+remains in its previous modified state and all highlighting is removed
+from the buffer.
+
+For C/C++ modes, Font Lock mode is much faster but highlights much
+more. Other modes are faster/more extensive/more discriminatory, or a
+combination of these.
+
+To enable Font Lock mode, add the new function `turn-on-font-lock' in
+one of the following ways:
+
+ (add-hook 'c-mode-hook 'turn-on-font-lock)
+
+Or for any visited file with:
+
+ (add-hook 'find-file-hooks 'turn-on-font-lock)
+
+*** Supports color and grayscale displays
+
+Font Lock mode supports different ways of highlighting, depending on
+the type of display and background shade. Attributes (face color,
+bold, italic and underline, and display type and background mode) can
+be controlled either from Emacs Lisp or X resources.
+
+See the new variables `font-lock-display-type' and
+`font-lock-face-attributes'.
+
+*** Supports more modes
+
+The following modes are directly supported:
+
+ada-mode, asm-mode, bibtex-mode, c++-c-mode, c++-mode, c-mode,
+change-log-mode, compilation-mode, dired-mode, emacs-lisp-mode,
+fortran-mode, latex-mode, lisp-mode, mail-mode, makefile-mode,
+outline-mode, pascal-mode, perl-mode, plain-tex-mode, rmail-mode,
+rmail-summary-mode, scheme-mode, shell-mode, slitex-mode, tex-mode,
+texinfo-mode.
+
+See the new variables `font-lock-defaults-alist' and
+`font-lock-defaults'.
+
+Some modes support different levels of fontification. You can choose
+to use the minimum or maximum available decoration by changing the
+value of the new variable `font-lock-maximum-decoration'.
+
+Programmers are urged to make available to the community their own
+keywords for modes not yet supported. See font-lock.el for
+information about efficiency.
+
+*** fast-lock
+
+The fast-lock package speeds up Font Lock mode by saving font choices
+in associated cache files. When you visit a file with Font Lock mode
+and Fast Lock mode turned on for the first time, the file's buffer is
+fontified as normal. When certain events occur (such as exiting
+Emacs), Fast Lock saves the highlighting in a cache file. When you
+subsequently visit this file, its cache is used to restore the
+highlighting.
+
+To use this package, put in your `~/.emacs':
+
+ (add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
+
+To control the use of caches, see the documentation for `fast-lock-mode'.
+
+** You can tell pop-to-buffer to display certain buffers in the selected
+window rather than finding some other window to display them in.
+There are two variables you can use to specify these buffers.
+
+same-window-buffer-names holds a list of buffer names; if a buffer's
+name appears in this list, pop-to-buffer puts it in the selected window.
+
+same-window-regexps holds a list of regexps--if any one of them
+matches a buffer's name, then pop-to-buffer puts that buffer in the
+selected window.
+
+The default values of these variables are not nil: they list various
+buffers that normally appear, when you as for them, in the selected
+window. These include shell buffers, mail buffers, telnet buffers,
+and others. By removing elements from these variables, you can ask
+Emacs to display those buffers in separate windows.
+
+** The special-display-buffer-names and special-display-regexps lists
+have been generalized. An element may now be a list. The car of the list
+is the buffer name or regular expression for matching buffer names.
+
+The cdr of the list can be an alist specifying additional frame
+parameters for use in constructing the special display frame.
+
+Alternatively, the cdr can have this form:
+
+ (FUNCTION ARGS...)
+
+where FUNCTION is a symbol. Then the frame is constructed by calling
+FUNCTION; its first argument is the buffer, and its remaining
+arguments are ARGS.
+
+** If the environment variable REPLYTO is set, its value is the default
+for mail-default-reply-to.
+
+** When you send a message in Emacs, if you specify an Rmail file with
+the FCC: header field, Emacs converts the message to Rmail format
+before writing it. Thus, the file never contains anything but Rmail
+format messages.
+
+** The new variable mail-from-style controls whether the From: header
+should include the sender's full name, and if so, which format to use.
+
+** The new variable mail-personal-alias-file specifies the name of the
+user's personal aliases. This defaults to the file ~/.mailrc.
+mailabbrev.el used to have its own variable for this purpose
+(mail-abbrev-mailrc-file). That variable is no longer used.
+
+** In Buffer-Menu mode, the d and C-d commands (which mark buffers for
+deletion) now accept a prefix argument which serves as a repeat count.
+
+** Changes in BibTeX mode.
+
+*** Reference keys can now be entered with TAB completion. All
+reference keys defined in that buffer and all labels that appear in
+crossreference entries are object to completion.
+
+*** Braces are supported as field delimiters in addition to quotes.
+BibTeX entries may have brace-delimited and quote-delimited fields
+intermixed. The delimiters generated for new entries are specified by
+the variables bibtex-field-left-delimiter and
+bibtex-field-right-delimiter on a buffer-local basis. Those variables
+default to braces, since it is easier to put quote accented characters
+(as the german umlauts) into a brace-delimited entry.
+
+*** The function bibtex-clean-entry can now be invoked with a prefix
+argument. In this case, a label is automatically generated from
+various fields in the record. If bibtex-clean-entry is invoked on a
+record without label, a label is also generated automatically.
+Various variables (all beginning with `bibtex-autokey-') control the
+creation of that key. The variable bibtex-autokey-edit-before-use
+determines, if the user is allowed to edit auto-generated reference
+keys before they are used.
+
+*** A New function bibtex-complete-string completes strings with
+respect to the strings defined in this buffer and a set of predefined
+strings (initialized to the string macros defined in the standard
+BibTeX style files) in the same way in which ispell-complete-word
+works with respect to words in a dictionary. Candidates for
+bibtex-complete-string are initialized from variable
+bibtex-predefined-strings and by parsing the files found in
+bibtex-string-files for @String definitions.
+
+*** Every reference/field pair has now attached a comment which
+appears in the echo area when this field is edited. These comments
+should provide useful hints for BibTeX usage, especially for BibTeX
+beginners. New variable bibtex-help-message determines if these help
+messages are to appear in the minibuffer when moving to a text entry.
+
+*** Inscriptions of menu bar changed from "Entry Types" to
+"Entry-Types" and "Bibtex Edit" to "BibTeX-Edit".
+
+*** The variable bibtex-include-OPTcrossref is now not longer a binary
+switch but a list of reference names which should contain a crossref
+field. E.g., you can tell bibtex-mode you want a crossref field for
+@InProceedings and @InBook entries but for no other.
+
+*** The function validate-bibtex-buffer was completely rewritten to
+validate if a buffer is syntactically correct. find-bibtex-duplicates
+is no longer a function itself but was moved into
+validate-bibtex-buffer.
+
+*** Cleaning a BibTeX entry tests, if necessary fields are there.
+E.g., if you tell bibtex-mode to include a crossref entry, some fields
+are optional which would be required without the crossref entry. If
+you now leave the crossref entry empty and do a bibtex-clean-entry
+with some now required fields left empty, version 2.0 of bibtex.el
+complains about the absence of these fields, whereas version 1.3
+didn't.
+
+*** Default value for variables bibtex-maintain-sorted-entries and
+bibtex-sort-ignore-string-entries is now t.
+
+*** All interactive functions are renamed to begin with `bibtex-'.
+
+*** Keybindings with \C-c\C-e entry changed for unification. Often
+used reference types are now on control-modified keys, mediocre used
+types are on unmodified keys, seldom used types are on shift-modified
+keys and almost never used types on meta-modified keys.
+
+
+* Configuration Changes in Emacs 19.29
+
+** Emacs now uses directory /usr/local/share for most of its installed
+files. This follows a GNU convention for directory usage.
+
+** The option --with-x11 is no longer supported.
+X11 is the only version of X that Emacs 19.29 supports;
+use --with-x if you need to request X support explicitly.
+(Normally this should not be necessary, since configure should
+automatically enable X support if X is installed on your machine.)
+
+** If you use the site-init.el file to set the variable
+mail-host-address to a string in the dumped Emacs, that string becomes
+the default host address for initializing user-mail-address.
+It is used instead of the value of (system-name).
+
+
+* Lisp-Level Changes in Emacs 19.29
+
+** Basic Lisp
+
+*** The range of integer values is now at least 2**28 on all machines.
+This means the maximum size of a buffer is at least 2**27-1,
+or 134,217,727.
+
+*** You can now use Common Lisp syntax for the backquote and comma
+macros. Thus, you can now write `(x ,y z) instead of (` (x (, y) z)).
+
+The old syntax is still accepted.
+
+*** The new function rassoc is like assoc, except that it compares the
+key against the cdr of each alist element, where assoc would compare
+it against the car of each alist element.
+
+*** The new function unintern deletes a symbol from an obarray. The
+first argument can be the symbol to delete, or a string giving its
+name. The second argument specifies the obarray (nil means the
+current default obarray).
+
+If the specified symbol is not in the obarray, or if there's no symbol
+in the obarray matching the specified string, unintern does nothing
+and returns nil. If it does delete a symbol, it returns t.
+
+*** You can specify an alternative read function for use by load and
+eval-region by binding the variable load-read-function to some other
+function. This function should accept one argument just like read.
+If load-read-function is nil, load and eval-region use ordinary read.
+
+*** The new function `type-of' takes any object as argument, and
+returns a symbol identifying the type of that object--one of `symbol',
+`integer', `float', `string', `cons', `vector', `marker', `overlay',
+`window', `buffer', `subr', `compiled-function',
+`window-configuration', `process'.
+
+*** When you use eval-after-load for a file that is already loaded, it
+executes the FORM right away. As before, if the file is not yet
+loaded, it arranges to execute FORM if and when the file is loaded
+later. The result is: if you have called eval-after-load for a file,
+and if that file has been loaded, then regardless of the order of
+these two events, the specified form has been evaluated.
+
+*** The Lisp construct #@NUMBER now skips the next NUMBER characters,
+treating them as a comment.
+
+You would not want to use this in a file you edit by hand, but it is
+useful for commenting out parts of machine-generated files.
+
+*** Two new functions, `plist-get' and `plist-put',
+allow you to modify and retrieve values from lists formatted as property-lists.
+They work like `get' and `put', but operate on any list.
+`plist-put' returns the modified property-list; you must store it
+back where you got it.
+
+*** The new function add-to-list is called with two elements,
+a variable that holds a list and a new element.
+It adds the element to the list unless it is already present.
+It compares elements using `equal'. Here is an example:
+
+(setq foo '(a b)) => (a b)
+
+(add-to-list 'foo 'c) => (c a b)
+
+(add-to-list 'foo 'b) => (c a b)
+
+foo => (c a b)
+
+** Changes in compilation.
+
+Functions and variables loaded from a byte-compiled file
+now refer to the file for their doc strings.
+
+This has a few consequences:
+
+-- Loading the file is faster and uses less memory.
+-- Reference to doc strings is a little slower (the same speed
+ as reference to the doc strings of primitive and preloaded functions).
+-- The compiled files will not work in old versions of Emacs.
+-- If you move the compiled file after loading it, Emacs can no longer
+ find these doc strings.
+-- If you alter the compiled file (such as by compiling a new
+ version), then further access to documentation strings will get
+ nonsense results.
+
+The byte compiler now optionally supports lazy loading of compiled
+functions' definitions. If you enable this feature when you compile,
+loading the compiled file does not actually bring the function
+definitions into core. Instead it creates references to the compiled
+file, and brings each function's definition into core the first time
+you call that function, or when you force it with the new function
+`fetch-bytecode'.
+
+Using the lazy loading feature has a few consequences:
+
+-- Loading the file is faster and uses less memory.
+-- Calling any function in the file for the first time is slower.
+-- If you move the compiled file after loading it, Emacs can no longer
+ find the function definitions.
+-- If you alter the compiled file (such as by compiling a new
+ version), then further access to functions not already loaded
+ will get nonsense results.
+
+To enable the lazy loading feature, set up a non-nil file local
+variable binding for the variable `byte-compile-dynamic' in the Lisp
+source file. For example, put this on the first line:
+
+ -*-byte-compile-dynamic: t;-*-
+
+It's a good idea to use the lazy loading feature for a file that
+contains many functions, most of which are not actually used by a
+given user in a given session.
+
+To turn off the basic feature of referring to the file for doc
+strings, set byte-compile-dynamic-docstrings to nil. You can do this
+globally, or for one source file by adding this to the first line:
+
+ -*-byte-compile-dynamic-docstrings: nil;-*-
+
+** Strings
+
+*** Do not pass integer arguments to `concat' (or `vconcat' or
+`append'). We are phasing out the old unrecommended support for
+integers as arguments to these functions, in preparation for treating
+numbers as single characters in a future release. To concatenate
+numbers in string form, use `number-to-string' first, or rewrite the
+call to use `format' instead of `concat'.
+
+*** The new function match-string returns the string of text matched at
+the given parenthesized expression by the last regexp search, or nil
+if there was no match. If the last match was by `string-match' on a
+string, the string must be given. Therefore, this function can be
+used in place of `buffer-substring' and `substring', when using
+`match-beginning' and `match-end' to find match positions.
+
+ (match-string N) or (match-string N STRING)
+
+*** The function replace-match now accepts an optional fourth argument,
+STRING. Use this after performing string-match on STRING, to replace
+the portion of STRING that was matched. When used in this way,
+replace-match returns a newly created string which is the same as
+STRING except for the matched portion.
+
+*** The new function buffer-substring-no-properties
+is like buffer-substring except that the string it returns
+has no text properties.
+
+*** The function `equal' now considers two strings to be different
+if they don't have the same text properties.
+
+** Completion
+
+*** all-completions now takes an optional fourth argument.
+If that argument is non-nil, completions that start with a space
+are ignored unless the initial string also starts with a space.
+(This used to happen unconditionally.)
+
+** Local Variables
+
+*** Local hook variables.
+
+There is now a clean way to give a hook variable a buffer-local value.
+Call the function `make-local-hook' to do this.
+
+Once a hook variable is buffer-local, you can add hooks to it either
+globally or locally. run-hooks runs the local hook functions
+of the current buffer, then all the global hook functions.
+
+The functions add-hook and remove-hook take an additional optional
+argument LOCAL which says whether to add (or remove) a local hook
+function or a global one.
+
+Local hooks use t as an element of the (local) value of the hook
+variable as a flag meaning to use the global value also.
+
+*** The new function local-variable-p tells you whether a particular
+variable is buffer-local in the current buffer or a specified buffer.
+
+** Editing Facilities
+
+*** The function copy-region-as-kill no longer sets this-command;
+as a result, a following kill command will not normally append
+to the text saved by copy-region-as-kill.
+
+*** Regular expression searching and matching no longer performs full
+Posix backtracking by default. They now stop with the first match found
+instead of looking for the longest match--just as they did in Emacs 18.
+The reason for this change is to get higher speed.
+
+There are new functions you can use if you really want to search or
+match with Posix behavior: posix-search-forward,
+posix-search-backward, posix-looking-at, and posix-string-match. Call
+these just like re-search-forward, re-search-backward, looking-at, and
+string-match.
+
+** Files
+
+*** The new variable `format-alist' defines file formats,
+which are ways of translating between the data in a file and things
+(text, text-properties, and possibly other information) in a buffer.
+
+`format-alist' has one element for each format. Each element is a
+list like this:
+ (NAME DOC-STRING REGEXP FROM-FN TO-FN MODIFY MODE-FN)
+containing the name of the format, a documentation string, a regular
+expression which is used to recognize files in that format, a decoding
+function, an encoding function, a flag that indicates whether the
+encoding function modifies the buffer, and a mode function.
+
+FROM-FN is called to decode files in that format; it gets two args, BEGIN
+ and END, and can make any modifications it likes, returning the new
+ end position. It must make sure that the beginning of the file no
+ longer matches REGEXP, or else it will get called again.
+TO-FN is called to encode a region into that format; it is also passed BEGIN
+ and END, and either returns a list of annotations as in
+ `write-region-annotate-functions', or modifies the region and returns
+ the new end position.
+MODIFY, if non-nil, means the TO-FN modifies the region. If nil, TO-FN may
+ not make any changes and should return a list of annotations.
+
+`insert-file-contents' checks the beginning of the file that it is
+inserting to see if it matches one of the regexps. If so, then it
+calls the decoding function, and then looks for another match. When
+visiting a file, it also calls the mode function, and sets the
+variable `buffer-file-format' to the list of formats that the file
+used.
+
+`write-region' calls the encoding functions for each format in
+`buffer-file-format' before it writes the file. To save a file in a
+different format, either set `buffer-file-format' to a different
+value, or call the new function `format-write-file'.
+
+Since some encoding functions may be slow, you can request that
+auto-save use a format different from the buffer's default by setting
+the variable `auto-save-file-format' to the desired format. This will
+determine the format of all auto-save files.
+
+*** The new function file-ownership-preserved-p tells you whether
+deleting a file and recreating it would keep the file's owner
+unchanged.
+
+*** The new function file-regular-p returns t if a file
+is a "regular" file (not a directory, symlink, named pipe,
+terminal, or other I/O device).
+
+*** The new function file-name-sans-extension discards the extension
+of a file name. You call it with a file name, and returns a string
+lacking the extension.
+
+*** The variable path-separator is a string which says which
+character separates directories in a search path. It is ":"
+for Unix and GNU systems, ";" for MSDOG and Windows NT.
+
+** Commands and Key Sequences
+
+*** Key sequences consisting of C-c followed by {, }, <, >, : or ; are
+now reserved for major modes. Sequences consisting of C-c followed by
+any other punctuation character are now meant for minor modes. We don't
+plan to convert all existing major modes to stop using those sequences,
+but we hope to keep them to a minimum.
+
+*** When the post-command-hook or the pre-command-hook gets an error, the error
+is silently ignored. Emacs no longer sets the hook variable to nil when this
+happens. Meanwhile, the hook functions can now alter the hook variable in
+a normal fashion; there is no need to do anything special.
+
+*** define-key, lookup-key, and various other functions for changing or
+looking up key bindings now let you write an event type with a list
+like (ctrl meta newline) or (meta ?d), as in XEmacs. (ctrl meta newline)
+is equivalent to the event type symbol C-M-newline, and (meta ?d)
+is equivalent to the character ?\M-d.
+
+*** The function event-convert-list converts a list such as
+(meta ?d) into the corresponding event type (a symbol or integer).
+
+*** In an interactive spec, `k' means to read a key sequence. In this
+key sequence, upper case characters and shifted function keys which
+have no bindings are converted to lower case if that makes them
+defined.
+
+The new interactive code `K' reads a key sequence similarly, but does
+not convert the last event. `K' is useful for reading a key sequence
+to be given a binding.
+
+*** The variable overriding-local-map now has no effect on the menu bar
+display unless overriding-local-map-menu-flag is non-nil. This is why
+incremental search no longer temporarily changes the menu bars.
+
+Note that overriding-local-map does still affect the execution of key
+sequences entered using the menu bar. So if you use
+overriding-local-map, and a menu bar key sequence comes in, you should
+make sure to clear overriding-local-map before that key sequence gets
+looked up and executed. But this is what you'd normally do anyway:
+programs that use overriding-local-map normally exit and "put back"
+any event such as menu-bar that they do not handle specially.
+
+*** The new variable `overriding-terminal-local-map' is like
+overriding-local-map, but is specific to a single terminal.
+
+*** delete-frame events.
+
+When you use the X window manager's "delete window" command, this now
+generates a delete-frame event. The standard definition of this event
+is a command that deletes the frame that received the event, and kills
+Emacs when the last visible or iconified frame is deleted. You can
+rebind the event to some other command if you wish.
+
+*** Two new types of events, iconify-frame and make-frame-visible,
+indicate that the user iconified or deiconified a frame with the
+window manager. Since the window manager has already done the work,
+the default definition for both event types in Emacs is to do nothing.
+
+** Frames and X
+
+*** Certain Lisp variables are now local to an X terminal (in other
+words, all the screens of a single X server). The value in effect, at
+any given time, is the one that belongs to the terminal of the
+selected frame. The terminal-local variables are
+default-minibuffer-frame, system-key-alist, defining-kbd-macro, and
+last-kbd-macro. There is no way for Lisp programs to create others.
+
+The terminal-local variables cannot be buffer-local.
+
+*** When you create an X frame, for the `top' and `left' frame
+parameters, you can now use values of the form (+ N) or (- N), where N
+is an integer. (+ N) means N pixels to the right of the left edge of
+the screen and (- N) means N pixels to the left of the right edge. In
+both cases, N may be zero (exactly at the edge) or negative (putting
+the window partly off the screen).
+
+The function x-parse-geometry can return values of these forms
+for certain inputs.
+
+*** The variable menu-bar-file-menu has been renamed to
+menu-bar-files-menu to match the actual item that appears in the menu.
+(All the other such variable names do match.)
+
+*** The new function active-minibuffer-window returns the minibuffer window
+currently active, or nil if none is now active.
+
+*** In the functions next-window, previous-window, next-frame,
+previous-frame, get-buffer-window, get-lru-window, get-largest-window
+and delete-windows-on, if you specify 0 for the last argument,
+it means to consider all visible and iconified frames.
+
+*** When you set a frame's cursor type with modify-frame-parameters,
+you can now specify (bar . INTEGER) as the cursor type. This stands
+for a bar cursor of width INTEGER.
+
+*** The new function facep returns t if its argument is a face name
+(or if it is a vector such as is used internally by the Lisp code
+to represent a face).
+
+*** Each frame can now have a buffer-predicate function,
+which is the `buffer-predicate' frame parameter.
+When `other-buffer' looks for an alternative buffer, it considers
+only the buffers that fit the selected frame's buffer predicate (if it
+has one). This is useful for applications that make their own frames.
+
+*** When you create an X frame, you can now specify the frame parameter
+`display'. This says which display to put the frame on. The value
+should be a display name--a string of the form
+"HOST:DPYNUMBER.SCREENNUMBER".
+
+The functions x-server-... and x-display-... now take an optional
+argument which specifies the display to ask about. You can use either
+a display name string or a frame. A value of nil stands for the
+selected frame.
+
+To close the connection to an X display, use the function
+x-close-connection. Specify which display with a display name. You
+cannot close the connection if Emacs still has frames open on that
+display.
+
+x-display-list returns a list indicating which displays Emacs has
+connections to. Its elements are display names (strings).
+
+*** The icon-type frame parameter may now be a file name.
+Then the contents of that file specify the icon bitmap to use
+for that frame.
+
+*** The title of an Emacs frame, displayed by most window managers, is
+set from frame-title-format or icon-title-format. These have the same
+structure as mode-line-format.
+
+*** x-display-grayscale-p is a new function that returns non-nil if
+your X server can display shades of gray. Currently it returns
+non-nil for color displays (because they can display shades of gray);
+we may change it in the next version to return nil for color displays.
+
+*** The frame parameter scroll-bar-width specifies the width of the
+scrollbar in pixels.
+
+** Buffers
+
+*** Creating a buffer with get-buffer-create does not obey
+default-major-mode. That variable is now handled in a separate
+function, set-buffer-major-mode. get-buffer-create and generate-new-buffer
+always leave the newly created buffer in Fundamental mode.
+
+Creating a new buffer by visiting a file or with switch-to-buffer,
+pop-to-buffer, and similar functions does call set-buffer-major-mode
+to select the default major mode specified with default-major-mode.
+
+*** You can now create an "indirect buffer". An indirect buffer shares
+its text, including text properties, with another buffer (the "base
+buffer"), but has its own major mode, local variables, overlays, and
+narrowing. An indirect buffer has a name of its own, distinct from
+those of the base buffer and all other buffers. An indirect buffer
+cannot itself be visiting a file (though its base buffer can be).
+The base buffer cannot itself be indirect.
+
+Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer
+named NAME whose base is BASE-BUFFER. If BASE-BUFFER is an indirect
+buffer, its base buffer is used as the base for the new buffer.
+
+You can make an indirect buffer current, or switch to it in a window,
+just as you would a non-indirect buffer.
+
+The function buffer-base-buffer, given an indirect buffer, returns its
+base buffer. It returns nil when given an ordinary buffer (not
+indirect).
+
+The library `noutline' has versions of Outline mode and Outline minor
+mode which let you display different parts of the outline in different
+indirect buffers.
+
+** Subprocesses
+
+*** The functions call-process and call-process-region now allow
+you to direct error message output from the subprocess into a
+separate destination, instead of mixing it with ordinary output.
+To do this, specify for the third argument, BUFFER, a list of the form
+ (BUFFER-OR-NAME ERROR-DESTINATION)
+BUFFER-OR-NAME specifies where to put ordinary output; it should
+be a buffer or buffer name, or t, nil or 0. This is what would
+have been the BUFFER argument, ordinarily.
+
+ERROR-DESTINATION specifies where to put the error output.
+nil means discard it, t means mix it with the ordinary output,
+and a string specifies a file name to write this output into.
+
+You can't specify a buffer to put the error output in; that is not
+easy to implement directly. You can put the error output into a
+buffer by sending it to a temporary file and then inserting the file
+into a buffer.
+
+*** Comint mode changes:
+
+**** The variable comint-completion-addsuffix can also be a cons pair
+of the form (DIRSUFFIX . FILESUFFIX), where DIRSUFFIX and FILESUFFIX are
+strings added on unambiguous or exact completion of directories and file
+names, respectively.
+
+** Text properties
+
+*** You can now specify which values of the `invisible' property
+make text invisible in a given buffer. The variable
+`buffer-invisibility-spec', which is always local in all buffers,
+controls this.
+
+If its value is t, then any non-nil `invisible' property makes
+a character invisible.
+
+If its value is a list, then a character is invisible if its
+`invisible' property value appears as a member of the list, or if it
+appears as the car of a member of the list.
+
+When the `invisible' property value appears as the car of a member of
+the `buffer-invisibility-spec' list, then the cdr of that member has
+an effect. If it is non-nil, then an ellipsis appears in place of the
+character. (This happens only for the *last* invisible character in a
+series of consecutive invisible characters, and only at the end of a
+line.)
+
+If a character's `invisible' property is a list, then Emacs checks each
+element of the list against `buffer-invisibility-spec'. If any element
+matches, the character is invisible.
+
+*** The command `list-text-properties-at' shows what text properties
+are in effect at point.
+
+*** Frame objects now exist in Emacs even on systems that don't support
+X Windows. You can create multiple frames, and switch between them
+using select-frame. The selected frame is actually displayed on your
+terminal; other frames are not displayed at all. The selected frame
+number appears in the mode line after `Emacs', except for frame 1.
+
+Switching frames on ASCII terminals is therefore more or less
+equivalent to switching between different window configurations.
+
+*** The new variable window-size-change-functions holds a list of
+functions to be called if window sizes change (or if windows are
+created or deleted). The functions are called once for each frame on
+which changes have occurred, with the frame as the sole argument.
+This takes place shortly before redisplay.
+
+*** The modification hook functions of overlays now work differently.
+They are called both before and after each change. This makes it
+possible for the functions to determine exactly what the change was.
+
+This change affects three overlay properties: the modification-hooks
+property, a list of functions called for deletions overlapping the
+overlay's range and for insertions inside it; the
+insert-in-front-hooks, a list of functions called for insertions at
+the beginning of the overlay; and the insert-behind-hooks, a list of
+functions called for insertions at the end of the overlay.
+
+Each function is called both before and after each change that it
+applies to. Before the change, it is called with four arguments:
+ (funcall FUNCTION OVERLAY nil START END)
+START and END are the same arguments that the before-change-functions
+receive.
+
+After the change, each function is called with five arguments:
+ (funcall FUNCTION OVERLAY t START END OLDSIZE)
+The last arguments, START and END and OLDSIZE,
+are the same arguments that the after-change-functions receive.
+
+This means the function must accept either four or five arguments.
+
+*** You can set defaults for text-properties with the new variable
+`default-text-properties'. Its value is a property list; the values
+specified there are used whenever a character (or its category) does
+not specify a value.
+
+*** The `face' property of a character or an overlay can now be a list
+of face names. Formerly it had to be just one face name.
+
+*** Changes in handling the `intangible' text property.
+
+**** If inhibit-point-motion-hooks is non-nil, then `intangible' properties
+are ignored.
+
+**** Moving to just before a stretch of intangible text
+is no longer special in any way. Point stays at that place.
+
+**** When you move point backwards into the midst of intangible text,
+point moves back to the beginning of that text. (It used to move
+forward to the end of that text, which was not very useful.)
+
+**** When moving across intangible text, Emacs stops wherever the
+property value changes. So if you have two stretches of intangible
+text, with different non-nil intangible properties, it is possible to
+place point between them.
+
+** Overlays
+
+*** Overlay changes.
+
+**** The new function previous-overlay-change returns the position of
+the previous overlay start or end, before a specified position. This
+is the backwards-moving counterpart of next-overlay-change.
+
+**** overlay-get now supports category properties on an overlay
+the same way get-text-property supports them as text properties.
+
+Specifically, if an overlay does not have the property PROP that you
+ask for, but it does have a `category' property which is a symbol,
+then that symbol's PROP property is used.
+
+**** If an overlay has a non-nil `evaporate' property, it will be
+deleted if it ever becomes empty (i.e., when it spans no characters).
+
+**** If an overlay has a `before-string' and/or `after-string' property,
+these strings are displayed at the overlay's endpoints.
+
+** Filling
+
+*** The new variable fill-paragraph-function provides a way for major
+modes to override the filling of paragraphs. If this is non-nil,
+fill-paragraph calls it as a function, passing along its sole
+argument. If the function returns non-nil, fill-paragraph assumes it
+has done the job and simply passes on whatever value it returned.
+
+The usual use of this feature is to fill comments in programming
+language modes.
+
+*** Text filling and justification changes:
+
+**** The new variable use-hard-newlines can be used to make a
+distinction between "hard" and "soft" newlines; the fill functions
+will then never remove a newline that was manually inserted. Hard
+newlines are marked with a non-nil `hard' text-property.
+
+**** The fill-column and left-margin can now be modified by text-properties.
+Most lisp programs should use the new functions (current-fill-column) and
+(current-left-margin), which return the proper values to use for the
+current line.
+
+**** There are new functions for dealing with margins:
+
+***** Set-left-margin and set-right-margin (set the value for a region
+and re-fill). These functions take three arguments: two to specify
+a region, and the desired margin value.
+
+***** Increase-left-margin, decrease-left-margin, increase-right-margin, and
+decrease-right-margin (change settings relative to current values, and
+re-fill).
+
+***** move-to-left-margin moves point there, optionally adding
+indentation or changing tabs to spaces in order to make that possible.
+beginning-of-line-text also moves past the fill-prefix and any
+indentation added to center or right-justify a line, to the beginning
+of the text that the user actually typed.
+
+***** delete-to-left-margin removes any left-margin indentation, but
+does not change the property.
+
+**** The paragraph-movement functions look for the paragraph-start and
+paragraph-separate regexps at the current left margin, not at the
+beginning of the line. This means that those regexps should NOT use ^
+to anchor the search. However, for backwards compatibility, a ^ at
+the beginning of the regexp will be ignored, so most packages won't break.
+
+**** justify-current-line is now capable of doing left, center, or
+right justification as well as full justification.
+
+**** The fill functions can do any kind of justification based on the new
+`justification' text-property and `default-justification' variable,
+or arguments to the functions. They also have a new option which
+defeats the normal removal of extra whitespace.
+
+**** The new function `current-justification' returns the kind of
+justification used for the current line. The new function
+`set-justification' can be used to change it, including re-justifying
+the text of the region according to the new value.
+
+**** Filling and auto-fill are disabled if justification is `none'.
+
+**** The auto-fill-function is now called regardless of whether
+the fill-column has been exceeded; the function can determine on its
+own whether filling (or justification) is necessary.
+
+** Processes
+
+*** process-tty-name is a new function that returns the name of the
+terminal that the process itself reads and writes on (not the name of
+the pty that Emacs uses to talk with that terminal).
+
+*** Errors in process filters and sentinels are now normally caught
+automatically, so that they don't abort other Lisp programs.
+
+Setting debug-on-error non-nil turns off this feature; then errors in
+filters and sentinels are not caught. As a result, they can invoke
+the debugger, under the control of debug-on-error.
+
+*** Emacs now preserves the match data around the execution of process
+filters and sentinels. You can use search and match functions freely
+in filters and sentinels without explicitly bothering to save the
+match data.
+
+** Display
+
+*** The variable message-log-max controls how messages are logged in the
+"*Messages*" buffer. An integer value means to keep that many lines;
+t means to log with no limit; nil means disable message logging. Lisp
+code that calls `message' excessively (e.g. isearch.el) should probably
+bind this variable to nil.
+
+*** Display tables now have a new element, at index 261, specifying the
+glyph to use for the separator between two side-by-side windows. By
+default, this is the vertical bar character `|'. Probably the only
+other useful character to store for this element is a space, to make
+less visual separation between two side-by-side windows displaying
+related information.
+
+*** The new mode-line-format spec %c displays the current column number.
+
+*** The new variable blink-matching-delay specifies how long to keep
+the cursor at the matching open-paren, after you insert a close-paren.
+This is useful mainly on systems which can wait for a fraction of a
+second--you can then specify fractional values such as 0.5.
+
+*** Faster processing of buffers with long lines
+
+The new variable cache-long-line-scans determines whether Emacs
+should use caches to handle long lines more quickly. This variable is
+buffer-local, in all buffers.
+
+Normally, the line-motion functions work by scanning the buffer for
+newlines. Columnar operations (like `move-to-column' and
+`compute-motion') also work by scanning the buffer, summing character
+widths as they go. This works well for ordinary text, but if the
+buffer's lines are very long (say, more than 500 characters), these
+motion functions will take longer to execute. Emacs may also take
+longer to update the display.
+
+If cache-long-line-scans is non-nil, these motion functions cache
+the results of their scans, and consult the cache to avoid rescanning
+regions of the buffer until the text is modified. The caches are most
+beneficial when they prevent the most searching---that is, when the
+buffer contains long lines and large regions of characters with the
+same, fixed screen width.
+
+When cache-long-line-scans is non-nil, processing short lines will
+become slightly slower (because of the overhead of consulting the
+cache), and the caches will use memory roughly proportional to the
+number of newlines and characters whose screen width varies.
+
+The caches require no explicit maintenance; their accuracy is
+maintained internally by the Emacs primitives. Enabling or disabling
+the cache should not affect the behavior of any of the motion functions;
+it should only affect their performance.
+
+** System Interface
+
+*** The function user-login-name now accepts an optional
+argument uid. If the argument is non-nil, user-login-name
+returns the login name for that user id.
+
+*** system-name, user-name, user-full-name and user-real-name are now
+variables as well as functions. The variables hold the same values
+that the functions would return. The new variable multiple-frames
+is non-nil if at least two non-minibuffer frames are visible. These
+variables may be useful in constructing the value of frame-title-format
+or icon-title-format.
+
+*** Changes in time-conversion functions.
+
+**** The new function format-time-string takes a format string and a
+time value. It converts the time to a string, according to the format
+specified. You can specify what kind of conversion to use with
+%-specifications.
+
+**** The new function decode-time converts a time value into a list of
+specific items of information: the year, month, day of week, day of
+month, hour, minute and second. (A time value is a list of two or
+three integers.)
+
+**** The new function encode-time converts specific items of time
+information--the second, minute, hour, day, month, year, and time
+zone--into a time value.
+
+
+
+* Changes in Emacs 19.27
+
+There are no changes; however, here is one bug fix made in 19.26 that users
+think should be documented here.
+
+** SPC and DEL in Info now handle menus consistently.
+
+SPC and DEL scroll through an entire subtree an Info manual. Once you
+scroll through a node far enough to reach a menu, SPC begins moving
+into the subnodes of the menu, starting with the first one. When you
+reach the end of a subnode, SPC moves into the next subnode, and so
+on.
+
+DEL more or less scrolls through the same text in reverse order.
+
+
+
+* User Editing Changes in Emacs 19.26
+
+** In the X toolkit version, if you click on a menu bar item and
+release the button quickly outside the menu, the menu remains visible
+until you click or type something else. If you click on the menu, you
+select from the menu. Any other mouse click makes the menu disappear.
+Keyboard input gets rid of the menu and then is processed normally.
+
+"Quickly" means within double-click-time milliseconds.
+
+** The C-x 5 commands to select a buffer in "another frame" now use an
+existing iconified frame, if any, deiconifying it. They also raise
+the frame.
+
+** Region highlighting on a black-and-white-only display now uses
+underlining. Inverse-video had the problem that you couldn't see
+the cursor.
+
+** You can now change the height of a window by pressing mouse-1 on
+the mode line and dragging it up and down.
+
+** If you set the environment variable LC_CTYPE to iso_8859_1 or
+iso-8859-1, Emacs automatically sets up for display and syntactic
+handling of the ISO Latin-1 character set.
+
+This does not automatically load any of the packages for input of
+these characters, because it's not yet clear what is right to do.
+You must still explicitly load either iso-transl or iso-acc.
+
+** For a read-only buffer that is also modified, the mode line now displays
+%* instead of %%.
+
+** M-prior (scroll-other-window-down) is a new command that works like
+M-next (and C-M-v) but scrolls in the opposite direction.
+
+M-home moves to the beginning of the buffer, in the other window.
+M-end moves to the end of the buffer, in the other window. These two
+commands, along with M-next and M-prior, form a series of commands for
+moving around in the other window.
+
+** In change logs, the mail address is now delimited with <...> instead
+of (...).
+
+This makes it a little more convenient to extract the mail address for
+use in mailing a message.
+
+** In Shell mode and other comint modes, C-a has now returned to
+its ordinary meaning: move to the beginning of the line.
+Use C-c C-a to move to the end of the prompt.
+
+** If you set mail-signature to t to cause automatic insertion of
+your .signature file, you now get a -- before the signature.
+
+** Setting rmail-highlighted-headers to nil entirely turns off
+highlighting in Rmail. However, if your motivation for doing this is
+that the highlighted text doesn't look good on your display, it might
+be better to change the appearance of the `highlight' face. Once
+you've done that, you may find Rmail highlighting is useful.
+
+** In the calendar, mouse-2 is now used only for commands that apply to a date.
+If you click it when not on a date, it gives an immediate error.
+
+Mouse-3 in the calendar now gives a menu of commands that do not apply
+to a particular date.
+
+The D command displays diary entries from a specified diary file (not
+your standard diary file).
+
+** In the gnus-uu package, the binding for gnus-uu-threaded-decode-and-view
+is now C-c C-v C-d, not C-c C-v C-h. Thus, C-c C-v C-h is now available
+for asking for a list of the subcommands of C-c C-v.
+
+** You can now specify "who you are" for various Emacs packages by
+setting just one variable, user-mail-address. This currently applies
+to posting news with GNUS and to making change log entries. It may
+apply to additional Emacs features in the future.
+
+
+* Lisp-Level Changes in Emacs 19.26:
+
+** The function insert-char now takes an optional third argument
+which, if non-nil, says the inserted characters should inherit sticky
+text properties from the surrounding text.
+
+** The `diary' library has been renamed to `diary-lib'. If you refer
+to this library in your Lisp code, you must update the references.
+
+** Sending text to a subprocess can read input from subprocesses if it
+has to wait because the destination subprocess's terminal input buffer
+is full.
+
+It was already possible in unusual occasions for this operation to
+read subprocess input, but it did not happen very often. It is now
+more likely to happen.
+
+** last-nonmenu-event is now bound to t around filter functions and sentinels.
+This is to ensure that y-or-n-p and yes-or-no-p use the keyboard by default.
+
+** In mode lines, %+ now displays as % for unmodified read-only
+buffers. It is now the same as %* except in the case of a modified
+read-only buffer; in that case, %+ displays as *.
+
+The old meaning of %+ is now available on %&.
+It displays * for a modified buffer and - for an unmodified buffer,
+regardless of read-only status.
+
+** You can now use `underline' in the color list of a face.
+It serves as a last resort, and says to underline the face
+(if previous color list elements can't be used).
+
+** The new function x-color-values returns the list of color values
+for a given color name (a string). The list contains three integers
+which give the amounts of red, green and blue in the color: (R G B).
+
+** In run-at-time, 0 as the repeat interval means "don't repeat".
+
+** The variable trim-versions-without-asking has been renamed to
+delete-old-versions.
+
+** The new function other-window-for-scrolling returns the choice of
+other window for C-M-v to scroll.
+
+** Note that the function fceiling was mistakenly documented as fceil before.
+
+
+* Changes in cc-mode.el in Emacs 19.26:
+
+** A new syntactic symbol has been added: substatement-open. It
+ defines the open brace of a substatement block. These used to get:
+ ((block-open ...) (substatement . ...)).
+
+ Non-block substatement lines still get just ((substatement . ...))
+
+ Note that the custom indent function c-adaptive-block-open has been
+ removed as obsolete.
+
+** You can now specify the `hanginess' of closing braces. See
+ c-hanging-braces-alist.
+
+** Recognizes try and catch blocks in C++. They are given the
+ substatement syntactic symbol.
+
+** should be generally more forgiving about non-GNU standard top-level
+ construct definition styles (i.e. where the function/class/struct
+ opening brace does not start in column zero).
+
+ If you hang the braces that open a top-level construct on the right
+ edge, and you find you still need to define defun-open-prompt (Emacs
+ 19) please let me know. Note that there may still be performance
+ issues related to non-column zero opening braces.
+
+** c-macro-expand is put on C-c C-e
+
+** New style: "Default". Resets indentation to those shipped with
+ cc-mode.el.
+
+** internal defun c-indent-via-language-element has been renamed
+ c-indent-line for compatibility with c-mode.el and awk-mode.
+
+** new buffer-local variable c-comment-start-regexp for (potential)
+ flexibility in adding new modes based on cc-mode.el
+
+
+
+* Changes in Emacs 19.25
+
+The variable x-cross-pointer-shape (which didn't really exist) has
+been renamed to x-sensitive-text-pointer-shape, and now does exist.
+
+
+
+* Changes in Emacs 19.24
+
+Here is a list of new Lisp packages introduced since 19.22.
+
+derived.el Define new major modes based on old ones.
+dired-x.el Extra Dired features.
+double.el New mode for conveniently inputting non-beyond chars.
+easymenu.el Create menus easily.
+ediff.el Snazzy diff interface.
+foldout.el A kind of outline mode designed for editing programs.
+gnus-uu.el UUdecode in GNUS buffers.
+ielm.el Interactively evaluate Lisp.
+ This is a replacement for Lisp Interaction Mode.
+iso-cvt.el Conversion of beyond-ASCII characters between
+ various different representations.
+jka-compr.el Automatic compression/decompression.
+mldrag.el Drag modeline to change heights of windows.
+mail-hist.el Provides history for headers of outgoing mail.
+rsz-mini.el Automatically resizing minibuffers.
+s-region.el Set region by holding shift.
+skeleton.el Templates for statement insertion.
+soundex.el Classifying words by how they sound.
+tempo.el Template insertion with hotspots.
+
+
+
+* User Editing Changes in 19.23.
+
+** Emacs 19.23 uses Ispell version 3.
+
+Previous Emacs 19 versions used Ispell version 4. That version had
+improvements in storing the dictionary compactly, but these are not
+very important nowadays. Meanwhile, in parallel to the work on Ispell
+4, many useful features were added to Ispell 3. Until a few months
+ago, the terms on Ispell 3 did not let us use it; but they have now
+been changed, so now we are using it. We are dropping Ispell 4.
+
+** Emacs 19.23 can run on MS-DOG. See the file MSDOS in the same
+directory as this file.
+
+** Emacs 19.23 can work with an X toolkit. You must specify toolkit
+operation when you configure Emacs: use the option
+--with-x-toolkit=yes. (This option uses code developed by Lucid;
+thanks to Frederic Pierresteguy for helping to adapt it.)
+
+** Emacs now has dialog boxes; yes/no and y/n questions automatically
+use them in commands invoked with the mouse. For more information,
+see below under "Lisp programming changes".
+
+** Menus now display the keyboard equivalents (if any) of the menu
+commands in parentheses after the menu item.
+
+** Kill commands, used in a read-only buffer, now move point across
+the text they would otherwise have killed. This way, you can use
+repeated kill commands to transfer text into the kill ring.
+
+** There is now a global mark ring in addition to the mark ring that is local
+to each buffer. The global mark ring stores positions in any buffer. Any
+time the mark is set and the current buffer is different from the last time
+the mark was set, the new mark is pushed on the global mark ring as well.
+The new command C-x C-SPC (pop-global-mark) pops the global mark ring and
+jumps to the last mark pushed, first switching to that buffer.
+
+** Query Replace is now available in the Edit menu.
+
+** ESC no longer simply exits a Query Replace. It now exits the Query
+Replace and remains pending. Thus, ESC A and M-A are now equivalent
+in Query Replace.
+
+To simply exit a Query Replace, type RET or Period.
+
+** M-mouse-2 now puts point at the end of the yanked secondary selection.
+
+** Mouse-1 in the mode line now simply selects the window above that
+mode line. Mouse-2 in the mode line selects that window and expands
+it to fill the frame it is in.
+
+** You can now use mouse-2 in a Dired buffer or Tar mode buffer to find
+a file you click on, in a compilation buffer to go to a particular
+error message, and in a *Occur* buffer to go to a particular
+occurrence.
+
+(It was already possible to do likewise in Info and in completion list
+buffers.)
+
+What's more, the sensitive areas of the buffer now highlight when you
+move the mouse over them.
+
+** In a completion list buffer, the command RET now chooses the completion
+that is around or next to point.
+
+** If you specify the foreground color for the `mode-line' face, and
+mode-line-inverse-video is non-nil, then the default background color
+is the usual foreground color.
+
+** revert-buffer now preserves markers pointing within the unchanged
+text (if any) at the beginning and end of the file.
+
+** Version control checkin and checkout preserve all markers if the
+file does not contain any of the magic version header sequences that
+are updated automatically by RCS and SCCS. If such version headers
+are present, checkin and checkout preserve a marker unless it comes
+between two such sequences. (So it's a good idea to put all the
+header sequences close together.)
+
+** When a large deletion shuts off auto save temporarily in a buffer,
+you can now turn it on again by saving the buffer with C-x C-s (as was
+possible in Emacs 18). You can also turn it on again with M-1 M-x
+auto-save (as has been possible in Emacs 19).
+
+** C-x r d now runs the command delete-rectangle.
+
+** The new command imenu shows you a menu of interesting places in the
+current buffer and lets you select one; then it moves point there.
+The definition of interesting places depends on the major mode, but
+typically this includes function definitions and such. Normally,
+imenu displays the menu in a buffer; but if you bind it to a mouse
+event, it shows a mouse popup menu.
+
+** You can make certain chosen buffers, that normally appear in a
+separate window, appear in special frames of their own. To do this,
+set special-display-buffer-names to a list of buffer names; any buffer
+whose name is in that list automatically gets a special frame when it
+is to be displayed in another window.
+
+A good value to try is ("*compilation*" "*grep*" "*TeX Shell*").
+
+More generally, you can set special-display-regexps to a list of regular
+expressions; then each buffer whose name matches any of those regular
+expressions gets its own frame.
+
+The variable special-display-frame-alist specifies the frame
+parameters for these frames. It has a default value, so you don't
+need to set it.
+
+** If you set sentence-end-double-space to nil, the fill commands
+expect just one space at the end of a sentence. (If you want the
+sentence commands to accept single spaces, you must modify the regexp
+sentence-end also.)
+
+** You can suppress the startup echo area message by adding text like
+this to your .emacs file:
+
+(setq inhibit-startup-echo-area-message "YOUR-LOGIN-NAME")
+
+Simply setting inhibit-startup-echo-area-message to your login name is
+not sufficient to inhibit the message; Emacs explicitly checks whether
+.emacs contains an expression as shown above. Your login name must
+appear in the expression as a Lisp string constant.
+
+This way, you can easily inhibit the message for yourself if you wish,
+but thoughtless copying of your .emacs file will not inhibit the
+message for someone else.
+
+** Outline minor mode now uses C-c C-o as a prefix instead of just C-c.
+
+** In Outline mode, hide-subtree is now C-c C-d. (It was C-c C-h; but
+that is now a conventional way to ask for help about C-c commands.)
+
+** There are two additional commands in Outline mode.
+M-x hide-sublevels
+ hides all headers except the topmost N levels.
+M-x hide-other
+ hides everything about the body that point is in
+ plus the headers leading up from there to the top of the tree.
+
+** In iso-transl and iso-insert, the sequences for entering A-ring and
+the AE ligature are now just A and E (plus the initial C-x 8 or Alt).
+You used to have to enter AA or AE, after the C-x 8 prefix of course.
+Likewise for lower case a-ring and ae.
+
+** iso-transl now defines convenient Alt keys as well as the C-x 8 prefix.
+Instead of prefixing a sequence with C-x 8, you can add Alt to the
+first character of the sequence. For example, Alt-" a is now a way
+to enter an a-umlaut.
+
+** CC mode is a greatly improved mode for C and C++.
+See the following page.
+
+** tcl mode is a new major mode. It provides features for
+editing, indenting and running tcl programs.
+
+** Compilation minor mode lets you parse error messages in any buffer,
+not just a normal compilation output buffer. Type M-x
+compilation-minor-mode to enable the minor mode; then C-c C-c jumps to
+the source location for the error at point, as in the `*compilation*'
+buffer. If you use compilation-minor-mode in an Rlogin buffer, it
+automatically accesses remote source files by ftp.
+
+** Comint and shell mode changes:
+
+*** Comint modes (including Shell mode, GUD modes, etc.) now bind
+C-M-l to the command comint-show-output. This command scrolls the
+buffer to show the last batch of output from the subprogram.
+
+*** Completion in Comint modes now truly operates on the string before
+point, rather than the word that point is within.
+
+*** Comint mode file name completion ignores those files that end with a
+string in the new variable comint-completion-fignore. This variable's
+default value is nil.
+
+*** Shell mode uses the variable shell-completion-fignore to set
+comint-completion-fignore. The default value is nil, but some
+people prefer ("~" "#" "%").
+
+*** The function `comint-watch-for-password-prompt' can be used to
+suppress echoing when a subprocess asks for a password. To use it,
+do this:
+
+(add-hook 'comint-output-filter-functions
+ 'comint-watch-for-password-prompt)
+
+*** You can use M-x shell-strip-ctrl-m to strip ^M characters from
+process output.
+
+*** In Shell mode, TAB now completes environment variables, if possible,
+and expands directory references.
+
+*** You can use M-x comint-run to execute any program of your choice in
+a comint mode. Some programs such as shells, rlogin, and debuggers
+have their own specialized modes; this command is one way to use
+comint to run programs for which no such specialized mode exits. (You
+can also run a shell with M-x shell and run the program of your choice
+under the shell--but that gives you the specializations of Shell
+mode.)
+
+** When you run GUD (M-x gdb, M-x dbx, and so on), you can use TAB
+to do file name completion in the minibuffer.
+
+The "Complete" menu includes an item for directory expansion.
+
+** GUD working with future versions of GDB will permit TAB for
+GDB-style symbol completion. This will work with GDB 4.13.
+
+** Rmail no longer gets new mail automatically when you visit an Rmail
+file specified by name--not even if it is your primary Rmail file. To
+get new mail, type `g'. This feature is an advantage because you now
+have a choice of whether to get new mail. (This change actually
+occurred in an earlier version, but wasn't listed here then, since it
+made the code do what the documentation already said.)
+
+** Rmail now highlights certain fields automatically, when you use X
+windows. The variable rmail-highlighted-headers controls which
+fields.
+
+** If you set rmail-summary-window-size to an integer, Rmail uses
+a window that many lines high for the summary buffer.
+
+** rmail-input-menu is a new command that visits an Rmail file letting
+you choose which file with a mouse menu. rmail-output-menu is
+similar; it outputs the current message, using a mouse menu to choose
+which Rmail file. These commands use the variables
+rmail-secondary-file-directory and rmail-secondary-file-regexp.
+
+** The mh-e package has been changed substantially.
+See the file ./MH-E-NEWS for details.
+
+** The calendar and diary have new features.
+
+The menu bar for the calendar contains most of the calendar commands,
+arranged into logical categories.
+
+Mouse-2 now performs specific-date-related commands when clicked on a
+date in the calendar window and common three-month-related commands
+when clicked elsewhere in the calendar window.
+
+You can set up colored/shaded highlighting of holidays, diary entry
+dates, and today's date, by setting calendar-holiday-marker,
+diary-entry-marker, and calendar-today-marker to a face instead of a
+character. Using a special face is now the default if you are using a
+window system.
+
+** The appt package for displaying appointment reminders has new
+features.
+
+*** The appt alarm window stays for the full duration of
+appt-display-duration. It no longer disappears when you start typing
+text.
+
+*** You can change the way the appointment window is created/deleted by
+setting the variables appt-disp-window-function and
+appt-delete-window-function.
+
+For instance, these variables can be set to functions that display
+appointments in pop-up frames, which are lowered or iconified after
+appt-display-duration seconds.
+
+** desktop.el can now save a list of buffer-local variables,
+and saves more global ones.
+
+** Pascal mode has been completely rewritten. It now features
+completing of function names, variables and type definitions around
+current point (like M-TAB does with lisp-symbols). There's also an
+outline mode (M-x pascal-outline) that hides the bodies of all
+functions you're not working with.
+
+** Edebug has a number of changes:
+
+*** Edebug syntax error reporting is improved.
+
+*** Top-level forms and defining forms other than defun and defmacro may
+now be debugged with Edebug.
+
+*** Edebug specifications may now contain body, &define, name, arg or
+arglist, def-body, and def-form, to support definitions.
+
+*** edebug-all-defuns is renamed to edebug-all-defs.
+def-edebug-form-spec is replaced by def-edebug-form whose arguments
+are unevaluated. The old names are still available for now.
+
+*** Frequency counts and coverage data may be displayed for functions being
+debugged.
+
+*** A global break condition is now checked at every stop point.
+
+*** The previous condition at a breakpoint may now be edited.
+
+*** A new "next" mode stops only after expression evaluation.
+
+*** A new command, top-level-nonstop, does not even stop for unwind-protect,
+as top-level would.
+
+
+* Changes in CC mode in Emacs 19.23.
+
+`cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It
+represents the merge of c++-mode.el and c-mode.el. cc-mode provides a
+new, more flexible indentation engine so that indentation
+customization is more intuitive. There are two steps to calculating
+indentation: first, CC mode analyzes the line for syntactic content,
+then based on this content it applies user defined offsets and adds
+this offset to the indentation of some previous line.
+
+The syntactic analysis determines if the line describes a `statement',
+`substatement', `class-open', `member-init-intro', etc. These are
+described in detail with C-h v c-offsets-alist. You can change the
+offsets interactively with C-c C-o (c-set-offsets), or
+programmatically in your c-mode-common-hook, which is run both by
+c-mode and c++-mode. You can also set up "styles" in the same way
+that you could with c-mode.el. The variable c-basic-offset controls
+the basic offset given to a level of indentation.
+
+If, for example, you wanted to change this style:
+
+int foo (int i)
+{
+ switch (i) {
+ case 1:
+ printf ("its a foo\n");
+ break;
+ default:
+ printf ("don't know what it is\n");
+ break;
+ }
+}
+
+into this:
+
+int foo (int i)
+{
+ switch (i) {
+ case 1:
+ printf ("its a foo\n");
+ break;
+ default:
+ printf ("don't know what it is\n");
+ break;
+ }
+}
+
+you could add the following to your .emacs file:
+
+(defun my-c-mode-common-hook ()
+ (c-set-offset 'case-label 2)
+ (c-set-offset 'statement-case-intro 2))
+(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
+
+** New variables:
+
+c-offsets-alist contains an association list of syntactic symbols and
+their relative offsets. Do a "C-h v c-offsets-alist" to get a list of
+all syntactic symbols currently defined, and their meanings. You
+should not change this variable directly; use the supplied interface
+commands c-set-offset and c-set-style.
+
+c-mode-common-hook is run by both c-mode and c++-mode during their
+common initializations. You should put any customizations that are
+the same for both C and C++ into this hook.
+
+The variable c-strict-semantics-p is used mainly for debugging. When
+non-nil, CC mode signals an error if it returns a syntactic symbol
+that can't be found in c-offsets-alist.
+
+If you want CC mode to echo the syntactic analysis for a particular
+line when you hit the TAB key, set c-echo-semantic-information-p to
+non-nil.
+
+c-basic-offset controls the standard amount of offset for a level of
+indentation. You can set a syntactic symbol's offset to + or - as a
+short-hand for positive or negative c-basic-offset.
+
+c-comment-only-line-offset lets you control indentation given to lines
+which contain only a comment, in the case of C++ line style comments,
+or the introduction to a C block comment. Comment-only lines at
+column zero can be anchored there independent of the indentation given
+to other comment-only lines.
+
+c-block-comments-indent-p controls the style of C block comment
+re-indentation. If you put leading stars in front of comment
+continuation lines, you should set this variable to nil.
+
+c-cleanup-list is a list describing certain C and C++ constructs to be
+"cleaned up" as they are typed, but only when the auto-newline feature
+is turned on. In C++, make sure this variable contains at least
+'scope-operator so that double colons will not be separated by a
+newline.
+
+Colons (`:') and braces (`{` and `}') are special in C and C++. For
+certain constructs, you may like them to hang on the right edge of the
+code, or you may like them to start a new line of code. You can use
+the two variables c-hanging-braces-alist and c-hanging-colons-alist
+to control whether newlines are placed before and/or after colons and
+braces when certain C and C++ constructs are entered. For example,
+you can control whether the colon that introduces a C++ member
+initialization list hangs on the right edge, starts a new line, or has
+no newlines either before or after it.
+
+c-special-indent-hook is run after a line is indented by CC mode. You
+can perform any custom indentations here.
+
+c-delete-function is the function that is called when a single
+character is deleted with the c-electric-delete command (DEL).
+
+c-electric-pound-behavior describes what happens when you enter the
+`#' that introduces a cpp macro.
+
+If c-tab-always-indent is neither t nor nil, then TAB inserts a tab
+when within strings, comments, and cpp directives, but it reindents
+the line unconditionally.
+
+c-inhibit-startup-warnings-p inhibits warnings about any old
+version of Emacs you might be running, which could be incompatible
+with cc-mode.
+
+** There are two new minor-mode features in CC mode: auto-newline and
+hungry-delete. Auto-newline inserts newlines automatically as you
+type certain constructs. Hungry-delete consumes all preceding
+whitespace (spaces, tabs, and newlines) when the delete key is hit.
+You can toggle auto-newline on and off on a per-buffer basis by
+hitting C-c C-a. You can toggle hungry-delete on and off by hitting
+C-c C-d. You can toggle them both on and off together with C-c C-t.
+
+** Slash (`/') and star (`*') are now both electric characters.
+
+** New commands:
+
+The new C-c C-o (c-set-offset) command can be used to interactively change
+the offset for a particular syntactic symbol.
+
+The new command C-c : (c-scope-operator) inserts the C++ scope operator in
+c++-mode only.
+
+The new command C-c C-q (c-indent-defun) indents the entire enclosing
+top-level function or class.
+
+The new command C-c C-s (c-show-semantic-information) echos the current
+syntactic analysis without re-indenting the current line.
+
+The new commands M-x c-forward-into-nomenclature and M-x
+c-backward-into-nomenclature (currently otherwise unbound to a key
+sequence), make movement easier when using the C++ variable naming
+convention of VariableNamesWithoutUnderscoresButEachWordCapitalized.
+
+** Command from c-mode.el that have been renamed in cc-mode.el:
+
+ electric-c-brace => c-electric-brace
+ electric-c-semi => c-electric-semi&comma
+ electric-c-sharp-sign => c-electric-pound
+ mark-c-function => c-mark-function
+ electric-c-terminator => c-electric-colon
+ indent-c-exp => c-indent-exp
+ set-c-style => c-set-style
+
+** Variables from c-mode.el that are obsolete with cc-mode.el:
+
+ c-indent-level
+ c-brace-imaginary-offset
+ c-brace-offset
+ c-argdecl-indent
+ c-label-offset
+ c-continued-statement-offset
+ c-continued-brace-offset
+
+
+* Lisp programming changes in Emacs 19.23.
+
+** To pop up a dialog box, call x-popup-dialog.
+It takes two arguments, POSITION and CONTENTS.
+
+POSITION specifies which frame to place the dialog box over;
+the dialog box always goes on the center of the frame.
+POSITION may be a mouse event, a window, a frame,
+or t meaning use the frame that the mouse is in.
+
+CONTENTS specifies the contents of the dialog box.
+It looks like a single pane of a popup menu:
+(TITLE ITEM1 ITEM2 ...), where each ITEM has the form (STRING . VALUE).
+The return value is VALUE from the chosen item.
+
+An ITEM may also be just a string--that makes a nonselectable item.
+An ITEM may also be nil--that means to put all preceding items
+on the left of the dialog box and all following items on the right.
+(By default, approximately half appear on each side.)
+
+If your Emacs is not using an X toolkit, then it cannot display a
+real dialog box; so instead it displays a pop-up menu in the center
+of the frame.
+
+** y-or-n-p, yes-or-no-p and map-y-or-n-p now use menus or dialog boxes
+to ask their question(s) if the command that is running was reached by
+a mouse event.
+
+If you want to control which way these functions work, bind the
+variable last-nonmenu-event around the call. These functions use the
+keyboard if that variable holds a keyboard event (actually, any
+non-list); they use the mouse if that variable holds a mouse event
+(actually, any list).
+
+** The mouse-face property is now implemented, both in overlays and as
+a text property. It specifies a face to use when the mouse is in the
+range of text for which the property is specified.
+
+** When text has a non-nil `intangible' property, you cannot move point
+within it or right before it. If you try, point actually moves to the
+end of the intangible text. Note that this means that backward-char
+is a no-op when there is an intangible character to the left of point.
+
+** minibuffer-exit-hook is a new normal hook that is run when you
+exit the minibuffer.
+
+** The variable x-cross-pointer-shape specifies the cursor shape to use
+when the mouse is over text that has a mouse-face property.
+
+** The new variable interpreter-mode-alist specifies major modes to use
+for shell scripts that specify a command interpreter. Its elements
+look like (INTERPRETER . MODE); for example, ("perl" . perl-mode) is
+one element present by default. This feature applies only when the
+file name doesn't indicate which mode to use.
+
+** If you use a minibuffer-only frame, set the variable
+minibuffer-auto-raise to t, and entering the minibuffer will then
+raise the minibuffer frame.
+
+** If pop-up-frames is t, display-buffer now looks for an existing
+window in any visible frame, showing the specified buffer, and uses
+such a window in preference to making a new frame.
+
+** In the functions next-window, previous-window, next-frame,
+previous-frame, get-buffer-window, get-lru-window, get-largest-window
+and delete-windows-on, if you specify `visible' for the last argument,
+it means to consider all visible frames.
+
+** Mouse events now give the X and Y coordinates in pixels, rather than
+in characters. You can convert these values to characters by dividing by
+the values of (frame-char-width) and (frame-char-height).
+
+** The new functions mouse-pixel-position and set-mouse-pixel-position
+read and set the mouse position in units of pixels. The existing
+functions mouse-position and set-mouse-position continue to work with
+units of characters.
+
+** The new function compute-motion is useful for computing the width
+of certain text when it is displayed.
+
+** The function vertical-motion now takes an option second argument WINDOW
+which says which window to use for the display calculations.
+
+vertical-motion always operates on the current buffer.
+It is ok to specify a window displaying some other buffer.
+Then vertical-motion uses the width, hscroll and display-table of
+the specified window, but still scans the current buffer.
+
+** An error no longer sets last-command to t; the value of last-command
+does reflect the previous command (the one that got an error).
+
+If you do not want a particular command to be recognized as the
+previous command in the case where it got an error, you must code that
+command to prevent this. Set this-command to t at the beginning of
+the command, and set this-command back to its proper value at the end,
+like this:
+
+ (defun foo (args...)
+ (interactive ...)
+ (setq this-command t)
+ ...do the work...
+ (setq this-command 'foo))
+
+or like this:
+
+ (defun foo (args...)
+ (interactive ...)
+ (let ((old-this-command this-command))
+ (setq this-command t)
+ ...do the work...
+ (setq this-command old-this-command)))
+
+The undo and yank commands do this.
+
+** If you specify an explicit title for a new frame when you create it,
+the title is used as the resource name when looking up X resources to
+control the shape of that frame. If you don't specify the frame title,
+the value of x-resource-name is used, as before.
+
+** The frame parameter user-position, if non-nil, says that the user
+has specified the frame position. Emacs reports this to the window
+manager, to tell it not to override the position that the user
+specified.
+
+** Major modes can now set change-major-mode-hook to arrange for state
+to be cleaned up when the user switches to a new major mode. The function
+kill-all-local-variables runs this hook. For best results, make the hook a
+buffer-local variable so that it will disappear after doing its job and will
+not interfere with the subsequent major mode.
+
+** The new variable overriding-local-map, if non-nil, specifies a keymap
+that overrides the current local map, all minor mode keymaps, and all
+text property keymaps. Incremental search uses this feature to override
+all other keymaps temporarily.
+
+** A key definition in a menu keymap can now have additional structure:
+in addition to (ITEMNAME [HELPSTRING] . COMMAND) which was allowed
+before, the form (ITEMNAME [HELPSTRING] (...) . COMMAND) is
+allowed. (HELPSTRING is optional, and is not currently used.)
+
+Here (...) represents a sublist containing information about keyboard
+key sequences that run the same command COMMAND. Displaying the menu
+automatically creates and updates the sublist when appropriate; you
+need never set these up yourself.
+
+lookup-key, key-binding, and similar functions return just COMMAND,
+not the whole binding.
+
+To precompute this information for a given keymap, you can do
+ (x-popup-menu nil KEYMAP).
+
+** When you specify coordinates for x-popup-menu as a list ((XOFFSET
+YOFFSET) WINDOW), the coordinates are now measured in pixels.
+
+** where-is-internal now takes just four arguments:
+DEFINITION KEYMAP FIRSTONLY NOINDIRECT.
+The single argument KEYMAP replaces two arguments KEYMAP and KEYMAP1.
+
+If KEYMAP is non-nil, where-is-internal searches only KEYMAP and the
+global keymap.
+
+If KEYMAP is nil, where-is-internal searches all the currently active
+keymaps, but finds the active keymaps as if overriding-local-map were
+nil.
+
+If you pass a list of the form (keymap) as KEYMAP, where-is-internal
+searches only the global map. (This is not a special case--it follows
+from the specifications above.)
+
+If you pass the value of overriding-local-map as KEYMAP, where-is-internal
+searches in exactly the same was as command execution does.
+
+** Use the macro define-derived-mode to define a new major mode that
+inherits the definition of another major mode. Here's how to define a
+command named hypertext-mode that inherits from the command text-mode:
+
+ (define-derived-mode hypertext-mode text-mode "Hypertext"
+ "Major mode for hypertext.\n\n\\{hypertext-mode-map}"
+ (setq case-fold-search nil))
+
+ (define-key hypertext-mode-map [down-mouse-3] 'do-hyper-link)
+
+The new mode has its own keymap, which inherits from that of the
+original mode. It also has its own syntax and abbrev tables, which
+are initialized by copying those of the original mode. It also has
+its own mode hook. All are given names made by appending a suffix
+to the name of the new mode.
+
+** A syntax table can now inherit the data for some characters from
+standard-syntax-table, while specifying other characters itself.
+Syntax code 13 means "inherit this character from the standard syntax
+table." In modify-syntax-entry, the character `@' represents this code.
+
+The function `make-syntax-table' now creates a syntax table which
+inherits all letters and control characters (0 to 31 and 128 to 255)
+from the standard syntax table, while copying the other characters
+from the standard syntax table. Most syntax tables in Emacs are set
+up this way.
+
+This sort of inheritance is useful for people who set up character
+sets with additional alphabetic characters in the range 128 to 255.
+Just changing the standard syntax for these characters affects all
+major modes.
+
+** The new function transpose-regions swaps two regions of the buffer.
+It preserves the markers in those two regions, so that they stay with
+the surrounding text as it is swapped.
+
+** revert-buffer now runs before-revert-hook at the beginning and
+after-revert-hook at the end. These can be used by minor modes
+that need to clean up state variables.
+
+** The new function get-char-property is like get-text-property, but
+checks for overlays with properties as well as for text properties.
+It checks for overlays first, in order of descending priority, and
+text properties last.
+
+get-char-property allows windows as the OBJECT argument, as well
+as buffers and strings. If you specify a window, then only overlays
+active on that window are considered.
+
+** Overlays can have the `invisible' property.
+
+** The function insert-file-contents now takes an optional fifth
+argument called REPLACE. If this is t, it means to replace the
+contents of the buffer (actually, just the accessible portion)
+with the contents of the file.
+
+This is better than simply deleting and inserting the whole thing
+because (1) it preserves some marker positions and (2) it puts less
+data in the undo list.
+
+** The variable inhibit-first-line-modes-regexps specifies classes of
+file names for which -*- on the first line should not be looked for.
+
+** The variables before-change-functions and after-change-functions
+hold lists of functions to call before and after a change in the
+buffer's text. They work much like before-change-function and
+after-change-function, except that they hold a list of functions
+instead of just one.
+
+These variables will eventually make before-change-function and
+after-change-function obsolete.
+
+** The variable kill-buffer-query-functions holds a list of functions
+to be called with no arguments when a buffer is about to be killed.
+(That buffer is the current buffer when the function is called.)
+If any of the functions returns nil, the buffer is not killed
+(and the remaining functions in the list are not called).
+
+** The variable kill-emacs-query-functions holds a list of functions
+to be called with no arguments when you ask to exit Emacs.
+If any of the functions returns nil, the exit is canceled
+(and the remaining functions in the list are not called).
+
+** The argument for buffer-disable-undo is now optional,
+like the argument for buffer-enable-undo.
+
+** The new variable system-configuration holds the canonical three-part
+GNU configuration name for which Emacs was built.
+
+** The function system-name now tries harder to return a fully qualified
+domain name.
+
+** The variable emacs-major-version holds the major version number
+of Emacs. (Currently 19.)
+
+** The variable emacs-minor-version holds the minor version number
+of Emacs. (Currently 23.)
+
+** The default value of comint-input-autoexpand is now nil.
+However, Shell mode sets it from the value of shell-input-autoexpand,
+whose default value is `history'.
+
+** The new function set-process-window-size specifies the terminal window
+size for a subprocess. On some systems it sends the subprocess a signal
+to let it know that the size has changed.
+
+** %P is a new way to display a percentage in the mode line. It
+displays the percentage of the buffer text that is above the *bottom*
+of the window (which includes the text visible, in the window as well
+as the text above the top). It displays `Top' as well as the
+percentage if the top of the buffer is visible on screen.
+
+** %+ in the mode line specs displays `*' if the buffer is modified,
+and otherwise `-'. It never displays `%', as `%*' would do; whether the
+buffer is read-only has no effect on %+.
+
+** The new functions ffloor, fceiling, fround and ftruncate take a
+floating point argument and return a floating point result whose value
+is a nearby integer. ffloor returns the nearest integer below; fceiling,
+the nearest integer above; ftruncate, the nearest integer in the
+direction towards zero; fround, the nearest integer.
+
+** Setting `print-escape-newlines' to a non-nil value now also makes
+formfeeds print as ``\f''.
+
+** auto-mode-alist now has a new feature. If an element has the form
+(REGEXP FUNCTION t), and REGEXP matches the file name, then after calling
+FUNCTION, Emacs deletes the part of the file name that matched REGEXP
+and then searches auto-mode-alist again for a new match.
+
+This is useful for uncompression packages. An entry of this sort for
+.gz can uncompress the file and then put the uncompressed file in the
+proper mode according to the name sans .gz.
+
+** The new function emacs-pid returns the process ID number of Emacs.
+
+** user-login-name now consistently checks the LOGNAME environment
+variable before USER. user-original-login-name is obsolete, since it
+provides the same functionality. To ignore the environment variables,
+use user-real-login-name.
+
+** There is a more general way of handling the system-specific X
+keysyms. Set the variable system-key-alist to an alist containing
+elements of the form (CODE . SYMBOL), where CODE is the numeric keysym
+code minus the "vendor specific" bit, and symbol is the name for the
+function key.
+
+** You can use the variable command-line-functions to set up functions
+to process unrecognized command line arguments. The variable's value
+should be a list of functions of no arguments. The functions are
+called successively until one of them returns non-nil.
+
+Each function should access the free variables argi (the current
+argument) and command-line-args-left (the remaining arguments). The
+function should return non-nil only if it recognizes and processes the
+argument in argi. If it does so, it may consume following arguments
+as well by removing them from command-line-args-left.
+
+** There's a new way for a magic file name handler to run a primitive
+and inhibit handling of the file name. Here is how to do it:
+
+(let ((inhibit-file-name-handlers
+ (cons 'ange-ftp-file-handler
+ (and (eq inhibit-file-name-operation operation)
+ inhibit-file-name-handlers)))
+ (inhibit-file-name-operation operation))
+ (apply this-operation args))
+
+The function find-file-name-handler now takes two arguments. The
+second argument is OPERATION, the operation for which the handler is
+being sought.
+
+People have suggested that the second argument should be optional, for
+backward compatibility. It would be nice if that were possible, but
+it is not. There is simply no way for find-file-name-handler to do
+the right thing without receiving the proper value for its second
+argument.
+
+** The variable completion-regexp-list affects the completion
+primitives try-completion and all-completions. They consider
+only the possible completions that match each regexp in the list.
+
+** Case conversion in the function replace-match has been changed.
+
+The old behavior was this: if any word in the old text was
+capitalized, replace-match capitalized each word of the replacement
+text.
+
+The new behavior is this: if the first word in the old text is capitalized,
+replace-match capitalizes the first word of the replacement text.
+
+** You can now specify a case table with CANON non-nil and EQV nil.
+Then the EQV part of the case table is deduced from CANON.
+
+** The new function minibuffer-prompt takes no arguments and returns
+the current minibuffer prompt string.
+
+The new function minibuffer-prompt-width takes no arguments and
+returns the display width of the minibuffer prompt string.
+
+** The new function frame-first-window returns the window at the
+upper left corner of a given frame.
+
+** wholenump is a new alias for natnump.
+
+** The variable installation-directory, if non-@code{nil}, names a
+directory within which to look for the `lib-src' and `etc'
+subdirectories. This is non-nil when Emacs can't find those
+directories in their standard installed locations, but can find them
+near where the Emacs executable was found.
+
+** invocation-name and invocation-directory are now variables as well
+as functions. The variable values are the same values that the
+functions return: the Emacs program name sans directories, and the
+directory it was found in. (invocation-directory may be nil, if Emacs
+can't determine which directory it should be.)
+
+** Installation change regarding version number counting.
+
+The version number of an Emacs executable contains three numbers.
+The first two describe the Emacs release and the third increments
+each time you build Emacs.
+
+Now the file version.el contains only the first two version numbers.
+The third component is now determined on the basis of the names of the
+existing executable files. This means that version.el is not altered
+by building Emacs.
+
+
+
+* Changes in 19.22.
+
+** The mouse click M-mouse-2 now inserts the current secondary
+selection (from Emacs or any other X client) where you click.
+It does not move point.
+This command is called mouse-yank-secondary.
+
+mouse-kill-secondary no longer has a key binding by default.
+Clicking M-mouse-3 (mouse-secondary-save-then-kill) twice
+may be a convenient enough way of killing the secondary selection.
+Or perhaps there should be a keyboard binding for killing the
+secondary selection. Any suggestions?
+
+** New packages:
+
+*** `icomplete' provides character-by-character information
+about what you could complete if you type TAB.
+
+*** `avoid' moves the mouse away from point so that it doesn't hide
+your typing.
+
+*** `shadowfile' helps you update files that are supposed to be stored
+identically in different places (perhaps on different machines).
+
+** C-h p now knows about four additional keywords: data, faces, mouse,
+and matching.
+
+** The key for starting an inferior Lisp process, in Lisp mode,
+is now C-c C-z instead of C-c C-l.
+
+** When the VC commands ask whether to save the buffer, if you say no,
+they signal an error. This is so that you won't operate on the wrong
+data.
+
+** ISO Accents mode now supports `"s' as a way of typing German sharp s.
+
+** By default, comint buffers (including Shell mode and debuggers)
+no longer try to scroll to keep the cursor on the bottom line.
+This feature was added in 19.21 but did not work smoothly enough.
+
+** Emacs now handles the window manager "delete window" operation.
+
+** Display of buffers with text properties is much faster now.
+
+** The feature previously announced whereby `insert' does not inherit
+text properties from surrounding text was not fully implemented
+before; but now it is. use `insert-and-inherit' if you wish to
+inherit sticky properties from the surrounding text.
+
+** The functions next-property-change, previous-property-change,
+next-single-property-change, and previous-single-property-change
+now take one additional optional argument LIMIT that is a position at
+which to stop scanning. If scan ends without finding the property
+change sought, these functions return the specified limit.
+
+The value returned by previous-single-property-change and
+previous-property-change, when they do find a change, is now one
+greater than what it used to be. It is the position between the two
+characters whose properties differ, which is one greater than the
+position of the first character found (while scanning back) with
+different properties.
+
+
+
+* User editing changes in version 19.21.
+
+** ISO Accents mode supports four additional characters:
+A-with-ring (entered as /A), AE ligature (entered as /E),
+and their lower-case equivalents.
+
+
+
+* User editing changes in version 19.20.
+(See following page for Lisp programming changes.)
+
+Note that some of these changes were made subsequent to the Emacs 19.20
+editions of the Emacs manual and Emacs Lisp manual; therefore, if you
+have those editions, do read this page.
+
+** Dragging with mouse button 1 now puts the selected region
+in the kill ring so you can paste it into other X applications.
+
+** Double and triple clicks with button 1 now behave as in xterm,
+selecting the word or line surrounding where you click. If you drag
+after the last click, you can select a range of words or lines.
+
+** You can use button 3 to extend a mouse-selected region, as in xterm.
+This works for regions selected either by dragging Mouse-1 or by
+multiple-clicking Mouse-1. Clicking Mouse-3 moves the end of the
+region that is (initially) nearer to where you click.
+
+If the selection was first made by multiple-clicking Mouse-1, and thus
+consists of entire words or lines, Mouse-3 preserves that state.
+
+As before, clicking Mouse-3 again in the same place kills the region
+thus selected.
+
+** The secondary selection commands, M-Mouse-1 and M-Mouse-3, have been
+likewise modified.
+
+** You can now search for strings and regexps using the Edit menu bar menu.
+
+** You can now access bookmarks using the Bookmark submenu in the File
+menu in the menu bar.
+
+** ISO Accents mode, a buffer-local minor mode, provides a convenient
+way to type certain non-ASCII characters. It makes the characters `,
+', ", ^, ~ and / serve as modifiers for the following letter. ` and '
+add accents, " adds an umlaut or dieresis, ^ adds a circumflex, ~
+adds a tilde, and / adds a slash to the following letter.
+
+If the following character is not a letter, or cannot be modified as
+requested, then both characters stand for themselves. If you
+duplicate the modifier accent character, that enters the corresponding
+ISO non-spacing accent character (thus, '' enters the ISO acute-accent
+character). To enter a modifier character itself, type it followed by
+a space.
+
+This feature can be used whenever a key sequence is expected: for
+ordinary insertion, for searching, and for certain command arguments.
+
+A few special combinations:
+
+~c => c with cedilla
+~d => d with stroke
+~< => left guillemot
+~> => right guillemot
+
+** iso-transl.el is a new library that replaces iso-insert.el.
+It defines C-x 8 as an insertion prefix for the ISO characters
+between 128 and 255, much like iso-insert, except that iso-transl
+works even in searches and help commands--wherever a key sequence
+is expected.
+
+To define case-conversion for these characters for ISO 8859/1,
+load the library iso-syntax. (This is not new.)
+
+** M-TAB in Text mode now runs the command ispell-complete-word
+which performs completion using the spelling dictionary.
+
+The spelling correction submenu now includes this command
+and another command which completes a word fragment (that is,
+it doesn't assume that the text to be completed starts at the
+beginning of a word.
+
+** In incremental search, you can use M-y to yank the most recent kill
+into the search string.
+
+** The new function ispell-message checks the spelling of a message
+you are about to send or post. It ignores text cited from other
+messages.
+
+To automatically check all your outgoing messages, include the
+following line in your .emacs file:
+ (setq news-inews-hook (setq mail-send-hook 'ispell-message))
+
+** There is now a separate minibuffer history list for the names of
+extended commands. This history list is used by M-x when reading
+the command name. The motivation for this is to prevent command
+names from appearing in the history used for other minibuffer
+arguments.
+
+Note that the history list for entire commands that use the minibuffer
+is a separate feature. That history list records a command with all
+its arguments, and you must use C-x ESC ESC to access it.
+
+** You can use the new command C-x v ~ VERSION RET to examine a
+specified version of a file that is maintained with version control.
+
+** In Indented Text mode, only blank lines now separate paragraphs.
+Indented lines continue the paragraph that is in progress. This makes
+the user option variable adaptive-fill-mode have its intended effect.
+
+** Local variable specifications in files for variables whose names end
+in `-hook' and `-function' are now controlled by the variable
+`enable-local-eval', just like the `eval' variable.
+
+** C-x r j (jump-to-register) when restoring a frame configuration now
+makes all unwanted frames (existing frames not mentioned in the
+configuration) invisible.
+
+If you want to delete these unwanted frames, use a prefix argument for
+C-x r j.
+
+** You can customize the calendar to display weeks beginning on
+Monday: set the variable `calendar-week-start-day' to 1.
+
+** Rmail changes.
+
+If you save messages to a file in Unix format while viewing a message
+with its whole header, this now copies to the file the entire header
+of each message copied.
+
+** Comint mode changes.
+
+C-c C-e shows as much output as possible in the window.
+C-c RET copies an old input (the one at point)
+and places the copy after the latest prompt.
+C-c C-p and C-c C-n move through the buffer, stopping at places
+where the subshell prompted for input.
+C-c C-h lists the input history in a `*Help*' buffer.
+
+There are new menu bar items for completion/input/output/signal commands.
+
+Input behavior is configurable. Variables control whether some windows
+showing the buffer scroll to the bottom before insertion. These are
+`comint-scroll-to-bottom-on-input' and `before-change-function'. By default,
+insertion causes the selected window to scroll to the bottom before insertion
+occurs.
+
+Subprocess output now keeps point at the end of the buffer in each
+window individually if point was already at the end of the buffer in
+that window.
+
+If `comint-scroll-show-maximum-output' is non-nil (which is the
+default), then scrolling due to arrival of output tries to place the
+last line of text at the bottom line of the window, so as to show as
+much useful text as possible. (This mimics the scrolling behavior of
+many terminals.)
+
+By setting `comint-scroll-to-bottom-on-output', you can opt for having
+point jump to the end of the buffer whenever output arrives--no matter
+where in the buffer point was before. If the value is `this', point
+jumps in the selected window. If the value is `all', point jumps in
+each window that shows the comint buffer. If the value is `other',
+point jumps in all nonselected windows that show the current buffer.
+The default value is nil, which means point does not jump to the end.
+
+Input history insertion is configurable. A variable controls whether only the
+first instance of successive identical inputs is stored in the input history.
+This is `comint-input-ignoredups'.
+
+Completion (bound to TAB) is now more general. Depending on context,
+completion now operates on the input history, on command names, or (as
+before) on filenames.
+
+Filename completion is configurable. Variables control whether
+file/directory suffix characters are added (`comint-completion-addsuffix'),
+whether shortest completion is acceptable when no further unambiguous
+completion is possible (`comint-completion-recexact'), and the timing of
+completion candidate listing (`comint-completion-autolist').
+
+Comint mode now provides history expansion. Insert input using `!'
+and `^', in the same syntax that typical shells use; then type TAB.
+This searches the comint input history for a matching element,
+performs substitution if necessary, and places the result in the
+comint buffer in place of the original input.
+
+History references in the input may be expanded before insertion into
+the input ring, or on input to the interpreter (and therefore
+visibly). The variable `comint-input-autoexpand' specifies which.
+
+You can make the SPC key perform history expansion by binding
+SPC to the command `comint-magic-space'.
+
+The command `comint-dynamic-complete-variable' does variable name
+completion using the environment variables as set within Emacs. The
+variables controlling filename completion apply to variable name
+completion too. This command is normally available through the menu
+bar.
+
+** Shell mode
+
+Paragraph motion and marking commands (default bindings M-{, M-}, M-h) operate
+on output groups (i.e., shell prompt plus associated shell output).
+
+TAB now completes commands, as well as file names and expand history.
+Commands are searched for along the path that Emacs has on startup.
+
+C-c C-f now moves forward a command (`shell-forward-command') and
+C-c C-b now moves backward a command (`shell-backward-command').
+
+Command completion is configurable. The variables controlling
+filename completion in comint mode apply, together with a variable
+controlling whether to restrict possible completions to only files
+that are executable (`shell-command-execonly').
+
+The input history is initialised from the file name given in the
+variable `shell-input-ring-file-name'--normally `.history' in your
+home directory.
+
+Directory tracking is more robust. It can cope with command sequences
+and forked commands, and can detect the failure of directory changing
+commands in most circumstances. It's still not infallible, of course.
+
+You can now configure the behavior of `pushd'. Variables control
+whether `pushd' behaves like `cd' if no argument is given
+(`shell-pushd-tohome'), pop rather than rotate with a numeric argument
+(`shell-pushd-dextract'), and only add directories to the directory
+stack if they are not already on it (`shell-pushd-dunique'). The
+configuration you choose should match the underlying shell, of course.
+
+
+* Emacs Lisp programming changes in Emacs 19.20.
+
+** A new function `remove-hook' is now used to remove a hook that you might
+have added with `add-hook'.
+
+** There is now a Lisp pretty-printer in the library `pp'.
+
+** The partial Common Lisp support has been entirely reimplemented.
+
+** When you insert text using `insert', `insert-before-markers' or
+`insert-buffer-substring', text properties are no longer inherited
+from the surrounding text.
+
+When you want to inherit text properties, use the new functions
+`insert-and-inherit' or `insert-before-markers-and-inherit'.
+
+The self-inserting character command does do inheritance.
+
+** Frame creation hooks.
+
+The function make-frame now runs the normal hooks
+before-make-frame-hook and after-make-frame-hook.
+
+** You can now use function-key-map to make a key an alias for other
+key sequences that can vary depending on circumstances. To do this,
+give the key a definition in function-key-map which is a function
+rather than a specific expansion key sequence.
+
+If the function reads input itself, it can have the effect of altering
+the event that follows. For example, here's how to define C-c h to
+turn the character that follows into a hyper character:
+
+(define-key function-key-map "\C-ch" 'hyperify)
+
+(defun hyperify (prompt)
+ (let ((e (read-event)))
+ (vector (if (numberp e)
+ (logior (lsh 1 20) e)
+ (if (memq 'hyper (event-modifiers e))
+ e
+ (add-event-modifier "H-" e))))))
+
+(defun add-event-modifier (string e)
+ (let ((symbol (if (symbolp e) e (car e))))
+ (setq symbol (intern (concat string (symbol-name symbol))))
+ (if (symbolp e)
+ symbol
+ (cons symbol (cdr e)))))
+
+The character translation function gets one argument, which is the
+prompt that was specified in read-key-sequence--or nil if the key
+sequence is being read by the editor command loop. In most cases
+you can just ignore the prompt value.
+
+** Changes for reading and writing text properties.
+
+New low-level Lisp features make it possible to write Lisp programs to
+save text properties in files, and read text properties from files.
+You can program any file format you like.
+
+The variable `write-region-annotation-functions' should contain a list
+of functions to be run by `write-region' to encode text properties in
+some fashion as annotations to the text that is written.
+
+Each function in the list is called with two arguments: the start and
+end of the region to be written. These functions should not alter the
+contents of the buffer. Instead, they should return lists indicating
+annotations to write in the file in addition to the text in the
+buffer.
+
+Each function should return a list of elements of the form (POSITION
+. STRING), where POSITION is an integer specifying the relative
+position in the text to be written, and STRING is the annotation to
+add there.
+
+Each list returned by one of these functions must be already sorted in
+increasing order by POSITION. If there is more than one function,
+`write-region' merges the lists destructively into one sorted list.
+
+When `write-region' actually writes the text from the buffer to the
+file, it intermixes the specified annotations at the corresponding
+positions. All this takes place without modifying the buffer.
+
+The variable `after-insert-file-functions' should contain a list of
+functions to be run each time a file's contents have been inserted into
+a buffer. Each function receives one argument, the length of the
+inserted text; point indicates the start of that text. The function
+should make whatever changes it wants to make, then return the updated
+length of the inserted text, as it stands after those changes. The
+value returned by one function is used as the argument to the next.
+These functions should always return with point at the beginning of
+the inserted text.
+
+The intended use of `after-insert-file-functions' is for converting
+some sort of textual annotations into actual text properties. But many
+other uses may be possible.
+
+We now invite users to begin implementing Lisp programs to store and
+retrieve text properties in files, using these new primitive features,
+and thus to experiment with various data formats and find good ones.
+
+We suggest not trying to handle arbitrary Lisp objects as property
+names or property values--because a program that general is probably
+difficult to write, and slow. Instead, choose a set of possible data
+types that are reasonably flexible, and not too hard to encode.
+
+** Comint completion.
+
+Currently comint-dynamic-complete-command (and associated variable
+comint-after-partial-pathname-command) are set by default to complete a
+filename. Other comint-mode users should have their own functions to achieve
+this. For example, gud-mode could complete debugger commands. A completion
+function is provided solely for this reason (comint-dynamic-simple-complete).
+
+Other comint-mode users should bind comint-dynamic-complete (shell-mode does
+already).
+
+** Comint history reference expansion
+
+Currently comint-input-autoexpand is 'history, which means only expand
+history on insertion to comint-input-ring. For non-shell modes, this is
+a strange default, since non-shells will not understand history references.
+Perhaps it would be better for the variable to be 'input, which means expand
+on RET.
+
+The value 'history might possibly be wrong even for shells, since the
+expansion will be done both by comint and the underlying shell (except sh, of
+course). It would be better for expansion to be done by one or the other,
+not both since they may (ahem) disagree. Since it is silly to put a literal
+history reference into comint-input-ring, perhaps it would be better for the
+variable to be 'input too.
+
+The reason the variable is not 'input by default is that I was attempting to
+adhere to The Principle of Least Astonishment. I didn't want to shock users
+by having their input change in front of their eyes.
+
+** Argument delimiters and Comint mode.
+
+Currently comint-delimiter-argument-list is '(), which means no strings are
+to be treated as delimiters and arguments. In shell-mode, this variable is
+set to shell-delimiter-argument-list, '("|" "&" "<" ">" "(" ")" ";"). Other
+comint-mode users should set this variable too. For example, a lisp-type
+mode might want to set this to '("." "(" ")") or some such.
+
+** Comint output hook.
+
+There is now a hook, comint-output-filter-hook, that is run-hooks'ed by the
+output filter, comint-output-filter. This is useful for scrolling (see
+below), but also things like processing output for specific text, output
+highlighting, etc.
+
+So that such output processing may be done efficiently, there is a new
+variable, comint-last-output-start, that records the position of the start of
+the lastest output inserted into the buffer (effectively the previous value
+of process-mark). Output processing functions should process the text
+between comint-last-output-start (or perhaps the beginning of the line that
+the position lies on) and process-mark.
+
+** Comint scrolling.
+
+There is now automatic scrolling of process windows.
+
+Currently comint-scroll-show-maximum-output is t, which means when scrolling
+output put process-mark at the bottom of the window. There is a good case
+for it to be t, since the user is likely to want to see as much output as
+possible. But, then again, there is a comint-show-maximum-output command.
+
+** Comint history retrieval.
+
+The input following point is not deleted when moving around the input history
+(with M-p etc.). Emacs maintainers may not like this. However, I feel this
+is a useful feature. The simple remedy is to put end-of-line in before
+delete-region in comint-previous-matching-input.
+
+The input history retrieval commands still wrap-around the input ring, unlike
+Emacs command history.
+
+
+
+* Changes in version 19.19.
+
+** The new package bookmark.el records named bookmarks: positions that
+you can jump to. Bookmarks are saved automatically between Emacs
+sessions.
+
+** Another simpler package saveplace.el records your position in each
+file when you kill its buffer (or kill Emacs), and jumps to the same
+position when you visit the file again (even in another Emacs
+session). Use `toggle-save-place' to turn on place-saving in a given file;
+use (setq-default save-place t) to turn it on for all files.
+
+** In Outline mode, you can now customize how to compute the level of a
+heading line. Set `outline-level' to a function of no arguments which
+returns the level, assuming point is at the beginning of a heading
+line.
+
+** You can now specify the prefix key to use for Outline minor mode.
+(The default is C-c.) Set the variable outline-minor-mode-prefix to
+the key sequence you want to use (as a string or vector).
+
+** In Bibtex mode, C-c e has been changed to C-c C-b. This is because
+C-c followed by a letter is reserved for users.
+
+** The `mod' function is no longer an alias for `%', but is a separate function
+that yields a result with the same sign as the divisor. `floor' now takes an
+optional second argument, which divides the first argument before the floor is
+taken.
+
+** `%' no longer allows floating point arguments, since the results were often
+inconsistent with integer `%'.
+
+
+
+* Changes in version 19.18.
+
+** Typing C-z in an iconified Emacs frame now deiconifies it.
+
+** hilit19 is a new library for automatic highlighting of parts of the
+text in the buffer, based on its meaning and context.
+
+** Killing no longer sends the killed text to the X clipboard.
+And large strings are not put in the cut buffer either.
+The variable x-cut-buffer-max specifies the maximum number of characters
+to put in the cut buffer.
+
+** The new command C-x 5 o (other-frame) selects different frames,
+successively, in cyclic order. It does for frames what C-x o
+does for windows.
+
+** The command M-ESC (eval-expression) has its own command history.
+
+** The commands M-! and M-| for running shell commands have their own
+command history.
+
+** If the directory containing the Emacs executable has a sibling named
+`lisp', that `lisp' directory is added to the end of `load-path'
+(provided you don't override the normal value with the EMACSLOADPATH
+environment variable). This feature may make it easier to move
+an installed Emacs from place to place.
+
+** M-x validate-tex-buffer now records the locations of mismatches
+found in the `*Occur*' buffer. You can go to that buffer and type C-c
+C-c to visit a particular mismatch.
+
+** There are new commands in Shell mode.
+
+C-c C-n and C-c C-p move point to the next or previous shell input line.
+
+C-c C-d is now another way to send an end-of-file to the subshell.
+
+** Changes to calendar/diary.
+
+Time zone data is now determined automatically, including the
+start/stop days and times of daylight savings time. The code now
+works correctly almost anywhere in the world.
+
+The format of the holiday specifications has changed and IS NO LONGER
+COMPATIBLE with the old (version 18) format. See the documentation of
+the variable calendar-holidays for details of the new, improved
+format.
+
+The hook `diary-display-hook' has been split into two:
+diary-display-hook which should be used ONLY for the display and
+`diary-hook' which should be used for appointment notification. If
+diary-display-hook is nil (the default), simple-diary-display is
+used. This allows the diary hooks to be correctly set with add-hook.
+
+The forms used for dates in diary entries and general display are no
+longer autoloaded, but set at load time; this means they will be set
+correctly based on values you assign to various variables.
+
+** The functions x-rebind-key and x-rebind-keys have been deleted,
+because you can accomplish the same job by binding keys to keyboard
+macros.
+
+** Emacs now distinguishes double and triple drag events and double and
+triple button-down events. These work analogously to double and
+triple click events.
+
+Double drag events, if not defined, convert to ordinary click events.
+Double down events, if not defined, convert first to ordinary down
+events, which are then discarded if not defined. Triple events that
+are not defined convert to the corresponding double event; if that is
+also not defined, it may convert further.
+
+** The new function event-click-count returns the number of clicks,
+from an event which is a list. It is 1 for an ordinary click, drag,
+or button-down event, 2 for a double event, and 3 or more for a triple
+event.
+
+** The new function previous-frame is like next-frame, but moves
+around through the set of existing frames in the opposite order.
+
+** The post-command-hook now runs even after commands that get an error
+and return to top level. As a consequence of the same change, this
+hook also runs before Emacs reads the first command. That might sound
+paradoxical, as if this hook were the same as the pre-command-hook.
+Actually, they are not similar; the latter runs before *execution* of
+a command, but after it has been read.
+
+** You can turn off the text property hooks that run when point moves
+to certain places in the buffer, by binding inhibit-point-motion-hooks
+to a non-nil value.
+
+** Inserting a string with no text properties into the buffer normally
+inherits the properties of the preceding character. You can now
+control this inheritance by setting the front-sticky and
+rear-nonsticky properties of a character.
+
+If you make a character's front-sticky property t, then insertion
+before the character inherits its properties. If you make the
+rear-nonsticky property t, then insertion after the character does not
+inherit its properties. You can regard characters as normally being
+rear-sticky and not front-sticky, and this is why insertion normally
+inherits from the previous character.
+
+If neither side of an insertion is suitably sticky, then the inserted
+text gets no properties. If both sides are sticky, then the inserted
+text gets the properties of both sides, with the previous character's
+properties taking precedence when both sides have a property in
+common.
+
+You can also specify stickiness for individual properties. To do so,
+use a list of property names as the value of the front-sticky property
+or the rear-nonsticky property. For example, if a character has a
+rear-nonsticky property whose value is (face read-only), then
+insertion after the character will not inherit its face property or
+read-only property (if any), but will inherit any other properties.
+
+The merging of properties when both sides of the insertion are sticky
+takes place one property at a time. If the preceding character is
+rear-sticky for the property, and the property is non-nil, it
+dominates. Otherwise, the following character's property value is
+used if it is front-sticky for that property.
+
+** If you give a character a non-nil `invisible' text property, the
+character does not appear on the screen. This works much like
+selective display.
+
+The details of this feature are likely to change in future Emacs
+versions.
+
+** In Info, when you go to a node, it runs the normal hook
+Info-selection-hook.
+
+** You can use the new function `invocation-directory' to get the name
+of the directory containing the Emacs executable that was run.
+
+** Entry to the minibuffer runs the normal hook minibuffer-setup-hook.
+
+** The new function minibuffer-window-active-p takes one argument, a
+minibuffer window, and returns t if the window is currently active.
+
+
+
+* Changes in version 19.17.
+
+** When Emacs displays a list of completions in a buffer,
+you can select a completion by clicking mouse button 2
+on that completion.
+
+** Use the command `list-faces-display' to display a list of
+all the currently defined faces, showing what they look like.
+
+** Menu bar items from local maps now come after the usual items.
+
+** The Help menu bar item always comes last in the menu bar.
+
+** If you enable Font-Lock mode on a buffer containing a program
+(certain languages such as C and Lisp are supported), everything you
+type is automatically given a face property appropriate to its
+syntactic role. For example, there are faces for comments, string
+constants, names of functions being defined, and so on.
+
+** Dunnet, an adventure game, is now available.
+
+** Several major modes now have their own menu bar items,
+including Dired, Rmail, and Sendmail. We would like to add
+suitable menu bar items to other major modes.
+
+** The key binding C-x a C-h has been eliminated.
+This is because it got in the way of the general feature of typing
+C-h after a prefix character. If you want to run
+inverse-add-global-abbrev, you can use C-x a - or C-x a i g instead.
+
+** If you set the variable `rmail-mail-new-frame' to a non-nil value,
+all the Rmail commands to send mail make a new frame to do it in.
+When you send the message, or use the menu bar command not to send it,
+that frame is deleted.
+
+** In Rmail, the o and C-o commands are now almost interchangeable.
+Both commands check the format of the file you specify, and append
+the message to it in Rmail format if it is an Rmail file, and in
+inbox file format otherwise. C-o and o are different only when you
+specify a new file.
+
+** The function `copy-face' now takes an optional fourth argument
+NEW-FRAME. If you specify this, it copies the definition of face
+OLD-FACE on frame FRAME to face NEW-NAME on frame NEW-FRAME.
+
+** A local map can now cancel out one of the global map's menu items.
+Just define that subcommand of the menu item with `undefined'
+as the definition. For example, this cancels out the `Buffers' item
+for the current major mode:
+
+ (local-set-key [menu-bar buffer] 'undefined)
+
+** To put global items at the end of the menu bar, use the new variable
+`menu-bar-final-items'. It should be a list of symbols--event types
+bound in the menu bar. The menu bar items for these symbols are
+moved to the end.
+
+** The list returned by `buffer-local-variables' now contains cons-cell
+elements of the form (SYMBOL . VALUE) only for buffer-local variables
+that have values. For unbound buffer-local variables, the variable
+name (symbol) appears directly as an element of the list.
+
+** The `modification-hooks' property of a character no longer affects
+insertion; it runs only for deletion and modification of the character.
+
+To detect insertion, use `insert-in-front-hooks' and
+`insert-behind-hooks' properties. The former runs when text is
+inserted immediately preceding the character that has the property;
+the latter runs when text is inserted immediately following the
+character.
+
+** Buffer modification now runs hooks belonging to overlays as well as
+hooks belonging to characters. If an overlay has a
+`modification-hooks' property, it applies to any change to text in the
+overlay, and any insertion within the overlay. If the overlay has a
+`insert-in-front-hooks' property, it runs for insertion at the
+beginning boundary of the overlay. If the overlay has an
+`insert-behind-hooks' property, it runs for insertion at the end
+boundary of the overlay.
+
+The values of these properties should be lists of functions. Each
+function is called, receiving as arguments the overlay in question,
+followed by the bounds of the range being modified.
+
+** The new `-name NAME' option directs Emacs to search for its X
+resources using the name `NAME', and sets the title of the initial
+frame. This argument was added for consistency with other X clients.
+
+** The new `-xrm DATABASE' option tells Emacs to treat the string
+DATABASE as the text of an X resource database. Emacs searches
+DATABASE for resource values, in addition to the usual places. This
+argument was added for consistency with other X clients.
+
+** Emacs now searches for X resources in the files specified by the
+XFILESEARCHPATH, XUSERFILESEARCHPATH, and XAPPLRESDIR environment
+variables, emulating the functionality provided by programs written
+using Xt. Because of this change, Emacs will now notice system-wide
+application defaults files, as other X clients do.
+
+XFILESEARCHPATH and XUSERFILESEARCHPATH should be a list of file names
+separated by colons; XAPPLRESDIR should be a list of directory names
+separated by colons.
+
+Emacs searches for X resources
+ + specified on the command line, with the `-xrm RESOURCESTRING'
+ option,
+ + then in the value of the XENVIRONMENT environment variable,
+ - or if that is unset, in the file named ~/.Xdefaults-HOSTNAME if it exists
+ (where HOSTNAME is the hostname of the machine Emacs is running on),
+ + then in the screen-specific and server-wide resource properties
+ provided by the server,
+ - or if those properties are unset, in the file named ~/.Xdefaults
+ if it exists,
+ + then in the files listed in XUSERFILESEARCHPATH,
+ - or in files named LANG/Emacs in directories listed in XAPPLRESDIR
+ (where LANG is the value of the LANG environment variable), if
+ the LANG environment variable is set,
+ - or in files named Emacs in the directories listed in XAPPLRESDIR
+ - or in ~/LANG/Emacs (if the LANG environment variable is set),
+ - or in ~/Emacs,
+ + then in the files listed in XFILESEARCHPATH.
+
+The paths in the variables XFILESEARCHPATH, XUSERFILESEARCHPATH, and
+XAPPLRESDIR may contain %-escapes (like the control strings passed to
+the Emacs lisp `format' function or C printf function), which Emacs expands.
+
+%N is replaced by the string "Emacs" wherever it occurs.
+%T is replaced by "app-defaults" wherever it occurs.
+%S is replaced by the empty string wherever it occurs.
+%L and %l are replaced by the value of the LANG environment variable; if LANG
+ is not set, Emacs does not use that directory or file name at all.
+%C is replaced by the value of the resource named "customization"
+ (class "Customization"), as retrieved from the server's resource
+ properties or the user's ~/.Xdefaults file, or the empty string if
+ that resource doesn't exist.
+
+So, for example,
+ if XFILESEARCHPATH is set to the value
+ "/usr/lib/X11/%L/%T/%N%C:/usr/lib/X11/%T/%N%C:/usr/lib/X11/%T/%N",
+ and the LANG environment variable is set to
+ "english",
+ and the customization resource is the string
+ "-color",
+then, in the last step of the process described above, Emacs checks
+for resources in the first of the following files that is present and
+readable:
+ /usr/lib/X11/english/app-defaults/Emacs-color
+ /usr/lib/X11/app-defaults/Emacs-color
+ /usr/lib/X11/app-defaults/Emacs
+If the LANG environment variable is not set, then Emacs never uses the
+first element of the path, "/usr/lib/X11/%L/%T/%N%C", because it
+contains the %L escape.
+
+If XFILESEARCHPATH is unset, Emacs uses the default value
+"/usr/lib/X11/%L/app-defaults/Emacs%C:\
+/usr/lib/X11/app-defaults/Emacs%C:\
+/usr/lib/X11/%L/app-defaults/Emacs:\
+/usr/lib/X11/app-defaults/Emacs"
+
+This feature was added for consistency with other X applications.
+
+** The new function `text-property-any' scans the region of text from
+START to END to see if any character's property PROP is `eq' to
+VALUE. If so, it returns the position of the first such character.
+Otherwise, it returns nil.
+
+The optional fifth argument, OBJECT, specifies the string or buffer to
+be examined.
+
+** The new function `text-property-not-all' scans the region of text from
+START to END to see if any character's property PROP is not `eq' to
+VALUE. If so, it returns the position of the first such character.
+Otherwise, it returns nil.
+
+The optional fifth argument, OBJECT, specifies the string or buffer to
+be examined.
+
+** The function `delete-windows-on' now takes an optional second
+argument FRAME, which specifies which frames it should affect.
+ + If FRAME is nil or omitted, then `delete-windows-on' deletes windows
+ showing BUFFER (its first argument) on all frames.
+ + If FRAME is t, then `delete-windows-on' only deletes windows on the
+ selected frame; other frames are unaffected.
+ + If FRAME is a frame, then `delete-windows-on' only deletes windows on
+ the given frame; other frames are unaffected.
+
+
+
+* Changes in version 19.16.
+
+** When dragging the mouse to select a region, Emacs now highlights the
+region as you drag (if Transient Mark mode is enabled). If you
+continue the drag beyond the boundaries of the window, Emacs scrolls
+the window at a steady rate until you either move the mouse back into
+the window or release the button.
+
+** RET now exits `query-replace' and `query-replace-regexp'; this makes it
+more consistent with the incremental search facility, which uses RET
+to end the search.
+
+** In C mode, C-c C-u now runs c-up-conditional.
+C-c C-n and C-c C-p now run new commands that move forward
+and back over balanced sets of C conditionals (c-forward-conditional
+and c-backward-conditional).
+
+** The Edit entry in the menu bar has a new alternative:
+"Choose Next Paste". It gives you a menu showing the various
+strings in the kill ring; click on one to select it as the text
+to be yanked ("pasted") the next time you yank.
+
+** If you enable Transient Mark mode and set `mark-even-if-inactive' to
+non-nil, then the region is highlighted in a transient fashion just as
+normally in Transient Mark mode, but the mark really remains active
+all the time; commands that use the region can be used even if the
+region highlighting turns off.
+
+** If you type C-h after a prefix key, it displays the bindings
+that start with that prefix.
+
+** The VC package now searches for version control commands in the
+directories named by the variable `vc-path'; its value should be a
+list of strings.
+
+** If you are visiting a file that has locks registered under RCS,
+VC now displays each lock's owner and version number in the mode line
+after the string `RCS'. If there are no locks, VC displays the head
+version number.
+
+** When using X, if you load the `paren' library, Emacs automatically
+underlines or highlights the matching paren whenever point is
+next to the outside of a paren. When point is before an open-paren,
+this shows the matching close; when point is after a close-paren,
+this shows the matching open.
+
+** The new function `define-key-after' is like `define-key',
+but takes an extra argument AFTER. It places the newly defined
+binding after the binding for the event AFTER.
+
+** `accessible-keymaps' now takes an optional second argument, PREFIX.
+If PREFIX is non-nil, it means the value should include only maps for
+keys that start with PREFIX.
+
+`describe-bindings' also accepts an optional argument PREFIX which
+means to describe only the keys that start with PREFIX.
+
+** The variable `prefix-help-command' hold a command to run to display help
+whenever the character `help-char' follows a prefix key and does not have
+a key binding in that context.
+
+** Emacs now detects double- and triple-mouse clicks. A single mouse
+click produces a pair events of the form:
+ (down-mouse-N POSITION)
+ (mouse-N POSITION)
+Clicking the same mouse button again, soon thereafter and at the same
+location, produces another pair of events of the form:
+ (down-mouse-N POSITION)
+ (double-mouse-N POSITION 2)
+Another click will produce an event pair of the form:
+ (down-mouse-N POSITION)
+ (triple-mouse-N POSITION 3)
+All the POSITIONs in such a sequence would be identical, except for
+their timestamps.
+
+To count as double- and triple-clicks, mouse clicks must be at the
+same location as the first click, and the number of milliseconds
+between the first release and the second must be less than the value
+of the lisp variable `double-click-time'. Setting `double-click-time'
+to nil disables multi-click detection. Setting it to t removes the
+time limit; Emacs then detects multi-clicks by position only.
+
+If `read-key-sequence' finds no binding for a double-click event, but
+the corresponding single-click event would be bound,
+`read-key-sequence' demotes it to a single-click. Similarly, it
+demotes unbound triple-clicks to double- or single-clicks. This means
+you don't have to distinguish between single- and multi-clicks if you
+don't want to.
+
+Emacs reports all clicks after the third as `triple-mouse-N' clicks,
+but increments the click count after POSITION. For example, a fourth
+click, soon after the third and at the same location, produces a pair
+of events of the form:
+ (down-mouse-N POSITION)
+ (triple-mouse-N POSITION 4)
+
+** The way Emacs reports positions of mouse events has changed
+slightly. If a mouse event includes a position list of the form:
+ (WINDOW (PLACE-SYMBOL) (COLUMN . ROW) TIMESTAMP)
+this denotes exactly the same position as the list:
+ (WINDOW PLACE-SYMBOL (COLUMN . ROW) TIMESTAMP)
+That is, the event occurred over a non-textual area of the frame,
+specified by PLACE-SYMBOL, a symbol like `mode-line' or
+`vertical-scroll-bar'.
+
+Enclosing PLACE-SYMBOL in a singleton list does not change the
+position denoted, but the `read-key-sequence' function uses the
+presence or absence of the singleton list to tell whether or not it
+should prefix the event with its place symbol.
+
+Normally, `read-key-sequence' prefixes mouse events occurring over
+non-textual areas with their PLACE-SYMBOLs, to select the sub-keymap
+appropriate for the event; for example, clicking on the mode line
+produces a sequence like
+ [mode-line (mouse-1 POSN)]
+However, if lisp code elects to unread the resulting key sequence by
+placing it in the `unread-command-events' variable, it is important
+that `read-key-sequence' not insert the prefix symbol again; that
+would produce a malformed key sequence like
+ [mode-line mode-line (mouse-1 POSN)]
+For this reason, `read-key-sequence' encloses the event's PLACE-SYMBOL
+in a singleton list when it first inserts the prefix, but doesn't
+insert the prefix when processing events whose PLACE-SYMBOLs are
+already thus enclosed.
+
+
+
+* Changes in version 19.15.
+
+** `make-frame-visible', which uniconified frames, is now a command,
+and thus may be bound to a key. This makes sense because frames
+respond to user input while iconified.
+
+** You can now use Meta mouse clicks to set and use the "secondary
+selection". You can drag M-Mouse-1 across the region you want to
+select. Or you can press M-Mouse-1 at one end and M-Mouse-3 at the
+other (this also copies the text to the kill ring). Repeating M-Mouse-3
+again at the same place kills that text.
+
+M-Mouse-2 kills the secondary selection.
+
+Setting the secondary selection does not move point or the mark. It
+is possible to make a secondary selection that does not all fit on the
+screen, by using M-Mouse-1 at one end, scrolling, then using M-Mouse-3
+at the other end.
+
+Emacs has only one secondary selection at any time. Starting to set
+a new one cancels any previous one. The secondary selection displays
+using a face named `secondary-selection'.
+
+** There's a new way to request use of Supercite (sc.el). Do this:
+
+ (add-hook 'mail-citation-hook 'sc-cite-original)
+
+Currently this works with Rmail. In the future, other Emacs based
+mail-readers should be modified to understand this hook also.
+In the mean time, you should keep doing what you have done in the past
+for those other mail readers.
+
+** When a regular expression contains `\(...\)' inside a repetition
+operator such as `*' or `+', and you ask about the range that was matched
+using `match-beginning' and `match-end', the range you get corresponds
+to the *last* repetition *only*. In Emacs 18, you would get a range
+corresponding to all the repetitions.
+
+If you want to get a range corresponding to all the repetitions,
+put a `\(...\)' grouping *outside* the repetition operator. This
+is the syntax that corresponds logically to the desired result, and
+it works the same in Emacs 18 and Emacs 19.
+
+(This change actually took place earlier, but we didn't know about it
+and thus didn't document it.)
+
+
+
+* Changes in version 19.14.
+
+** To modify read-only text, bind the variable `inhibit-read-only'
+to a non-nil value. If the value is t, then all reasons that might
+make text read-only are inhibited (including `read-only' text properties).
+If the value is a list, then a `read-only' property is inhibited
+if it is `memq' in the list.
+
+** If you call `get-buffer-window' passing t as its second argument, it
+will only search for windows on visible frames. Previously, passing t
+as the secord argument caused `get-buffer-window' to search all
+frames, visible or not.
+
+** If you call `other-buffer' with a nil or omitted second argument, it
+will ignore buffers displayed windows on any visible frame, not just
+the selected frame.
+
+** You can specify a window or a frame for C-x # to use when
+selects a server buffer. Set the variable server-window
+to the window or frame that you want.
+
+** The command M-( now inserts spaces outside the open-parentheses in
+some cases--depending on the syntax classes of the surrounding
+characters. If the variable `parens-dont-require-spaces' is non-nil,
+it inhibits insertion of these spaces.
+
+** The GUD package now supports the debugger known as xdb on HP/UX
+systems. Use M-x xdb. The variable `gud-xdb-directories' lets you
+specify a list of directories to search for source code.
+
+** If you are using the mailabbrev package, you should note that its
+function for defining an alias is now called `define-mail-abbrev'.
+This package no longer contains a definition for `define-mail-alias';
+that name is used only in mailaliases.
+
+** Inserted characters now inherit the properties of the text before
+them, by default, rather than those of the following text.
+
+** The function `insert-file-contents' now takes optional arguments BEG
+and END that specify which part of the file to insert. BEG defaults to
+0 (the beginning of the file), and END defaults to the end of the file.
+
+If you specify BEG or END, then the argument VISIT must be nil.
+
+
+
+* Changes in version 19.13.
+
+** Magic file names can now handle the `load' operation.
+
+** Bibtex mode now sets up special entries in the menu bar.
+
+** The incremental search commands C-w and C-y, which copy text from
+the buffer into the search string, now convert it to lower case
+if you are in a case-insensitive search. This is to avoid making
+the search a case-sensitive one.
+
+** GNUS now knows your time zone automatically if Emacs does.
+
+** Hide-ifdef mode no longer defines keys of the form
+C-c LETTER, since those keys are reserved for users.
+Those commands have been moved to C-c M-LETTER.
+We may move them again for greater consistency with other modes.
+
+
+
+* Changes in version 19.12.
+
+** You can now make many of the sort commands ignore case by setting
+`sort-fold-case' to a non-nil value.
+
+
+
+* Changes in version 19.11.
+
+** Supercite is installed.
+
+** `write-file-hooks' functions that return non-nil are responsible
+for making a backup file if you want that to be done.
+To do so, execute the following code:
+
+ (or buffer-backed-up (backup-buffer))
+
+You might wish to save the file modes value returned by
+`backup-buffer' and use that to set the mode bits of the file
+that you write. This is what `basic-save-buffer' does when
+it writes a file in the usual way.
+
+(This is not actually new, but wasn't documented before.)
+
+
+
+* Changes in version 19.10.
+
+** The command `repeat-complex-command' is now on C-x ESC ESC.
+It used to be bound to C-x ESC.
+
+The reason for this change is to make function keys work after C-x.
+
+** The variable `highlight-nonselected-windows' now controls whether
+the region is highlighted in windows other than the selected window
+(in Transient Mark mode only, of course, and currently only when
+using X).
+
+
+
+* Changes in version 19.8.
+
+** It is now simpler to tell Emacs to display accented characters under
+X windows. M-x standard-display-european toggles the display of
+buffer text according to the ISO Latin-1 standard. With a prefix
+argument, this command enables European character display iff the
+argument is positive.
+
+** The `-i' command-line argument tells Emacs to use a picture of the
+GNU gnu as its icon, instead of letting the window manager choose an
+icon for it. This option used to insert a file into the current
+buffer; use `-insert' to do that now.
+
+** The `configure' script now supports `--prefix' and `--exec-prefix'
+options.
+
+The `--prefix=PREFIXDIR' option specifies where the installation process
+should put emacs and its data files. This defaults to `/usr/local'.
+- Emacs (and the other utilities users run) go in PREFIXDIR/bin
+ (unless the `--exec-prefix' option says otherwise).
+- The architecture-independent files go in PREFIXDIR/lib/emacs/VERSION
+ (where VERSION is the version number of Emacs, like `19.7').
+- The architecture-dependent files go in
+ PREFIXDIR/lib/emacs/VERSION/CONFIGURATION
+ (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
+ unless the `--exec-prefix' option says otherwise.
+
+The `--exec-prefix=EXECDIR' option allows you to specify a separate
+portion of the directory tree for installing architecture-specific
+files, like executables and utility programs. If specified,
+- Emacs (and the other utilities users run) go in EXECDIR/bin, and
+- The architecture-dependent files go in
+ EXECDIR/lib/emacs/VERSION/CONFIGURATION.
+EXECDIR/bin should be a directory that is normally in users' PATHs.
+
+** When running under X, the new lisp function `x-list-fonts'
+allows code to find out which fonts are available from the X server.
+The first argument PATTERN is a string, perhaps with wildcard characters;
+ the * character matches any substring, and
+ the ? character matches any single character.
+ PATTERN is case-insensitive.
+If the optional arguments FACE and FRAME are specified, then
+`x-list-fonts' returns only fonts the same size as FACE on FRAME.
+
+
+
+* Changes in version 19.
+
+** When you kill buffers, Emacs now returns memory to the operating system,
+thus reducing the size of the Emacs process. All the space that you free
+up by killing buffers can now be reused for other buffers no matter what
+their sizes, or reused by other processes if Emacs doesn't need it.
+
+** Emacs now does garbage collection and auto saving while it is waiting
+for input, which often avoids the need to do these things while you
+are typing.
+
+The variable `auto-save-timeout' says how many seconds Emacs should
+wait, after you stop typing, before it does an auto save and a garbage
+collection.
+
+** If auto saving detects that a buffer has shrunk greatly, it refrains
+from auto saving that buffer and displays a warning. Now it also turns
+off Auto Save mode in that buffer, so that you won't get the same
+warning again.
+
+If you reenable Auto Save mode in that buffer, Emacs will start saving
+it again with no further warnings.
+
+** A new minor mode called Line Number mode displays the current line
+number in the mode line, updating it as necessary when you move
+point.
+
+However, if the buffer is very large (larger than the value of
+`line-number-display-limit'), then the line number doesn't appear.
+This is because computing the line number can be painfully slow if the
+buffer is very large.
+
+** You can quit while Emacs is waiting to read or write files.
+
+** The arrow keys now have default bindings to move in the appropriate
+directions.
+
+** You can suppress next-line's habit of inserting a newline when
+called at the end of a buffer by setting next-line-add-newlines to nil
+(it defaults to t).
+
+** You can now get back recent minibuffer inputs conveniently. While
+in the minibuffer, type M-p to fetch the next earlier minibuffer
+input, and use M-n to fetch the next later input.
+
+There are also commands to search forward or backward through the
+history for history elements that match a regular expression. M-r
+searches older elements in the history, while M-s searches newer
+elements. By special dispensation, these commands can always use the
+minibuffer to read their arguments even though you are already in the
+minibuffer when you issue them.
+
+The history feature is available for all uses of the minibuffer, but
+there are separate history lists for different kinds of input. For
+example, there is a list for file names, used by all the commands that
+read file names. There is a list for arguments of commands like
+`query-replace'. There are also very specific history lists, such
+as the one that `compile' uses for compilation commands.
+
+** You can now display text in a mixture of fonts and colors, using the
+"face" feature, together with the overlay and text property features.
+See the Emacs Lisp manual for details. The Emacs Users Manual describes
+how to change the colors and font of standard predefined faces.
+
+** You can refer to files on other machines using special file name syntax:
+
+/HOST:FILENAME
+/USER@HOST:FILENAME
+
+When you do this, Emacs uses the FTP program to read and write files on
+the specified host. It logs in through FTP using your user name or the
+name USER. It may ask you for a password from time to time; this
+is used for logging in on HOST.
+
+** Some C-x key bindings have been moved onto new prefix keys.
+
+C-x r is a prefix for registers and rectangles.
+C-x n is a prefix for narrowing.
+C-x a is a prefix for abbrev commands.
+
+C-x r C-SPC
+C-x r SPC point-to-register (Was C-x /)
+C-x r j jump-to-register (Was C-x j)
+C-x r s copy-to-register (Was C-x x)
+C-x r i insert-register (Was C-x g)
+C-x r r copy-rectangle-to-register (Was C-x r)
+C-x r k kill-rectangle
+C-x r y yank-rectangle
+C-x r o open-rectangle
+C-x r f frame-configuration-to-register
+ (This saves the state of all windows in all frames.)
+C-x r w window-configuration-to-register
+ (This saves the state of all windows in the selected frame.)
+
+(Use C-x r j to restore a configuration saved with C-x r f or C-x r w.)
+
+C-x n n narrow-to-region (Was C-x n)
+C-x n p narrow-to-page (Was C-x p)
+C-x n w widen (Was C-x w)
+
+C-x a l add-mode-abbrev (Was C-x C-a)
+C-x a g add-global-abbrev (Was C-x +)
+C-x a i l inverse-add-mode-abbrev (Was C-x C-h)
+C-x a i g inverse-add-global-abbrev (Was C-x -)
+C-x a e expand-abbrev (Was C-x ')
+
+(The old key bindings C-x /, C-x j, C-x x and C-x g
+have not yet been removed.)
+
+** You can put a file name in a register to be able to visit the file
+quickly. Do this:
+
+ (set-register ?CHAR '(file . NAME))
+
+where NAME is the file name as a string. Then C-x r j CHAR finds that
+file.
+
+This is useful for files that you need to visit frequently,
+but that you don't want to keep in buffers all the time.
+
+** The keys M-g (fill-region) and C-x a (append-to-buffer)
+have been eliminated.
+
+** The new command `string-rectangle' inserts a specified string on
+each line of the region-rectangle.
+
+** C-x 4 r is now `find-file-read-only-other-window'.
+
+** C-x 4 C-o is now `display-buffer', which displays a specified buffer
+in another window without selecting it.
+
+** Picture mode has been substantially improved. The picture editing commands
+now arrange for automatic horizontal scrolling to keep point visible
+when editing a wide buffer with truncate-lines on. Picture-mode
+initialization now does a better job of rebinding standard commands;
+it finds not just their normal keybindings, but any function keys
+attached to them.
+
+** If you enable Transient Mark mode, then the mark becomes "inactive"
+after every command that modifies the buffer. While the mark is
+active, the region is highlighted (under X, at least). Most commands
+that use the mark give an error if the mark is inactive, but you can
+use C-x C-x to make it active again. This feature is also sometimes
+known as "Zmacs mode".
+
+** Outline mode is now available as a minor mode. This minor mode can
+combine with any major mode; it substitutes the C-c commands of
+Outline mode for those of the major mode. Use M-x outline-minor-mode
+to enable and disable the new mode.
+
+M-x outline-mode is unchanged; it still switches to Outline mode as a
+major mode.
+
+** The default setting of `version-control' comes from the environment
+variable VERSION_CONTROL.
+
+** The user option for controlling whether files can set local
+variables is now called `enable-local-variables'. A value of t means
+local-variables lists are obeyed; nil means they are ignored; anything
+else means query the user.
+
+The user option for controlling use of the `eval' local variable is
+now called is `enable-local-eval'; its values are interpreted like
+those of `enable-local-variables'.
+
+** X Window System changes:
+
+C-x 5 C-f and C-x 5 b switch to a specified file or buffer in a new
+frame. Likewise, C-x 5 m starts outgoing mail in another frame, and
+C-x 5 . finds a tag in another frame.
+
+When you are using X, C-z now iconifies the selected frame.
+
+Emacs can now exchange text with other X applications. Killing or
+copying text in Emacs now makes that text available for pasting into
+other X applications. The Emacs yanking commands now insert the
+latest selection set by other applications, and add the text to the
+kill ring. The Emacs commands for selecting and inserting text with
+the mouse now use the kill ring in the same way the keyboard killing
+and yanking commands do.
+
+The option to specify the title for the initial frame is now `-name NAME'.
+There is currently no way to specify an icon title; perhaps we will add
+one in the future.
+
+** Undoing a deletion now puts point back where it was before the
+deletion.
+
+** The variables that control how much undo information to save have
+been renamed to `undo-limit' and `undo-strong-limit'. They used to be
+called `undo-threshold' and `undo-high-threshold'.
+
+** You can now use kill commands in read-only buffers. They don't
+actually change the buffer, and Emacs will beep and warn you that the
+buffer is read-only, but they do copy the text you tried to kill into
+the kill ring, so you can yank it into other buffers.
+
+** C-o inserts the fill-prefix on the newly created line. The command
+M-^ deletes the prefix (if it occurs) after the newline that it
+deletes.
+
+** C-M-l now runs the command `reposition-window'. It scrolls the
+window heuristically in a way designed to get useful information onto
+the screen.
+
+** C-M-r is now reverse incremental regexp search.
+
+** M-z now kills through the target character. In version 18, it
+killed up to but not including the target character.
+
+** M-! now runs the specified shell command asynchronously if it
+ends in `&' (just as the shell does).
+
+** C-h C-f and C-h C-k are new help commands that display the Info
+node for a given Emacs function name or key sequence, respectively.
+
+** The C-h p command system lets you find Emacs Lisp packages by
+topic keywords. Here is a partial list of package categories:
+
+abbrev abbreviation handling, typing shortcuts, macros
+bib code related to the bib bibliography processor
+c C and C++ language support
+calendar calendar and time management support
+comm communications, networking, remote access to files
+docs support for Emacs documentation
+emulations emulations of other editors
+extensions Emacs Lisp language extensions
+games games, jokes and amusements
+hardware support for interfacing with exotic hardware
+help support for on-line help systems
+i14n internationalization and alternate character-set support
+internal code for Emacs internals, build process, defaults
+languages specialized modes for editing programming languages
+lisp Lisp support, including Emacs Lisp
+local code local to your site
+maint maintenance aids for the Emacs development group
+mail modes for electronic-mail handling
+news support for netnews reading and posting
+processes process, subshell, compilation, and job control support
+terminals support for terminal types
+tex code related to the TeX formatter
+tools programming tools
+unix front-ends/assistants for, or emulators of, UNIX features
+vms support code for vms
+wp word processing
+
+More will be added soon.
+
+** The command to split a window into two side-by-side windows is now
+C-x 3. It was C-x 5.
+
+** M-. (find-tag) no longer has any effect on what M-, will do
+subsequently. You can no longer use M-, to find the next similar tag;
+you must use M-. with a prefix argument, instead.
+
+The motive for this change is so that you can more reliably use
+M-, to resume a suspended `tags-search' or `tags-query-replace'.
+
+** C-x s (`save-some-buffers') now gives you more options when it asks
+whether to save a particular buffer. In addition to `y' or `n', you
+can answer `!' to save all the remaining buffers, `.' to save this
+buffer but not save any others, ESC to stop saving and exit the
+command, and C-h to get help. These options are analogous to those
+of `query-replace'.
+
+** M-x make-symbolic-link does not expand its first argument.
+This lets you make a link with a target that is a relative file name.
+
+** M-x add-change-log-entry and C-x 4 a now automatically insert the
+name of the file and often the name of the function that you changed.
+They also handle grouping of entries.
+
+There is now a special major mode for editing ChangeLog files. It
+makes filling work conveniently. Each bunch of grouped entries is one
+paragraph, and each collection of entries from one person on one day
+is considered a page.
+
+** The `comment-region' command adds comment delimiters to the lines that
+start in the region, thus commenting them out. With a negative argument,
+it deletes comment delimiters from the lines in the region--this cancels
+the effect of `comment-region' without an argument.
+
+With a positive argument, `comment-region' adds comment delimiters
+but duplicates the last character of the comment start sequence as many
+times as the argument specifies. This is a way of calling attention to
+the comment. In Lisp, you should use an argument at least two, because
+the indentation convention for single semicolon comments does not leave
+them at the beginning of a line.
+
+** If `split-window-keep-point' is non-nil, C-x 2 tries to avoid
+shifting any text on the screen by putting point in whichever window
+happens to contain the screen line the cursor is already on.
+The default is that `split-window-keep-point' is non-nil on slow
+terminals.
+
+** M-x super-apropos is like M-x apropos except that it searches both
+Lisp symbol names and documentation strings for matches. It describes
+every symbol that has a match in either the symbol's name or its
+documentation.
+
+Both M-x apropos and M-x super-apropos take an optional second
+argument DO-ALL which controls the more expensive part of the job.
+This includes looking up and printing the key bindings of all
+commands. It also includes checking documentation strings in
+super-apropos. DO-ALL is nil by default; use a prefix arg to make it
+non-nil.
+
+** M-x revert-buffer no longer offers to revert from a recent auto-save
+file unless you give it a prefix argument. Otherwise it always
+reverts from the real file regardless of whether there has been an
+auto-save since thenm. (Reverting from the auto-save file is no longer
+very useful now that the undo capacity is larger.)
+
+** M-x recover-file no longer turns off Auto Save mode when it reads
+the last Auto Save file.
+
+** M-x rename-buffer, if you give it a prefix argument,
+avoids errors by modifying the new name to make it unique.
+
+** M-x rename-uniquely renames the current buffer to a similar name
+with a numeric suffix added to make it both different and unique.
+
+One use of this command is for creating multiple shell buffers.
+If you rename your shell buffer, and then do M-x shell again, it
+makes a new shell buffer. This method is also good for mail buffers,
+compilation buffers, and any Emacs feature which creates a special
+buffer with a particular name.
+
+** M-x compare-windows with a prefix argument ignores changes in whitespace.
+If `compare-ignore-case' is non-nil, then differences in case are also
+ignored.
+
+** `backward-paragraph' is now bound to M-{ by default, and `forward-paragraph'
+to M-}. Originally, these commands were bound to M-[ and M-], but they were
+running into conflicts with the use of function keys. On many terminals,
+function keys send a sequence beginning ESC-[, so many users have defined this
+as a prefix key.
+
+** C-x C-u (upcase-region) and C-x C-l (downcase-region) are now disabled by
+default; these commands seem to be often hit by accident, and can be
+quite destructive if their effects are not noticed immediately.
+
+** The function `erase-buffer' is now interactive, but disabled by default.
+
+** When visiting a new file, Emacs attempts to abbreviate the file's
+path using the symlinks listed in `directory-abbrev-alist'.
+
+** When you visit the same file in under two names that translate into
+the same name once symbolic links are handled, Emacs warns you that
+you have two buffers for the same file.
+
+** If you wish to avoid visiting the same file in two buffers under
+different names, set the variable `find-file-existing-other-name'
+non-nil. Then `find-file' uses the existing buffer visiting the file,
+no matter which of the file's names you specify.
+
+** If you set `find-file-visit-truename' non-nil, then the file name
+recorded for a buffer is the file's truename (in which all symbolic
+links have been removed), rather than the name you specify. Setting
+`find-file-visit-truename' also implies the effect of
+`find-file-existing-other-name'.
+
+** C-x C-v now inserts the entire current file name in the minibuffer.
+This is convenient if you made a small mistake in typing it. Point
+goes after the last slash, before the last file name component, so if
+you want to replace it entirely, you can use C-k right away to delete
+it.
+
+** Commands such as C-M-f in Lisp mode now ignore parentheses within comments.
+
+** C-x q now uses ESC to terminate all iterations of the keyboard
+macro, rather than C-d as before.
+
+** Use the command `setenv' to set an individual environment variable
+for Emacs subprocesses. Specify a variable name and a value, both as
+strings. This command applies only to subprocesses yet to be
+started.
+
+** Use `rot13-other-window' to examine a buffer with rot13.
+
+This command does not change the text in the buffer. Instead, it
+creates a window with a funny display table that applies the code when
+displaying the text.
+
+** The command `M-x version' now prints the current Emacs version; The
+`version' command is an alias for the `emacs-version' command.
+
+** More complex changes in existing packages.
+
+*** `fill-nonuniform-paragraphs' is a new command, much like
+`fill-individual-paragraphs' except that only separator lines separate
+paragraphs. Since this means that the lines of one paragraph may have
+different amounts of indentation, the fill prefix used is the smallest
+amount of indentation of any of the lines of the paragraph.
+
+*** Filling is now partially controlled by a new minor mode, Adaptive
+Fill mode. When this mode is enabled (and it is enabled by default),
+if you use M-x fill-region-as-paragraph on an indented paragraph and
+you don't have a fill prefix, it uses the indentation of the second
+line of the paragraph as the fill prefix.
+
+Adaptive Fill mode doesn't have much effect on M-q in most major
+modes, because an indented line will probably count as a paragraph
+starter and thus each line of an indented paragraph will be considered
+a paragraph of its own.
+
+*** M-q in C mode now runs `c-fill-paragraph', which is designed
+for filling C comments. (We assume you don't want to fill
+the code in a C program.)
+
+*** M-$ now runs the Ispell program instead of the Unix spell program.
+
+M-$ starts an Ispell process the first time you use it. But the process
+stays alive, so that subsequent uses of M-$ run very fast.
+If you want to get rid of the process, use M-x kill-ispell.
+
+To check the entire current buffer, use M-x ispell-buffer.
+Use M-x ispell-region to check just the current region.
+
+Ispell commands often involve interactive replacement of words.
+You can interrupt the interactive replacement with C-g.
+You can restart it again afterward with C-u M-$.
+
+During interactive replacement, you can type the following characters:
+
+a Accept this word this time.
+DIGIT Replace the word (this time) with one of the displayed near-misses.
+ The digit you use says which near-miss to use.
+i Insert this word in your private dictionary
+ so that Ispell will consider it correct it from now on.
+r Replace the word this time with a string typed by you.
+
+When the Ispell process starts, it reads your private dictionary which
+is the file `~/ispell.words'. If you "insert" words with the `i' command,
+these words are added to that file, but not right away--only at the end
+of the interactive replacement process.
+
+Use M-x reload-ispell to reload your private dictionary from
+`~/ispell.words' if you edit it outside of Ispell.
+
+** Changes in existing modes.
+
+*** gdb-mode has been replaced by gud-mode.
+
+The package gud.el (Grand Unified Debugger) replaces gdb.el in Emacs
+19. It provides a gdb.el-like interface to any of three debuggers;
+gdb itself, the sdb debugger supported on some Unix systems, or the
+dbx debugger on Berkeley systems.
+
+ You start it up with one of the commands M-x gdb, M-x sdb, or
+M-x dbx. Each entry point finishes by executing a hook; gdb-mode-hook,
+sdb-mode-hook or dbx-mode-hook respectively.
+
+These bindings have changed:
+C-x C-a > gud-down (was M-d)
+C-x C-a < gud-up (was M-u)
+C-x C-a C-r gud-cont (was M-c)
+C-x C-a C-n gud-next (was M-n)
+C-x C-a C-s gud-step (was M-s)
+C-x C-a C-i gud-stepi (was M-i)
+C-x C-a C-l gud-recenter (was C-l)
+C-d comint-delchar-or-maybe-eof (was C-c C-d)
+
+These bindings have been removed:
+C-c C-r (was comint-show-output; now gud-cont)
+
+Since GUD mode uses comint, it uses comint's input history commands,
+superseding C-c C-y (copy-last-shell-input):
+ M-p comint-next-input
+ M-n comint-previous-input
+ M-r comint-previous-similar-input
+ M-s comint-next-similar-input
+ M-C-r comint-previous-input-matching
+
+The C-x C-a bindings are also active in source files.
+
+*** The old TeX mode bindings of M-{ and M-} have been moved to C-c {
+and C-c }. (These commands are `up-list' and `tex-insert-braces';
+they are the TeX equivalents of M-( and M-).) This is because M-{
+and M-} are now globally defined commands.
+
+*** Changes in Mail mode.
+
+`%' is now a word-separator character in Mail mode.
+
+`mail-signature', if non-nil, tells M-x mail to insert your
+`.signature' file automatically. If you don't want your signature in
+a particular message, just delete it before you send the message.
+
+You can specify the text to insert at the beginning of each line when
+you use C-c C-y to yank the message you are replying to. Set
+`mail-yank-prefix' to the desired string. A value of `nil' (the
+default) means to use indentation, as in Emacs 18. If you use just
+C-u as the prefix argument to C-c C-y, then it does not insert
+anything at the beginning of the lines, regardless of the value of
+`mail-yank-prefix'.
+
+If you like, you can expand mail aliases as abbrevs, as soon as you
+type them in. To enable this feature, execute the following:
+
+ (add-hook 'mail-setup-hook 'mail-abbrevs-setup)
+
+This can go in your .emacs file.
+
+Word abbrevs don't expand unless you insert a word-separator character
+afterward. Any mail aliases that you didn't expand at insertion time
+are expanded subsequently when you send the message.
+
+*** Changes in Rmail.
+
+Rmail by default gets new mail only from the system inbox file,
+not from `~/mbox'.
+
+In Rmail, you can retry sending a message that failed
+by typing `M-m' on the failure message.
+
+By contrast, another new command M-x rmail-resend is used for
+forwarding a message and marking it as "resent from" you
+with header fields "Resent-From:" and "Resent-To:".
+
+`e' is now the command to edit a message.
+To expunge, type `x'. We know this will surprise people
+some of the time, but the surprise will not be disastrous--if
+you type `e' meaning to expunge, just turn off editing with C-c C-c
+and then type `x'.
+
+Another new Rmail command is `<', which moves to the first message.
+This is for symmetry with `>'.
+
+Use the `b' command to bury the Rmail buffer and its summary buffer,
+if any, removing both of them from display on the screen.
+
+The variable `rmail-output-file-alist' now controls the default
+for the file to output a message to.
+
+In the Rmail summary buffer, all cursor motion commands select
+the message you move to. It's really neat when you use
+incremental search.
+
+You can now issue most Rmail commands from an Rmail summary buffer.
+The commands do the same thing in that buffer that they do in the
+Rmail buffer. They apply to the message that is selected in the Rmail
+buffer, which is always the one described by the current summary
+line.
+
+Conversely, motion and deletion commands in the Rmail buffer also
+update the summary buffer. If you set the variable
+`rmail-redisplay-summary' to a non-nil value, then they bring the
+summary buffer (if one exists) back onto the screen.
+
+C-M-t is a new command to make a summary by topic. It uses regexp
+matching against just the subjects of the messages to decide which
+messages to show in the summary.
+
+You can easily convert an Rmail file to system mailbox format with the
+command `unrmail'. This command reads two arguments, the name of
+the Rmail file to convert, and the name of the new mailbox file.
+(This command does not change the Rmail file itself.)
+
+Rmail now handles Content Length fields in messages.
+
+*** `mail-extract-address-components' unpacks mail addresses.
+It takes an address as a string (the contents of the From field, for
+example) and returns a list of the form (FULL-NAME
+CANONICAL-ADDRESS).
+
+*** Changes in C mode and C-related commands.
+
+**** M-x c-up-conditional
+
+In C mode, `c-up-conditional' moves back to the containing
+preprocessor conditional, setting the mark where point was
+previously.
+
+A prefix argument acts as a repeat count. With a negative argument,
+this command moves forward to the end of the containing preprocessor
+conditional. When going backwards, `#elif' acts like `#else' followed
+by `#if'. When going forwards, `#elif' is ignored.
+
+**** In C mode, M-a and M-e are now defined as
+`c-beginning-of-statement' and `c-end-of-statement'.
+
+**** In C mode, M-x c-backslash-region is a new command to insert or
+align `\' characters at the ends of the lines of the region, except
+for the last such line. This is useful after writing or editing a C
+macro definition.
+
+If a line already ends in `\', this command adjusts the amount of
+whitespace before it. Otherwise, it inserts a new `\'.
+
+*** New features in info.
+
+When Info looks for an Info file, it searches the directories
+in `Info-directory-list'. This makes it easy to install the Info files
+that come with various packages. You can specify the path with
+the environment variable INFOPATH.
+
+There are new commands in Info mode.
+
+`]' now moves forward a node, going up and down levels as needed.
+`[' is similar but moves backward. These two commands try to traverse
+the entire Info tree, node by node. They are the equivalent of reading
+a printed manual sequentially.
+
+`<' moves to the top node of the current Info file.
+`>' moves to the last node of the file.
+
+SPC scrolls through the current node; at the end, it advances to the
+next node in depth-first order (like `]').
+
+DEL scrolls backwards in the current node; at the end, it moves to the
+previous node in depth-first order (like `[').
+
+After a menu select, the info `up' command now restores point in the
+menu. The combination of this and the previous two changes means that
+repeated SPC keystrokes do the right (depth-first traverse forward) thing.
+
+`i STRING RET' moves to the node associated with STRING in the index
+or indices of this manual. If there is more than one match for
+STRING, the `i' command finds the first match.
+
+`,' finds the next match for the string in the previous `i' command
+
+If you click the middle mouse button near a cross-reference,
+menu item or node pointer while in Info, you will go to the node
+which is referenced.
+
+*** Changes in M-x compile.
+
+You can repeat any previous compilation command conveniently using the
+minibuffer history commands, while in the minibuffer entering the
+compilation command.
+
+While a compilation is going on, the string `Compiling' appears in
+the mode line. When this string disappears, that tells you the
+compilation is finished.
+
+The buffer of compiler messages is in Compilation mode. This mode
+provides the keys SPC and DEL to scroll by screenfuls, and M-n and M-p
+to move to the next or previous error message. You can also use C-c
+C-c on any error message to find the corresponding source code.
+
+Emacs 19 has a more general parser for compiler messages. For example, it
+can understand messages from lint, and from certain C compilers whose error
+message format is unusual. Also, it only parses until it sees the error
+message you want; you never have to wait a long time to see the first
+error, no matter how big the buffer is.
+
+*** M-x diff and M-x diff-backup.
+
+This new command compares two files, displaying the differences in an
+Emacs buffer. The options for the `diff' program come from the
+variable `diff-switches', whose value should be a string.
+
+The buffer of differences has Compilation mode as its major mode, so you
+can use C-x ` to visit successive changed locations in the two
+source files, or you can move to a particular hunk of changes and type
+C-c C-c to move to the corresponding source. You can also use the
+other special commands of Compilation mode: SPC and DEL for
+scrolling, and M-n and M-p for cursor motion.
+
+M-x diff-backup compares a file with its most recent backup.
+If you specify the name of a backup file, `diff-backup' compares it
+with the source file that it is a backup of.
+
+*** The View commands (such as M-x view-buffer and M-x view-file) no
+longer use recursive edits; instead, they switch temporarily to a
+different major mode (View mode) specifically designed for moving
+around through a buffer without editing it.
+
+*** Changes in incremental search.
+
+**** The character to terminate an incremental search is now RET.
+This is for compatibility with the way most other arguments are read.
+
+To search for a newline in an incremental search, type LFD (also known
+as C-j).
+
+**** Incremental search now maintains a ring of previous search
+strings. Use M-p and M-n to move through the ring to pick a search
+string to reuse. These commands leave the selected search ring
+element in the minibuffer, where you can edit it. Type C-s or C-r to
+finish editing and search for the chosen string.
+
+**** If you type an upper case letter in incremental search, that turns
+off case-folding, so that you get a case-sensitive search.
+
+**** If you type a space during regexp incremental search, it matches
+any sequence of whitespace characters. If you want to match just a space,
+type C-q SPC.
+
+**** Incremental search is now implemented as a major mode. When you
+type C-s, it switches temporarily to a different keymap which defines
+each key to do what it ought to do for incremental search. This has
+next to no effect on the user-visible behavior of searching, but makes
+it easier to customize that behavior.
+
+Emacs 19 eliminates the old variables `search-...-char' that used to
+be the way to specify the characters to use for various special
+purposes in incremental search. Instead, you can define the meaning
+of a character in incremental search by modifying `isearch-mode-map'.
+
+*** New commands in Buffer Menu mode.
+
+The command C-o now displays the current line's buffer in another
+window but does not select it. This is like the existing command `o'
+which selects the current line's buffer in another window.
+
+The command % toggles the read-only flag of the current line's buffer.
+
+The way to switch to a set of several buffers, including those marked
+with m, is now v. The q command simply quits, replacing the buffer
+menu buffer with the buffer that was displayed previously.
+
+** New major modes and packages.
+
+*** The news reader GNUS is now installed.
+
+*** There is a new interface for version control systems, called VC.
+It works with both RCS and SCCS; in fact, you don't really have to
+know which one of them is being used, because it automatically deals
+with either one.
+
+Most of the time, the only command you have to know about is C-x C-q.
+This command normally toggles the read-only flag of the current
+buffer. If the buffer is visiting a file that is maintained with a
+version control system, the command still toggles read-only, but does
+so by checking the file in or checking it out.
+
+When you check a file in, VC asks you for a log entry by popping up a
+buffer. Edit the entry there, then type C-c C-c when it is ready.
+That's when the actual checkin happens. If you change your mind about
+the checkin, simply switch buffers and don't ever go back to the log
+buffer.
+
+To start using version control for a file, use the command C-x v v.
+This works like C-x C-q (performing the next logical version-control
+operation needed to change the file's writability) but it will also
+perform initial checkin on an unregistered file.
+
+By default, VC uses RCS if RCS is installed on your machine;
+otherwise, SCCS. If you want to make the choice explicitly, you can do
+it by setting `vc-default-back-end' to the symbol `RCS' or the symbol
+`SCCS'.
+
+You can tell when a file you visit is maintained with version control
+because either `RCS' or `SCCS' appears in the mode line.
+
+*** A new Calendar mode has been added, the work of Edward M. Reingold.
+The mode can display the Gregorian calendar and a variety of other
+calendars at any date, and interacts with a diary facility similar to
+the UNIX `calendar' utility.
+
+*** There is a new major mode for editing binary files: Hexl mode.
+To use it, use M-x hexl-find-file instead of C-x C-f to visit the file.
+This command converts the file's contents to hexadecimal and lets you
+edit the translation. When you save the file, it is converted
+automatically back to binary.
+
+You can also use M-x hexl-mode to translate an existing buffer into hex.
+Do this if you have already visited a binary file.
+
+Hexl mode has a few other commands:
+
+C-M-d insert a byte with a code typed in decimal.
+C-M-o insert a byte with a code typed in octal.
+C-M-x insert a byte with a code typed in hex.
+
+C-x [ move to the beginning of a 1k-byte "page".
+C-x ] move to the end of a 1k-byte "page".
+
+M-g go to an address specified in hex.
+M-j go to an address specified in decimal.
+
+C-c C-c leave hexl mode and go back to the previous major mode.
+
+*** Miscellaneous new major modes include Awk mode, Icon mode, Makefile
+mode, Perl mode and SGML mode.
+
+*** Edebug, a new source-level debugger for Emacs Lisp functions.
+
+To use Edebug, use the command M-x edebug-defun to "evaluate" a
+function definition in an Emacs Lisp file. We put "evaluate" in
+quotation marks because it doesn't just evaluate the function, it also
+inserts additional information to support source-level debugging.
+
+You must also do
+
+ (setq debugger 'edebug-debug)
+
+to cause errors and single-stepping to use Edebug instead of the usual
+Emacs Lisp debugger.
+
+For more information, see the Edebug manual, which should be included
+in the Emacs distribution.
+
+*** C++ mode is like C mode, except that it understands C++ comment syntax
+and certain other differences between C and C++. It also has a command
+`fill-c++-comment' which fills a paragraph made of comment lines.
+
+The command `comment-region' is useful in C++ mode for commenting out
+several consecutive lines, or removing the commenting out of such lines.
+
+*** A new package for merging two variants of the same text.
+
+It's not unusual for programmers to get their signals crossed and
+modify the same program in two different directions. Then somebody
+has to merge the two versions. The command `emerge-files' makes this
+easier.
+
+`emerge-files' reads two file names and compares them. Then it
+displays three buffers: one for each file, and one for the
+differences.
+
+If the original version of the file is available, you can make things
+even easier using `emerge-files-with-ancestor'. It reads three file
+names--variant 1, variant 2, and the common ancestor--and uses diff3
+to compare them.
+
+You control the merging interactively. The main loop of Emerge
+consists of showing you one set of differences, asking you what to do
+about them, and doing it. You have a choice of two modes for giving
+directions to Emerge: "fast" mode and "edit" mode.
+
+In Fast mode, Emerge commands are single characters, and ordinary
+Emacs commands are disabled. This makes Emerge operations fast, but
+prevents you from doing more than selecting the A or the B version of
+differences. In Edit mode, all emerge commands use the C-c prefix,
+and the usual Emacs commands are available. This allows editing the
+merge buffer, but slows down Emerge operations. Edit and fast modes
+are indicated by `F' and `E' in the minor modes in the mode line.
+
+The Emerge commands are:
+
+ p go to the previous difference
+ n go to the next difference
+ a select the A version of this difference
+ b select the B version of this difference
+ j go to a particular difference (prefix argument
+ specifies which difference) (0j suppresses display of
+ the flags)
+ q quit - finish the merge*
+ f go into fast mode
+ e go into edit mode
+ l recenter (C-l) all three windows*
+ - and 0 through 9
+ prefix numeric arguments
+ d a select the A version as the default from here down in
+ the merge buffer*
+ d b select the B version as the default from here down in
+ the merge buffer*
+ c a copy the A version of the difference into the kill
+ ring
+ c b copy the B version of the difference into the kill
+ ring
+ i a insert the A version of the difference at the point
+ i b insert the B version of the difference at the point
+ m put the point and mark around the difference region
+ ^ scroll-down (like M-v) the three windows*
+ v scroll-up (like C-v) the three windows*
+ < scroll-left (like C-x <) the three windows*
+ > scroll-right (like C-x >) the three windows*
+ | reset horizontal scroll on the three windows*
+ x 1 shrink the merge window to one line (use C-u l to restore it
+ to full size)
+ x a find the difference containing a location in the A buffer*
+ x b find the difference containing a location in the B buffer*
+ x c combine the two versions of this difference*
+ x C combine the two versions of this difference, using a
+ register's value as the template*
+ x d find the difference containing a location in the merge buffer*
+ x f show the files/buffers Emerge is operating on in Help window
+ (use C-u l to restore windows)
+ x j join this difference with the following one
+ (C-u x j joins this difference with the previous one)
+ x l show line numbers of points in A, B, and merge buffers
+ x m change major mode of merge buffer*
+ x s split this difference into two differences
+ (first position the point in all three buffers to the places
+ to split the difference)
+ x t trim identical lines off top and bottom of difference
+ (such lines occur when the A and B versions are
+ identical but differ from the ancestor version)
+ x x set the template for the x c command*
+
+Normally, the merged output goes back in the first file specified.
+If you use a prefix argument, Emerge reads another file name to use
+for the output file.
+
+Once Emerge has prepared the buffer of differences, it runs the hooks
+in `emerge-startup-hooks'.
+
+*** Asm mode is a new major mode for editing files of assembler code.
+It defines these commands:
+
+TAB tab-to-tab-stop.
+LFD Insert a newline and then indent using tab-to-tab-stop.
+: Insert a colon and then remove the indentation
+ from before the label preceding colon. Then tab-to-tab-stop.
+; Insert or align a comment.
+
+*** Two-column mode lets you conveniently edit two side-by-side columns
+of text. It works using two side-by-side windows, each showing its
+own buffer.
+
+Here are three ways to enter two-column mode:
+
+C-x 6 2 makes the current buffer into the left-hand buffer. In the
+right-hand window it puts a buffer whose name is based on the current
+buffer's name.
+
+C-x 6 b BUFFER RET makes the current buffer into the left-hand buffer,
+and uses buffer BUFFER as the right-hand buffer.
+
+C-x 6 s splits the current buffer, which contains two-column text,
+into two side-by-side buffers. The old current buffer becomes the
+left-hand buffer, but the text in the right column is moved into the
+right-hand buffer. The current column specifies the split point.
+Splitting starts with the current line and continues to the end of the
+buffer.
+
+C-x 6 s takes a prefix argument which specifies how many characters
+before point constitute the column separator. (The default argument
+is 1, as usual, so by default the column separator is the character
+before point.) Lines that don't have the column separator at the
+proper place remain unsplit; they stay in the left-hand buffer, and
+the right-hand buffer gets an empty line to correspond.
+
+You can scroll both buffers together using C-x 6 SPC (scroll up), C-x
+6 DEL (scroll down), and C-x 6 RET (scroll up one line). C-x 6 C-l
+recenters both buffers together.
+
+If you want to make a line which will span both columns, put it in
+the left-hand buffer, with an empty line in the corresponding place in
+the right-hand buffer.
+
+When you have edited both buffers as you wish, merge them with C-x 6
+1. This copies the text from the right-hand buffer as a second column
+in the other buffer. To go back to two-column editing, use C-x 6 s.
+
+Use C-x 6 d to disassociate the two buffers, leaving each as it
+stands. (If the other buffer, the one that was not current when you
+type C-x 6 d, is empty, C-x 6 d kills it.)
+
+*** You can supply command arguments such as files to visit to an Emacs
+that is already running. To do this, you must do this in your .emacs
+file:
+ (add-hook 'suspend-hook 'resume-suspend-hook)
+Also you must use the shellscript emacs.csh or emacs.sh, found in the
+etc subdirectory.
+
+*** Shell mode has been completely replaced.
+The basic idea is the same, but there are new commands available in
+this mode.
+
+TAB now completes the file name before point in the shell buffer.
+To get a list of all possible completions, type M-?.
+
+There is a new convenient history mechanism for repeating previous
+commands. Use the command M-p to recall the last command; it copies
+the text of that command to the place where you are editing. If you
+repeat M-p, it replaces the copied command with the previous command.
+M-n is similar but goes in the opposite direction towards the present.
+When you find the command you wanted, you can edit it, or just
+resubmit it by typing RET.
+
+You can also use M-r and M-s to search for (respectively) earlier or
+later inputs starting with a given string. First type the string,
+then type M-r to yank a previous input from the history which starts
+with that string. You can repeat M-r to find successively earlier
+inputs starting with the same string. You can start moving in the
+opposite direction (toward more recent inputs) by typing M-s instead
+of M-r. As long as you don't use any commands except M-r and M-s,
+they keep using the same string that you had entered initially.
+
+C-c C-o kills the last batch of output from a shell command. This is
+useful if a shell command spews out lots of output that just gets in
+the way.
+
+C-c C-r scrolls to display the beginning of the last batch of output
+at the top of the window; it also moves the cursor there.
+
+C-a on a line that starts with a shell prompt moves to the end of the
+prompt, not to the very beginning of the line.
+
+C-d typed at the end of the shell buffer sends EOF to the subshell.
+At any other position in the buffer, it deletes a character as usual.
+
+If Emacs gets confused while trying to track changes in the shell's
+current directory, type M-x dirs to re-synchronize.
+
+M-x send-invisible reads a line of text without echoing it, and
+sends it to the shell.
+
+If you accidentally suspend your process, use M-x comint-continue-subjob
+to continue it.
+
+*** There is now a convenient way to enable flow control on terminals
+where you can't win without it. Suppose you want to do this on
+VT-100 and H19 terminals; put the following in your `.emacs' file:
+
+ (enable-flow-control-on "vt100" "h19")
+
+When flow control is enabled, you must type C-\ to get the effect of a
+C-s, and type C-^ to get the effect of a C-q.
+
+The function `enable-flow-control' enables flow control unconditionally.
+
+** Changes in Dired
+
+Dired has many new features which allow you to do these things:
+
+- Rename, copy, or make links to many files at once.
+
+- Make distinguishable types of marks for different operations.
+
+- Display contents of subdirectories in the same Dired buffer as the
+parent directory.
+
+*** Setting and Clearing Marks
+
+There are now two kinds of marker that you can put on a file in Dired:
+`D' for deletion, and `*' for any other kind of operation.
+The `x' command deletes only files marked with `D', and most
+other Dired commands operate only on the files marked with `*'.
+
+To mark files with `D' (also called "flagging" the files), you
+can use `d' as usual. Here are some commands for marking with
+`*' (and also for unmarking):
+
+**** `m' marks the current file with `*', for an operation other than
+deletion.
+
+**** `*' marks all executable files. With a prefix argument, it
+unmarks all those files.
+
+**** `@' marks all symbolic links. With a prefix argument, it unmarks
+all those files.
+
+**** `/' marks all directory files except `.' and `..'. With a prefix
+argument, it unmarks all those files.
+
+**** M-DEL removes a specific or all marks from every file. With an
+argument, queries for each marked file. Type your help character,
+usually C-h, at that time for help.
+
+**** `c' replaces all marks that use the character OLD with marks that
+use the character NEW. You can use almost any character as a mark
+character by means of this command, to distinguish various classes of
+files. If OLD is ` ', then the command operates on all unmarked
+files; if NEW is ` ', then the command unmarks the files it acts on.
+
+*** Operating on Multiple Files
+
+The Dired commands to operate directly on files (rename them, copy
+them, and so on) have been generalized to work on multiple files.
+There are also some additional commands in this series.
+
+All of these commands use the same convention to decide which files to
+manipulate:
+
+- If you give the command a numeric prefix argument @var{n}, it operates
+on the next @var{n} files, starting with the current file.
+
+- Otherwise, if there are marked files, the commands operate on all the
+marked files.
+
+- Otherwise, the command operates on the current file only.
+
+These are the commands:
+
+**** `C' copies the specified files. You must specify a directory to
+copy into, or (if copying a single file) a new name.
+
+If `dired-copy-preserve-time' is non-`nil', then copying sets
+the modification time of the new file to be the same as that of the old
+file.
+
+**** `R' renames the specified files. You must specify a directory to
+rename into, or (if renaming a single file) a new name.
+
+Dired automatically changes the visited file name of buffers associated
+with renamed files so that they refer to the new names.
+
+**** `H' makes hard links to the specified files. You must specify a
+directory to make the links in, or (if making just one link) the name
+to give the link.
+
+**** `S' makes symbolic links to the specified files. You must specify
+a directory to make the links in, or (if making just one link) the
+name to give the link.
+
+**** `M' changes the mode of the specified files. This calls the
+`chmod' program, so you can describe the desired mode change with any
+argument that `chmod' would handle.
+
+**** `G' changes the group of the specified files.
+
+**** `O' changes the owner of the specified files. (On normal systems,
+only the superuser can do this.)
+
+The variable `dired-chown-program' specifies the name of the
+program to use to do the work (different systems put `chown' in
+different places.
+
+**** `Z' compresses or uncompresses the specified files.
+
+**** `L' loads the specified Emacs Lisp files.
+
+**** `B' byte compiles the specified Emacs Lisp files.
+
+**** `P' prints the specified files. It uses the variables
+`lpr-command' and `lpr-switches' just as `lpr-file' does.
+
+*** Shell Commands in Dired
+
+`!' reads a shell command string in the minibuffer and runs the shell
+command on all the specified files. There are two ways of applying a
+shell command to multiple files:
+
+- If you use `*' in the command, then the shell command runs just
+once, with the list of file names substituted for the `*'.
+
+Thus, `! tar cf foo.tar * RET' runs `tar' on the entire list of file
+names, putting them into one tar file `foo.tar'. The file names are
+inserted in the order that they appear in the Dired buffer.
+
+- If the command string doesn't contain `*', then it runs once for
+each file, with the file name attached at the end. For example, `!
+uudecode RET' runs `uudecode' on each file.
+
+To run the shell command once for each file but without being limited
+to putting the file name inserted in the middle, use a shell loop.
+For example, this shell command would run `uuencode' on each of the
+specified files, writing the output into a corresponding `.uu' file:
+
+ for file in *; uuencode $file $file >$file.uu; done
+
+The working directory for the shell command is the top level directory
+of the Dired buffer.
+
+*** Regular Expression File Name Substitution
+
+**** `% m REGEXP RET' marks all files whose names match the regular
+expression REGEXP.
+
+Only the non-directory part of the file name is used in matching. Use
+`^' and `$' to anchor matches. Exclude subdirs by hiding them.
+
+**** `% d REGEXP RET' flags for deletion all files whose names match
+the regular expression REGEXP.
+
+**** `% R', `% C', `% H', `% S'
+
+These four commands rename, copy, make hard links and make soft links,
+in each case computing the new name by regular expression substitution
+from the name of the old file. They effectively perform
+`query-replace-regexp' on the selected file names in the Dired buffer.
+
+The commands read two arguments: a regular expression, and a
+substitution pattern. Each selected file name is matched against the
+regular expression, and then the part which matched is replaced with
+the substitution pattern. You can use `\&' and `\DIGIT' in the
+substitution pattern to refer to all or part of the old file name.
+
+If the regular expression matches more than once in a file name,
+only the first match is replaced.
+
+Normally, the replacement process does not consider the directory names;
+it operates on the file name within the directory. If you specify a
+prefix argument of zero, then replacement affects entire file name.
+
+To apply the command to all files matching the same regexp that you
+use in the command, mark those files with `% m REGEXP RET', then use
+the same regular expression in `% R'. To make this easier, `% R' uses
+as a default the last regular expression specified in a `%' command.
+
+*** Dired Case Conversion
+
+**** `% u' renames each of the selected files to an upper case name.
+
+**** `% l' renames each of the selected files to a lower case name.
+
+*** File Comparison with Dired
+
+**** `=' compares the current file with another file (the file at the
+mark), by running the `diff' program. The file at the mark is given
+to `diff' first.
+
+**** `M-=' compares the current file with its backup file. If there
+are several numerical backups, it uses the most recent one. If this
+file is a backup, it is compared with its original.
+
+The backup file is the first file given to `diff'.
+
+*** Subdirectories in Dired
+
+You can display more than one directory in one Dired buffer.
+The simplest way to do this is to specify the options `-lR' for
+running `ls'. That produces a recursive directory listing showing
+all subdirectories, all within the same Dired buffer.
+
+You can also insert the contents of a particular subdirectory with the
+`i' command. Use this command on the line that describes a file which
+is a directory. Inserted subdirectory contents follow the top-level
+directory of the Dired buffer, just as they do in `ls -lR' output.
+
+If the subdirectory's contents are already present in the buffer, the
+`i' command just moves to it (type `l' to refresh it). It sets the
+Emacs mark before moving, so C-x C-x takes you back to the old
+position in the buffer.
+
+When you have subdirectories in the Dired buffer, you can use the page
+motion commands C-x [ and C-x ] to move by entire directories.
+
+The following commands move up and down in the tree of directories
+in one Dired buffer:
+
+**** C-M-u Go up to the parent directory's headerline.
+
+**** C-M-d Go down in the tree, to the first subdirectory's
+headerline.
+
+**** C-M-n Go to next subdirectory headerline, regardless of level.
+
+**** C-M-p Go to previous subdirectory headerline, regardless of
+level.
+
+*** Hiding Subdirectories
+
+"Hiding" a subdirectory means to make it invisible, except for its
+headerline. Files inside a hidden subdirectory are never considered
+by Dired. For example, the commands to operate on marked files ignore
+files in hidden directories even if they are marked.
+
+**** `$' hides or unhides the current subdirectory and move to next
+subdirectory. A prefix argument serves as a repeat count.
+
+**** `M-$' hides all subdirectories, leaving only their header lines.
+Or, if at least one subdirectory is currently hidden, it makes
+everything visible again. You can use this command to get an overview
+in very deep directory trees or to move quickly to subdirectories far
+away.
+
+*** Editing the Dired Buffer
+
+**** `l' updates the specified files in a Dired buffer. This means
+reading their current status from the file system and changing the
+buffer to reflect it properly.
+
+If you use this command on a subdirectory header line, it updates the
+contents of the subdirectory.
+
+**** `g' updates the entire contents of the Dired buffer. It preserves
+all marks except for those on files that have vanished. Hidden
+subdirectories are updated but remain hidden.
+
+**** `k' kills all marked lines (not the files). With a prefix
+argument, it kills that many lines starting with the current line.
+
+This command does not delete files; it just deletes text from the Dired
+buffer.
+
+If you kill the line for a file that is a directory, then its contents
+are also deleted from the buffer. Typing `C-u k' on the header line
+for a subdirectory is another way to delete a subdirectory from the
+Dired buffer.
+
+*** `find' and Dired.
+
+To search for files with names matching a wildcard pattern use
+`find-name-dired'. Its arguments are DIRECTORY and
+PATTERN. It selects all the files in DIRECTORY or its
+subdirectories whose own names match PATTERN.
+
+The files thus selected are displayed in a Dired buffer in which the
+ordinary Dired commands are available.
+
+If you want to test the contents of files, rather than their names, use
+`find-grep-dired'. This command takes two minibuffer arguments,
+DIRECTORY and REGEXP; it selects all the files in
+DIRECTORY or its subdirectories that contain a match for
+REGEXP. It works by running `find' and `grep'.
+
+The most general command in this series is `find-dired', which lets
+you specify any condition that `find' can test. It takes two
+minibuffer arguments, DIRECTORY and FIND-ARGS; it runs `find' in
+DIRECTORY with using FIND-ARGS as the arguments to `find' specifying
+which files to accept. To use this command, you need to know how to
+use `find'.
+
+** New amusements and novelties.
+
+*** `M-x mpuz' displays a multiplication puzzle, in which each letter
+stands for a digit, and you must determine which digit. The puzzles
+are determined randomly, so they are always different.
+
+*** `M-x gomoku' plays the game Gomoku with you. It needs more work.
+
+*** `M-x spook' adds a line of randomly chosen keywords to an outgoing
+mail message. The keywords are chosen from a list of words that
+suggest you are discussing something subversive.
+
+The idea is that the NSA reads all messages that contain keywords
+suggesting they might be interested, and that adding these lines could
+help to overload them. I would guess that they have modified their
+program by now to ignore these lines of keywords; perhaps the program
+can be updated if some clever hacker can determine what criterion they
+actually use now.
+
+** Installation changes
+
+*** The configure script has been provided to help with the
+installation process. It takes the place of editing the Makefiles and
+src/config.h, and can often guess the appropriate operating system to
+use for a particular machine type. See INSTALL for a more detailed
+description of the steps required for installation.
+
+*** If you create a Lisp file named `site-start.el', Emacs loads the file
+whenever it starts up.
+
+*** A new Lisp variable, `data-directory', indicates the directory
+containing the DOC file, tutorial, copying agreement, and other
+familiar `etc' files. The value of `data-directory' is a simple string.
+The default should be set at build time, and the person installing
+Emacs should place all the data files in this directory. The `help.el'
+functions that look for docstrings and information files check this
+variable. All Emacs Lisp packages should also be coded so that they
+refer to `data-directory' to find data files.
+
+*** The PURESIZE definition has been moved from config.h to its own
+file, puresize.h. Since almost every file of C source in the
+distribution depends on config.h, but only alloc.c and data.c depend
+on puresize.h, this means that changing the value of PURESIZE causes
+only those two files to be recompiled.
+
+*** The makefile at the top of the Emacs source tree now supports a
+`dist' target, which creates a compressed tar file suitable for
+distribution, using the contents of the source tree. Object files,
+old file versions, executables, DOC files, and other
+architecture-specific or easy-to-recreate files are not included in
+the tar file.
+
+
+
+----------------------------------------------------------------------
+Copyright information:
+
+Copyright (C) 1993, 1994, 1995, 2001, 2006 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
+ copyright notice and this permission notice are preserved,
+ thus giving the recipient permission to redistribute in turn.
+
+ Permission is granted to distribute modified versions
+ of this document, or of portions of it,
+ under the above conditions, provided also that they
+ carry prominent notices stating who last changed them.
+
+Local variables:
+mode: outline
+paragraph-separate: "[ ]*$"
+end:
+
+arch-tag: 944be39b-afe8-4217-9977-c745b68a7ca2