changeset 90291:d6f8fe3307c8

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-11 Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 34-42) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 14-17) - Update from CVS - Merge from emacs--devo--0
author Miles Bader <miles@gnu.org>
date Sat, 04 Feb 2006 01:01:38 +0000
parents 6a1672fcf6ae (current diff) 5ea0e0a7dd38 (diff)
children 697c08d95af7
files INSTALL.CVS etc/ChangeLog etc/MH-E-NEWS etc/NEWS etc/TODO lisp/ChangeLog lisp/arc-mode.el lisp/emacs-lisp/unsafep.el lisp/emulation/cua-base.el lisp/gnus/ChangeLog lisp/gnus/gnus-util.el lisp/gnus/mml.el lisp/gnus/nnweb.el lisp/gnus/rfc2231.el lisp/hi-lock.el lisp/hilit-chg.el lisp/ibuf-ext.el lisp/ibuffer.el lisp/international/mule-cmds.el lisp/mh-e/ChangeLog lisp/mh-e/mh-alias.el lisp/mh-e/mh-comp.el lisp/mh-e/mh-e.el lisp/mh-e/mh-funcs.el lisp/mh-e/mh-mime.el lisp/mh-e/mh-seq.el lisp/mh-e/mh-speed.el lisp/mh-e/mh-utils.el lisp/net/newsticker.el lisp/net/rcirc.el lisp/net/tramp.el lisp/newcomment.el lisp/replace.el lisp/simple.el lisp/textmodes/nroff-mode.el lisp/textmodes/table.el lisp/xml.el lispref/frames.texi lispref/keymaps.texi lispref/minibuf.texi man/ChangeLog man/buffers.texi man/cmdargs.texi man/custom.texi man/display.texi man/emacs.texi man/files.texi man/frames.texi man/indent.texi man/macos.texi man/major.texi man/misc.texi man/msdog.texi man/mule.texi man/windows.texi src/ChangeLog src/coding.c src/xdisp.c
diffstat 75 files changed, 2283 insertions(+), 1185 deletions(-) [+]
line wrap: on
line diff
--- a/INSTALL.CVS	Fri Feb 03 07:38:00 2006 +0000
+++ b/INSTALL.CVS	Sat Feb 04 01:01:38 2006 +0000
@@ -25,18 +25,17 @@
 (If you want to install the Emacs binary, type "make install" instead
 of "make" in the last command.)
 
-Occasionally the files "lisp/loaddefs.el" or lisp/mh-e/mh-loaddefs.el
-will need be updated to reflect new autoloaded functions.  If you see
-errors about undefined lisp functions during compilation, that may be
-the reason.  Another symptom may be an error saying that "loaddefs.el"
-could not be found; this is due to a change in the way loaddefs.el was
-handled in CVS, and should only happen once, for users that are
-updating old CVS trees.
+Occasionally the file "lisp/loaddefs.el" will need be updated to
+reflect new autoloaded functions.  If you see errors about undefined
+lisp functions during compilation, that may be the reason.  Another
+symptom may be an error saying that "loaddefs.el" could not be found;
+this is due to a change in the way loaddefs.el was handled in CVS, and
+should only happen once, for users that are updating old CVS trees.
 
-To update loaddefs.el and mh-loaddefs.el, do:
+To update loaddefs.el, do:
 
   $ cd lisp
-  $ make autoloads mh-autoloads EMACS=../src/emacs
+  $ make autoloads EMACS=../src/emacs
 
 If either of the above partial procedures fails, try "make bootstrap".
 
--- a/etc/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/etc/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,3 +1,15 @@
+2006-02-03  Bill Wohler  <wohler@newt.com>
+
+	Release MH-E version 7.91.
+
+	* NEWS, MH-E-NEWS: Update for MH-E release 7.91.
+
+2006-02-02  Bill Wohler  <wohler@newt.com>
+
+	Release MH-E version 7.90.
+
+	* NEWS, MH-E-NEWS: Update for MH-E release 7.90.
+
 2006-01-29  Michael Olson  <mwolson@gnu.org>
 
 	* NEWS: Add entry for ERC.
--- a/etc/MH-E-NEWS	Fri Feb 03 07:38:00 2006 +0000
+++ b/etc/MH-E-NEWS	Sat Feb 04 01:01:38 2006 +0000
@@ -1,11 +1,420 @@
 * COPYRIGHT
 
-Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 	
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
 notice and this notice are preserved.
 
+* Changes in MH-E 7.91
+
+Version 7.91 is the second 8.0 beta release and fixes several bugs
+that were uncovered in wider testing.
+
+* Changes in MH-E 7.90
+
+Version 7.90 is the first 8.0 beta release and is a release that has
+finally broken away from some unfortunate legacy decisions in favor of
+something that will be easier to use and support. Many bugs were fixed
+and many features were added, including making the pick search
+equivalent to the other types of searches.
+
+The rewrite of the manual accelerated dramatically in recent months
+and drove the changes in this release. In order to make the
+manual--and hence the software--better, clearer, more consistent, more
+predictable, and easier to understand, many variables and functions
+were renamed. The changes to the user-visible variables are listed
+here. It is our hope that you, dear MH-E user, will embrace the
+changes for the better and forgive us from making so many incompatible
+changes.
+
+If you use undocumented functionality, be sure to read the ChangeLog
+for changes that might affect you.
+
+** New Features in MH-E 7.90
+
+*** Entry Points Have Moved
+
+Emacs 21 users must now add `(require 'mh-autoloads)' because the
+entry points (such as `mh-rmail' and `mh-smail') have moved to
+different files which have made the autoloads that come with Emacs
+inaccurate. This change was necessary because the code was reorganized
+to remove circular dependencies, to make the code more stable and
+maintainable, and to reduce the time to load MH-E.
+
+*** MH-E No Longer Calls install-mh
+
+The new variant detection code makes use of `mhparam' which assumes
+that your MH environment has already been set up. The code to call
+`install-mh', which could no longer be run anyway, was removed.
+
+*** Use run-hook-with-args
+
+We use normal hooks whenever possible and do not use
+`run-hook-with-args' (with one documented exception) (closes SF
+#643702).
+
+*** Merge mh-index.el and mh-pick.el
+
+We merged `mh-index.el' and `mh-pick.el' into a new file
+`mh-search.el'. As part of this process, the old `F s' behavior of
+adding messages to the search sequence has been removed. The `F i'
+keybinding was then renamed to `F s' (`mh-search'). The mode of the
+search-pattern buffer was renamed from MH-Pick to MH-Search. Within
+the MH-Search buffer, the command `C-c C-p' (`mh-pick-do-search') now
+runs pick on the given folder recursively and displays the results in
+a search folder like the other search methods (closes SF #829207).
+
+*** Improve Security of mh-fetch-x-image-url
+
+The default has been changed to "Never Fetch." Those of you who like
+the value of "Ask Before Fetching" will have to customize this option
+(closes SF #831278).
+
+*** Remove Emacs 20 Support
+
+As it turns out, we had already added some code that didn't work on
+Emacs 20. However, now we've formalized it and removed code that was
+present solely for Emacs 20 support (closes SF #1359240).
+
+*** Derive mh-letter-mode from mail-mode
+
+MH-Letter mode is now derived from `mail-mode'. We were able to delete
+a lot of code. In return, there are a few `mail-mode' commands that
+are available that may or may not be useful and the `mail-mode-hook'
+is run (closes SF #1385571).
+
+*** Add Choices to mh-to-field-choices
+
+In MH-Letter mode, you can use the "C-c C-f (mh-to-field)" prefix to
+go to and insert fields. The fields "Reply-To:", "Mail-Reply-To:",
+"Mail-Followup-To:" can now be created via the "C-r", "C-a" (for
+author), and "C-l" keys respectively. The key for the "From:" field
+has been renamed from "C-r" to "C-m" for consistency with `mail-mode'
+(closes SF #1400139).
+
+*** MH-Folder Keymap Changes
+
+The function `mh-ps-print-toggle-mime' was never implemented and the
+functionality in `mh-ps-print-msg-show' was better afforded by
+`mh-ps-print-msg' and `mh-ps-print-msg-file'.
+
+Key          7.4.85                        7.4.90
+
+F i          mh-index-search               -
+F s          mh-search-folder              mh-search
+P A          mh-ps-print-toggle-mime       -
+P M          mh-ps-print-toggle-mime       -
+P s          mh-ps-print-msg-show          -
+
+*** MH-Letter Keymap Changes
+
+The change where `mh-letter-mode' derives from `mail-mode' adds a few
+keybindings. Some are interesting; experiment! Most of the changes
+have to do with the renaming of the functions with "mhn" in them to
+"mh" because nmh doesn't use `mhn'. The names were also made
+consistent with the the family of "mml" functions.
+
+Key          7.4.85                        7.4.90
+
+C-c C-e      mh-edit-mhn                   mh-mh-to-mime
+C-c C-f C-a  -                             mh-to-field
+C-c C-f C-l  -                             mh-to-field
+C-c C-f RET  -                             mh-to-field
+C-c C-f a    -                             mh-to-field
+C-c C-f l    -                             mh-to-field
+C-c C-f m    -                             mh-to-field
+C-c RET C-g  mh-mhn-compose-anon-ftp       mh-mh-compose-anon-ftp
+C-c RET C-t  mh-mhn-compose-external-compressed-tar
+                                           mh-mh-compose-external-compressed-tar
+C-c RET C-u  mh-revert-mhn-edit            mh-mh-to-mime-undo
+C-c RET C-x  mh-mhn-compose-external-type  mh-mh-compose-external-type
+C-c RET g    mh-mhn-compose-anon-ftp       mh-mh-compose-anon-ftp
+C-c RET t    mh-mhn-compose-external-compressed-tar
+                                           mh-mh-compose-external-compressed-tar
+C-c RET u    mh-revert-mhn-edit            mh-mh-to-mime-undo
+C-c RET x    mh-mhn-compose-external-type  mh-mh-compose-external-type
+
+*** MH-Search Keymap Changes
+
+These are the changes associated with the new search mode. The command
+`C-c C-c' (`mh-index-do-search') now performs the standard indexed
+search, while `C-c C-p' (`mh-pick-do-search') runs pick as before,
+only better!
+
+Key          7.4.85                        7.4.90
+
+C-c C-c      mh-do-search                  mh-index-do-search
+C-c TAB      mh-index-do-search            -
+
+** New Variables in MH-E 7.90
+
+*** mh-after-commands-processed-hook
+
+Hook run by `x' (`mh-execute-commands') after performing outstanding
+refile and delete requests.
+
+*** mh-before-commands-processed-hook
+
+Renamed from `mh-folder-updated-hook'. It wasn't clear whether
+`mh-folder-updated-hook' was run before or after the commands were
+executed. We now provide both with clear names.
+
+*** mh-highlight-citation-style
+
+Renamed from `mh-highlight-citation-p' since it wasn't a boolean. The
+new name is also more descriptive.
+
+*** mh-insert-signature-hook
+
+Renamed from `mh-letter-insert-signature-hook' since most of the other
+hooks do not carry the mode in the prefix and because the new name is
+equally clear.
+
+*** mh-kill-folder-suppress-prompt-hooks
+
+Renamed from `mh-kill-folder-suppress-prompt-hook'. By convention,
+abnormal hooks, which this is, either have a -function or -hooks
+suffix.
+
+*** mh-mhl-format-file
+
+Renamed from `mhl-formfile' to put it in the MH-E namespace and to be
+consistent with other similar options.
+
+*** mh-mh-to-mime-hook
+
+Renamed from `mh-edit-mhn-hook'. We have a family of `mh-mml-to-mime'
+functions and variables; the older mhn functions and variables were
+renamed to have a consistent `mh-mh-to-mime' prefix.
+
+*** mh-new-messages-folders
+
+Renamed from `mh-index-new-messages-folders' for clarity.
+
+*** mh-path
+
+Additional list of directories to search for MH.
+
+*** mh-redist-full-contents-flag
+
+On means the `dist' command needs entire letter for redistribution.
+This was previously a variable. It's now an option.
+
+*** mh-search-mode-hook
+
+Renamed from `mh-pick-mode-hook' as part of the
+`mh-index.el'/`mh-pick.el' merge into `mh-search.el'.
+
+*** mh-search-program
+
+Renamed from `mh-index-program' as part of the
+`mh-index.el'/`mh-pick.el' merge into `mh-search.el'.
+
+*** mh-sortm-args
+
+Additional arguments for `sortm'. This was previously an internal
+variable. It's now an user-customizable option.
+
+*** mh-speed-update-interval
+
+Renamed from `mh-speed-flists-interval' for clarity.
+
+*** mh-ticked-messages-folders
+
+Renamed from `mh-index-ticked-messages-folders' for clarity.
+
+*** mh-xemacs-tool-bar-position
+
+Renamed from `mh-xemacs-toolbar-position' per GNU Emacs naming conventions.
+
+*** mh-xemacs-use-tool-bar-flag
+
+Renamed from `mh-xemacs-use-toolbar-flag' per GNU Emacs naming conventions.
+
+*** mh-yank-behavior
+
+Renamed from `mh-yank-from-start-of-msg' for clarity.
+
+** Variables Deleted in MH-E 7.90
+
+*** mail-citation-hook
+
+This is already defined in `sendmail.el'.
+
+*** mh-edit-mhn-hook
+
+Renamed to `mh-mh-to-mime-hook'.
+
+*** mh-folder-updated-hook
+
+Renamed to `mh-before-commands-processed-hook'.
+
+*** mh-highlight-citation-p
+
+Renamed to `mh-highlight-citation-style'.
+
+*** mh-index-new-messages-folders
+
+Renamed to `mh-new-messages-folders'.
+
+*** mh-index-program
+
+Renamed to `mh-search-program'.
+
+*** mh-index-ticked-messages-folders
+
+Renamed to `mh-ticked-messages-folders'.
+
+*** mh-kill-folder-suppress-prompt-hook
+
+Renamed to `mh-kill-folder-suppress-prompt-hooks'.
+
+*** mh-letter-insert-signature-hook
+
+Renamed to `mh-insert-signature-hook'.
+
+*** mhl-formfile
+
+Renamed to `mh-mhl-format-file'.
+
+*** mh-pick-mode-hook
+
+Renamed to `mh-search-mode-hook'.
+
+*** mh-speed-flists-interval
+
+Renamed to `mh-speed-update-interval'.
+
+*** mh-speed-run-flists-flag
+
+Deleted since setting `mh-speed-flists-interval' to 0 accomplishes the
+same thing.
+
+*** mh-xemacs-toolbar-position
+
+Renamed to `mh-xemacs-tool-bar-position'.
+
+*** mh-xemacs-use-toolbar-flag
+
+Renamed to `mh-xemacs-use-tool-bar-flag'.
+
+*** mh-yank-from-start-of-msg
+
+Renamed to `mh-yank-behavior'.
+
+** Bug Fixes in MH-E 7.90
+
+*** Error Message When Trying to Send Using MH-E
+
+This behavior is no longer observed (closes SF #1002103).
+
+*** "Args out of range" Error in Displaying Message
+
+This behavior is no longer observed (closes SF #1227504).
+
+*** Front-and-back Truncation in mailto: Rendering
+
+This behavior is no longer observed (closes SF #1227510).
+
+*** Completions Offered by mh-refile-message Are Not Sorted
+
+This behavior is no longer observed (closes SF #698734).
+
+*** Add Message-ID to Outgoing Messages
+
+If you replied to a message in your `+outbox', an `In-Reply-To:'
+header field was created that broke threading at the recipient's end.
+We now add a `Message-ID:' to outgoing messages which fixes this
+(closes SF #725425).
+
+*** Speedbar Creating New Folders Instead of Visiting Existing 
+
+This was actually fixed in 7.4.3 (closes SF #792300).
+
+*** Args Out of Range
+
+This compilation error was actually fixed in 7.4.3 (closes SF
+#806577).
+
+*** Initialization Fails If ~/Mail Exists
+
+MH-E no longer calls `install-mh' so this issue has gone away (closes
+SF #835192).
+
+*** RETURN Causes Infinite Loop in mh-letter
+
+This behavior is no longer observed (closes SF #887346).
+
+*** Missing Headers When Replying to All
+
+User needed to edit `replgroupcomps' (closes SF #918194).
+
+*** mh-find-path Doesn't Use mhparam
+
+MH-E no longer peeks into the MH profile `~/.mh_profile' directly. It
+uses `mhparam' instead (closes SF #1016027).
+
+*** mh-index-previous-folder Does Not Work Correctly
+
+If your cursor was on an item below a folder heading and you used
+`M-TAB' (`mh-index-previous-folder'), you would move to the previous
+folder heading. This has been fixed (closes SF #1126188).
+
+*** XEmacs Compile Fails
+
+Compiling produced a "Symbol's value as variable is void: require"
+error on all files. This has been fixed. As a bonus, warnings have
+been reduced from hundreds to just a few (closes SF #1127595).
+
+*** buffer-offer-save Permanent Local
+
+There was a movement to make `buffer-offer-save' a permanent local
+which would have meant that we could not set it in `mh-letter-mode'.
+However, this movement was fraught with issues and was postponed
+(closes SF #1184756).
+
+*** Better Handling of Empty cur Sequence
+
+If you refiled a message into a folder and then used `F r'
+(`mh-rescan-folder') in that folder, your cursor would be taken to the
+first message. The cursor now stays where it was (closes SF #1207247).
+
+*** Name of the Draft File in mh-comp.el
+
+MH is documented to use the draft file. If you use a draft file for
+something else (like Sylpheed), then use draft folders (closes SF
+#1231483).
+
+*** Use Standard Default Notation in Prompts
+
+Emacs changed their defaults in prompts from "Prompt: [value]" to
+"Prompt (default value): ". All MH-E prompts have been updated to
+comply with the new standard (closes SF #1275933).
+
+*** Msg Display Broken After Displaying Msg with Inline Image
+
+Messages with inline images no longer trim certain message header
+fields (closes SF #1306141).
+
+*** mh-visit-folder Munges font-lock-keywords
+
+MH-E broke highlighting in Gnus buffers. This was actually a problem
+in CVS Emacs 22 and has been fixed there (closes SF #1393879).
+
+*** Illegal Filename Chars for W32 Filesystems
+
+Windows users who view `X-Image-URL:' images could not cache the
+images since the cached image file names had illegal characters. This
+has been fixed (closes SF #1396499).
+
+*** mh-send Doesn't Handle mml Insertions Via mail-user-agent
+
+Can now forward messages in Gnus if MH-E is your `mail-user-agent'
+(closes SF #1399307).
+
+
+
 * Changes in MH-E 7.85
 
 Version 7.85 heralds a migration of the CVS repository from
@@ -409,7 +818,7 @@
 rewritten and it is very likely that you no longer to set them and
 their setting may confuse other MH-E settings.
 
-** Variables Deleted in MH-E
+** Variables Deleted in MH-E 7.4.80
 
 Variables that have been removed from MH-E that have not been
 discussed elsewhere are listed here.
--- a/etc/NEWS	Fri Feb 03 07:38:00 2006 +0000
+++ b/etc/NEWS	Sat Feb 04 01:01:38 2006 +0000
@@ -1,5 +1,5 @@
 GNU Emacs NEWS -- history of user-visible changes.  2003-05-21
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
           Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -3053,7 +3053,7 @@
 ---
 ** MH-E changes.
 
-Upgraded to MH-E version 7.85. There have been major changes since
+Upgraded to MH-E version 7.91. There have been major changes since
 version 5.0.2; see MH-E-NEWS for details.
 
 ** Calendar changes:
--- a/etc/TODO	Fri Feb 03 07:38:00 2006 +0000
+++ b/etc/TODO	Sat Feb 04 01:01:38 2006 +0000
@@ -123,6 +123,11 @@
 
 * Other features we would like:
 
+** Create a category of errors called `user-error' for errors which are
+typically due to pilot errors and should thus be in debug-ignored-errors.
+
+** Give Tar mode all the features of Archive mode.
+
 ** Create a category of errors called `process-error'
   for some or all errors associated with using subprocesses.
 
@@ -420,6 +425,9 @@
   "japanese".  Currently, most Japanese users are using external
   packages (e.g. tamago, anthy) or an input method via XIM.
 
+** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\
+but which can also be used as a modifier).
+
 ** Provide the toolbar on ttys. This could map a bit like tmm-menubar
    for the menubar and buttons could look a bit like those used by customize.
 
--- a/lisp/.arch-inventory	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/.arch-inventory	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,4 @@
 # Auto-generated lisp files, which ignore
 precious ^(loaddefs|finder-inf|cus-load)\.el$
 
-# Something generated during a windows build?!?
-precious ^(Makefile\.unix)$
-
 # arch-tag: fc62dc9f-3a91-455b-b8e7-d49df66beee0
--- a/lisp/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,120 @@
+2006-02-03  Werner Lemberg  <wl@gnu.org>
+
+	* textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
+	greedy to find the closing bracket in \*[...] and similar
+	expressions.  This is a first rough fix -- many additional
+	refinements are necessary to make nroff mode really usable with
+	groff.
+
+2006-02-03  Jens Petersen  <petersen@redhat.com>  (tiny change)
+
+	* international/mule-cmds.el (set-locale-environment): Add
+	"/usr/share/X11/locale/locale.alias" to search list for xorg-x11
+	libX11.
+
+2006-02-03  Joe Wells  <jbw@macs.hw.ac.uk>  (tiny change)
+
+	* arc-mode.el (archive-maybe-copy): Fix the way directories in the
+	archive are created in archive-tmpdir.
+
+2006-02-02  John Paul Wallington  <jpw@pobox.com>
+
+	* ibuffer.el (ibuffer-compressed-file-name-regexp): New defcustom.
+	(ibuffer-fontification-alist): Use it.
+	(ibuffer-mode-map): Bind `ibuffer-mark-compressed-file-buffers'
+	to "* z" and the Ibuffer Mark menu.
+
+	* ibuf-ext.el (ibuffer-mark-compressed-file-buffers): New command.
+
+2006-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* textmodes/table.el (*table--cell-describe-mode)
+	(*table--cell-describe-bindings): Undo last change since
+	print-help-return-message is not obsoleted by anything at all.
+
+2006-02-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* emulation/cua-base.el (cua-mode): Doc fix.
+
+2006-02-02  Juanma Barranquero  <lekktu@gmail.com>
+
+	* dframe.el (dframe-handle-make-frame-visible)
+	(dframe-handle-iconify-frame, dframe-get-focus)
+	(dframe-select-attached-frame, dframe-power-click)
+	(dframe-frame-mode): Fix typos in docstrings.
+
+	* ezimage.el (ezimage-mail, ezimage-object-out-of-date)
+	(ezimage-insert-image-button-maybe, ezimage-insert-over-text):
+	Fix typos in docstrings.
+
+	* hi-lock.el (hi-lock-mode, hi-lock-line-face-buffer)
+	(hi-lock-face-buffer, hi-lock-font-lock-hook)
+	(hi-lock-archaic-interface-message-used)
+	(hi-lock-file-patterns-range): Fix typos in docstrings.
+
+	* savehist.el (savehist-loaded, savehist-load, savehist-install)
+	(savehist-autosave, savehist-trim-history): Fix typos in docstrings.
+
+	* mail/mailclient.el (mailclient-place-body-on-clipboard-flag):
+	Fix typo in docstring.
+
+	* net/newsticker.el (newsticker--decode-iso8601-date)
+	(newsticker--set-customvar, newsticker--buffer-insert-item)
+	(newsticker--do-run-auto-mark-filter)
+	(newsticker--parse-generic-feed): Doc fixes.
+	(newsticker--retrieval-timer-list, newsticker-url-list)
+	(newsticker-hide-immortal-items-in-echo-area)
+	(newsticker-hide-obsolete-items-in-echo-area)
+	(newsticker-new-item-face, newsticker--enclosure)
+	(newsticker-buffer-update, newsticker-w3m-show-inline-images)
+	(newsticker--parse-atom-0.3, newsticker--parse-rss-1.0)
+	(newsticker--parse-generic-feed, newsticker--cache-contains)
+	(newsticker--stat-num-items, newsticker-download-enclosures):
+	Fix typos in docstrings.
+
+	* net/rcirc.el (rcirc-debug): Doc fix.
+	(rcirc-fill-column, rcirc-receive-message-hooks)
+	(rcirc-browse-url-map, rcirc-read-only-flag, rcirc-prompt)
+	(rcirc-mode, rcirc-generate-new-buffer-name)
+	(rcirc-startup-channels, rcirc-ignore-update-automatic)
+	(rcirc-cmd-ignore, rcirc-browse-url, rcirc-url-regexp):
+	Fix typos in docstrings.
+	(rcirc-print): "?\ " -> "?\s".
+	(rcirc-cmd-join): Improve argument/docstring consistency.
+
+2006-02-01  Mark A. Hershberger  <mah@everybody.org>
+
+	* xml.el (xml-parse-region): Move save-excursion and set-buffer up
+	before narrow-to-region.
+
+2006-02-01  Richard M. Stallman  <rms@gnu.org>
+
+	* simple.el (move-beginning-of-line): Scan properly for invis change.
+
+	* replace.el (multi-occur-in-matching-buffers): Fix prev change.
+
+2006-02-01  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-convert-file-attributes): Set file's gid
+	change bit only when id-format is 'integer.  Reported by Matt
+	Hodges <M.P.Hodges@rl.ac.uk>.
+
+2006-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+	* hilit-chg.el (highlight-changes-initial-state)
+	(highlight-changes-global-initial-state): Doc fixes.
+	(highlight-changes-global-modes, global-highlight-changes):
+	Fix typos in docstrings.
+
+2006-02-01  Kim F. Storm  <storm@cua.dk>
+
+	* emulation/cua-base.el (cua-mode): Mention that CUA enables
+	transient-mark-mode in doc string.
+
 2006-01-31  Richard M. Stallman  <rms@gnu.org>
 
 	* replace.el (multi-occur): Doc fix.
-	(multi-occur-in-matching-buffers): Renamed from
+	(multi-occur-in-matching-buffers): Rename from
 	multi-occur-by-filename-regexp.  Prefix arg says match
 	buffer names instead of file names.
 
--- a/lisp/arc-mode.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/arc-mode.el	Sat Feb 04 01:01:38 2006 +0000
@@ -822,17 +822,13 @@
 	      (archive-name
 	       (or (and archive-subfile-mode (aref archive-subfile-mode 0))
 		   archive)))
-	  (make-directory archive-tmpdir t)
-	  ;; If ARCHIVE includes leading directories, make sure they
-	  ;; exist under archive-tmpdir.
-	  (let ((arch-dir (file-name-directory archive)))
-	    (if arch-dir
-		(make-directory (concat
-				 (file-name-as-directory archive-tmpdir)
-				 arch-dir)
-				t)))
 	  (setq archive-local-name
 		(archive-unique-fname archive-name archive-tmpdir))
+	  ;; Maked sure all the leading directories in
+	  ;; archive-local-name exist under archive-tmpdir, so that
+	  ;; the directory structure recorded in the archive is
+	  ;; reconstructed in the temporary directory.
+	  (make-directory (file-name-directory archive-local-name) t)
 	  (save-restriction
 	    (widen)
 	    (write-region start (point-max) archive-local-name nil 'nomessage))
--- a/lisp/dframe.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/dframe.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,6 +1,7 @@
 ;;; dframe --- dedicate frame support modes
 
-;;; Copyright (C) 1996, 97, 98, 99, 2000, 01, 02, 03, 04, 05 Free Software Foundation
+;;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;;    2005 Free Software Foundation
 
 ;; Author: Eric M. Ludlam <zappo@gnu.org>
 ;; Keywords: file, tags, tools
@@ -299,7 +300,7 @@
 the value.
 CACHE-VAR is a variable used to cache a cached frame.
 BUFFER-VAR is a variable used to cache the buffer being used in dframe.
-This buffer will have `dframe-mode' run on it.
+This buffer will have `dframe-frame-mode' run on it.
 FRAME-NAME is the name of the frame to create.
 LOCAL-MODE-FN is the function used to call this one.
 PARAMETERS are frame parameters to apply to this dframe.
@@ -606,7 +607,7 @@
 
 (defun dframe-handle-make-frame-visible (e)
   "Handle a `make-frame-visible' event.
-Should enables auto-updating if the last state was also enabled.
+Should enable auto-updating if the last state was also enabled.
 Argument E is the event making the frame visible."
   (interactive "e")
   (let ((f last-event-frame))
@@ -617,7 +618,7 @@
 
 (defun dframe-handle-iconify-frame (e)
   "Handle a `iconify-frame' event.
-Should disables auto-updating if the last state was also enabled.
+Should disable auto-updating if the last state was also enabled.
 Argument E is the event iconifying the frame."
   (interactive "e")
   (let ((f last-event-frame))
@@ -652,7 +653,7 @@
 frame is selected.  If the FRAME-VAR is active, then select the
 attached frame.  If FRAME-VAR is nil, ACTIVATOR is called to
 created it.  HOOK is an optional argument of hooks to run when
-selecting FRAME."
+selecting FRAME-VAR."
   (interactive)
   (if (eq (selected-frame) (symbol-value frame-var))
       (if (frame-live-p dframe-attached-frame)
@@ -696,10 +697,10 @@
     dframe-attached-frame))
 
 (defun dframe-select-attached-frame (&optional frame)
-  "Switch to the frame the dframe controlled frame FRAME was started from. If
-optional arg FRAME is nil assume the attached frame is already selected and
-just run the hooks `dframe-after-select-attached-frame-hook'. Return the
-attached frame."
+  "Switch to the frame the dframe controlled frame FRAME was started from.
+If optional arg FRAME is nil assume the attached frame is already selected
+and just run the hooks `dframe-after-select-attached-frame-hook'.  Return
+the attached frame."
   (let ((frame (dframe-attached-frame frame)))
     (if frame (select-frame frame))
     (prog1 frame
@@ -957,7 +958,7 @@
       (funcall dframe-mouse-position-function)))
 
 (defun dframe-power-click (e)
-  "Activate any `dframe' mouse click as a power click.
+  "Activate any dframe mouse click as a power click.
 A power click will dispose of cached data (if available) or bring a buffer
 up into a different window.
 This should be bound to mouse event E."
--- a/lisp/emacs-lisp/unsafep.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/emacs-lisp/unsafep.el	Sat Feb 04 01:01:38 2006 +0000
@@ -79,11 +79,13 @@
 ;;      passed a circular list to `assoc', Emacs would crash.  Historically,
 ;;      problems of this kind have been few and short-lived.
 
+;;; Code:
+
 (provide 'unsafep)
 (require 'byte-opt)  ;Set up the `side-effect-free' properties
 
 (defcustom safe-functions nil
-  "t to disable `unsafep', or a list of assumed-safe functions."
+  "A list of assumed-safe functions, or t to disable `unsafep'."
   :group 'lisp
   :type  '(choice (const :tag "No" nil) (const :tag "Yes" t) hook))
 
@@ -210,7 +212,7 @@
 
 
 (defun unsafep-function (fun)
-  "Return nil if FUN is a safe function
+  "Return nil iff FUN is a safe function.
 \(either a safe lambda or a symbol that names a safe function).  Otherwise
 result is a reason code."
   (cond
@@ -233,7 +235,8 @@
 	(if reason (throw 'unsafep-progn reason))))))
 
 (defun unsafep-let (clause)
-  "CLAUSE is a let-binding, either SYM or (SYM) or (SYM VAL).  Checks VAL
+  "Check the safety of a let binding.
+CLAUSE is a let-binding, either SYM or (SYM) or (SYM VAL).  Checks VAL
 and throws a reason to `unsafep' if unsafe.  Returns SYM."
   (let (reason sym)
     (if (atom clause)
@@ -245,7 +248,7 @@
     sym))
 
 (defun unsafep-variable (sym global-okay)
-  "Returns nil if SYM is safe as a let-binding sym
+  "Return nil if SYM is safe as a let-binding sym
 \(because it already has a temporary binding or is a non-risky buffer-local
 variable), otherwise a reason why it is unsafe.  Failing to be locally bound
 is okay if GLOBAL-OKAY is non-nil."
@@ -259,5 +262,5 @@
 	     (local-variable-p sym)))
     `(global-variable ,sym))))
 
-;;; arch-tag: 6216f98b-eb8f-467a-9c33-7a7644f50658
-;; unsafep.el ends here.
+;; arch-tag: 6216f98b-eb8f-467a-9c33-7a7644f50658
+;;; unsafep.el ends here
--- a/lisp/emulation/cua-base.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/emulation/cua-base.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1393,7 +1393,12 @@
 
 You can customize `cua-enable-cua-keys' to completely disable the
 CUA bindings, or `cua-prefix-override-inhibit-delay' to change
-the prefix fallback behavior."
+the prefix fallback behavior.
+
+CUA mode manages Transient Mark mode internally.  Trying to disable
+Transient Mark mode while CUA mode is enabled does not work; if you
+only want to highlight the region when it is selected using a
+shifted movement key, set `cua-highlight-region-shift-only'."
   :global t
   :group 'cua
   :set-after '(cua-enable-modeline-indications cua-rectangle-modifier-key)
--- a/lisp/erc/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/erc/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,3 +1,8 @@
+2006-02-03  Zhang Wei  <id.brep@gmail.com>  (tiny change)
+
+	* erc.el (erc-version-string): Don't hard-code Emacs version.
+	(erc-version): Use emacs-version.
+
 2006-01-30  Simon Josefsson  <jas@extundo.com>
 
 	* erc.el (erc-open-ssl-stream): Use tls.el.
--- a/lisp/erc/erc.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/erc/erc.el	Sat Feb 04 01:01:38 2006 +0000
@@ -66,7 +66,7 @@
 
 ;;; Code:
 
-(defconst erc-version-string "Version 5.1 (Emacs 22)"
+(defconst erc-version-string "Version 5.1"
   "ERC version.  This is used by function `erc-version'.")
 
 (eval-when-compile (require 'cl))
@@ -5774,7 +5774,7 @@
 If optional argument HERE is non-nil, insert version number at point."
   (interactive "P")
   (let ((version-string
-	 (format "ERC %s" erc-version-string)))
+	 (format "ERC %s (GNU Emacs %s)" erc-version-string emacs-version)))
     (if here
 	(insert version-string)
       (if (interactive-p)
--- a/lisp/ezimage.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/ezimage.el	Sat Feb 04 01:01:38 2006 +0000
@@ -78,7 +78,7 @@
 
        )
   (if (not (fboundp 'make-glyph))
-      
+
 (defmacro defezimage (variable imagespec docstring)
   "Don't bother loading up an image...
 Argument VARIABLE is the variable to define.
@@ -194,7 +194,7 @@
 
 (defezimage ezimage-mail
   ((:type xpm :file "ezimage/mail.xpm" :ascent center))
-  "Image if an envelope.")
+  "Image of an envelope.")
 
 (defezimage ezimage-checkout
   ((:type xpm :file "ezimage/checkmark.xpm" :ascent center))
@@ -206,7 +206,7 @@
 
 (defezimage ezimage-object-out-of-date
   ((:type xpm :file "ezimage/bitsbang.xpm" :ascent center))
-  "Image representing bits with a ! in it.  (an out of data object file.)")
+  "Image representing bits with a ! in it.  (An out of data object file.)")
 
 (defezimage ezimage-label
   ((:type xpm :file "ezimage/label.xpm" :ascent center))
@@ -264,7 +264,7 @@
   "Insert an image button based on text starting at START for LENGTH chars.
 If buttontext is unknown, just insert that text.
 If we have an image associated with it, use that image.
-Optional argument STRING is a st ring upon which to add text properties."
+Optional argument STRING is a string upon which to add text properties."
   (when ezimage-use-images
     (let* ((bt (buffer-substring start (+ length start)))
 	   (a (assoc bt ezimage-expand-image-button-alist)))
@@ -293,7 +293,7 @@
 
 (defun ezimage-insert-over-text (image start end &optional string)
   "Place IMAGE over the text between START and END.
-Assumes the image is part of a gui and can be clicked on.
+Assumes the image is part of a GUI and can be clicked on.
 Optional argument STRING is a string upon which to add text properties."
   (when ezimage-use-images
     (if (featurep 'xemacs)
--- a/lisp/gnus/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/gnus/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,3 +1,24 @@
+2006-02-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-util.el (gnus-error): Describe `args'.
+
+2006-02-03  Andreas Seltenreich <uwi7@stud.uni-karlsruhe.de>
+
+	* nnweb.el (nnweb-request-group): Avoid growing overview files.
+
+2006-02-03  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* rfc2231.el (rfc2231-parse-string): Add missing semicolons to
+	segmented lines of parameter value to cope with Thunderbird 1.5
+	bug (cf. https://bugzilla.mozilla.org/show_bug.cgi?id=323318).
+	Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
+	(rfc2231-encode-string): Don't make lines exceeding 76 column.
+
+2006-02-01  Max Froumentin  <max@lapin-bleu.net>  (tiny change)
+
+	* mml.el (mml-generate-mime-1): Correct the order of inline signed
+	parts.
+
 2006-01-31  Andreas Seltenreich <uwi7@stud.uni-karlsruhe.de>
 
 	* nnweb.el (nnweb-group-alist): Use defvar instead of defvoo,
--- a/lisp/gnus/gnus-util.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/gnus/gnus-util.el	Sat Feb 04 01:01:38 2006 +0000
@@ -497,7 +497,8 @@
     (apply 'format args)))
 
 (defun gnus-error (level &rest args)
-  "Beep an error if LEVEL is equal to or less than `gnus-verbose'."
+  "Beep an error if LEVEL is equal to or less than `gnus-verbose'.
+ARGS are passed to `message'."
   (when (<= (floor level) gnus-verbose)
     (apply 'message args)
     (ding)
--- a/lisp/gnus/mml.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/gnus/mml.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; mml.el --- A package for parsing and validating MML documents
 
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; This file is part of GNU Emacs.
@@ -577,7 +577,8 @@
 		  ;; Skip `multipart' and attributes.
 		  (when (and (consp part) (consp (cdr part)))
 		    (insert "\n--" mml-boundary "\n")
-		    (mml-generate-mime-1 part))))
+		    (mml-generate-mime-1 part)
+		    (goto-char (point-max)))))
 	      (insert "\n--" mml-boundary "--\n")))))
        (t
 	(error "Invalid element: %S" cont)))
--- a/lisp/gnus/nnweb.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/gnus/nnweb.el	Sat Feb 04 01:01:38 2006 +0000
@@ -133,7 +133,8 @@
 (deffoo nnweb-request-group (group &optional server dont-check)
   (nnweb-possibly-change-server group server)
   (unless (or nnweb-ephemeral-p
-	      dont-check)
+	      dont-check
+	      nnweb-articles)
     (nnweb-read-overview group))
   (cond
    ((not nnweb-articles)
--- a/lisp/gnus/rfc2231.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/gnus/rfc2231.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; rfc2231.el --- Functions for decoding rfc2231 headers
 
-;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005,
+;;   2006 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; This file is part of GNU Emacs.
@@ -53,6 +53,10 @@
 	  display-name mailbox c display-string parameters
 	  attribute value type subtype number encoded
 	  prev-attribute prev-encoded)
+      ;; Some mailer (e.g. Thunderbird 1.5) doesn't terminate each
+      ;; line with semicolon when folding a long parameter value.
+      (while (string-match "\\([^\t\n\r ;]\\)[\t ]*\r?\n[\t ]+" string)
+	(setq string (replace-match "\\1;\n " nil nil string)))
       (ietf-drums-init (mail-header-remove-whitespace
 			(mail-header-remove-comments string)))
       (let ((table (copy-syntax-table ietf-drums-syntax-table)))
@@ -191,6 +195,7 @@
 	(special (ietf-drums-token-to-list "*'%\n\t"))
 	(ascii (ietf-drums-token-to-list ietf-drums-text-token))
 	(num -1)
+	(limit (- 74 (length param)))
 	spacep encodep charsetp charset broken)
     (with-temp-buffer
       (insert value)
@@ -209,24 +214,30 @@
       (when charsetp
 	(setq charset (mm-encode-body)))
       (cond
-       ((or encodep charsetp)
+       ((or encodep charsetp
+	    (progn
+	      (end-of-line)
+	      (> (current-column) (if spacep (- limit 2) limit))))
+	(setq limit (- limit 6))
 	(goto-char (point-min))
+	(insert (symbol-name (or charset 'us-ascii)) "''")
 	(while (not (eobp))
-	  (when (> (current-column) 60)
-	    (insert ";\n")
-	    (setq broken t))
 	  (if (or (not (memq (following-char) ascii))
 		  (memq (following-char) control)
 		  (memq (following-char) tspecial)
 		  (memq (following-char) special)
 		  (eq (following-char) ? ))
 	      (progn
+		(when (>= (current-column) (1- limit))
+		  (insert ";\n")
+		  (setq broken t))
 		(insert "%" (format "%02x" (following-char)))
 		(delete-char 1))
+	    (when (> (current-column) limit)
+	      (insert ";\n")
+	      (setq broken t))
 	    (forward-char 1)))
 	(goto-char (point-min))
-	(insert (symbol-name (or charset 'us-ascii)) "''")
-	(goto-char (point-min))
 	(if (not broken)
 	    (insert param "*=")
 	  (while (not (eobp))
@@ -235,12 +246,12 @@
 	    (forward-line 1))))
        (spacep
 	(goto-char (point-min))
-	(insert param "=\"")
+	(insert "\n " param "=\"")
 	(goto-char (point-max))
 	(insert "\""))
        (t
 	(goto-char (point-min))
-	(insert param "=")))
+	(insert "\n " param "=")))
       (buffer-string))))
 
 (provide 'rfc2231)
--- a/lisp/hi-lock.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/hi-lock.el	Sat Feb 04 01:01:38 2006 +0000
@@ -91,7 +91,7 @@
 
 (defcustom hi-lock-file-patterns-range 10000
   "Limit of search in a buffer for hi-lock patterns.
-When a file is visited and hi-lock mode is on patterns starting
+When a file is visited and hi-lock mode is on, patterns starting
 up to this limit are added to font-lock's patterns.  See documentation
 of functions `hi-lock-mode' and `hi-lock-find-patterns'."
   :type 'integer
@@ -200,7 +200,7 @@
 
 (defvar hi-lock-archaic-interface-message-used nil
   "True if user alerted that `global-hi-lock-mode' is now the global switch.
-Earlier versions of hi-lock used `hi-lock-mode' as the global switch,
+Earlier versions of hi-lock used `hi-lock-mode' as the global switch;
 the message is issued if it appears that `hi-lock-mode' is used assuming
 that older functionality.  This variable avoids multiple reminders.")
 
@@ -283,10 +283,10 @@
   Remove highlighting on matches of REGEXP in current buffer.
 
 \\[hi-lock-write-interactive-patterns]
-  Write active REGEXPs into buffer as comments (if possible). They will
+  Write active REGEXPs into buffer as comments (if possible).  They will
   be read the next time file is loaded or when the \\[hi-lock-find-patterns] command
   is issued.  The inserted regexps are in the form of font lock keywords.
-  (See `font-lock-keywords') They may be edited and re-loaded with \\[hi-lock-find-patterns],
+  (See `font-lock-keywords'.)  They may be edited and re-loaded with \\[hi-lock-find-patterns],
   any valid `font-lock-keywords' form is acceptable.
 
 \\[hi-lock-find-patterns]
@@ -295,12 +295,12 @@
 When hi-lock is started and if the mode is not excluded, the
 beginning of the buffer is searched for lines of the form:
   Hi-lock: FOO
-where FOO is a list of patterns. These are added to the font lock keywords
-already present.  The patterns must start before position (number
-of characters into buffer) `hi-lock-file-patterns-range'.  Patterns
-will be read until
+where FOO is a list of patterns.  These are added to the font lock
+keywords already present.  The patterns must start before position
+\(number of characters into buffer) `hi-lock-file-patterns-range'.
+Patterns will be read until
  Hi-lock: end
-is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'."
+is found.  A mode is excluded if it's in the list `hi-lock-exclude-modes'."
   :group 'hi-lock
   :lighter (:eval (if (or hi-lock-interactive-patterns
 			  hi-lock-file-patterns)
@@ -365,7 +365,7 @@
 Interactively, prompt for REGEXP then FACE.  Buffer-local history
 list maintained for regexps, global history maintained for faces.
 \\<minibuffer-local-map>Use \\[next-history-element] and \\[previous-history-element] to retrieve next or previous history item.
-\(See info node `Minibuffer History')"
+\(See info node `Minibuffer History'.)"
   (interactive
    (list
     (hi-lock-regexp-okay
@@ -390,7 +390,7 @@
 Interactively, prompt for REGEXP then FACE.  Buffer-local history
 list maintained for regexps, global history maintained for faces.
 \\<minibuffer-local-map>Use \\[next-history-element] and \\[previous-history-element] to retrieve next or previous history item.
-\(See info node `Minibuffer History')"
+\(See info node `Minibuffer History'.)"
   (interactive
    (list
     (hi-lock-regexp-okay
@@ -595,7 +595,7 @@
         (message "Hi-lock added %d patterns." (length all-patterns))))))
 
 (defun hi-lock-font-lock-hook ()
-  "Add hi lock patterns to font-lock's."
+  "Add hi-lock patterns to font-lock's."
   (if font-lock-mode
       (progn
 	(font-lock-add-keywords nil hi-lock-file-patterns t)
--- a/lisp/hilit-chg.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/hilit-chg.el	Sat Feb 04 01:01:38 2006 +0000
@@ -261,15 +261,15 @@
 ;; active or passive mode?
 ;;
 (defcustom highlight-changes-initial-state 'active
-  "*What state (active or passive) `highlight-changes' should start in.
-This is used when `highlight-changes' is called with no argument.
+  "*What state (active or passive) Highlight Changes mode should start in.
+This is used when `highlight-changes-mode' is called with no argument.
 This variable must be set to one of the symbols `active' or `passive'."
   :type '(choice (const :tag "Active" active)
 		 (const :tag "Passive" passive))
   :group 'highlight-changes)
 
 (defcustom highlight-changes-global-initial-state 'passive
-  "*What state `global-highlight-changes' should start in.
+  "*What state global Highlight Changes mode should start in.
 This is used if `global-highlight-changes' is called with no argument.
 This variable must be set to either `active' or `passive'."
   :type '(choice (const :tag "Active" active)
@@ -309,7 +309,7 @@
 A value of nil means no buffers are suitable for `global-highlight-changes'
 \(effectively disabling the mode).
 
-Examples:
+Example:
         (c-mode c++-mode)
 means that Highlight Changes mode is turned on for buffers in C and C++
 modes only."
@@ -366,7 +366,7 @@
 		  (copy-face 'highlight-changes new-name)
 		(copy-face old-name new-name)
 		))
-	    (setq new-list (append  (list new-name) new-list))
+	    (setq new-list (append (list new-name) new-list))
 	    (setq n (1- n))
 	    (setq p (cdr p)))
 	  (if (equal new-list (widget-value w))
@@ -419,7 +419,7 @@
 
 ;;; Functions...
 
-(defun hilit-chg-map-changes  (func &optional start-position end-position)
+(defun hilit-chg-map-changes (func &optional start-position end-position)
   "Call function FUNC for each region used by Highlight Changes mode."
   ;; if start-position is nil, (point-min) is used
   ;; if end-position is nil, (point-max) is used
@@ -1048,7 +1048,7 @@
 When called interactively:
 - if no prefix, toggle global Highlight Changes mode on or off
 - if called with a positive prefix (or just C-u) turn it on in active mode
-- if called with a zero prefix  turn it on in passive mode
+- if called with a zero prefix turn it on in passive mode
 - if called with a negative prefix turn it off
 
 When called from a program:
--- a/lisp/ibuf-ext.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/ibuf-ext.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; ibuf-ext.el --- extensions for ibuffer
 
 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Colin Walters <walters@verbum.org>
 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
@@ -1449,6 +1449,17 @@
 	 (memq major-mode ibuffer-help-buffer-modes)))))
 
 ;;;###autoload
+(defun ibuffer-mark-compressed-file-buffers ()
+  "Mark buffers whose associated file is compressed."
+  (interactive)
+  (ibuffer-mark-on-buffer
+   #'(lambda (buf)
+       (with-current-buffer buf
+	 (and buffer-file-name
+	      (string-match ibuffer-compressed-file-name-regexp
+			   buffer-file-name))))))
+
+;;;###autoload
 (defun ibuffer-mark-old-buffers ()
   "Mark buffers which have not been viewed in `ibuffer-old-time' days."
   (interactive)
--- a/lisp/ibuffer.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/ibuffer.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; ibuffer.el --- operate on buffers like dired
 
 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Colin Walters <walters@verbum.org>
 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
@@ -142,12 +142,16 @@
 
 (defcustom ibuffer-fontification-alist
   `((10 buffer-read-only font-lock-constant-face)
-    (15 (string-match "^*" (buffer-name)) font-lock-keyword-face)
-    (20 (and (string-match "^ " (buffer-name))
+    (15 (and buffer-file-name
+	     (string-match ibuffer-compressed-file-name-regexp
+			   buffer-file-name))
+	font-lock-doc-face)
+    (20 (string-match "^*" (buffer-name)) font-lock-keyword-face)
+    (25 (and (string-match "^ " (buffer-name))
 	     (null buffer-file-name))
 	italic)
-    (25 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face)
-    (30 (eq major-mode 'dired-mode) font-lock-function-name-face))
+    (30 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face)
+    (35 (eq major-mode 'dired-mode) font-lock-function-name-face))
   "An alist describing how to fontify buffers.
 Each element should be of the form (PRIORITY FORM FACE), where
 PRIORITY is an integer, FORM is an arbitrary form to evaluate in the
@@ -320,6 +324,14 @@
   :type '(repeat function)
   :group 'ibuffer)
 
+(defcustom ibuffer-compressed-file-name-regexp
+  (concat "\\.\\("
+	(regexp-opt '("arj" "bgz" "bz2" "gz" "lzh" "taz" "tgz" "zip" "z"))
+	"\\)$")
+  "Regexp to match compressed file names."
+  :type 'regexp
+  :group 'ibuffer)
+
 (defcustom ibuffer-hook nil
   "Hook run when `ibuffer' is called."
   :type 'hook
@@ -403,6 +415,7 @@
     (define-key map (kbd "* /") 'ibuffer-mark-dired-buffers)
     (define-key map (kbd "* e") 'ibuffer-mark-dissociated-buffers)
     (define-key map (kbd "* h") 'ibuffer-mark-help-buffers)
+    (define-key map (kbd "* z") 'ibuffer-mark-compressed-file-buffers)
     (define-key map (kbd ".") 'ibuffer-mark-old-buffers)
 
     (define-key map (kbd "d") 'ibuffer-mark-for-delete)
@@ -718,6 +731,9 @@
     (define-key-after map [menu-bar mark mark-help-buffers]
       '(menu-item "Mark help buffers" ibuffer-mark-help-buffers
 		  :help "Mark buffers in help-mode"))
+    (define-key-after map [menu-bar mark mark-compressed-file-buffers]
+      '(menu-item "Mark compressed file buffers" ibuffer-mark-compressed-file-buffers
+		  :help "Mark buffers which have a file that is compressed"))
     (define-key-after map [menu-bar mark mark-old-buffers]
       '(menu-item "Mark old buffers" ibuffer-mark-old-buffers
 		  :help "Mark buffers which have not been viewed recently"))
--- a/lisp/international/mule-cmds.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/international/mule-cmds.el	Sat Feb 04 01:01:38 2006 +0000
@@ -2384,7 +2384,8 @@
   ;; to a system without X.
   (setq locale-translation-file-name
 	(let ((files
-	       '("/usr/lib/X11/locale/locale.alias" ; e.g. X11R6.4
+	       '("/usr/share/X11/locale/locale.alias" ; e.g. X11R7
+		 "/usr/lib/X11/locale/locale.alias" ; e.g. X11R6.4
 		 "/usr/X11R6/lib/X11/locale/locale.alias" ; XFree86, e.g. RedHat 4.2
 		 "/usr/openwin/lib/locale/locale.alias" ; e.g. Solaris 2.6
 		 ;;
--- a/lisp/mail/mailclient.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mail/mailclient.el	Sat Feb 04 01:01:38 2006 +0000
@@ -24,21 +24,21 @@
 
 ;;; Commentary:
 
-;; This package allows to hand over a buffer to be sent off 
-;; via the system's designated e-mail client. 
+;; This package allows to hand over a buffer to be sent off
+;; via the system's designated e-mail client.
 ;; Note that the e-mail client will display the contents of the buffer
 ;; again for editing.
 ;; The e-mail client is taken to be whoever handles a mailto: URL
-;; via `browse-url'. 
+;; via `browse-url'.
 ;; Mailto: URLs are composed according to RFC2368.
 
 ;; MIME bodies are not supported - we rather expect the mail client
 ;; to encode the body and add, for example, a digital signature.
 ;; The mailto URL RFC calls for "short text messages that are
-;; actually the content of automatic processing." 
+;; actually the content of automatic processing."
 ;; So mailclient.el is ideal for situations where an e-mail is
-;; generated automatically, and the user can edit it in the 
-;; mail client (e.g. bug-reports). 
+;; generated automatically, and the user can edit it in the
+;; mail client (e.g. bug-reports).
 
 ;; To activate:
 ;; (setq send-mail-function 'mailclient-send-it) ; if you use `mail'
@@ -49,11 +49,11 @@
 (require 'sendmail)   ;; for mail-sendmail-undelimit-header
 (require 'mail-utils) ;; for mail-fetch-field
 
-(defcustom mailclient-place-body-on-clipboard-flag  
+(defcustom mailclient-place-body-on-clipboard-flag
   (fboundp 'w32-set-clipboard-data)
   "If non-nil, put the e-mail body on the clipboard in mailclient.
-This is useful on systems where only short mailto:// URLs are 
-supported. Defaults to non-nil on Windows, nil otherwise."
+This is useful on systems where only short mailto:// URLs are
+supported.  Defaults to non-nil on Windows, nil otherwise."
   :type 'boolean
   :group 'mail)
 
@@ -64,7 +64,7 @@
 	  (lambda (char)
 	    (cond
 	     ((eq char ?\x20) "%20")   ;; space
-	     ((eq char ?\n) "%0D%0A")  ;; newline 
+	     ((eq char ?\n) "%0D%0A")  ;; newline
 	     ((string-match "[-a-zA-Z0-9_:/.@]" (char-to-string char))
 	      (char-to-string char))   ;; printable
 	     (t                        ;; everything else
@@ -75,33 +75,33 @@
 (defvar mailclient-delim-static "?")
 (defun mailclient-url-delim ()
   (let ((current mailclient-delim-static))
-    (setq mailclient-delim-static "&") 
+    (setq mailclient-delim-static "&")
     current))
 
 (defun mailclient-gather-addresses (str &optional drop-first-name)
   (let ((field (mail-fetch-field str nil t)))
     (if field
 	(save-excursion
-	  (let ((first t) 
+	  (let ((first t)
 		(result ""))
 	    (mapc
 	     (lambda (recp)
-	       (setq result 
-		     (concat 
+	       (setq result
+		     (concat
 		      result
 		      (if (and drop-first-name
 			       first)
 			  ""
 			(concat (mailclient-url-delim) str "="))
-		      (mailclient-encode-string-as-url 
+		      (mailclient-encode-string-as-url
 		       recp)))
 	       (setq first nil))
-	     (split-string 
+	     (split-string
 	      (mail-strip-quoted-names field) "\, *"))
 	    result)))))
 
 ;;;###autoload
-(defun mailclient-send-it () 
+(defun mailclient-send-it ()
   "Pass current buffer on to the system's mail client.
 Suitable value for `send-mail-function'.
 The mail client is taken to be the handler of mailto URLs."
@@ -122,19 +122,19 @@
 	  (while (and (re-search-forward "\n\n\n*" delimline t)
 		      (< (point) delimline))
 	    (replace-match "\n"))
-	  (let ((case-fold-search t))  
+	  (let ((case-fold-search t))
 	    ;; initialize limiter
 	    (setq mailclient-delim-static "?")
 	    ;; construct and call up mailto URL
-	    (browse-url 
-	     (concat 
+	    (browse-url
+	     (concat
 	      (save-excursion
 		(narrow-to-region (point-min) delimline)
-		(concat 
+		(concat
 		 "mailto:"
 		 ;; some of the headers according to RFC822
-		 (mailclient-gather-addresses "To"   
-					      'drop-first-name)	         
+		 (mailclient-gather-addresses "To"
+					      'drop-first-name)
 		 (mailclient-gather-addresses "cc"  )
 		 (mailclient-gather-addresses "bcc"  )
 		 (mailclient-gather-addresses "Resent-To"  )
@@ -151,16 +151,16 @@
 		   (if subj ;; if non-blank
 		       ;; the mail client will deal with
 		       ;; warning the user etc.
-		       (concat (mailclient-url-delim) "subject=" 
+		       (concat (mailclient-url-delim) "subject="
 			       (mailclient-encode-string-as-url subj))
 		     ""))))
 	      ;; body
-	      (concat 
-	       (mailclient-url-delim) "body=" 
+	      (concat
+	       (mailclient-url-delim) "body="
 	       (mailclient-encode-string-as-url
 		(if mailclient-place-body-on-clipboard-flag
 		    (progn
-		      (clipboard-kill-ring-save  
+		      (clipboard-kill-ring-save
 		       (+ 1 delimline) (point-max))
 		      (concat
 		       "*** E-Mail body has been placed on clipboard, "
--- a/lisp/mh-e/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,10 +1,168 @@
+2006-02-03  Bill Wohler  <wohler@newt.com>
+
+	* mh-e.el (Version, mh-version): Add +cvs to version.
+
+2006-02-03  Bill Wohler  <wohler@newt.com>
+
+	Release MH-E version 7.91.
+
+	* mh-e.el (Version, mh-version): Update for release 7.91.
+
+2006-02-03  Bill Wohler  <wohler@newt.com>
+
+	* mh-utils.el (mh-image-load-path, mh-image-load-path-called-flag)
+	(mh-image-load-path): Checkdoc fix. Docstring edits. Reduce scope
+	of local variable mh-library-name.
+
+	* mh-e.el (mh-folder-msg-number, mh-folder-refiled, mh-folder-to)
+	(mh-show-cc, mh-show-date, mh-show-header): Replace (min-colors
+	88) with (min-colors 64) in face specifications so that MH-E still
+	looks good on systems with fewer colors (such as Eric Ding's).
+
+2006-02-03  Peter Galbraith  <psg@debian.org>
+
+	* mh-utils.el (mh-image-load-path): New variable to optionally
+	hold the directory where MH-E images are stored.  If nil, then 
+	the function `mh-image-load-path' will find it.  This variable
+	will be used for Debian packaging.
+	(mh-image-load-path function): Use variable `mh-image-load-path'
+	if non-nil and exists.
+
+2006-02-03  Mark D. Baushke  <mdb@gnu.org>
+
+	* mh-tool-bar.el: Add conditional require of 'tool-bar or 'toolbar
+	for gnu-emacs or xemacs to avoid void-variable tool-bar-map lisp
+	errors if describe-bindings is called before tool-bar-mode is used.
+
+2006-02-03  Peter S Galbraith  <psg@debian.org>
+
+	* mh-compat.el (mh-url-unreserved-chars): Fix typo from
+	`mh-url-unresrved-chars'.
+
+2006-02-02  Bill Wohler  <wohler@newt.com>
+
+	* mh-e.el (Version, mh-version): Add +cvs to version.
+
+2006-02-02  Bill Wohler  <wohler@newt.com>
+
+	Release MH-E version 7.90.
+
+	* mh-e.el (Version, mh-version): Update for release 7.90.
+
+2006-02-01  Bill Wohler  <wohler@newt.com>
+
+	* mh-search.el (which-func-mode): Shush compiler on Emacs 21 too.
+
+	* mh-alias.el (mh-alias-gecos-name): Use
+	mh-replace-regexp-in-string instead of replace-regexp-in-string.
+	(crm, multi-prompt): Use mh-require instead of require.
+	(mh-goto-address-find-address-at-point): Use
+	mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position. Use
+	mh-match-string-no-properties instead of
+	match-string-no-properties.
+
+	* mh-comp.el (mh-modify-header-field): Use
+	mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position.
+
+	* mh-compat.el (mailabbrev): Use mh-require instead of require.
+	(mh-assoc-string, mh-display-completion-list, mh-face-foreground)
+	(mh-face-background): Make docstring consistent.
+	(mh-require, mh-cancel-timer, mh-display-color-cells)
+	(mh-line-beginning-position, mh-line-end-position)
+	(mh-match-string-no-properties, mh-replace-regexp-in-string)
+	(mh-view-mode-enter): Move definition here from mh-xemacs.el and 
+	add mh- prefix since compatibility functions should have our
+	package prefix (mh-) by Emacs convention and to avoid messing up
+	checks for the same functions in other packages.
+
+	* mh-e.el (mh-compiling-flag): Move mh-xemacs-compiling-flag here
+	from mh-xemacs.el and rename.
+	(mh-xargs): Use mh-line-beginning-position and
+	mh-line-end-position instead of line-beginning-position and
+	line-end-position.
+	(mh-defface-compat): Use mh-display-color-cells instead of
+	display-color-cells.
+
+	* mh-folder.el (which-func): Use mh-require instead of require.
+
+	* mh-funcs.el (mh-list-folders): Use mh-view-mode-enter instead of
+	view-mode-enter.
+
+	* mh-gnus.el (gnus-util, mm-bodies, mm-decode, mm-view, mml): Use
+	mh-require instead of require.
+
+	* mh-letter.el (mh-letter-header-end, mh-letter-mode)
+	(mh-letter-next-header-field): Use mh-line-beginning-position and
+	mh-line-end-position instead of line-beginning-position and
+	line-end-position.
+
+	* mh-limit.el (mh-subject-to-sequence-unthreaded): Use
+	mh-match-string-no-properties instead of
+	match-string-no-properties.
+	(mh-narrow-to-header-field): Use mh-line-beginning-position and
+	mh-line-end-position instead of line-beginning-position and
+	line-end-position.
+
+	* mh-mime.el (mh-mime-inline-part, mh-mm-display-part)
+	(mh-mh-quote-unescaped-sharp, mh-mh-directive-present-p): Use
+	mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position.
+
+	* mh-search.el (which-func): Use mh-require instead of require.
+	(mh-make-pick-template, mh-index-visit-folder)
+	(mh-pick-parse-search-buffer, mh-swish-next-result)
+	(mh-mairix-next-result, mh-namazu-next-result)
+	(mh-pick-next-result, mh-grep-next-result)
+	(mh-index-create-imenu-index, mh-index-match-checksum)
+	(mh-md5sum-parser, mh-openssl-parser, mh-index-update-maps): Use
+	mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position.
+
+	* mh-seq.el (mh-list-sequences): Use mh-view-mode-enter instead of
+	view-mode-enter.
+	(mh-folder-size-flist, mh-parse-flist-output-line)
+	(mh-add-sequence-notation): Use mh-line-beginning-position and
+	mh-line-end-position instead of line-beginning-position and
+	line-end-position.
+
+	* mh-show.el (mh-show-addr): Use mh-require instead of require.
+
+	* mh-speed.el (mh-folder-speedbar-menu-items, mh-speed-toggle)
+	(mh-speed-view, mh-folder-speedbar-buttons)
+	(mh-speed-highlight, mh-speed-goto-folder)
+	(mh-speed-add-buttons, mh-speed-parse-flists-output)
+	(mh-speed-invalidate-map, mh-speedbar-change-expand-button-char)
+	(mh-speed-add-folder): Use mh-line-beginning-position and
+	mh-line-end-position instead of line-beginning-position and
+	line-end-position.
+	(mh-speed-flists): Use mh-cancel-timer instead of cancel-timer.
+
+	* mh-thread.el (mh-thread-find-children)
+	(mh-thread-parse-scan-line, mh-thread-generate): Use
+	mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position.
+
+	* mh-utils.el (mh-colors-available-p): Use mh-display-color-cells
+	instead of display-color-cells.
+	(mh-folder-list): Use mh-replace-regexp-in-string instead of
+	replace-regexp-in-string.
+	(mh-sub-folders-actual, mh-letter-toggle-header-field-display):
+	Use mh-line-beginning-position and mh-line-end-position instead of
+	line-beginning-position and line-end-position.
+
+	* mh-comp.el (mh-send-sub): Don't find components file in current
+	directory--this seems to have been a side-effect of commenting out
+	the use of an old mh-etc variable. Improve error message.
+
 2006-01-31  Bill Wohler  <wohler@newt.com>
 
 	* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name
 	argument since compatibility functions should have our package
 	prefix (mh-) by Emacs convention and to avoid messing up checks
 	for the same functions in other packages. Use explicit argument
-	instead of forming name by adding mh-e prefix so that one can grep
+	instead of forming name by adding mh- prefix so that one can grep
 	and find the definition.
 
 	* mh-alias.el (mh-alias-local-users, mh-alias-reload)
--- a/lisp/mh-e/mh-alias.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-alias.el	Sat Feb 04 01:01:38 2006 +0000
@@ -125,10 +125,10 @@
         (setq res (match-string 1 res)))
     ;; Replace "&" with capitalized username
     (if (string-match "&" res)
-        (setq res (replace-regexp-in-string "&" (capitalize username) res)))
+        (setq res (mh-replace-regexp-in-string "&" (capitalize username) res)))
     ;; Remove " character
     (if (string-match "\"" res)
-        (setq res (replace-regexp-in-string "\"" "" res)))
+        (setq res (mh-replace-regexp-in-string "\"" "" res)))
     ;; If empty string, use username instead
     (if (string-equal "" res)
         (setq res username))
@@ -258,8 +258,8 @@
    (t
     (mh-alias-ali alias))))
 
-(require 'crm nil t)                   ; completing-read-multiple
-(require 'multi-prompt nil t)
+(mh-require 'crm nil t)                 ; completing-read-multiple
+(mh-require 'multi-prompt nil t)
 
 ;;;###mh-autoload
 (defun mh-read-address (prompt)
@@ -606,12 +606,12 @@
 
 Then search backwards to beginning of line for the start of an
 e-mail address. If no e-mail address found, return nil."
-  (re-search-backward "[^-_A-z0-9.@]" (line-beginning-position) 'lim)
+  (re-search-backward "[^-_A-z0-9.@]" (mh-line-beginning-position) 'lim)
   (if (or (looking-at mh-address-mail-regexp) ; already at start
           (and (re-search-forward mh-address-mail-regexp
-                                  (line-end-position) 'lim)
+                                  (mh-line-end-position) 'lim)
                (goto-char (match-beginning 0))))
-      (match-string-no-properties 0)))
+      (mh-match-string-no-properties 0)))
 
 (defun mh-alias-apropos (regexp)
   "Show all aliases or addresses that match a regular expression REGEXP."
--- a/lisp/mh-e/mh-comp.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-comp.el	Sat Feb 04 01:01:38 2006 +0000
@@ -759,18 +759,9 @@
                        (setq components
                              (expand-file-name mh-comp-formfile mh-lib)))
                       components)
-                     ((file-exists-p
-                       (setq components
-                             (expand-file-name mh-comp-formfile
-                                               ;; What is this mh-etc ??  -sm
-                                               ;; This is dead code, so
-                                               ;; remove it.
-                                        ;(and (boundp 'mh-etc) mh-etc)
-                                               )))
-                      components)
                      (t
-                      (error "Can't find components file \"%s\""
-                             components))))
+                      (error "Can't find %s in %s or %s"
+                             mh-comp-formfile mh-user-path mh-lib))))
                   nil)))
       (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc)
       (goto-char (point-max))
@@ -1040,7 +1031,7 @@
   (cond ((and overwrite-flag
               (mh-goto-header-field (concat field ":")))
          (insert " " value)
-         (delete-region (point) (line-end-position)))
+         (delete-region (point) (mh-line-end-position)))
         ((and (not overwrite-flag)
               (mh-regexp-in-field-p (concat "\\b" value "\\b") field))
          ;; Already there, do nothing.
--- a/lisp/mh-e/mh-compat.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-compat.el	Sat Feb 04 01:01:38 2006 +0000
@@ -37,31 +37,60 @@
 ;; macros we can retire.
 
 ;; Please use mh-gnus.el when providing compatibility with different
-;; versions of Gnus and mh-xemacs.el for compatibility with XEmacs.
+;; versions of Gnus.
+
+;; Items are listed alphabetically (except for mh-require which is
+;; needed by a lesser character).
+
+(require 'mh-acros)
+
+(mh-do-in-gnu-emacs
+  (defalias 'mh-require 'require))
 
-;; Items are listed alphabetically.
+(mh-do-in-xemacs
+  (defun mh-require (feature &optional filename noerror)
+    "If feature FEATURE is not loaded, load it from FILENAME.
+If FEATURE is not a member of the list `features', then the feature
+is not loaded; so load the file FILENAME.
+If FILENAME is omitted, the printname of FEATURE is used as the file name.
+If the optional third argument NOERROR is non-nil,
+then return nil if the file is not found instead of signaling an error.
+
+Simulate NOERROR argument in XEmacs which lacks it."
+    (if (not (featurep feature))
+        (if filename
+            (load filename noerror t)
+          (load (format "%s" feature) noerror t)))))
 
 (mh-defun-compat mh-assoc-string assoc-string (key list case-fold)
   "Like `assoc' but specifically for strings.
 Case is ignored if CASE-FOLD is non-nil.
-This function added by MH-E for Emacs versions that lack
-`assoc-string', introduced in Emacs 22."
+This function is used by Emacs versions that lack `assoc-string',
+introduced in Emacs 22."
   (if case-fold
       (assoc-ignore-case key list)
     (assoc key list)))
 
-(require 'mailabbrev nil t)
-(mh-defun-compat mh-mail-abbrev-make-syntax-table
-  mail-abbrev-make-syntax-table ()
-  "Emacs 21 and XEmacs don't have this function."
-  nil)
+;; For XEmacs.
+(defalias 'mh-cancel-timer
+  (if (fboundp 'cancel-timer)
+      'cancel-timer
+    'delete-itimer))
+
+(mh-defun-compat mh-display-color-cells display-color-cells (&optional display)
+  "Return the number of color cells supported by DISPLAY.
+This function is used by XEmacs to always return 0 when compiling
+to avoid compiling errors. Otherwise uses `device-color-cells'."
+  (if mh-compiling-flag
+      0
+    (device-color-cells display)))
 
 (defmacro mh-display-completion-list (completions &optional common-substring)
   "Display the list of COMPLETIONS.
 See documentation for `display-completion-list' for a description of the
 arguments COMPLETIONS and perhaps COMMON-SUBSTRING.
-This macro added by MH-E for Emacs versions that lack a
-COMMON-SUBSTRING argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack a COMMON-SUBSTRING
+argument, introduced in Emacs 22."
   (if (< emacs-major-version 22)
       `(display-completion-list ,completions)
     `(display-completion-list ,completions ,common-substring)))
@@ -70,8 +99,8 @@
   "Return the foreground color name of FACE, or nil if unspecified.
 See documentation for `face-foreground' for a description of the
 arguments FACE, FRAME, and perhaps INHERIT.
-This macro added by MH-E for Emacs versions that lack an INHERIT
-argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack an INHERIT argument,
+introduced in Emacs 22."
   (if (< emacs-major-version 22)
       `(face-foreground ,face ,frame)
     `(face-foreground ,face ,frame ,inherit)))
@@ -80,15 +109,51 @@
   "Return the background color name of face, or nil if unspecified.
 See documentation for `back-foreground' for a description of the
 arguments FACE, FRAME, and INHERIT.
-This macro added by MH-E for Emacs versions that lack an INHERIT
-argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack an INHERIT argument,
+introduced in Emacs 22."
   (if (< emacs-major-version 22)
       `(face-background ,face ,frame)
     `(face-background ,face ,frame ,inherit)))
 
+;; For XEmacs.
+(defalias 'mh-line-beginning-position
+  (if (fboundp 'line-beginning-position)
+      'line-beginning-position
+    'point-at-bol))
+
+;; For XEmacs.
+(defalias 'mh-line-end-position
+  (if (fboundp 'line-end-position)
+      'line-end-position
+    'point-at-eol))
+
+(mh-require 'mailabbrev nil t)
+(mh-defun-compat mh-mail-abbrev-make-syntax-table
+  mail-abbrev-make-syntax-table ()
+  "Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'.
+This function does nothing on those systems."
+  nil)
+
+(mh-defun-compat mh-match-string-no-properties
+  match-string-no-properties (num &optional string)
+  "Return string of text matched by last search, without text properties.
+This function is used by XEmacs that lacks `match-string-no-properties'.
+The function `buffer-substring-no-properties' is used instead.
+The argument STRING is ignored."
+  (buffer-substring-no-properties
+   (match-beginning num) (match-end num)))
+
+(mh-defun-compat mh-replace-regexp-in-string replace-regexp-in-string
+  (rep string &optional fixedcase literal subexp start)
+  "Replace REGEXP with REP everywhere in STRING and return result.
+This function is used by XEmacs that lacks `replace-regexp-in-string'.
+The function `replace-in-string' is used instead.
+The arguments FIXEDCASE, LITERAL, SUBEXP, and START are ignored."
+  (replace-in-string string regexp rep))
+
 ;; Copy of constant from url-util.el in Emacs 22; needed by Emacs 21.
 (if (not (boundp 'url-unreserved-chars))
-    (defconst mh-url-unresrved-chars
+    (defconst mh-url-unreserved-chars
       '(
         ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z
         ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z
@@ -111,6 +176,17 @@
        (char-to-string char)))
    str ""))
 
+(mh-defun-compat mh-view-mode-enter
+  view-mode-enter (&optional return-to exit-action)
+  "Enter View mode.
+This function is used by XEmacs that lacks `view-mode-enter'.
+The function `view-mode' is used instead.
+The arguments RETURN-TO and EXIT-ACTION are ignored."
+  ;; Shush compiler.
+  (if return-to nil)
+  (if exit-action nil)
+  (view-mode 1))
+
 (defmacro mh-write-file-functions ()
   "Return `write-file-functions' if it exists.
 Otherwise return `local-write-file-hooks'.
--- a/lisp/mh-e/mh-e.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-e.el	Sat Feb 04 01:01:38 2006 +0000
@@ -6,7 +6,7 @@
 
 ;; Author: Bill Wohler <wohler@newt.com>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
-;; Version: 7.85+cvs
+;; Version: 7.91+cvs
 ;; Keywords: mail
 
 ;; This file is part of GNU Emacs.
@@ -101,7 +101,13 @@
 
 (eval-and-compile
   (defvar mh-xemacs-flag (featurep 'xemacs)
-    "Non-nil means the current Emacs is XEmacs."))
+    "Non-nil means the current Emacs is XEmacs.")
+  (defvar mh-compiling-flag nil
+    "Non-nil means we're compiling."))
+
+(eval-when (compile)
+  (setq mh-compiling-flag t))
+
 (mh-do-in-xemacs
   (require 'mh-xemacs))
 
@@ -115,7 +121,7 @@
 ;; Try to keep variables local to a single file. Provide accessors if
 ;; variables are shared. Use this section as a last resort.
 
-(defconst mh-version "7.85+sans-entropy" "Version number of MH-E.")
+(defconst mh-version "7.91+cvs" "Version number of MH-E.")
 
 ;; Variants
 
@@ -464,7 +470,8 @@
           (let ((arg-list (reverse args))
                 (count 0))
             (while (and (not (eobp)) (< count mh-index-max-cmdline-args))
-              (push (buffer-substring-no-properties (point) (line-end-position))
+              (push (buffer-substring-no-properties (point)
+                                                    (mh-line-end-position))
                     arg-list)
               (incf count)
               (forward-line))
@@ -2970,7 +2977,7 @@
 colors."
   (if mh-min-colors-defined-flag
       spec
-    (let ((cells (display-color-cells))
+    (let ((cells (mh-display-color-cells))
           new-spec)
       ;; Remove entries with min-colors, or delete them if we have fewer colors
       ;; than they specify.
@@ -3030,9 +3037,9 @@
 
 (defface mh-folder-msg-number
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "snow4"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "snow3"))
      (((class color))
       (:foreground "cyan"))))
@@ -3043,9 +3050,9 @@
 
 (defface mh-folder-refiled
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "DarkGoldenrod"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "LightGoldenrod"))
      (((class color))
       (:foreground "yellow" :weight light))
@@ -3099,9 +3106,9 @@
 
 (defface mh-folder-to
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "RosyBrown"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "LightSalmon"))
      (((class color))
       (:foreground "green"))
@@ -3139,9 +3146,9 @@
 
 (defface mh-show-cc
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "DarkGoldenrod"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "LightGoldenrod"))
      (((class color))
       (:foreground "yellow" :weight light))
@@ -3157,9 +3164,9 @@
 
 (defface mh-show-date
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "ForestGreen"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "PaleGreen"))
      (((class color))
       (:foreground "green"))
@@ -3186,9 +3193,9 @@
 
 (defface mh-show-header
   (mh-defface-compat
-   '((((class color) (min-colors 88) (background light))
+   '((((class color) (min-colors 64) (background light))
       (:foreground "RosyBrown"))
-     (((class color) (min-colors 88) (background dark))
+     (((class color) (min-colors 64) (background dark))
       (:foreground "LightSalmon"))
      (((class color))
       (:foreground "green"))
--- a/lisp/mh-e/mh-folder.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-folder.el	Sat Feb 04 01:01:38 2006 +0000
@@ -516,7 +516,7 @@
                         (cons (current-buffer) nil)))))
 
 ;; Register mh-folder-mode as supporting which-function-mode...
-(require 'which-func nil t)
+(mh-require 'which-func nil t)
 (when (boundp 'which-func-modes)
   (add-to-list 'which-func-modes 'mh-folder-mode))
 
--- a/lisp/mh-e/mh-funcs.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-funcs.el	Sat Feb 04 01:01:38 2006 +0000
@@ -154,7 +154,7 @@
                                             "-recurse"
                                           "-norecurse"))
         (goto-char (point-min))
-        (view-mode-enter)
+        (mh-view-mode-enter)
         (setq view-exit-action 'kill-buffer)
         (message "Listing folders...done")))))
 
--- a/lisp/mh-e/mh-gnus.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-gnus.el	Sat Feb 04 01:01:38 2006 +0000
@@ -32,11 +32,11 @@
 
 (require 'mh-e)
 
-(require 'gnus-util nil t)
-(require 'mm-bodies nil t)
-(require 'mm-decode nil t)
-(require 'mm-view nil t)
-(require 'mml nil t)
+(mh-require 'gnus-util nil t)
+(mh-require 'mm-bodies nil t)
+(mh-require 'mm-decode nil t)
+(mh-require 'mm-view nil t)
+(mh-require 'mml nil t)
 
 ;; Copy of function from gnus-util.el.
 (mh-defun-compat mh-gnus-local-map-property gnus-local-map-property (map)
--- a/lisp/mh-e/mh-letter.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-letter.el	Sat Feb 04 01:01:38 2006 +0000
@@ -267,7 +267,7 @@
     (goto-char (point-min))
     (cond ((equal mh-mail-header-separator "") (point-min))
           ((search-forward (format "\n%s\n" mh-mail-header-separator) nil t)
-           (line-beginning-position 0))
+           (mh-line-beginning-position 0))
           (t (point-min)))))
 
 
@@ -319,7 +319,7 @@
   (set (make-local-variable 'mh-mail-header-separator)
        (save-excursion
          (goto-char (mh-mail-header-end))
-         (buffer-substring-no-properties (point) (line-end-position))))
+         (buffer-substring-no-properties (point) (mh-line-end-position))))
   (make-local-variable 'mail-header-separator)
   (setq mail-header-separator mh-mail-header-separator) ;override sendmail.el
   (mh-set-help mh-letter-mode-help-messages)
@@ -828,7 +828,7 @@
           ((< (point) (progn
                         (beginning-of-line)
                         (re-search-forward mh-letter-header-field-regexp
-                                           (line-end-position) t)
+                                           (mh-line-end-position) t)
                         (point)))
            (beginning-of-line))
           (t (end-of-line)))
--- a/lisp/mh-e/mh-limit.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-limit.el	Sat Feb 04 01:01:38 2006 +0000
@@ -211,7 +211,7 @@
             (string-equal "" (match-string 3)))
         (progn (message "No subject line")
                nil)
-      (let ((subject (match-string-no-properties 3))
+      (let ((subject (mh-match-string-no-properties 3))
             (list))
         (if (> (length subject) mh-limit-max-subject-size)
             (setq subject (substring subject 0 mh-limit-max-subject-size)))
@@ -219,7 +219,7 @@
           (if all
               (goto-char (point-min)))
           (while (re-search-forward mh-scan-subject-regexp nil t)
-            (let ((this-subject (match-string-no-properties 3)))
+            (let ((this-subject (mh-match-string-no-properties 3)))
               (if (> (length this-subject) mh-limit-max-subject-size)
                   (setq this-subject (substring this-subject
                                                 0 mh-limit-max-subject-size)))
@@ -310,7 +310,7 @@
       (while (not (eobp))
         (let ((num (ignore-errors
                      (string-to-number
-                      (buffer-substring (point) (line-end-position))))))
+                      (buffer-substring (point) (mh-line-end-position))))))
           (when num (push num msg-list))
           (forward-line))))
     (if (null msg-list)
--- a/lisp/mh-e/mh-mime.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-mime.el	Sat Feb 04 01:01:38 2006 +0000
@@ -302,14 +302,14 @@
          start end)
     (cond ((and data (not inserted-flag) (not displayed-flag))
            (let ((contents (mm-get-part data)))
-             (add-text-properties (line-beginning-position) (line-end-position)
-                                  '(mh-mime-inserted t))
+             (add-text-properties (mh-line-beginning-position)
+                                  (mh-line-end-position) '(mh-mime-inserted t))
              (setq start (point-marker))
              (forward-line 1)
              (mm-insert-inline data contents)
              (setq end (point-marker))
              (add-text-properties
-              start (progn (goto-char start) (line-end-position))
+              start (progn (goto-char start) (mh-line-end-position))
               `(mh-region (,start . ,end)))))
           ((and data (or inserted-flag displayed-flag))
            (mh-press-button)
@@ -746,7 +746,8 @@
         (mh-insert-mime-button handle id (mm-handle-displayed-p handle))
         (goto-char point)
         (when region
-          (add-text-properties (line-beginning-position) (line-end-position)
+          (add-text-properties (mh-line-beginning-position)
+                               (mh-line-end-position)
                                `(mh-region ,region)))))))
 
 (defun mh-mime-part-index (handle)
@@ -1500,9 +1501,9 @@
     (goto-char (point-min))
     (while (re-search-forward "^#" nil t)
       (beginning-of-line)
-      (unless (mh-mh-directive-present-p (point) (line-end-position))
+      (unless (mh-mh-directive-present-p (point) (mh-line-end-position))
         (insert "#"))
-      (goto-char (line-end-position)))))
+      (goto-char (mh-line-end-position)))))
 
 ;;;###mh-autoload
 (defun mh-mh-to-mime-undo (noconfirm)
@@ -1672,7 +1673,8 @@
     (block 'search-for-mh-directive
       (goto-char begin)
       (while (re-search-forward "^#" end t)
-        (let ((s (buffer-substring-no-properties (point) (line-end-position))))
+        (let ((s (buffer-substring-no-properties
+                  (point) (mh-line-end-position))))
           (cond ((equal s ""))
                 ((string-match "^forw[ \t\n]+" s)
                  (return-from 'search-for-mh-directive t))
--- a/lisp/mh-e/mh-search.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-search.el	Sat Feb 04 01:01:38 2006 +0000
@@ -51,7 +51,6 @@
 
 (require 'gnus-util)
 (require 'imenu)
-(require 'which-func nil t)
 
 (defvar mh-searcher nil
   "Cached value of chosen search program.")
@@ -358,12 +357,13 @@
   (goto-char (point-min))
   (dotimes (i 5)
     (add-text-properties (point) (1+ (point)) '(front-sticky t))
-    (add-text-properties (- (line-end-position) 2) (1- (line-end-position))
+    (add-text-properties (- (mh-line-end-position) 2)
+                         (1- (mh-line-end-position))
                          '(rear-nonsticky t))
-    (add-text-properties (point) (1- (line-end-position)) '(read-only t))
+    (add-text-properties (point) (1- (mh-line-end-position)) '(read-only t))
     (forward-line))
   (add-text-properties (point) (1+ (point)) '(front-sticky t))
-  (add-text-properties (point) (1- (line-end-position)) '(read-only t))
+  (add-text-properties (point) (1- (mh-line-end-position)) '(read-only t))
   (goto-char (point-max)))
 
 ;; Sequence Searches
@@ -526,9 +526,10 @@
       (cond ((and (bolp) (eolp))
              (ignore-errors (forward-line -1))
              (setq msg (mh-get-msg-num t)))
-            ((equal (char-after (line-beginning-position)) ?+)
+            ((equal (char-after (mh-line-beginning-position)) ?+)
              (setq folder (buffer-substring-no-properties
-                           (line-beginning-position) (line-end-position))))
+                           (mh-line-beginning-position)
+                           (mh-line-end-position))))
             (t (setq msg (mh-get-msg-num t)))))
     (when (not folder)
       (setq folder (car (gethash (gethash msg mh-index-msg-checksum-map)
@@ -655,13 +656,13 @@
           start begin)
       (goto-char (point-min))
       (while (not (eobp))
-        (if (search-forward "--------" (line-end-position) t)
+        (if (search-forward "--------" (mh-line-end-position) t)
             (setq in-body-flag t)
           (beginning-of-line)
           (setq begin (point))
           (setq start (if in-body-flag
                           (point)
-                        (search-forward ":" (line-end-position) t)
+                        (search-forward ":" (mh-line-end-position) t)
                         (point)))
           (push (cons (and (not in-body-flag)
                            (intern (downcase
@@ -669,7 +670,7 @@
                                      begin (1- start)))))
                       (mh-index-parse-search-regexp
                        (buffer-substring-no-properties
-                        start (line-end-position))))
+                        start (mh-line-end-position))))
                 pattern-list))
         (forward-line))
       pattern-list)))
@@ -979,8 +980,8 @@
           (return nil))
         (when (equal (char-after (point)) ?#)
           (return 'error))
-        (let* ((start (search-forward " " (line-end-position) t))
-               (end (search-forward " " (line-end-position) t)))
+        (let* ((start (search-forward " " (mh-line-end-position) t))
+               (end (search-forward " " (mh-line-end-position) t)))
           (unless (and start end)
             (return 'error))
           (setq end (1- end))
@@ -1058,7 +1059,7 @@
           (return 'error))
         (let ((start (point))
               end msg-start)
-          (setq end (line-end-position))
+          (setq end (mh-line-end-position))
           (unless (search-forward mh-mairix-folder end t)
             (return 'error))
           (goto-char (match-beginning 0))
@@ -1191,7 +1192,7 @@
       (block nil
         (when (eobp) (return nil))
         (let ((file-name (buffer-substring-no-properties
-                          (point) (line-end-position))))
+                          (point) (mh-line-end-position))))
           (unless (equal (string-match mh-namazu-folder file-name) 0)
             (return 'error))
           (unless (file-exists-p file-name)
@@ -1239,17 +1240,17 @@
   (prog1
       (block nil
         (when (eobp) (return nil))
-        (when (search-forward-regexp "^\+" (line-end-position) t)
+        (when (search-forward-regexp "^\+" (mh-line-end-position) t)
           (setq mh-index-pick-folder
-                (buffer-substring-no-properties (line-beginning-position)
-                                                (line-end-position)))
+                (buffer-substring-no-properties (mh-line-beginning-position)
+                                                (mh-line-end-position)))
           (return 'error))
-        (unless (search-forward-regexp "^[1-9][0-9]*$" (line-end-position) t)
+        (unless (search-forward-regexp "^[1-9][0-9]*$" (mh-line-end-position) t)
           (return 'error))
         (list mh-index-pick-folder
               (string-to-number
-               (buffer-substring-no-properties (line-beginning-position)
-                                               (line-end-position)))
+               (buffer-substring-no-properties (mh-line-beginning-position)
+                                               (mh-line-end-position)))
               nil))
     (forward-line)))
 
@@ -1326,8 +1327,8 @@
       (block nil
         (when (eobp)
           (return nil))
-        (let ((eol-pos (line-end-position))
-              (bol-pos (line-beginning-position))
+        (let ((eol-pos (mh-line-end-position))
+              (bol-pos (mh-line-beginning-position))
               folder-start msg-end)
           (goto-char bol-pos)
           (unless (search-forward mh-user-path eol-pos t)
@@ -1408,8 +1409,12 @@
     (when cur-msg (mh-goto-msg cur-msg t t))
     (set-buffer-modified-p old-buffer-modified-flag)))
 
+(mh-require 'which-func nil t)
+
 ;; Shush compiler.
-(eval-when-compile (mh-do-in-xemacs (defvar which-func-mode)))
+(eval-when-compile
+  (if (or mh-xemacs-flag (< emacs-major-version 22))
+      (defvar which-func-mode)))
 
 ;;;###mh-autoload
 (defun mh-index-create-imenu-index ()
@@ -1423,7 +1428,7 @@
         (save-excursion
           (beginning-of-line)
           (push (cons (buffer-substring-no-properties
-                       (point) (line-end-position))
+                       (point) (mh-line-end-position))
                       (set-marker (make-marker) (point)))
                 alist)))
       (setq imenu--index-alist (nreverse alist)))))
@@ -1696,7 +1701,8 @@
     (mh-exec-cmd-output mh-scan-prog nil "-width" "80"
                         "-format" "%{x-mhe-checksum}\n" folder msg)
     (goto-char (point-min))
-    (string-equal (buffer-substring-no-properties (point) (line-end-position))
+    (string-equal (buffer-substring-no-properties
+                   (point) (mh-line-end-position))
                   checksum)))
 
 
@@ -1805,8 +1811,8 @@
 
 (defun mh-md5sum-parser ()
   "Parse md5sum output."
-  (let ((begin (line-beginning-position))
-        (end (line-end-position))
+  (let ((begin (mh-line-beginning-position))
+        (end (mh-line-end-position))
         first-space last-slash)
     (setq first-space (search-forward " " end t))
     (goto-char end)
@@ -1819,8 +1825,8 @@
 
 (defun mh-openssl-parser ()
   "Parse openssl output."
-  (let ((begin (line-beginning-position))
-        (end (line-end-position))
+  (let ((begin (mh-line-beginning-position))
+        (end (mh-line-end-position))
         last-space last-slash)
     (goto-char end)
     (setq last-space (search-backward " " begin t))
@@ -1854,7 +1860,7 @@
       (let (msg checksum)
         (while (not (eobp))
           (setq msg (buffer-substring-no-properties
-                     (point) (line-end-position)))
+                     (point) (mh-line-end-position)))
           (forward-line)
           (save-excursion
             (cond ((not (string-match "^[0-9]*$" msg)))
@@ -1865,7 +1871,7 @@
                   (t
                    ;; update maps
                    (setq checksum (buffer-substring-no-properties
-                                   (point) (line-end-position)))
+                                   (point) (mh-line-end-position)))
                    (let ((msg (string-to-number msg)))
                      (set-buffer folder)
                      (mh-index-update-single-msg msg checksum origin-map)))))
--- a/lisp/mh-e/mh-seq.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-seq.el	Sat Feb 04 01:01:38 2006 +0000
@@ -175,7 +175,7 @@
             (insert "\n"))
           (setq seq-list (cdr seq-list)))
         (goto-char (point-min))
-        (view-mode-enter)
+        (mh-view-mode-enter)
         (setq view-exit-action 'kill-buffer)
         (message "Listing sequences...done")))))
 
@@ -749,7 +749,7 @@
     (goto-char (point-min))
     (multiple-value-bind (folder unseen total)
         (mh-parse-flist-output-line
-         (buffer-substring (point) (line-end-position)))
+         (buffer-substring (point) (mh-line-end-position)))
       (values total unseen folder))))
 
 (defun mh-folder-size-folder (folder)
@@ -777,7 +777,7 @@
       (when (search-backward " out of " (point-min) t)
         (setq total (string-to-number
                      (buffer-substring-no-properties
-                      (match-end 0) (line-end-position))))
+                      (match-end 0) (mh-line-end-position))))
         (when (search-backward " in sequence " (point-min) t)
           (setq p (point))
           (when (search-backward " has " (point-min) t)
@@ -955,7 +955,7 @@
             ;; the case of user sequences.
             (mh-notate nil nil mh-cmd-note)
             (when font-lock-mode
-              (font-lock-fontify-region (point) (line-end-position))))
+              (font-lock-fontify-region (point) (mh-line-end-position))))
         (forward-char (+ mh-cmd-note mh-scan-field-destination-offset))
         (let ((stack (gethash msg mh-sequence-notation-history)))
           (setf (gethash msg mh-sequence-notation-history)
--- a/lisp/mh-e/mh-show.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-show.el	Sat Feb 04 01:01:38 2006 +0000
@@ -878,7 +878,7 @@
 (defun mh-show-addr ()
   "Use `goto-address'."
   (when mh-show-use-goto-addr-flag
-    (require 'goto-addr nil t)
+    (mh-require 'goto-addr nil t)
     (if (fboundp 'goto-address)
         (goto-address))))
 
--- a/lisp/mh-e/mh-speed.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-speed.el	Sat Feb 04 01:01:38 2006 +0000
@@ -69,13 +69,13 @@
     ["Visit Folder" mh-speed-view
      (save-excursion
        (set-buffer speedbar-buffer)
-       (get-text-property (line-beginning-position) 'mh-folder))]
+       (get-text-property (mh-line-beginning-position) 'mh-folder))]
     ["Expand Nested Folders" mh-speed-expand-folder
-     (and (get-text-property (line-beginning-position) 'mh-children-p)
-          (not (get-text-property (line-beginning-position) 'mh-expanded)))]
+     (and (get-text-property (mh-line-beginning-position) 'mh-children-p)
+          (not (get-text-property (mh-line-beginning-position) 'mh-expanded)))]
     ["Contract Nested Folders" mh-speed-contract-folder
-     (and (get-text-property (line-beginning-position) 'mh-children-p)
-          (get-text-property (line-beginning-position) 'mh-expanded))]
+     (and (get-text-property (mh-line-beginning-position) 'mh-children-p)
+          (get-text-property (mh-line-beginning-position) 'mh-expanded))]
     ["Refresh Speedbar" mh-speed-refresh t])
   "Extra menu items for speedbar.")
 
@@ -157,7 +157,7 @@
              (forward-line -1)
              (speedbar-change-expand-button-char ?+)
              (add-text-properties
-              (line-beginning-position) (1+ (line-beginning-position))
+              (mh-line-beginning-position) (1+ (line-beginning-position))
               '(mh-expanded nil)))
             (t
              (forward-line)
@@ -165,7 +165,7 @@
              (goto-char point)
              (speedbar-change-expand-button-char ?-)
              (add-text-properties
-              (line-beginning-position) (1+ (line-beginning-position))
+              (mh-line-beginning-position) (1+ (line-beginning-position))
               `(mh-expanded t)))))))
 
 (defun mh-speed-view (&rest args)
@@ -173,7 +173,7 @@
 The optional ARGS from speedbar are ignored."
   (interactive)
   (declare (ignore args))
-  (let* ((folder (get-text-property (line-beginning-position) 'mh-folder))
+  (let* ((folder (get-text-property (mh-line-beginning-position) 'mh-folder))
          (range (and (stringp folder)
                      (mh-read-range "Scan" folder t nil nil
                                     mh-interpret-number-as-range-flag))))
@@ -199,9 +199,9 @@
     (forward-line -1)
     (setf (gethash nil mh-speed-folder-map)
           (set-marker (or (gethash nil mh-speed-folder-map) (make-marker))
-                      (1+ (line-beginning-position))))
+                      (1+ (mh-line-beginning-position))))
     (add-text-properties
-     (line-beginning-position) (1+ (line-beginning-position))
+     (mh-line-beginning-position) (1+ (line-beginning-position))
      `(mh-folder nil mh-expanded nil mh-children-p t mh-level 0))
     (mh-speed-stealth-update t)
     (when (> mh-speed-update-interval 0)
@@ -268,12 +268,12 @@
     (speedbar-with-writable
       (goto-char (gethash folder mh-speed-folder-map (point)))
       (beginning-of-line)
-      (if (re-search-forward "([1-9][0-9]*/[0-9]+)" (line-end-position) t)
+      (if (re-search-forward "([1-9][0-9]*/[0-9]+)" (mh-line-end-position) t)
           (setq face (mh-speed-bold-face face))
         (setq face (mh-speed-normal-face face)))
       (beginning-of-line)
-      (when (re-search-forward "\\[.\\] " (line-end-position) t)
-        (put-text-property (point) (line-end-position) 'face face)))))
+      (when (re-search-forward "\\[.\\] " (mh-line-end-position) t)
+        (put-text-property (point) (mh-line-end-position) 'face face)))))
 
 (defun mh-speed-normal-face (face)
   "Return normal face for given FACE."
@@ -313,7 +313,7 @@
     (while suffix-list
       ;; We always need atleast one toggle. We need two if the directory list
       ;; is stale since a folder was added.
-      (when (equal prefix (get-text-property (line-beginning-position)
+      (when (equal prefix (get-text-property (mh-line-beginning-position)
                                              'mh-folder))
         (mh-speed-toggle)
         (unless (get-text-property (point) 'mh-expanded)
@@ -368,9 +368,9 @@
              (setf (gethash folder-name mh-speed-folder-map)
                    (set-marker (or (gethash folder-name mh-speed-folder-map)
                                    (make-marker))
-                               (1+ (line-beginning-position))))
+                               (1+ (mh-line-beginning-position))))
              (add-text-properties
-              (line-beginning-position) (1+ (line-beginning-position))
+              (mh-line-beginning-position) (1+ (mh-line-beginning-position))
               `(mh-folder ,folder-name
                           mh-expanded nil
                           mh-children-p ,(not (not (cdr f)))
@@ -400,7 +400,7 @@
   (interactive (list t))
   (when force
     (when mh-speed-flists-timer
-      (cancel-timer mh-speed-flists-timer)
+      (mh-cancel-timer mh-speed-flists-timer)
       (setq mh-speed-flists-timer nil))
     (when (and (processp mh-speed-flists-process)
                (not (eq (process-status mh-speed-flists-process) 'exit)))
@@ -471,25 +471,25 @@
                           face)
                       (when pos
                         (goto-char pos)
-                        (goto-char (line-beginning-position))
+                        (goto-char (mh-line-beginning-position))
                         (cond
                          ((null (get-text-property (point) 'mh-count))
-                          (goto-char (line-end-position))
+                          (goto-char (mh-line-end-position))
                           (setq face (get-text-property (1- (point)) 'face))
                           (insert (format " (%s/%s)" unseen total))
                           (mh-speed-highlight 'unknown face)
-                          (goto-char (line-beginning-position))
+                          (goto-char (mh-line-beginning-position))
                           (add-text-properties (point) (1+ (point))
                                                `(mh-count (,unseen . ,total))))
                          ((not (equal (get-text-property (point) 'mh-count)
                                       (cons unseen total)))
-                          (goto-char (line-end-position))
+                          (goto-char (mh-line-end-position))
                           (setq face (get-text-property (1- (point)) 'face))
-                          (re-search-backward " " (line-beginning-position) t)
-                          (delete-region (point) (line-end-position))
+                          (re-search-backward " " (mh-line-beginning-position) t)
+                          (delete-region (point) (mh-line-end-position))
                           (insert (format " (%s/%s)" unseen total))
                           (mh-speed-highlight 'unknown face)
-                          (goto-char (line-beginning-position))
+                          (goto-char (mh-line-beginning-position))
                           (add-text-properties
                            (point) (1+ (point))
                            `(mh-count (,unseen . ,total))))))))))))
@@ -519,15 +519,15 @@
                              (caar parent-kids)))
                  (setq parent-change ? ))))
         (goto-char parent-position)
-        (when (equal (get-text-property (line-beginning-position) 'mh-folder)
+        (when (equal (get-text-property (mh-line-beginning-position) 'mh-folder)
                      parent)
-          (when (get-text-property (line-beginning-position) 'mh-expanded)
+          (when (get-text-property (mh-line-beginning-position) 'mh-expanded)
             (mh-speed-toggle))
           (when parent-change
             (speedbar-with-writable
               (mh-speedbar-change-expand-button-char parent-change)
               (add-text-properties
-               (line-beginning-position) (1+ (line-beginning-position))
+               (mh-line-beginning-position) (1+ (mh-line-beginning-position))
                `(mh-children-p ,(equal parent-change ?+)))))
           (mh-speed-highlight mh-speed-last-selected-folder 'mh-speedbar-folder)
           (setq mh-speed-last-selected-folder nil)
@@ -541,7 +541,7 @@
   "Change the expansion button character to CHAR for the current line."
   (save-excursion
     (beginning-of-line)
-    (if (re-search-forward "\\[.\\]" (line-end-position) t)
+    (if (re-search-forward "\\[.\\]" (mh-line-end-position) t)
         (speedbar-with-writable
           (backward-char 2)
           (delete-char 1)
@@ -573,9 +573,9 @@
       (speedbar-with-writable
         (mh-speedbar-change-expand-button-char ?+)
         (add-text-properties
-         (line-beginning-position) (1+ (line-beginning-position))
+         (mh-line-beginning-position) (1+ (mh-line-beginning-position))
          `(mh-children-p t)))
-      (when (get-text-property (line-beginning-position) 'mh-expanded)
+      (when (get-text-property (mh-line-beginning-position) 'mh-expanded)
         (mh-speed-toggle))
       (setq mh-speed-refresh-flag t))))
 
--- a/lisp/mh-e/mh-thread.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-thread.el	Sat Feb 04 01:01:38 2006 +0000
@@ -296,7 +296,7 @@
         (while (not (eobp))
           (forward-char address-start-offset)
           (unless (equal (string-match spaces (buffer-substring-no-properties
-                                               (point) (line-end-position)))
+                                               (point) (mh-line-end-position)))
                          0)
             (beginning-of-line)
             (backward-char)
@@ -456,9 +456,9 @@
 If optional argument STRING is given then that is assumed to be
 the scan line. Otherwise uses the line at point as the scan line
 to parse."
-  (let* ((string (or string
-                     (buffer-substring-no-properties (line-beginning-position)
-                                                     (line-end-position))))
+  (let* ((string (or string (buffer-substring-no-properties
+                             (mh-line-beginning-position)
+                             (mh-line-end-position))))
          (address-start (+ mh-cmd-note mh-scan-field-from-start-offset))
          (body-start (+ mh-cmd-note mh-scan-field-from-end-offset))
          (first-string (substring string 0 address-start)))
@@ -599,18 +599,20 @@
         (while (not (eobp))
           (block process-message
             (let* ((index-line
-                    (prog1 (buffer-substring (point) (line-end-position))
+                    (prog1 (buffer-substring (point) (mh-line-end-position))
                       (forward-line)))
                    (index (string-to-number index-line))
-                   (id (prog1 (buffer-substring (point) (line-end-position))
+                   (id (prog1 (buffer-substring (point) (mh-line-end-position))
                          (forward-line)))
-                   (refs (prog1 (buffer-substring (point) (line-end-position))
+                   (refs (prog1
+                             (buffer-substring (point) (mh-line-end-position))
                            (forward-line)))
                    (in-reply-to (prog1 (buffer-substring (point)
-                                                         (line-end-position))
+                                                         (mh-line-end-position))
                                   (forward-line)))
                    (subject (prog1
-                                (buffer-substring (point) (line-end-position))
+                                (buffer-substring
+                                 (point) (mh-line-end-position))
                               (forward-line)))
                    (subject-re-p nil))
               (unless (gethash index mh-thread-scan-line-map)
--- a/lisp/mh-e/mh-tool-bar.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-tool-bar.el	Sat Feb 04 01:01:38 2006 +0000
@@ -31,6 +31,10 @@
 ;;; Code:
 
 (require 'mh-e)
+(mh-do-in-gnu-emacs
+  (require 'tool-bar))
+(mh-do-in-xemacs
+  (require 'toolbar))
 
 ;;; Tool Bar Commands
 
--- a/lisp/mh-e/mh-utils.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/mh-e/mh-utils.el	Sat Feb 04 01:01:38 2006 +0000
@@ -68,7 +68,7 @@
 (defun mh-colors-available-p ()
   "Check if colors are available in the Emacs being used."
   (or mh-xemacs-flag
-      (let ((color-cells (display-color-cells)))
+      (let ((color-cells (mh-display-color-cells)))
         (and (numberp color-cells) (>= color-cells 8)))))
 
 ;;;###mh-autoload
@@ -81,30 +81,49 @@
   "Delete the next LINES lines."
   (delete-region (point) (progn (forward-line lines) (point))))
 
-(defvar mh-image-load-path-called-flag nil)
+(defvar mh-image-load-path nil
+  "Directory where images for MH-E are found.
+If nil, then the function `mh-image-load-path' will search for
+the images in \"../../etc/images\" relative to the files in
+\"lisp/mh-e\".")
+
+(defvar mh-image-load-path-called-flag nil
+  "Non-nil means that the function `mh-image-load-path' has been called.
+This variable is used by that function to avoid doing the work repeatedly.")
 
 ;;;###mh-autoload
 (defun mh-image-load-path ()
   "Ensure that the MH-E images are accessible by `find-image'.
-Images for MH-E are found in ../../etc/images relative to the
-files in \"lisp/mh-e\". If `image-load-path' exists (since Emacs
-22), then the images directory is added to it if isn't already
-there. Otherwise, the images directory is added to the
-`load-path' if it isn't already there."
+
+Images for MH-E are found in \"../../etc/images\" relative to the
+files in \"lisp/mh-e\". This function saves the actual location
+found in the variable `mh-image-load-path'. If the images on your
+system are actually located elsewhere, then set the variable
+`mh-image-load-path' before starting MH-E.
+
+If `image-load-path' exists (since Emacs 22), then the contents
+of the variable `mh-image-load-path' is added to it if isn't
+already there. Otherwise, the contents of the variable
+`mh-image-load-path' is added to the `load-path' if it isn't
+already there.
+
+See also variable `mh-image-load-path-called-flag'."
   (unless mh-image-load-path-called-flag
-    (let (mh-library-name mh-image-load-path)
-      ;; First, find mh-e in the load-path.
-      (setq mh-library-name (locate-library "mh-e"))
-      (if (not mh-library-name)
-        (error "Can not find MH-E in load-path"))
-      (setq mh-image-load-path
-            (expand-file-name (concat (file-name-directory mh-library-name)
-                                      "../../etc/images")))
-      (if (not (file-exists-p mh-image-load-path))
-          (error "Can not find image directory %s" mh-image-load-path))
-      (if (boundp 'image-load-path)
-          (add-to-list 'image-load-path mh-image-load-path)
-        (add-to-list 'load-path mh-image-load-path)))
+    (if (or (not mh-image-load-path)
+            (not (file-exists-p mh-image-load-path)))
+        (let (mh-library-name)
+          ;; First, find mh-e in the load-path.
+          (setq mh-library-name (locate-library "mh-e"))
+          (if (not mh-library-name)
+              (error "Can not find MH-E in load-path"))
+          (setq mh-image-load-path
+                (expand-file-name (concat (file-name-directory mh-library-name)
+                                          "../../etc/images")))))
+    (if (not (file-exists-p mh-image-load-path))
+        (error "Can not find image directory %s" mh-image-load-path))
+    (if (boundp 'image-load-path)
+        (add-to-list 'image-load-path mh-image-load-path)
+      (add-to-list 'load-path mh-image-load-path))
     (setq mh-image-load-path-called-flag t)))
 
 ;;;###mh-autoload
@@ -502,8 +521,8 @@
     ;; top-level folders; otherwise mh-sub-folders returns all the
     ;; files in / if given an empty string or +.
     (when folder
-      (setq folder (replace-regexp-in-string "^\+" "" folder))
-      (setq folder (replace-regexp-in-string "/*$" "/" folder))
+      (setq folder (mh-replace-regexp-in-string "^\+" "" folder))
+      (setq folder (mh-replace-regexp-in-string "/*$" "/" folder))
       (if (equal folder "")
         (setq folder nil)))
     (loop for f in (mh-sub-folders folder) do
@@ -553,9 +572,10 @@
       (apply #'call-process arg-list)
       (goto-char (point-min))
       (while (not (and (eolp) (bolp)))
-        (goto-char (line-end-position))
-        (let ((start-pos (line-beginning-position))
-              (has-pos (search-backward " has " (line-beginning-position) t)))
+        (goto-char (mh-line-end-position))
+        (let ((start-pos (mh-line-beginning-position))
+              (has-pos (search-backward " has "
+                                        (mh-line-beginning-position) t)))
           (when (integerp has-pos)
             (while (equal (char-after has-pos) ? )
               (decf has-pos))
@@ -570,7 +590,7 @@
                   (setq name (substring name 0 (1- (length name)))))
                 (push
                  (cons name
-                       (search-forward "(others)" (line-end-position) t))
+                       (search-forward "(others)" (mh-line-end-position) t))
                  results))))
           (forward-line 1))))
     (setq results (nreverse results))
@@ -927,10 +947,12 @@
       (unwind-protect
           (cond ((or (and (not arg)
                           (text-property-any begin end 'invisible 'vanish))
-                     (and (numberp arg) (>= arg 0))
-                     (and (eq arg 'long) (> (line-beginning-position 5) end)))
+                     (and (numberp arg)
+                          (>= arg 0))
+                     (and (eq arg 'long)
+                          (> (mh-line-beginning-position 5) end)))
                  (remove-text-properties begin end '(invisible nil))
-                 (search-forward ":" (line-end-position) t)
+                 (search-forward ":" (mh-line-end-position) t)
                  (mh-letter-skip-leading-whitespace-in-header-field))
                 ;; XXX Redesign to make usable by user. Perhaps use a positive
                 ;; numeric prefix to make that many lines visible.
--- a/lisp/net/newsticker.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/net/newsticker.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,6 +1,6 @@
 ;;; newsticker.el --- A Newsticker for Emacs.
 
-;; Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
@@ -397,7 +397,7 @@
 
 (defvar newsticker--retrieval-timer-list nil
   "List of timers for news retrieval.
-This is an alist, each element consisting of (feed-name . timer)")
+This is an alist, each element consisting of (feed-name . timer).")
 
 (defvar newsticker--display-timer nil
   "Timer for newsticker display.")
@@ -485,8 +485,8 @@
 (defun newsticker--set-customvar (symbol value)
   "Set newsticker-variable SYMBOL value to VALUE.
 
-Calls all necessary actions which are necessary in order to make
-the new value effective.  Changing `newsticker-url-list', for example,
+Calls all actions which are necessary in order to make the new
+value effective.  Changing `newsticker-url-list', for example,
 will re-start the retrieval-timers."
   (unless (condition-case nil
               (eq (symbol-value symbol) value)
@@ -586,7 +586,7 @@
 
 The START-TIME can be either a string, or nil.  If it is a string it
 specifies a fixed time at which this feed shall be retrieved for the
-first time.  (Examples: \"11:00pm\", \"23:00\").  If it is nil (or
+first time.  (Examples: \"11:00pm\", \"23:00\".)  If it is nil (or
 unspecified), this feed will be retrieved immediately after calling
 `newsticker-start'.
 
@@ -940,7 +940,7 @@
      (:family "helvetica" :bold t))
     (((class color) (background light))
      (:family "helvetica" :bold t)))
-  "Face for old news items."
+  "Face for news items."
   :group 'newsticker-faces)
 
 (defface newsticker-old-item-face
@@ -1041,7 +1041,7 @@
   t
   "Decides whether to show immortal/non-expiring news items in the ticker.
 If t the echo area will not show immortal items.  See also
-`newsticker-hide-old-items-in-echo-area."
+`newsticker-hide-old-items-in-echo-area'."
   :type 'boolean
   :set 'newsticker--set-customvar
   :group 'newsticker-ticker)
@@ -1059,7 +1059,7 @@
   t
   "Decides whether to show obsolete items items in the ticker.
 If t the echo area will not show obsolete items.  See also
-`newsticker-hide-old-items-in-echo-area."
+`newsticker-hide-old-items-in-echo-area'."
   :type 'boolean
   :set 'newsticker--set-customvar
   :group 'newsticker-ticker)
@@ -2376,7 +2376,7 @@
         guid
       (car (xml-node-children guid)))))
 (defsubst newsticker--enclosure (item)
-  "Return enclosure element of ITEM in the form \(...FIXME...\)or nil."
+  "Return enclosure element of ITEM in the form \(...FIXME...\) or nil."
   (let ((enclosure (assoc 'enclosure (newsticker--extra item))))
     (if enclosure
         (xml-node-attributes enclosure))))
@@ -2490,7 +2490,7 @@
 
 (defun newsticker-buffer-update (&optional force)
   "Update the *newsticker* buffer.
-Unless FORCE is t this is donly only if necessary, i.e. when the
+Unless FORCE is t this is done only if necessary, i.e. when the
 *newsticker* buffer is not up-to-date."
   (interactive)
   ;; bring cache data into proper order....
@@ -2584,7 +2584,7 @@
   "Show inline images in visible text ranges.
 In-line images in invisible text ranges are hidden.  This function
 calls `w3m-toggle-inline-image'.  It works only if
-`newsticker-html-renderer' is set to `w3m-region'"
+`newsticker-html-renderer' is set to `w3m-region'."
   (interactive)
   (if (eq newsticker-html-renderer 'w3m-region)
       (let ((inhibit-read-only t))
@@ -3290,7 +3290,7 @@
         (newsticker--cache-replace-age newsticker--cache
                                        name-symbol
                                        'feed 'obsolete-old)
-        
+
         ;; check Atom/RSS version and call corresponding parser
         (condition-case error-data
             (if (cond
@@ -3405,7 +3405,7 @@
 (defun newsticker--parse-atom-0.3 (name time topnode)
   "Parse Atom 0.3 data.
 Return value as well as arguments NAME, TIME, and TOPNODE are the
-same as in `newsticker--parse-generic-rss'."
+same as in `newsticker--parse-atom-1.0'."
   (newsticker--debug-msg "Parsing Atom 0.3 feed %s" name)
   (let (new-feed new-item)
     (setq new-feed (newsticker--parse-generic-feed
@@ -3613,8 +3613,8 @@
 
 (defun newsticker--parse-rss-1.0 (name time topnode)
   "Parse RSS 1.0 data.
-Return value as well as arguments NAME, TIME, and
-TOPNODE are the same as in `newsticker--parse-atom-1.0'.
+Return value as well as arguments NAME, TIME, and TOPNODE are the
+same as in `newsticker--parse-atom-1.0'.
 
 For the RSS 1.0 specification see http://web.resource.org/rss/1.0/spec."
   (newsticker--debug-msg "Parsing RSS 1.0 feed %s" name)
@@ -3724,9 +3724,7 @@
                                             extra-elements)
   "Parse generic news feed data.
 Argument NAME gives the name of a news feed.  TIME gives the
-system time at which the data have been retrieved.  CHANNELNODE
-is the node in the feed data which contains the description, link
-etc.  of the feed itself.
+system time at which the data have been retrieved.
 
 The arguments TITLE, DESC, LINK, and EXTRA-ELEMENTS give the feed's title,
 description, link, and extra elements resp."
@@ -3966,7 +3964,7 @@
 
 (defun newsticker--decode-iso8601-date (iso8601-string)
   "Return ISO8601-STRING in format like `decode-time'.
-Converts from ISO-8601 to Emacs representation.  If ISO8601-STRING
+Converts from ISO-8601 to Emacs representation.
 Examples:
 2004-09-17T05:09:49+00:00
 2004-09-17T05:09+00:00
@@ -4300,10 +4298,9 @@
 
 (defun newsticker--buffer-insert-item (item &optional feed-name-symbol)
   "Insert a news item in the current buffer.
-Insert the string PREFIX and a formatted representation of the
-ITEM.  The optional parameter FEED-NAME-SYMBOL determines how the
-item is formatted and whether the item-retrieval time is added as
-well."
+Insert a formatted representation of the ITEM.  The optional parameter
+FEED-NAME-SYMBOL determines how the item is formatted and whether the
+item-retrieval time is added as well."
   ;; insert headline
   (if (eq (newsticker--age item) 'feed)
       (newsticker--buffer-do-insert-text item 'feed feed-name-symbol)
@@ -4831,11 +4828,11 @@
       (goto-char pos))
     pos))
 
-(defun newsticker--buffer-hideshow (mark-age onoff )
+(defun newsticker--buffer-hideshow (mark-age onoff)
   "Hide or show items of type MARK-AGE.
 If ONOFF is nil the item is hidden, otherwise it is shown."
   (if onoff
-      (remove-from-invisibility-spec mark-age )
+      (remove-from-invisibility-spec mark-age)
     (add-to-invisibility-spec mark-age)))
 
 (defun newsticker--buffer-beginning-of-item ()
@@ -5026,7 +5023,7 @@
 certain item, except for the following cases.
 
 If AGE equals 'feed the TITLE, DESCription and LINK do not
-matter. If DESC is nil it is ignored as well.  If
+matter.  If DESC is nil it is ignored as well.  If
 `newsticker-desc-comp-max' is non-nil, only the first
 `newsticker-desc-comp-max' characters of DESC are taken into
 account.
@@ -5252,7 +5249,7 @@
 ;; ======================================================================
 (defun newsticker--stat-num-items (feed &optional age)
   "Return number of items in the given FEED which have the given AGE.
-If AGE is nil, the total number items is returned."
+If AGE is nil, the total number of items is returned."
   (let ((items (cdr (newsticker--cache-get-feed feed)))
         (num 0))
     (while items
@@ -5329,7 +5326,8 @@
           newsticker-auto-mark-filter-list)))
 
 (defun newsticker--do-run-auto-mark-filter (item list)
-  "Actually compare ITEM AGE LIST against `newsticker-auto-mark-filter-list'."
+  "Actually compare ITEM against the pattern-LIST
+\(from `newsticker-auto-mark-filter-list')."
   (mapc (lambda (pattern)
           (let ((age    (nth 0 pattern))
                 (place  (nth 1 pattern))
@@ -5384,8 +5382,8 @@
 (defun newsticker-download-enclosures (feed item)
   "In all FEEDs download the enclosed object of the news ITEM.
 The object is saved to the directory \"~/tmp/newsticker/FEED/TITLE\", which
-is created if it does not exist. TITLE is the title of the news
-item. Argument FEED is ignored.
+is created if it does not exist.  TITLE is the title of the news
+item.  Argument FEED is ignored.
 This function is suited for adding it to `newsticker-new-item-functions'."
   (let ((title (newsticker--title item))
         (enclosure (newsticker--enclosure item)))
--- a/lisp/net/rcirc.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/net/rcirc.el	Sat Feb 04 01:01:38 2006 +0000
@@ -92,7 +92,7 @@
 
 (defcustom rcirc-fill-column nil
   "*Column beyond which automatic line-wrapping should happen.
-If nil, use value of `fill-column'.  If frame-width, use the
+If nil, use value of `fill-column'.  If 'frame-width, use the
 maximum frame width."
   :type '(choice (const :tag "Value of `fill-column'")
 		 (const :tag "Full frame width" frame-width)
@@ -128,7 +128,7 @@
   :group 'rcirc)
 
 (defcustom rcirc-read-only-flag t
-  "*Non-nil means make text in irc buffers read-only."
+  "*Non-nil means make text in IRC buffers read-only."
   :type 'boolean
   :group 'rcirc)
 
@@ -167,7 +167,7 @@
   :group 'rcirc)
 
 (defcustom rcirc-prompt "> "
-  "Prompt string to use in irc buffers.
+  "Prompt string to use in IRC buffers.
 
 The following replacements are made:
 %n is your nick.
@@ -354,7 +354,7 @@
   "If non-nil, write information to `rcirc-debug-buffer'.")
 (defun rcirc-debug (process text)
   "Add an entry to the debug log including PROCESS and TEXT.
-Debug text is written to `rcirc-debug-buffer' if `rcirc-debug-p'
+Debug text is written to `rcirc-debug-buffer' if `rcirc-debug-flag'
 is non-nil."
   (when rcirc-debug-flag
     (save-excursion
@@ -401,8 +401,8 @@
     ps))
 
 (defvar rcirc-receive-message-hooks nil
-  "Hook functions run when a message is recieved from server.
-Function is called with PROCESS COMMAND SENDER ARGS and LINE.")
+  "Hook functions run when a message is received from server.
+Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.")
 (defun rcirc-filter (process output)
   "Called when PROCESS receives OUTPUT."
   (rcirc-debug process output)
@@ -587,7 +587,7 @@
 (define-key global-map (kbd "C-c C-SPC") 'rcirc-next-active-buffer)
 
 (defvar rcirc-browse-url-map (make-sparse-keymap)
-  "Keymap used ror browsing URLs in `rcirc-mode'.")
+  "Keymap used for browsing URLs in `rcirc-mode'.")
 
 (define-key rcirc-browse-url-map (kbd "RET") 'rcirc-browse-url-at-point)
 (define-key rcirc-browse-url-map (kbd "<mouse-2>") 'rcirc-browse-url-at-mouse)
@@ -599,7 +599,7 @@
   "Hook run when setting up rcirc buffer.")
 
 (defun rcirc-mode (process target)
-  "Major mode for irc channel buffers.
+  "Major mode for IRC channel buffers.
 
 \\{rcirc-mode-map}"
   (kill-all-local-variables)
@@ -722,7 +722,7 @@
 
 (defun rcirc-generate-new-buffer-name (process target)
   "Return a buffer name based on PROCESS and TARGET.
-This is used for the initial name given to irc buffers."
+This is used for the initial name given to IRC buffers."
   (if target
       (concat target "@" (process-name process))
     (concat "*" (process-name process) "*")))
@@ -985,7 +985,7 @@
 				     1))	; [
 				 (t 3))		; ***
 			   1)
-			? )))
+			?\s)))
 		  (fill-column (cond ((eq rcirc-fill-column 'frame-width)
 				      (1- (frame-width)))
 				     (rcirc-fill-column
@@ -1046,7 +1046,7 @@
 			    process sender response target text)))))
 
 (defun rcirc-startup-channels (server)
-  "Return the list of startup channels for server."
+  "Return the list of startup channels for SERVER."
   (let (channels)
     (dolist (i rcirc-startup-channels-alist)
       (if (string-match (car i) server)
@@ -1127,8 +1127,8 @@
               (sort nicks (lambda (x y) (time-less-p (cdr y) (cdr x))))))))
 
 (defun rcirc-ignore-update-automatic (nick)
-  "Remove NICK from  `rcirc-ignore-list'
-if NICK is also on  `rcirc-ignore-list-automatic'."
+  "Remove NICK from `rcirc-ignore-list'
+if NICK is also on `rcirc-ignore-list-automatic'."
   (when (member nick rcirc-ignore-list-automatic)
       (setq rcirc-ignore-list-automatic
 	    (delete nick rcirc-ignore-list-automatic)
@@ -1375,14 +1375,14 @@
     (when (not existing-buffer)
       (rcirc-cmd-whois nick))))
 
-(defun-rcirc-command join (args)
+(defun-rcirc-command join (channel)
   "Join CHANNEL."
   (interactive "sJoin channel: ")
-  (let* ((channel (car (split-string args)))
-         (buffer (rcirc-get-buffer-create process channel)))
+  (let ((buffer (rcirc-get-buffer-create process
+                                         (car (split-string channel)))))
     (when (not (eq (selected-window) (minibuffer-window)))
       (funcall rcirc-switch-to-buffer-function buffer))
-    (rcirc-send-string process (concat "JOIN " args))))
+    (rcirc-send-string process (concat "JOIN " channel))))
 
 (defun-rcirc-command part (channel)
   "Part CHANNEL."
@@ -1486,10 +1486,10 @@
   "Manage the ignore list.
 Ignore NICK, unignore NICK if already ignored, or list ignored
 nicks when no NICK is given.  When listing ignored nicks, the
-ones added to the list automatically are marked with an asterix."
+ones added to the list automatically are marked with an asterisk."
   (interactive "sToggle ignoring of nick: ")
   (if (string= "" nick)
-      (rcirc-print process (rcirc-nick process) "NOTICE" target 
+      (rcirc-print process (rcirc-nick process) "NOTICE" target
 		   (mapconcat
 		    (lambda (nick)
 		      (concat nick
@@ -1511,19 +1511,19 @@
   (propertize (or string "") 'face face 'rear-nonsticky t))
 
 (defvar rcirc-url-regexp
-  (rx word-boundary 
+  (rx word-boundary
       (or "www."
-	  (and (or "http" "https" "ftp" "file" "gopher" "news" "telnet" "wais" 
+	  (and (or "http" "https" "ftp" "file" "gopher" "news" "telnet" "wais"
 		   "mailto")
 	       "://"
 	       (1+ (char "a-zA-Z0-9_."))
 	       (optional ":" (1+ (char "0-9")))))
       (1+ (char "-a-zA-Z0-9_=!?#$\@~`%&*+|\\/:;.,"))
       (char "-a-zA-Z0-9_=!?#$\@~`%&*+|\\/:;"))
-  "Regexp matching URL's.  Set to nil to disable URL features in rcirc.")
+  "Regexp matching URLs.  Set to nil to disable URL features in rcirc.")
 
 (defun rcirc-browse-url (&optional arg)
-  "Prompt for url to browse based on urls in buffer."
+  "Prompt for URL to browse based on URLs in buffer."
   (interactive)
   (let ((completions (mapcar (lambda (x) (cons x nil)) rcirc-urls))
         (initial-input (car rcirc-urls))
@@ -1559,13 +1559,13 @@
   "Return TEXT with properties added based on various patterns."
   ;; ^B
   (setq text
-        (rcirc-map-regexp 
+        (rcirc-map-regexp
 	 (lambda (start end string)
 	   (let ((orig-face (get-text-property start 'face string)))
 	       (add-text-properties
 		start end
 		(list 'face (if (listp orig-face)
-				(append orig-face 
+				(append orig-face
 					(list 'bold))
 			      (list orig-face 'bold))
 		      'rear-nonsticky t)
@@ -1573,7 +1573,7 @@
 	   ".*?"
 	   text))
   ;; TODO: deal with ^_ and ^C colors sequences
-  (while (string-match "\\(.*\\)[]\\(.*\\)" text) 
+  (while (string-match "\\(.*\\)[]\\(.*\\)" text)
     (setq text (concat (match-string 1 text)
                        (match-string 2 text))))
   ;; my nick
@@ -1596,7 +1596,7 @@
 	   (let ((orig-face (get-text-property start 'face string)))
 	     (add-text-properties start end
 				  (list 'face (if (listp orig-face)
-						  (append orig-face 
+						  (append orig-face
 							  (list 'bold))
 						(list orig-face 'bold))
 					'rear-nonsticky t
@@ -1991,7 +1991,7 @@
   '((((min-colors 88) (background dark)) (:foreground "cyan1"))
     (((background dark)) (:foreground "cyan"))
     (t (:foreground "dark blue")))
-  "The face to use to highlight prompts."
+  "The face used to highlight prompts."
   :group 'rcirc-faces)
 
 (defface rcirc-mode-line-nick
--- a/lisp/net/tramp.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/net/tramp.el	Sat Feb 04 01:01:38 2006 +0000
@@ -6766,13 +6766,14 @@
   "Convert file-attributes ATTR generated by perl script or ls.
 Convert file mode bits to string and set virtual device number.
 Return ATTR."
+  ;; Convert file mode bits to string.
   (unless (stringp (nth 8 attr))
-    ;; Convert file mode bits to string.
     (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
-  ;; Set file's gid change bit.
-  (setcar (nthcdr 9 attr)
-	  (not (= (nth 3 attr)
-		  (tramp-get-remote-gid multi-method method user host))))
+  ;; Set file's gid change bit.  Possible only when id-format is 'integer.
+  (when (numberp (nth 3 attr))
+    (setcar (nthcdr 9 attr)
+	    (not (= (nth 3 attr)
+		    (tramp-get-remote-gid multi-method method user host)))))
   ;; Set virtual device number.
   (setcar (nthcdr 11 attr)
           (tramp-get-device multi-method method user host))
--- a/lisp/newcomment.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/newcomment.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; newcomment.el --- (un)comment regions of buffers
 
 ;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: code extracted from Emacs-20's simple.el
 ;; Maintainer: Stefan Monnier <monnier@iro.umontreal.ca>
@@ -96,7 +96,7 @@
 
 ;;;###autoload
 (defcustom comment-column 32
-  "*Column to indent right-margin comments to.
+  "Column to indent right-margin comments to.
 Each mode establishes a different default value for this variable; you
 can set the value for a particular mode using that mode's hook.
 Comments might be indented to a value smaller than this in order
@@ -200,7 +200,7 @@
 
 ;;;###autoload
 (defcustom comment-style 'plain
-  "*Style to be used for `comment-region'.
+  "Style to be used for `comment-region'.
 See `comment-styles' for a list of available styles."
   :type (if (boundp 'comment-styles)
 	    `(choice ,@(mapcar (lambda (s) `(const ,(car s))) comment-styles))
@@ -220,7 +220,7 @@
 
 ;;;###autoload
 (defcustom comment-multi-line nil
-  "*Non-nil means `comment-indent-new-line' continues comments.
+  "Non-nil means `comment-indent-new-line' continues comments.
 That is, it inserts no new terminator or starter.
 This affects `auto-fill-mode', which is the main reason to
 customize this variable.
@@ -1081,7 +1081,8 @@
   case it calls `uncomment-region').
 Else, if the current line is empty, insert a comment and indent it.
 Else if a prefix ARG is specified, call `comment-kill'.
-Else, call `comment-indent'."
+Else, call `comment-indent'.
+You can configure `comment-style' to change the way regions are commented."
   (interactive "*P")
   (comment-normalize-vars)
   (if (and mark-active transient-mark-mode)
--- a/lisp/replace.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/replace.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1004,7 +1004,7 @@
     (let* ((default (car regexp-history))
 	   (input
 	    (read-from-minibuffer
-	     (if allbufs
+	     (if current-prefix-arg
 		 "List lines in buffers whose names match regexp: "
 	       "List lines in buffers whose filenames match regexp: ")
 	     nil
@@ -1016,7 +1016,7 @@
 	input))
     (occur-read-primary-args)))
   (when bufregexp
-    (occur-1 regexp nlines
+    (occur-1 regexp nil
 	     (delq nil
 		   (mapcar (lambda (buf)
 			     (when (if allbufs
--- a/lisp/savehist.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/savehist.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,6 +1,6 @@
 ;;; savehist.el --- Save minibuffer history.
 
-;; Copyright (C) 1997,2005 Free Software Foundation
+;; Copyright (C) 1997, 2005 Free Software Foundation
 
 ;; Author: Hrvoje Niksic <hniksic@xemacs.org>
 ;; Keywords: minibuffer
@@ -171,7 +171,7 @@
 
 (defvar savehist-loaded nil
   "Whether the history has already been loaded.
-This prevents toggling savehist-mode from destroying existing
+This prevents toggling `savehist-mode' from destroying existing
 minibuffer history.")
 
 (when (featurep 'xemacs)
@@ -226,9 +226,9 @@
 Don't call this from new code, use (savehist-mode 1) instead.
 
 This function loads the variables stored in `savehist-file' and turns on
-savehist-mode.  If savehist-file is in the old format that doesn't record
-the value of `savehist-minibuffer-history-variables', that value is
-deducted from the contents of the file."
+`savehist-mode'.  If `savehist-file' is in the old format that doesn't
+record the value of `savehist-minibuffer-history-variables', that value
+is deducted from the contents of the file."
   (savehist-mode 1)
   ;; Old versions of savehist distributed with XEmacs didn't save
   ;; savehist-minibuffer-history-variables.  If that variable is nil
@@ -250,8 +250,8 @@
 (defun savehist-install ()
   "Hook savehist into Emacs.
 Normally invoked by calling `savehist-mode' to set the minor mode.
-Installs `savehist-autosave' in `kill-emacs-hook' and on a timer.   To
-undo this, call `savehist-uninstall'."
+Installs `savehist-autosave' in `kill-emacs-hook' and on a timer.
+To undo this, call `savehist-uninstall'."
   (add-hook 'minibuffer-setup-hook 'savehist-minibuffer-hook)
   (add-hook 'kill-emacs-hook 'savehist-autosave)
   ;; Install an invocation of savehist-autosave on a timer.  This
@@ -333,14 +333,14 @@
 
 (defun savehist-autosave ()
   "Save the minibuffer history if it has been modified since the last save.
-Does nothing if savehist-mode is off."
+Does nothing if `savehist-mode' is off."
   (when savehist-mode
     (savehist-save t)))
 
 (defun savehist-trim-history (value)
-  "Retain only the first history-length items in VALUE.
+  "Retain only the first `history-length' items in VALUE.
 Only used under XEmacs, which doesn't (yet) implement automatic
-trimming of history lists to history-length items."
+trimming of history lists to `history-length' items."
   (if (and (featurep 'xemacs)
 	   (natnump history-length)
 	   (> (length value) history-length))
--- a/lisp/simple.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/simple.el	Sat Feb 04 01:01:38 2006 +0000
@@ -3743,7 +3743,7 @@
     ;; Move to beginning-of-line, ignoring fields and invisibles.
     (skip-chars-backward "^\n")
     (while (and (not (bobp)) (line-move-invisible-p (1- (point))))
-      (goto-char (previous-char-property-change (1- (point))))
+      (goto-char (previous-char-property-change (point)))
       (skip-chars-backward "^\n"))
 
     ;; Take care of fields.
--- a/lisp/textmodes/nroff-mode.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/textmodes/nroff-mode.el	Sat Feb 04 01:01:38 2006 +0000
@@ -1,7 +1,7 @@
 ;;; nroff-mode.el --- GNU Emacs major mode for editing nroff source
 
 ;; Copyright (C) 1985, 1986, 1994, 1995, 1997, 2001, 2002, 2003,
-;;   2004, 2005 Free Software Foundation, Inc.
+;;   2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: wp
@@ -86,14 +86,14 @@
    ;; variants).  This won't currently do groff's \A'foo' and
    ;; the like properly.  One might expect it to highlight an escape's
    ;; arguments in common cases, like \f.
-   (concat "\\\\"                     ; backslash
-         "\\("                        ; followed by various possibilities
-         (mapconcat 'identity
-                    '("[f*n]*\\[.+]"  ; some groff extensions
-                      "(.."           ; two chars after (
-                      "[^(\"]"        ; single char escape
-                      ) "\\|")
-         "\\)")
+   (concat "\\\\"		      ; backslash
+	 "\\("			      ; followed by various possibilities
+	 (mapconcat 'identity
+		    '("[f*n]*\\[.+?]" ; some groff extensions
+		      "(.."	      ; two chars after (
+		      "[^(\"]"	      ; single char escape
+		      ) "\\|")
+	 "\\)")
    )
   "Font-lock highlighting control in `nroff-mode'."
   :group 'nroff
--- a/lisp/textmodes/table.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/textmodes/table.el	Sat Feb 04 01:01:38 2006 +0000
@@ -4076,7 +4076,7 @@
 folded location is marked by a continuation character which is
 specified in the variable `table-word-continuation-char'.
 ")
-      (help-print-return-message))))
+      (print-help-return-message))))
 
 (defun *table--cell-describe-bindings ()
   "Table cell version of `describe-bindings'."
@@ -4094,7 +4094,7 @@
 			       (key-description (car binding))
 			       (cdr binding))))
 	      table-cell-bindings)
-      (help-print-return-message))))
+      (print-help-return-message))))
 
 (defun *table--cell-dabbrev-expand (arg)
   "Table cell version of `dabbrev-expand'."
--- a/lisp/xml.el	Fri Feb 03 07:38:00 2006 +0000
+++ b/lisp/xml.el	Sat Feb 04 01:01:38 2006 +0000
@@ -188,62 +188,62 @@
 (defvar xml-att-def-re)
 (let* ((start-chars (concat "[:alpha:]:_"))
        (name-chars  (concat "-[:digit:]." start-chars))
-;;[3]   	S	   ::=   	(#x20 | #x9 | #xD | #xA)+
+       ;;[3]   	S	   ::=   	(#x20 | #x9 | #xD | #xA)+
        (whitespace  "[ \t\n\r]"))
-;;[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] 
-;;                      | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF]
-;;                      | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF]
-;;                      | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+  ;;[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] 
+  ;;                      | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF]
+  ;;                      | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF]
+  ;;                      | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
   (defvar xml-name-start-char-re (concat "[" start-chars "]"))
-;;[4a] NameChar	::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
+  ;;[4a] NameChar	::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
   (defvar xml-name-char-re       (concat "[" name-chars  "]"))
-;;[5] Name     ::= NameStartChar (NameChar)*
+  ;;[5] Name     ::= NameStartChar (NameChar)*
   (defvar xml-name-re            (concat xml-name-start-char-re xml-name-char-re "*"))
-;;[6] Names    ::= Name (#x20 Name)*
+  ;;[6] Names    ::= Name (#x20 Name)*
   (defvar xml-names-re           (concat xml-name-re "\\(?: " xml-name-re "\\)*"))
-;;[7] Nmtoken ::= (NameChar)+
+  ;;[7] Nmtoken ::= (NameChar)+
   (defvar xml-nmtoken-re         (concat xml-name-char-re "+"))
-;;[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
+  ;;[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
   (defvar xml-nmtokens-re        (concat xml-nmtoken-re "\\(?: " xml-name-re "\\)*"))
-;;[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
+  ;;[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
   (defvar xml-char-ref-re        "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)")
-;;[68] EntityRef   ::= '&' Name ';'
+  ;;[68] EntityRef   ::= '&' Name ';'
   (defvar xml-entity-ref         (concat "&" xml-name-re ";"))
-;;[69] PEReference ::= '%' Name ';'
+  ;;[69] PEReference ::= '%' Name ';'
   (defvar xml-pe-reference-re    (concat "%" xml-name-re ";"))
-;;[67] Reference   ::= EntityRef | CharRef
+  ;;[67] Reference   ::= EntityRef | CharRef
   (defvar xml-reference-re       (concat "\\(?:" xml-entity-ref "\\|" xml-char-ref-re "\\)"))
-;;[10]   	AttValue	   ::=   	'"' ([^<&"] | Reference)* '"' |  "'" ([^<&'] | Reference)* "'"
+  ;;[10]   	AttValue	   ::=   	'"' ([^<&"] | Reference)* '"' |  "'" ([^<&'] | Reference)* "'"
   (defvar xml-att-value-re    (concat "\\(?:\"\\(?:[^&\"]\\|" xml-reference-re "\\)*\"\\|"
 				      "'\\(?:[^&']\\|" xml-reference-re "\\)*'\\)"))
-;;[56]   	TokenizedType	   ::=   	'ID'	   [VC: ID] [VC: One ID per Element Type] [VC: ID Attribute Default]
-;;                                            | 'IDREF'    [VC: IDREF]
-;;                             	              | 'IDREFS'   [VC: IDREF]
-;;                                            | 'ENTITY'   [VC: Entity Name]
-;;                                            | 'ENTITIES' [VC: Entity Name]
-;;                                            | 'NMTOKEN'  [VC: Name Token]
-;;                                            | 'NMTOKENS' [VC: Name Token]
+  ;;[56]   	TokenizedType	   ::=   	'ID'	   [VC: ID] [VC: One ID per Element Type] [VC: ID Attribute Default]
+  ;;                                            | 'IDREF'    [VC: IDREF]
+  ;;                             	              | 'IDREFS'   [VC: IDREF]
+  ;;                                            | 'ENTITY'   [VC: Entity Name]
+  ;;                                            | 'ENTITIES' [VC: Entity Name]
+  ;;                                            | 'NMTOKEN'  [VC: Name Token]
+  ;;                                            | 'NMTOKENS' [VC: Name Token]
   (defvar xml-tokenized-type-re "\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)")
-;;[58]   	NotationType	   ::=   	'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
+  ;;[58]   	NotationType	   ::=   	'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
   (defvar xml-notation-type-re (concat "\\(?:NOTATION" whitespace "(" whitespace "*" xml-name-re
 				       "\\(?:" whitespace "*|" whitespace "*" xml-name-re "\\)*" whitespace "*)\\)"))
-;;[59]   	Enumeration	   ::=   	'(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'	[VC: Enumeration] [VC: No Duplicate Tokens]
+  ;;[59]   	Enumeration	   ::=   	'(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'	[VC: Enumeration] [VC: No Duplicate Tokens]
   (defvar xml-enumeration-re (concat "\\(?:(" whitespace "*" xml-nmtoken-re 
 				     "\\(?:" whitespace "*|" whitespace "*" xml-nmtoken-re "\\)*"
 				     whitespace ")\\)"))
-;;[57]   	EnumeratedType	   ::=   	NotationType | Enumeration
+  ;;[57]   	EnumeratedType	   ::=   	NotationType | Enumeration
   (defvar xml-enumerated-type-re (concat "\\(?:" xml-notation-type-re "\\|" xml-enumeration-re "\\)"))
-;;[54]   	AttType	   ::=   	StringType | TokenizedType | EnumeratedType
-;;[55]   	StringType	   ::=   	'CDATA'
+  ;;[54]   	AttType	   ::=   	StringType | TokenizedType | EnumeratedType
+  ;;[55]   	StringType	   ::=   	'CDATA'
   (defvar xml-att-type-re (concat "\\(?:CDATA\\|" xml-tokenized-type-re "\\|" xml-notation-type-re"\\|" xml-enumerated-type-re "\\)"))
-;;[60]   	DefaultDecl	   ::=   	'#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
+  ;;[60]   	DefaultDecl	   ::=   	'#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
   (defvar xml-default-decl-re (concat "\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED" whitespace "\\)*" xml-att-value-re "\\)"))
-;;[53]   	AttDef	   ::=   	S Name S AttType S DefaultDecl
+  ;;[53]   	AttDef	   ::=   	S Name S AttType S DefaultDecl
   (defvar xml-att-def-re         (concat "\\(?:" whitespace "*" xml-name-re
 					 whitespace "*" xml-att-type-re
 					 whitespace "*" xml-default-decl-re "\\)"))
-;;[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
-;;		   |  "'" ([^%&'] | PEReference | Reference)* "'"
+  ;;[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
+  ;;		   |  "'" ([^%&'] | PEReference | Reference)* "'"
   (defvar xml-entity-value-re    (concat "\\(?:\"\\(?:[^%&\"]\\|" xml-pe-reference-re
 					 "\\|" xml-reference-re "\\)*\"\\|'\\(?:[^%&']\\|"
 					 xml-pe-reference-re "\\|" xml-reference-re "\\)*'\\)")))
@@ -269,7 +269,7 @@
     ;; Get space syntax correct per XML [3].
     (dotimes (c 31)
       (modify-syntax-entry c "." table)) ; all are space in standard table
-    (dolist (c '(?\t ?\n ?\r))		; these should be space
+    (dolist (c '(?\t ?\n ?\r))		 ; these should be space
       (modify-syntax-entry c " " table))
     ;; For skipping attributes.
     (modify-syntax-entry ?\" "\"" table)
@@ -306,16 +306,16 @@
 If PARSE-DTD is non-nil, the DTD is parsed rather than skipped,
 and returned as the first element of the list.
 If PARSE-NS is non-nil, then QNAMES are expanded."
-  (save-restriction
-    (narrow-to-region beg end)
-    ;; Use fixed syntax table to ensure regexp char classes and syntax
-    ;; specs DTRT.
-    (with-syntax-table (standard-syntax-table)
-      (let ((case-fold-search nil)	; XML is case-sensitive.
-	    xml result dtd)
-	(save-excursion
-	  (if buffer
-	      (set-buffer buffer))
+  ;; Use fixed syntax table to ensure regexp char classes and syntax
+  ;; specs DTRT.
+  (with-syntax-table (standard-syntax-table)
+    (let ((case-fold-search nil)	; XML is case-sensitive.
+ 	  xml result dtd)
+      (save-excursion
+ 	(if buffer
+ 	    (set-buffer buffer))
+ 	(save-restriction
+ 	  (narrow-to-region beg end)
 	  (goto-char (point-min))
 	  (while (not (eobp))
 	    (if (search-forward "<" nil t)
@@ -390,7 +390,7 @@
 		    parse-ns
 		  (if parse-ns
 		      (list
-                       ;; Default for empty prefix is no namespace
+		       ;; Default for empty prefix is no namespace
 		       (cons ""      "")
 		       ;; "xml" namespace
 		       (cons "xml"   "http://www.w3.org/XML/1998/namespace")
@@ -431,12 +431,12 @@
 
       ;; Parse this node
       (let* ((node-name (match-string 1))
-             ;; Parse the attribute list.
-             (attrs (xml-parse-attlist xml-ns))
-             children pos)
+	     ;; Parse the attribute list.
+	     (attrs (xml-parse-attlist xml-ns))
+	     children pos)
 
-        ;; add the xmlns:* attrs to our cache
-        (when (consp xml-ns)
+	;; add the xmlns:* attrs to our cache
+	(when (consp xml-ns)
 	  (dolist (attr attrs)
 	    (when (and (consp (car attr))
 		       (equal "http://www.w3.org/2000/xmlns/"
@@ -444,7 +444,7 @@
 	      (push (cons (cdar attr) (cdr attr))
 		    xml-ns))))
 
-        (setq children (list attrs (xml-maybe-do-ns node-name "" xml-ns)))
+	(setq children (list attrs (xml-maybe-do-ns node-name "" xml-ns)))
 
 	;; is this an empty element ?
 	(if (looking-at "/>")
@@ -494,21 +494,21 @@
 
 (defun xml-parse-string ()
   "Parse the next whatever.  Could be a string, or an element."
-    (let* ((pos (point))
-	   (string (progn (if (search-forward "<" nil t)
-			      (forward-char -1)
-			    (goto-char (point-max)))
-			  (buffer-substring pos (point)))))
-      ;; Clean up the string.  As per XML specifications, the XML
-      ;; processor should always pass the whole string to the
-      ;; application.  But \r's should be replaced:
-      ;; http://www.w3.org/TR/2000/REC-xml-20001006#sec-line-ends
-      (setq pos 0)
-      (while (string-match "\r\n?" string pos)
-	(setq string (replace-match "\n" t t string))
-	(setq pos (1+ (match-beginning 0))))
+  (let* ((pos (point))
+	 (string (progn (if (search-forward "<" nil t)
+			    (forward-char -1)
+			  (goto-char (point-max)))
+			(buffer-substring pos (point)))))
+    ;; Clean up the string.  As per XML specifications, the XML
+    ;; processor should always pass the whole string to the
+    ;; application.  But \r's should be replaced:
+    ;; http://www.w3.org/TR/2000/REC-xml-20001006#sec-line-ends
+    (setq pos 0)
+    (while (string-match "\r\n?" string pos)
+      (setq string (replace-match "\n" t t string))
+      (setq pos (1+ (match-beginning 0))))
 
-      (xml-substitute-special string)))
+    (xml-substitute-special string)))
 
 (defun xml-parse-attlist (&optional xml-ns)
   "Return the attribute-list after point.
@@ -543,8 +543,8 @@
 	(replace-regexp-in-string "\\s-\\{2,\\}" " " string)
 	(let ((expansion (xml-substitute-special string)))
 	  (unless (stringp expansion)
-	    ; We say this is the constraint.  It is acctually that
-	    ; external entities nor "<" can be in an attribute value.
+					; We say this is the constraint.  It is acctually that
+					; external entities nor "<" can be in an attribute value.
 	    (error "XML: (Not Well-Formed) Entities in attributes cannot expand into elements"))
 	  (push (cons name expansion) attlist)))
 
--- a/lispref/frames.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/lispref/frames.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -64,6 +64,7 @@
 * Dialog Boxes::                Displaying a box to ask yes or no.
 * Pointer Shapes::              Specifying the shape of the mouse pointer.
 * Window System Selections::    Transferring text to and from other X clients.
+* Drag and Drop::               Internals of Drag-and-Drop implementation.
 * Color Names::	                Getting the definitions of color names.
 * Text Terminal Colors::        Defining colors for text-only terminals.
 * Resources::		        Getting resource values from the server.
@@ -469,7 +470,7 @@
 The width in pixels of the frame's border.
 
 @item internal-border-width
-The distance in pixels between text and the frame's border.
+The distance in pixels between text (or fringe) and the frame's border.
 
 @item vertical-scroll-bars
 Whether the frame has scroll bars for vertical scrolling, and which side
@@ -1685,6 +1686,35 @@
 but @code{t} on MS-Windows.
 @end defopt
 
+@node Drag and Drop
+@section Drag and Drop
+
+@vindex x-dnd-test-function
+@vindex x-dnd-known-types
+  When a user drags something from another application over Emacs, that other
+application expects Emacs to tell it if Emacs can handle the data that is
+dragged.  The variable @code{x-dnd-test-function} is used by Emacs to determine
+what to reply.  The default value is @code{x-dnd-default-test-function}
+which accepts drops if the type of the data to be dropped is present in
+@code{x-dnd-known-types}.  You can customize @code{x-dnd-test-function} and/or
+@code{x-dnd-known-types} if you want Emacs to accept or reject drops based
+on some other criteria.
+
+@vindex x-dnd-types-alist
+  If you want to change the way Emacs handles drop of different types
+or add a new type, customize @code{x-dnd-types-alist}.  This requires
+detailed knowledge of what types other applications use for drag and
+drop.
+
+@vindex dnd-protocol-alist
+  When an URL is dropped on Emacs it may be a file, but it may also be
+another URL type (ftp, http, etc.).  Emacs first checks
+@code{dnd-protocol-alist} to determine what to do with the URL.  If
+there is no match there and if @code{browse-url-browser-function} is
+an alist, Emacs looks for a match there.  If no match is found the
+text for the URL is inserted.  If you want to alter Emacs behavior,
+you can customize these variables.
+
 @node Color Names
 @section Color Names
 
--- a/lispref/keymaps.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/lispref/keymaps.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -22,10 +22,13 @@
 * Inheritance and Keymaps::	How one keymap can inherit the bindings
 				   of another keymap.
 * Prefix Keys::                 Defining a key with a keymap as its definition.
-* Active Keymaps::	        Each buffer has a local keymap
+* Active Keymaps::              How Emacs searches the active keymaps
+                                   for a key binding.
+* Searching Keymaps::           A pseudo-Lisp summary of searching active maps.
+* Controlling Active Maps::     Each buffer has a local keymap
                                    to override the standard (global) bindings.
 				   A minor mode can also override them.
-* Key Lookup::                  How extracting elements from keymaps works.
+* Key Lookup::                  Finding a key's binding in one keymap.
 * Functions for Key Lookup::    How to request key lookup.
 * Changing Key Bindings::       Redefining a key in a keymap.
 * Remapping Commands::          Bindings that translate one command to another.
@@ -537,17 +540,38 @@
 @cindex local keymap
 
   Emacs normally contains many keymaps; at any given time, just a few
-of them are @dfn{active} in that they participate in the
+of them are @dfn{active}, meaning that they participate in the
 interpretation of user input.  All the active keymaps are used
 together to determine what command to execute when a key is entered.
 Emacs searches these keymaps one by one, in a standard order, until it
-finds a binding in one of the keymaps.  (Searching a single keymap for a
-binding is called @dfn{key lookup}; see @ref{Key Lookup}.)
+finds a binding in one of the keymaps.
 
   Normally the active keymaps are the @code{keymap} property keymap,
 the keymaps of any enabled minor modes, the current buffer's local
 keymap, and the global keymap, in that order.  Therefore, Emacs
-searches for each input key sequence in all these keymaps.
+searches for each input key sequence in all these keymaps.  Here is a
+pseudo-Lisp description of how this process works:
+
+@lisp
+(or (if overriding-terminal-local-map
+        (@var{find-in} overriding-terminal-local-map)
+      (if overriding-local-map
+          (@var{find-in} overriding-local-map)
+        (or (@var{find-in} (get-text-property (point) 'keymap))
+            (@var{find-in-any} emulation-mode-map-alists)
+            (@var{find-in-any} minor-mode-overriding-map-alist)
+            (@var{find-in-any} minor-mode-map-alist)
+            (if (get-text-property (point) 'local-map))
+                (@var{find-in} (get-text-property (point) 'local-map))
+              (@var{find-in} (current-local-map))))))
+    (@var{find-in} (current-global-map)))
+@end lisp
+
+@noindent
+Here, the pseudo-function @var{find-in} means to look up the key
+sequence in a single map, and @var{find-in-any} means to search the
+appropriate keymaps from an alist.  (Searching a single keymap for a
+binding is called @dfn{key lookup}; see @ref{Key Lookup}.)
 
   The @dfn{global keymap} holds the bindings of keys that are defined
 regardless of the current buffer, such as @kbd{C-f}.  The variable
@@ -597,10 +621,92 @@
 
   @xref{Standard Keymaps}, for a list of standard keymaps.
 
+@defun current-active-maps &optional olp
+This returns the list of active keymaps that would be used by the
+command loop in the current circumstances to look up a key sequence.
+Normally it ignores @code{overriding-local-map} and
+@code{overriding-terminal-local-map}, but if @var{olp} is
+non-@code{nil} then it pays attention to them.
+@end defun
+
+@defun key-binding key &optional accept-defaults no-remap
+This function returns the binding for @var{key} according to the
+current active keymaps.  The result is @code{nil} if @var{key} is
+undefined in the keymaps.
+
+@c Emacs 19 feature
+The argument @var{accept-defaults} controls checking for default
+bindings, as in @code{lookup-key} (above).
+
+When commands are remapped (@pxref{Remapping Commands}),
+@code{key-binding} normally processes command remappings so as to
+returns the remapped command that will actually be executed.  However,
+if @var{no-remap} is non-@code{nil}, @code{key-binding} ignores
+remappings and returns the binding directly specified for @var{key}.
+
+An error is signaled if @var{key} is not a string or a vector.
+
+@example
+@group
+(key-binding "\C-x\C-f")
+    @result{} find-file
+@end group
+@end example
+@end defun
+
+@node Searching Keymaps
+@section Searching the Active Keymaps
+
+  After translation of the input events (@pxref{Translating Input})
+Emacs looks for them in the active keymaps.  Here is a pseudo-Lisp
+description of the order in which the active keymaps are searched:
+
+@lisp
+(or (if overriding-terminal-local-map
+        (@var{find-in} overriding-terminal-local-map)
+      (if overriding-local-map
+          (@var{find-in} overriding-local-map)
+        (or (@var{find-in} (get-text-property (point) 'keymap))
+            (@var{find-in-any} emulation-mode-map-alists)
+            (@var{find-in-any} minor-mode-overriding-map-alist)
+            (@var{find-in-any} minor-mode-map-alist)
+            (@var{find-in} (get-text-property (point) 'local-map))
+            (@var{find-in} (current-local-map)))))
+    (@var{find-in} (current-global-map)))
+@end lisp
+
+@noindent
+The @var{find-in} and @var{find-in-any} are pseudo functions that
+searches in one keymap respectively an alist of keymaps.
+
+@enumerate
+@item
+The function finally found may be remapped
+(@pxref{Remapping Commands}).
+
+@item
+Characters that are bound to @code{self-insert-command} are translated
+according to @code{translation-table-for-input} before insertion.
+
+@item
+@code{current-active-maps} returns a list of the
+currently active keymaps at point.
+
+@item
+When a match is found (@pxref{Key Lookup}), if the binding in the
+keymap is a function, the search is over.  However if the keymap entry
+is a symbol with a value or a string, Emacs replaces the input key
+sequences with the variable's value or the string, and restarts the
+search of the active keymaps.
+@end enumerate
+
+@node Controlling Active Maps
+@section Controlling the Active Keymaps
+
 @defvar global-map
 This variable contains the default global keymap that maps Emacs
-keyboard input to commands.  The global keymap is normally this keymap.
-The default global keymap is a full keymap that binds
+keyboard input to commands.  The global keymap is normally this
+keymap.  The default global keymap is a full keymap that binds
 @code{self-insert-command} to all of the printing characters.
 
 It is normal practice to change the bindings in the global keymap, but you
@@ -763,14 +869,14 @@
 @cindex keymap entry
 
   @dfn{Key lookup} is the process of finding the binding of a key
-sequence from a given keymap.  Actual execution of the binding is not
-part of key lookup.
+sequence from a given keymap.  The execution or use of the binding is
+not part of key lookup.
 
   Key lookup uses just the event type of each event in the key sequence;
 the rest of the event is ignored.  In fact, a key sequence used for key
 lookup may designate a mouse event with just its types (a symbol)
 instead of the entire event (a list).  @xref{Input Events}.  Such
-a ``key-sequence'' is insufficient for @code{command-execute} to run,
+a ``key sequence'' is insufficient for @code{command-execute} to run,
 but it is sufficient for looking up or rebinding a key.
 
   When the key sequence consists of multiple events, key lookup
@@ -965,39 +1071,6 @@
 not cause an error.
 @end deffn
 
-@defun key-binding key &optional accept-defaults no-remap
-This function returns the binding for @var{key} in the current
-keymaps, trying all the active keymaps.  The result is @code{nil} if
-@var{key} is undefined in the keymaps.
-
-@c Emacs 19 feature
-The argument @var{accept-defaults} controls checking for default
-bindings, as in @code{lookup-key} (above).
-
-When commands are remapped (@pxref{Remapping Commands}),
-@code{key-binding} normally processes command remappings so as to
-returns the remapped command that will actually be executed.  However,
-if @var{no-remap} is non-@code{nil}, @code{key-binding} ignores
-remappings and returns the binding directly specified for @var{key}.
-
-An error is signaled if @var{key} is not a string or a vector.
-
-@example
-@group
-(key-binding "\C-x\C-f")
-    @result{} find-file
-@end group
-@end example
-@end defun
-
-@defun current-active-maps &optional olp
-This returns the list of keymaps that would be used by the command
-loop in the current circumstances to look up a key sequence.  Normally
-it ignores @code{overriding-local-map} and
-@code{overriding-terminal-local-map}, but if @var{olp} is
-non-@code{nil} then it pays attention to them.
-@end defun
-
 @defun local-key-binding key &optional accept-defaults
 This function returns the binding for @var{key} in the current
 local keymap, or @code{nil} if it is undefined there.
@@ -1036,11 +1109,11 @@
 
 @defvar meta-prefix-char
 @cindex @key{ESC}
-This variable is the meta-prefix character code.  It is used when
+This variable is the meta-prefix character code.  It is used for
 translating a meta character to a two-character sequence so it can be
-looked up in a keymap.  For useful results, the value should be a prefix
-event (@pxref{Prefix Keys}).  The default value is 27, which is the
-@acronym{ASCII} code for @key{ESC}.
+looked up in a keymap.  For useful results, the value should be a
+prefix event (@pxref{Prefix Keys}).  The default value is 27, which is
+the @acronym{ASCII} code for @key{ESC}.
 
 As long as the value of @code{meta-prefix-char} remains 27, key lookup
 translates @kbd{M-b} into @kbd{@key{ESC} b}, which is normally defined
--- a/lispref/minibuf.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/lispref/minibuf.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -583,6 +583,10 @@
 so as to keep them near the higher-level completion features that do
 use the minibuffer.
 
+  If you store a completion alist in a variable, you should mark the
+variable as ``risky'' with a non-@code{nil}
+@code{risky-local-variable} property.
+
 @defun try-completion string collection &optional predicate
 This function returns the longest common substring of all possible
 completions of @var{string} in @var{collection}.  The value of
--- a/man/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,3 +1,67 @@
+2006-02-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* custom.texi (Init File, Find Init): Add cross-references to
+	where $HOME is described.
+
+2006-02-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* frames.texi (Frame Parameters): Remove @item for S-Mouse-1; it
+	is not inside the @table.
+
+	* emacs.texi (Top): Correct node name.
+
+	* files.texi (File Names): Fix @xref.
+	(Reverting): Fix typo.
+
+	* mule.texi (International): Correct node name.
+
+	* kmacro.texi (Save Keyboard Macro): Add missing @kbd to @table.
+
+2006-02-01  Richard M. Stallman  <rms@gnu.org>
+
+	* emacs.texi (Top): Update subnode menu.
+
+	* mule.texi: Minor clarifications.
+	Reduce the specific references to X Windows.
+	Refer to "graphical" terminals, rather than window systems.
+	(Text Coding): Renamed from Specify Coding.
+	(Communication Coding, File Name Coding, Terminal Coding):
+	New nodes split out from Text Coding.
+
+	* kmacro.texi: Minor clarifications.
+	(Keyboard Macro Ring): Comment out some excessive commands.
+	(Basic Keyboard Macro): Split up the table, putting part in each node.
+
+	* major.texi: Minor clarifications.
+
+	* misc.texi (Single Shell, Interactive Shell): Fix xrefs.
+
+	* windows.texi: Minor clarifications.
+	(Change Window): Don't describe mode-line mouse cmds here.
+	Add xref to Mode Line Mouse.
+
+	* msdog.texi (Text and Binary, MS-DOS and MULE): Fix xrefs.
+
+	* macos.texi (Mac International): Fix xref.
+
+	* indent.texi: Minor clarifications.
+
+	* frames.texi: Minor clarifications.
+	Reduce the specific references to X Windows.
+	Refer to "graphical" terminals, rather than window systems.
+	(Frame Parameters): Don't mention commands like
+	set-foreground-color.  Just say to customize a face.
+	(Drag and Drop): Lisp-level stuff moved to Emacs Lisp manual.
+
+	* files.texi: Minor clarifications.
+	(Numbered Backups): New node, split out from Backup Names.
+
+	* display.texi (Font Lock): C mode no longer depends on (-in-col-0.
+
+	* cmdargs.texi (General Variables): Fix xref.
+
+	* buffers.texi: Minor clarifications.
+
 2006-01-31  Romain Francoise  <romain@orebokech.com>
 
 	* message.texi (Message Headers): Explain what
--- a/man/buffers.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/buffers.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -87,8 +87,8 @@
 @findex switch-to-buffer
   To select the buffer named @var{bufname}, type @kbd{C-x b @var{bufname}
 @key{RET}}.  This runs the command @code{switch-to-buffer} with argument
-@var{bufname}.  You can use completion on an abbreviation for the buffer
-name you want (@pxref{Completion}).  An empty argument to @kbd{C-x b}
+@var{bufname}.  You can use completion to enter the buffer
+name (@pxref{Completion}).  An empty argument to @kbd{C-x b}
 specifies the buffer that was current most recently among those not
 now displayed in any window.
 
@@ -128,7 +128,7 @@
 @ref{Special Buffer Frames}, for more about these variables.  In
 addition, if the value of @code{display-buffer-reuse-frames} is
 non-@code{nil}, and the buffer you want to switch to is already
-displayed in some frame, Emacs will raise that frame.
+displayed in some frame, Emacs will just raise that frame.
 
   Most buffers are created by visiting files, or by Emacs commands that
 want to display some text, but you can also create a buffer explicitly
@@ -177,10 +177,11 @@
 The buffers are listed in the order that they were current; the
 buffers that were current most recently come first.
 
-  @samp{*} in the first field of a line indicates the buffer is ``modified.''
-If several buffers are modified, it may be time to save some with @kbd{C-x s}
-(@pxref{Save Commands}).  @samp{%} indicates a read-only buffer.  @samp{.} marks the
-current buffer.  Here is an example of a buffer list:@refill
+  @samp{*} in the first field of a line indicates the buffer is
+``modified.''  If several buffers are modified, it may be time to save
+some with @kbd{C-x s} (@pxref{Save Commands}).  @samp{%} indicates a
+read-only buffer.  @samp{.} marks the current buffer.  Here is an
+example of a buffer list:@refill
 
 @smallexample
 CRM Buffer                Size  Mode              File
@@ -199,7 +200,7 @@
 Note that the buffer @samp{*Help*} was made by a help request; it is
 not visiting any file.  The buffer @code{src} was made by Dired on the
 directory @file{~/cvs/emacs/src/}.  You can list only buffers that are
-visiting files by giving the command a prefix; for instance, by typing
+visiting files by giving the command a prefix argument, as in
 @kbd{C-u C-x C-b}.
 
   @code{list-buffers} omits buffers whose names begin with a space,
@@ -243,10 +244,10 @@
 Control}.
 
 @findex rename-buffer
-  @kbd{M-x rename-buffer} changes the name of the current buffer.  Specify
-the new name as a minibuffer argument.  There is no default.  If you
-specify a name that is in use for some other buffer, an error happens and
-no renaming is done.
+  @kbd{M-x rename-buffer} changes the name of the current buffer.  You
+specify the new name as a minibuffer argument; there is no default.
+If you specify a name that is in use for some other buffer, an error
+happens and no renaming is done.
 
 @findex rename-uniquely
   @kbd{M-x rename-uniquely} renames the current buffer to a similar
@@ -274,7 +275,7 @@
 
   The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer}
 can be used to copy text from one buffer to another.  @xref{Accumulating
-Text}.@refill
+Text}.
 
 @node Kill Buffer
 @section Killing Buffers
@@ -470,17 +471,15 @@
 the buffer list manually, you can use all of the commands described
 here.
 
-  Normally, the buffer @samp{*Buffer List*} is not updated automatically when
-buffers are created and killed; its contents are just text.  If you have
-created, deleted or renamed buffers, the way to update @samp{*Buffer
-List*} to show what you have done is to type @kbd{g}
-(@code{revert-buffer}) or repeat the @code{buffer-menu} command.
-
-  The @samp{*Buffer List*} buffer does automatically update every
-@code{auto-revert-interval} seconds if you enable Auto Revert mode in
-it.  (As long as it is not marked modified.)  Global Auto Revert mode
-does not update the @samp{*Buffer List*} buffer by default, but it
-does if @code{global-auto-revert-non-file-buffers} is non-@code{nil}.
+  Normally, the buffer @samp{*Buffer List*} is not updated
+automatically when buffers are created and killed; its contents are
+just text.  If you have created, deleted or renamed buffers, the way
+to update @samp{*Buffer List*} to show what you have done is to type
+@kbd{g} (@code{revert-buffer}).  You can make this happen regularly
+every @code{auto-revert-interval} seconds if you enable Auto Revert
+mode in this buffer, as long as it is not marked modified.  Global
+Auto Revert mode applies to the @samp{*Buffer List*} buffer only if
+@code{global-auto-revert-non-file-buffers} is non-@code{nil}.
 @inforef{Autorevert,, emacs-xtra}, for details.
 
   The command @code{buffer-menu-other-window} works the same as
@@ -589,7 +588,7 @@
 name is not very important if you are going to @emph{look} at the
 buffer names before you type one.  But as an experienced user, if you
 know the rule, you won't have to look.  And then you may find that one
-rule or another is easier for you to remember and utilize fast.
+rule or another is easier for you to remember and apply quickly.
 
 @node Iswitchb
 @subsection Switching Between Buffers using Substrings
--- a/man/cmdargs.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/cmdargs.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -577,8 +577,7 @@
 The user's login name.  See also @env{LOGNAME}.  On MS-DOS, this
 defaults to @samp{root}.
 @item VERSION_CONTROL
-Used to initialize the @code{version-control} variable (@pxref{Backup
-Names}).
+Used to initialize the @code{version-control} variable (@pxref{Numbered Backups}).
 @end table
 
 @node Misc Variables
--- a/man/custom.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/custom.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -2029,8 +2029,9 @@
 @cindex startup (init file)
 
   When Emacs is started, it normally loads a Lisp program from the
-file @file{.emacs} or @file{.emacs.el} in your home directory.  We
-call this file your @dfn{init file} because it specifies how to
+file @file{.emacs} or @file{.emacs.el} in your home directory
+(see @ref{General Variables, HOME} if you don't know where that is).
+We call this file your @dfn{init file} because it specifies how to
 initialize Emacs for you.  You can use the command line switch
 @samp{-q} to prevent loading your init file, and @samp{-u} (or
 @samp{--user}) to specify a different user's init file (@pxref{Initial
@@ -2442,11 +2443,12 @@
 @node Find Init
 @subsection How Emacs Finds Your Init File
 
-  Normally Emacs uses the environment variable @env{HOME} to find
-@file{.emacs}; that's what @samp{~} means in a file name.  If
-@file{.emacs} is not found inside @file{~/} (nor @file{.emacs.el}),
-Emacs looks for @file{~/.emacs.d/init.el} (which, like
-@file{~/.emacs.el}, can be byte-compiled).
+  Normally Emacs uses the environment variable @env{HOME}
+(@pxref{General Variables, HOME}) to find @file{.emacs}; that's what
+@samp{~} means in a file name.  If @file{.emacs} is not found inside
+@file{~/} (nor @file{.emacs.el}), Emacs looks for
+@file{~/.emacs.d/init.el} (which, like @file{~/.emacs.el}, can be
+byte-compiled).
 
   However, if you run Emacs from a shell started by @code{su}, Emacs
 tries to find your own @file{.emacs}, not that of the user you are
--- a/man/display.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/display.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -557,13 +557,13 @@
 @cindex brace in column zero and fontification
   Comment and string fontification (or ``syntactic'' fontification)
 relies on analysis of the syntactic structure of the buffer text.  For
-the sake of speed, some modes, including C mode and Lisp mode,
-rely on a special convention: an open-parenthesis or open-brace in the
-leftmost column always defines the @w{beginning} of a defun, and is
-thus always outside any string or comment.  (@xref{Left Margin
-Paren}.)  If you don't follow this convention, Font Lock mode can
-misfontify the text that follows an open-parenthesis or open-brace in
-the leftmost column that is inside a string or comment.
+the sake of speed, some modes, including Lisp mode, rely on a special
+convention: an open-parenthesis or open-brace in the leftmost column
+always defines the @w{beginning} of a defun, and is thus always
+outside any string or comment.  (@xref{Left Margin Paren}.)  If you
+don't follow this convention, Font Lock mode can misfontify the text
+that follows an open-parenthesis or open-brace in the leftmost column
+that is inside a string or comment.
 
 @cindex slow display during scrolling
   The variable @code{font-lock-beginning-of-syntax-function} (always
--- a/man/emacs.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/emacs.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -460,7 +460,11 @@
 * Coding Systems::          Character set conversion when you read and
                               write files, and so on.
 * Recognize Coding::        How Emacs figures out which conversion to use.
-* Specify Coding::          Various ways to choose which conversion to use.
+* Text Coding::             Choosing conversion to use for file text.
+* Communication Coding::    Coding systems for interprocess communication.
+* File Name Coding::        Coding systems for file @emph{names}.
+* Terminal Coding::         Specifying coding systems for converting
+                              terminal input and output.
 * Fontsets::                Fontsets are collections of fonts
                               that cover the whole spectrum of characters.
 * Defining Fontsets::       Defining a new fontset.
--- a/man/files.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/files.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -68,21 +68,22 @@
 default directory is kept in the variable @code{default-directory},
 which has a separate value in every buffer.
 
-  For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
-the default directory is @file{/u/rms/gnu/}.  If you type just @samp{foo},
-which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
-@samp{../.login} would stand for @file{/u/rms/.login}.  @samp{new/foo}
-would stand for the file name @file{/u/rms/gnu/new/foo}.
-
 @findex cd
 @findex pwd
   The command @kbd{M-x pwd} displays the current buffer's default
 directory, and the command @kbd{M-x cd} sets it (to a value read using
 the minibuffer).  A buffer's default directory changes only when the
 @code{cd} command is used.  A file-visiting buffer's default directory
-is initialized to the directory of the file that is visited in that buffer.  If
-you create a buffer with @kbd{C-x b}, its default directory is copied
-from that of the buffer that was current at the time.
+is initialized to the directory of the file it visits.  If you create
+a buffer with @kbd{C-x b}, its default directory is copied from that
+of the buffer that was current at the time.
+
+  For example, if the default file name is @file{/u/rms/gnu/gnu.tasks}
+then the default directory is normally @file{/u/rms/gnu/}.  If you
+type just @samp{foo}, which does not specify a directory, it is short
+for @file{/u/rms/gnu/foo}.  @samp{../.login} would stand for
+@file{/u/rms/.login}.  @samp{new/foo} would stand for the file name
+@file{/u/rms/gnu/new/foo}.
 
 @vindex insert-default-directory
   The default directory actually appears in the minibuffer when the
@@ -102,6 +103,14 @@
 first slash in the double slash; the result is @samp{/x1/rms/foo}.
 @xref{Minibuffer File}.
 
+@cindex home directory shorthand
+  You can use @file{~/} in a file name to mean your home directory,
+or @file{~@var{user-id}/} to mean the home directory of a user whose
+login name is @code{user-id}.  (On DOS and Windows systems, where a user
+doesn't have a home directory, Emacs substitutes @file{~/} with the
+value of the environment variable @code{HOME}; see @ref{General
+Variables}.)
+
 @cindex environment variables in file names
 @cindex expansion of environment variables
 @cindex @code{$} in file names
@@ -120,14 +129,6 @@
   Note that shell commands to set environment variables affect Emacs
 only when done before Emacs is started.
 
-@cindex home directory shorthand
-  You can use @file{~/} in a file name to mean your home directory,
-or @file{~@var{user-id}/} to mean the home directory of a user whose
-login name is @code{user-id}.  (On DOS and Windows systems, where a user
-doesn't have a home directory, Emacs substitutes @file{~/} with the
-value of the environment variable @code{HOME}; see @ref{General
-Variables}.)
-
   To access a file with @samp{$} in its name, if the @samp{$} causes
 expansion, type @samp{$$}.  This pair is converted to a single
 @samp{$} at the same time as variable substitution is performed for a
@@ -136,13 +137,13 @@
 literal @samp{~} should also be quoted with @samp{/:}.
 
 @findex substitute-in-file-name
-  The Lisp function that performs the substitution is called
+  The Lisp function that performs the @samp{$}-substitution is called
 @code{substitute-in-file-name}.  The substitution is performed only on
 file names read as such using the minibuffer.
 
   You can include non-@acronym{ASCII} characters in file names if you set the
 variable @code{file-name-coding-system} to a non-@code{nil} value.
-@xref{Specify Coding}.
+@xref{File Name Coding}.
 
 @node Visiting
 @section Visiting Files
@@ -185,7 +186,7 @@
 
   The changes you make with editing commands are made in the Emacs
 buffer.  They do not take effect in the file that you visited, or any
-place permanent, until you @dfn{save} the buffer.  Saving the buffer
+permanent place, until you @dfn{save} the buffer.  Saving the buffer
 means that Emacs writes the current contents of the buffer into its
 visited file.  @xref{Saving}.
 
@@ -208,17 +209,17 @@
 @kbd{C-g}.  File-name completion ignores certain filenames; for more
 about this, see @ref{Completion Options}.
 
-  Your confirmation that @kbd{C-x C-f} has completed successfully is the
-appearance of new text on the screen and a new buffer name in the mode
-line.  If the specified file does not exist and could not be created, or
-cannot be read, then you get an error, with an error message displayed
-in the echo area.
+  Your confirmation that @kbd{C-x C-f} has completed successfully is
+the appearance of new text on the screen and a new buffer name in the
+mode line.  If the specified file does not exist and you could not
+create it, or exists but you can't read it, then you get an error,
+with an error message displayed in the echo area.
 
   If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
 another copy.  It selects the existing buffer containing that file.
-However, before doing so, it checks that the file itself has not changed
-since you visited or saved it last.  If the file has changed, a warning
-message is shown.  @xref{Interlocking,,Simultaneous Editing}.
+However, before doing so, it checks whether the file itself has changed
+since you visited or saved it last.  If the file has changed, Emacs offers
+to reread it.
 
 @vindex large-file-warning-threshold
 @cindex maximum buffer size exceeded, error message
@@ -232,7 +233,7 @@
 saying that the maximum buffer size has been exceeded.
 
 @cindex file selection dialog
-  On graphical terminals, there are two additional methods for
+  On graphical displays there are two additional methods for
 visiting files.  Firstly, when Emacs is built with a suitable GUI
 toolkit, commands invoked with the mouse (by clicking on the menu bar
 or tool bar) use the toolkit's standard File Selection dialog instead
@@ -313,9 +314,6 @@
 default file name in the buffer, with point just after the directory
 part; this is convenient if you made a slight error in typing the name.
 
-  If you find a file which exists but cannot be read, @kbd{C-x C-f}
-signals an error.
-
 @kindex C-x 4 f
 @findex find-file-other-window
   @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
@@ -392,7 +390,7 @@
 Forget that the current buffer has been changed (@code{not-modified}).
 With prefix argument (@kbd{C-u}), mark the current buffer as changed.
 @item C-x C-w
-Save the current buffer as a specified file name (@code{write-file}).
+Save the current buffer with a specified file name (@code{write-file}).
 @item M-x set-visited-file-name
 Change the file name under which the current buffer will be saved.
 @end table
@@ -464,9 +462,9 @@
 a different file name, one which is not in use for anything important.
 Alternatively, you can cancel all the changes made since the file was
 visited or saved, by reading the text from the file again.  This is
-called @dfn{reverting}.  @xref{Reverting}.  You could also undo all the
+called @dfn{reverting}.  @xref{Reverting}.  (You could also undo all the
 changes by repeating the undo command @kbd{C-x u} until you have undone
-all the changes; but reverting is easier.
+all the changes; but reverting is easier.)  You can also kill the buffer.
 
 @findex set-visited-file-name
   @kbd{M-x set-visited-file-name} alters the name of the file that the
@@ -522,6 +520,9 @@
 are redundant when you store all the previous versions in a version
 control system.  @xref{General VC Options}.
 
+  At your option, Emacs can keep either a single backup for each file,
+or make a series of numbered backup files for each file that you edit.
+
 @vindex backup-enable-predicate
 @vindex temporary-file-directory
 @vindex small-temporary-file-directory
@@ -530,9 +531,6 @@
 for temporary files, specified by @code{temporary-file-directory} or
 @code{small-temporary-file-directory}.
 
-  At your option, Emacs can keep either a single backup file or a series of
-numbered backup files for each file that you edit.
-
   Emacs makes a backup for a file only the first time the file is saved
 from one buffer.  No matter how many times you save a file, its backup file
 continues to contain the contents from before the file was visited.
@@ -550,19 +548,54 @@
 newly saved contents if you save again.
 
 @menu
-* Names: Backup Names.		How backup files are named;
-				  choosing single or numbered backup files.
+* One or Many: Numbered Backups. Whether to make one backup file or many.
+* Names: Backup Names.		How backup files are named.
 * Deletion: Backup Deletion.	Emacs deletes excess numbered backups.
 * Copying: Backup Copying.	Backups can be made by copying or renaming.
 @end menu
 
+@node Numbered Backups
+@subsubsection Numbered Backups
+
+@vindex version-control
+  The choice of single backup file or multiple numbered backup files
+is controlled by the variable @code{version-control}.  Its possible
+values are:
+
+@table @code
+@item t
+Make numbered backups.
+@item nil
+Make numbered backups for files that have numbered backups already.
+Otherwise, make single backups.
+@item never
+Never make numbered backups; always make single backups.
+@end table
+
+@noindent
+The usual way to set this variable is globally, through your
+@file{.emacs} file or the customization buffer.  However, you can set
+@code{version-control} locally in an individual buffer to control the
+making of backups for that buffer's file.  For example, Rmail mode
+locally sets @code{version-control} to @code{never} to make sure that
+there is only one backup for an Rmail file.  @xref{Locals}.
+
+@cindex @env{VERSION_CONTROL} environment variable
+  If you set the environment variable @env{VERSION_CONTROL}, to tell
+various GNU utilities what to do with backup files, Emacs also obeys the
+environment variable by setting the Lisp variable @code{version-control}
+accordingly at startup.  If the environment variable's value is @samp{t}
+or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
+value is @samp{nil} or @samp{existing}, then @code{version-control}
+becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
+@code{version-control} becomes @code{never}.
+
 @node Backup Names
 @subsubsection Single or Numbered Backups
 
-  If you choose to have a single backup file (this is the default),
-the backup file's name is normally constructed by appending @samp{~} to the
-file name being edited; thus, the backup file for @file{eval.c} would
-be @file{eval.c~}.
+  When Emacs makes a single backup file, its name is normally
+constructed by appending @samp{~} to the file name being edited; thus,
+the backup file for @file{eval.c} would be @file{eval.c~}.
 
 @vindex make-backup-file-name-function
 @vindex backup-directory-alist
@@ -593,36 +626,6 @@
 @code{backup-directory-alist} applies to numbered backups just as
 usual.
 
-@vindex version-control
-  The choice of single backup or numbered backups is controlled by the
-variable @code{version-control}.  Its possible values are
-
-@table @code
-@item t
-Make numbered backups.
-@item nil
-Make numbered backups for files that have numbered backups already.
-Otherwise, make single backups.
-@item never
-Never make numbered backups; always make single backups.
-@end table
-
-@noindent
-You can set @code{version-control} locally in an individual buffer to
-control the making of backups for that buffer's file.  For example,
-Rmail mode locally sets @code{version-control} to @code{never} to make sure
-that there is only one backup for an Rmail file.  @xref{Locals}.
-
-@cindex @env{VERSION_CONTROL} environment variable
-  If you set the environment variable @env{VERSION_CONTROL}, to tell
-various GNU utilities what to do with backup files, Emacs also obeys the
-environment variable by setting the Lisp variable @code{version-control}
-accordingly at startup.  If the environment variable's value is @samp{t}
-or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
-value is @samp{nil} or @samp{existing}, then @code{version-control}
-becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
-@code{version-control} becomes @code{never}.
-
 @node Backup Deletion
 @subsubsection Automatic Deletion of Backups
 
@@ -822,6 +825,7 @@
 @subsection Shadowing Files
 @cindex shadow files
 @cindex file shadows
+@findex shadow-initialize
 
 @table @kbd
 @item M-x shadow-initialize
@@ -867,7 +871,6 @@
 
 @node Time Stamps
 @subsection Updating Time Stamps Automatically
-@findex time-stamp
 @cindex time stamps
 @cindex modification dates
 @cindex locale, date format
@@ -888,6 +891,7 @@
 Time-stamp: " "
 @end example
 
+@findex time-stamp
   Then add the hook function @code{time-stamp} to the hook
 @code{before-save-hook}; that hook function will automatically update
 the time stamp, inserting the current date and time when you save the
@@ -946,24 +950,26 @@
   You may find it useful to have Emacs revert files automatically when
 they change.  Three minor modes are available to do this.
 
-  @kbd{M-x global-auto-revert-mode} runs Global Auto-Revert mode,
+  @kbd{M-x global-auto-revert-mode} enables Global Auto-Revert mode,
 which periodically checks all file buffers and reverts when the
-corresponding file has changed.  @kbd{M-x auto-revert-mode} runs a
-local version, Auto-Revert mode, which applies only to the buffer in
-which it was activated.  Auto-Revert mode can be used to ``tail'' a
-file, such as a system log, so that changes made to that file by other
-programs are continuously displayed.  To do this, just move the point
-to the end of the buffer, and it will stay there as the file contents
-change.  However, if you are sure that the file will only change by
-growing at the end, you can tail the file more efficiently using
-Auto-Revert Tail mode, @kbd{M-x auto-revert-tail-mode}.
+corresponding file has changed.  @kbd{M-x auto-revert-mode} enables a
+local version, Auto-Revert mode, which applies only to the current
+buffer.
+
+  You can use Auto-Revert mode to ``tail'' a file such as a system
+log, so that changes made to that file by other programs are
+continuously displayed.  To do this, just move the point to the end of
+the buffer, and it will stay there as the file contents change.
+However, if you are sure that the file will only change by growing at
+the end, use Auto-Revert Tail mode instead
+(@code{auto-revert-tail-mode}).  It is more efficient for this.
 
 @vindex auto-revert-interval
   The variable @code{auto-revert-interval} controls how often to check
 for a changed file.  Since checking a remote file is too slow, these
 modes do not check or revert remote files.
 
-@xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
+  @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
 visit files under version control.
 
 @node Auto Save
@@ -977,13 +983,13 @@
 It prevents you from losing more than a limited amount of work if the
 system crashes.
 
-  When Emacs determines that it is time for auto-saving, each buffer is
-considered, and is auto-saved if auto-saving is turned on for it and it
-has been changed since the last time it was auto-saved.  The message
-@samp{Auto-saving...} is displayed in the echo area during auto-saving,
-if any files are actually auto-saved.  Errors occurring during
-auto-saving are caught so that they do not interfere with the execution
-of commands you have been typing.
+  When Emacs determines that it is time for auto-saving, it considers
+each buffer, and each is auto-saved if auto-saving is enabled for it
+and it has been changed since the last time it was auto-saved.  The
+message @samp{Auto-saving...} is displayed in the echo area during
+auto-saving, if any files are actually auto-saved.  Errors occurring
+during auto-saving are caught so that they do not interfere with the
+execution of commands you have been typing.
 
 @menu
 * Files: Auto Save Files.       The file where auto-saved changes are
@@ -1041,10 +1047,10 @@
 
 @vindex delete-auto-save-files
   A buffer's auto-save file is deleted when you save the buffer in its
-visited file.  To inhibit this, set the variable @code{delete-auto-save-files}
-to @code{nil}.  Changing the visited file name with @kbd{C-x C-w} or
-@code{set-visited-file-name} renames any auto-save file to go with
-the new visited name.
+visited file.  (You can inhibit this by setting the variable
+@code{delete-auto-save-files} to @code{nil}.)  Changing the visited
+file name with @kbd{C-x C-w} or @code{set-visited-file-name} renames
+any auto-save file to go with the new visited name.
 
 @node Auto Save Control
 @subsection Controlling Auto-Saving
@@ -1284,9 +1290,11 @@
 terms of capabilities, it is the weakest of the six that VC supports.
 VC compensates for certain features missing in SCCS (snapshots, for
 example) by implementing them itself, but some other VC features, such
-as multiple branches, are not available with SCCS.  You should use
-SCCS only if for some reason you cannot use RCS, or one of the
-higher-level systems such as CVS or GNU Arch.
+as multiple branches, are not available with SCCS.  Since SCCS is
+non-free, not respecting its users freedom,d, you should not use it;
+use its free replacement CSSC instead.  But you should use CSSC only
+if for some reason you cannot use RCS, or one of the higher-level
+systems such as CVS or GNU Arch.
 
 In the following, we discuss mainly RCS, SCCS and CVS.  Nearly
 everything said about CVS applies to GNU Arch, Subversion and Meta-CVS
@@ -1549,13 +1557,13 @@
   When you check in changes, @kbd{C-x v v} first reads a log entry.  It
 pops up a buffer called @samp{*VC-Log*} for you to enter the log entry.
 
-Sometimes the @samp{*VC-Log*} buffer contains default text when you enter it,
+  Sometimes the @samp{*VC-Log*} buffer contains default text when you enter it,
 typically the last log message entered.  If it does, mark and point
 are set around the entire contents of the buffer so that it is easy to
 kill the contents of the buffer with @kbd{C-w}.
 
 @findex log-edit-insert-changelog
-If you work by writing entries in the @file{ChangeLog}
+  If you work by writing entries in the @file{ChangeLog}
 (@pxref{Change Log}) and then commit the change under revision
 control, you can generate the Log Edit text from the ChangeLog using
 @kbd{C-c C-a} (@kbd{log-edit-insert-changelog}).  This looks for
@@ -1565,13 +1573,13 @@
 @xref{Change Logs and VC}, for the opposite way of
 working---generating ChangeLog entries from the revision control log.
 
-In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files})
+  In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files})
 shows the list of files to be committed in case you need to check
 that.  (This can be a list of more than one file if you use VC Dired
 mode or PCL-CVS.  @xref{VC Dired Mode}, and @ref{Top, , About PCL-CVS,
 pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.)
 
-When you have finished editing the log message, type @kbd{C-c C-c} to
+  When you have finished editing the log message, type @kbd{C-c C-c} to
 exit the buffer and commit the change.
 
   To abort check-in, just @strong{don't} type @kbd{C-c C-c} in that
@@ -1665,8 +1673,8 @@
   For some backends, you can display the file @dfn{annotated} with
 per-line version information and using colors to enhance the visual
 appearance, with the command @kbd{M-x vc-annotate}.
-It creates a new buffer
-to display file's text, colored to show how old each part is.  Text
+It creates a new buffer (the ``annotate buffer'') displaying the
+file's text, with each part colored to show how old it is.  Text
 colored red is new, blue means old, and intermediate colors indicate
 intermediate ages.  By default, the time scale is 360 days, so that
 everything more than one year old is shown in blue.
@@ -1790,8 +1798,8 @@
 output appears in a separate window.  The point is centered at the
 revision of the file that is currently being visited.
 
-From the change log buffer, the following keys are used to move
-between the logs of revisions and files, to view past revisions, and
+  In the change log buffer, you can use the following keys to move
+between the logs of revisions and of files, to view past revisions, and
 to view diffs:
 
 @table @kbd
@@ -2410,14 +2418,16 @@
 
 @cindex named configurations (RCS)
   VC's snapshot facilities are modeled on RCS's named-configuration
-support.  They use RCS's native facilities for this, so under VC
-snapshots made using RCS are visible even when you bypass VC.
+support.  They use RCS's native facilities for this, so
+snapshots made using RCS through VC are visible even when you bypass VC.
 
 @c worded verbosely to avoid overfull hbox.
   For SCCS, VC implements snapshots itself.  The files it uses contain
 name/file/version-number triples.  These snapshots are visible only
 through VC.
 
+@c ??? What about CVS?
+
   A snapshot is a set of checked-in versions.  So make sure that all the
 files are checked in and not locked when you make a snapshot.
 
@@ -2472,6 +2482,8 @@
 
 This command works with RCS or CVS only, not with SCCS.
 
+@c ??? What about other back ends?
+
 @item C-u C-x v a
 As above, but only find entries for the current buffer's file.
 
@@ -2625,6 +2637,8 @@
 @dfn{version headers} are replaced in each successive version by the
 number of that version.
 
+@c ??? How does this relate to CVS?
+
   If you are using RCS, and version headers are present in your working
 files, Emacs can use them to determine the current version and the
 locking state of the files.  This is more reliable than referring to the
@@ -2657,7 +2671,7 @@
 each string in the list is inserted as a separate header on a line of
 its own.
 
-  It is often necessary to use ``superfluous'' backslashes when
+  It may be necessary to use apparently-superfluous backslashes when
 writing the strings that you put in this variable.  For instance, you
 might write @code{"$Id\$"} rather than @code{"$Id@w{$}"}.  The extra
 backslash prevents the string constant from being interpreted as a
@@ -2899,8 +2913,8 @@
 listing} is a list of all the files in a directory.  Emacs provides
 commands to create and delete directories, and to make directory
 listings in brief format (file names only) and verbose format (sizes,
-dates, and authors included).  There is also a directory browser called
-Dired; see @ref{Dired}.
+dates, and authors included).  Emacs also includes a directory browser
+feature called Dired; see @ref{Dired}.
 
 @table @kbd
 @item C-x C-d @var{dir-or-pattern} @key{RET}
@@ -2950,9 +2964,10 @@
 
 @vindex directory-free-space-program
 @vindex directory-free-space-args
-  Emacs adds information about the amount of free space on the disk
-that contains the directory.  To do this, it runs the program
-specified by @code{directory-free-space-program} with arguments
+  In verbose directory listings, Emacs adds information about the
+amount of free space on the disk that contains the directory.  To do
+this, it runs the program specified by
+@code{directory-free-space-program} with arguments
 @code{directory-free-space-args}.
 
 @node Comparing Files
@@ -2967,19 +2982,26 @@
 @code{diff-switches}.  The value of @code{diff-switches} should be a
 string; the default is @code{"-c"} to specify a context diff.
 
-@findex diff-goto-source
-  After running @kbd{M-x diff}, you can use @kbd{C-x `} to visit
-successive changed locations in the two source files, as in
-Compilation mode (@pxref{Compilation Mode}.)  In the @samp{*diff*} buffer,
-you can move to a particular hunk of changes and type @kbd{C-c C-c}
-(@code{diff-goto-source}) to visit the corresponding source location.
-
 @findex diff-backup
   The command @kbd{M-x diff-backup} compares a specified file with its most
 recent backup.  If you specify the name of a backup file,
 @code{diff-backup} compares it with the source file that it is a backup
 of.
 
+@findex diff-goto-source
+@findex diff-mode
+@cindex Diff mode
+  The @samp{*diff*} buffer uses Diff mode, which enables you to use
+@kbd{C-x `} to visit successive changed locations in the two source
+files, as in Compilation mode (@pxref{Compilation Mode}.)  You can
+also move to a particular hunk of changes and type @kbd{C-c C-c}
+(@code{diff-goto-source}) to visit the corresponding source location.
+
+@cindex patches
+  Differences between versions of files are often distributed as
+patches, which are the output from the @command{diff} program.  You
+can use Diff mode to operate on a patch by typing @kbd{M-x diff-mode}.
+
 @findex compare-windows
   The command @kbd{M-x compare-windows} compares the text in the
 current window with that in the next window.  (For more information
@@ -2990,10 +3012,10 @@
 Then the command exits.
 
   If point in the two windows is followed by non-matching text when
-the command starts, it tries heuristically to advance up to matching
-text in the two windows, and then exits.  So if you use @kbd{M-x
-compare-windows} repeatedly, each time it either skips one matching
-range or finds the start of another.
+the command starts, @kbd{M-x compare-windows} tries heuristically to
+advance up to matching text in the two windows, and then exits.  So if
+you use @kbd{M-x compare-windows} repeatedly, each time it either
+skips one matching range or finds the start of another.
 
 @vindex compare-ignore-case
 @vindex compare-ignore-whitespace
@@ -3004,16 +3026,6 @@
 @code{compare-windows} normally ignores changes in whitespace, and a
 prefix argument turns that off.
 
-@findex diff-mode
-@cindex diffs
-@cindex patches
-@cindex Diff mode
-  Differences between versions of files are often distributed as
-@dfn{patches}, which are the output from @command{diff} or a version
-control system that uses @command{diff}.  @kbd{M-x diff-mode} turns on
-Diff mode, a major mode for viewing and editing patches, either as
-``unified diffs'' or ``context diffs.''
-
 @cindex Smerge mode
 @findex smerge-mode
 @cindex failed merges
@@ -3154,19 +3166,20 @@
 would in Dired, and visit the subfiles contained in the archive.
 However, not all Dired commands are available in Tar mode.
 
-  If you enable Auto Compression mode (@pxref{Compressed Files}), then
+  If Auto Compression mode is enabled (@pxref{Compressed Files}), then
 Tar mode is used also for compressed archives---files with extensions
 @samp{.tgz}, @code{.tar.Z} and @code{.tar.gz}.
 
   The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
-into its own buffer.  You can edit it there and when you save the buffer
-the edited version will replace the version in the Tar buffer.  @kbd{v}
-extracts a file into a buffer in View mode.  @kbd{o} extracts the file
-and displays it in another window, so you could edit the file and
-operate on the archive simultaneously.  @kbd{d} marks a file for
+into its own buffer.  You can edit it there, and if you save the
+buffer, the edited version will replace the version in the Tar buffer.
+@kbd{v} extracts a file into a buffer in View mode.  @kbd{o} extracts
+the file and displays it in another window, so you could edit the file
+and operate on the archive simultaneously.  @kbd{d} marks a file for
 deletion when you later use @kbd{x}, and @kbd{u} unmarks a file, as in
 Dired.  @kbd{C} copies a file from the archive to disk and @kbd{R}
-renames a file.  @kbd{g} reverts the buffer from the archive on disk.
+renames a file within the archive.  @kbd{g} reverts the buffer from
+the archive on disk.
 
   The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission
 bits, group, and owner, respectively.
@@ -3282,8 +3295,6 @@
   Normally, if you do not specify a user name in a remote file name,
 that means to use your own user name.  But if you set the variable
 @code{ange-ftp-default-user} to a string, that string is used instead.
-(The Emacs package that implements FTP file access is called
-@code{ange-ftp}.)
 
 @cindex anonymous FTP
 @vindex ange-ftp-generate-anonymous-password
@@ -3293,8 +3304,8 @@
 @code{ange-ftp-generate-anonymous-password} controls what happens: if
 the value of this variable is a string, then that string is used as
 the password; if non-@code{nil} (the default), then the value of
-@code{user-mail-address} is used; if @code{nil}, the user is prompted
-for a password as normal.
+@code{user-mail-address} is used; if @code{nil}, then Emacs prompts
+you for a password as usual.
 
 @cindex firewall, and accessing remote files
 @cindex gateway, and remote file access with @code{ange-ftp}
@@ -3453,7 +3464,7 @@
 
 @findex filesets-add-buffer
 @findex filesets-remove-buffer
-  The simplest way to define filesets is by adding files to them one
+  The simplest way to define a fileset is by adding files to it one
 at a time.  To add a file to fileset @var{name}, visit the file and
 type @kbd{M-x filesets-add-buffer @kbd{RET} @var{name} @kbd{RET}}.  If
 there is no fileset @var{name}, this creates a new one, which
--- a/man/frames.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/frames.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -3,29 +3,29 @@
 @c   2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Frames, International, Windows, Top
-@chapter Frames and X Windows
+@chapter Frames and Graphical Displays
 @cindex frames
 
-  When using the X Window System, you can create multiple windows at the
-X level in a single Emacs session.  Each X window that belongs to Emacs
-displays a @dfn{frame} which can contain one or several Emacs windows.
-A frame initially contains a single general-purpose Emacs window which
-you can subdivide vertically or horizontally into smaller windows.  A
-frame normally contains its own echo area and minibuffer, but you can
-make frames that don't have these---they use the echo area and
-minibuffer of another frame.
+  When using a graphical display, you can create multiple windows at
+the system in a single Emacs session.  Each system-level window that
+belongs to Emacs displays a @dfn{frame} which can contain one or
+several Emacs windows.  A frame initially contains a single
+general-purpose Emacs window which you can subdivide vertically or
+horizontally into smaller windows.  A frame normally contains its own
+echo area and minibuffer, but you can make frames that don't have
+these---they use the echo area and minibuffer of another frame.
 
-  Editing you do in one frame also affects the other frames.  For
+  To avoid confusion, we reserve the word ``window'' for the
+subdivisions that Emacs implements, and never use it to refer to a
+frame.
+
+  Editing you do in one frame affects the other frames.  For
 instance, if you put text in the kill ring in one frame, you can yank it
 in another frame.  If you exit Emacs through @kbd{C-x C-c} in one frame,
 it terminates all the frames.  To delete just one frame, use @kbd{C-x 5
 0} (that is zero, not @kbd{o}).
 
-  To avoid confusion, we reserve the word ``window'' for the
-subdivisions that Emacs implements, and never use it to refer to a
-frame.
-
-  Emacs compiled for MS-DOS emulates some aspects of the window system
+  Emacs compiled for MS-DOS emulates some windowing functionality,
 so that you can use many of the features described in this chapter.
 @xref{MS-DOS Mouse}, for more information.
 
@@ -185,46 +185,46 @@
 frame's windows you click on.  The default value is @code{nil}.  This
 variable also affects yanking the secondary selection.
 
-@cindex cutting and X
-@cindex pasting and X
+@cindex cutting
+@cindex pasting
 @cindex X cutting and pasting
-  To copy text to another X window, kill it or save it in the kill ring.
-Under X, this also sets the @dfn{primary selection}.  Then use the
-``paste'' or ``yank'' command of the program operating the other window
-to insert the text from the selection.
+  To copy text to another windowing application, kill it or save it in
+the kill ring.  Then use the ``paste'' or ``yank'' command of the
+other application to insert the text.
 
-  To copy text from another X window, use the ``cut'' or ``copy''
-command of the program operating the other window, to select the text
-you want.  Then yank it in Emacs with @kbd{C-y} or @kbd{Mouse-2}.
-
-  The standard coding system for X selections is
-@code{compound-text-with-extensions}.  To specify another coding
-system for X selections, use @kbd{C-x @key{RET} x} or @kbd{C-x
-@key{RET} X}.  @xref{Specify Coding}.
+  To copy text from another windowing application, use its ``cut'' or
+``copy'' command to select the text you want.  Then yank it in Emacs
+with @kbd{C-y} or @kbd{Mouse-2}.
 
 @cindex primary selection
 @cindex cut buffer
 @cindex selection, primary
 @vindex x-cut-buffer-max
-  When Emacs puts text into the kill ring, or rotates text to the front
-of the kill ring, it sets the @dfn{primary selection} in the X server.
-This is how other X clients can access the text.  Emacs also stores the
-text in the cut buffer, but only if the text is short enough
-(the value of @code{x-cut-buffer-max} specifies the maximum number of
-characters); putting long strings in the cut buffer can be slow.
+  When Emacs puts text into the kill ring, or rotates text to the
+front of the kill ring, it sets the @dfn{primary selection} in the
+window system.  This is how other windowing applications can access
+the text.  On the X Window System, emacs also stores the text in the
+cut buffer, but only if the text is short enough (the value of
+@code{x-cut-buffer-max} specifies the maximum number of characters);
+putting long strings in the cut buffer can be slow.
 
   The commands to yank the first entry in the kill ring actually check
 first for a primary selection in another program; after that, they check
 for text in the cut buffer.  If neither of those sources provides text
 to yank, the kill ring contents are used.
 
+  The standard coding system for X Window System selections is
+@code{compound-text-with-extensions}.  To specify another coding
+system for selections, use @kbd{C-x @key{RET} x} or @kbd{C-x @key{RET}
+X}.  @xref{Communication Coding}.
+
 @node Secondary Selection
 @section Secondary Selection
 @cindex secondary selection
 
   The @dfn{secondary selection} is another way of selecting text using
-X.  It does not use point or the mark, so you can use it to kill text
-without setting point or the mark.
+the X Window System.  It does not use point or the mark, so you can
+use it to kill text without setting point or the mark.
 
 @table @kbd
 @findex mouse-set-secondary
@@ -275,16 +275,15 @@
 
 @node Clipboard
 @section Using the Clipboard
-@cindex X clipboard
 @cindex clipboard
 @vindex x-select-enable-clipboard
 @findex menu-bar-enable-clipboard
 @cindex OpenWindows
 @cindex Gnome
 
-  Apart from the primary and secondary selection types, X supports a
-@dfn{clipboard} selection type which is used by some applications,
-particularly under OpenWindows and Gnome.
+  Apart from the primary and secondary selection types, Emacs can
+handle the @dfn{clipboard} selection type which is used by some
+applications, particularly under OpenWindows and Gnome.
 
   The command @kbd{M-x menu-bar-enable-clipboard} makes the @code{Cut},
 @code{Paste} and @code{Copy} menu items, as well as the keys of the same
@@ -295,7 +294,7 @@
 selection, and to make the kill functions to store in the clipboard as
 well as the primary selection.  Otherwise they do not access the
 clipboard at all.  Using the clipboard is the default on MS-Windows,
-unlike most systems.
+but not on other systems.
 
 @node Mouse References
 @section Following References with the Mouse
@@ -342,16 +341,16 @@
 
 @vindex mouse-1-click-follows-link
   In Emacs versions before 22, only @kbd{Mouse-2} follows links and
-@kbd{Mouse-1} always sets points.  If you prefer this behavior, set
-the variable @code{mouse-1-click-follows-link} to @code{nil}.  This
-variable also lets you choose various other alternatives for following
-links with the mouse.  Type @kbd{C-h v mouse-1-click-follows-link @key{RET}}
-for more details.
+@kbd{Mouse-1} always sets point.  If you prefer this older behavior,
+set the variable @code{mouse-1-click-follows-link} to @code{nil}.
+This variable also lets you choose various other alternatives for
+following links with the mouse.  Type @kbd{C-h v
+mouse-1-click-follows-link @key{RET}} for more details.
 
 @node Menu Mouse Clicks
 @section Mouse Clicks for Menus
 
-  Mouse clicks modified with the @key{CTRL} and @key{SHIFT} keys
+  Several mouse clicks with the @key{CTRL} and @key{SHIFT} modifiers
 bring up menus.
 
 @table @kbd
@@ -382,7 +381,7 @@
 you can access them without having to display the menu bar.
 
 @item S-Mouse-1
-This menu is for specifying the frame's principal font.
+This menu is for specifying the frame's default font.
 @end table
 
 @node Mode Line Mouse
@@ -396,17 +395,17 @@
   Some areas of the mode line, such as the buffer name and the major
 mode name, have their own special mouse bindings.  These areas are
 highlighted when you hold the mouse over them, and information about
-the special bindings will be displayed (@pxref{Tooltips}).
-
-  You can also click on areas of the mode line that do not have
-special mouse bindings of their own.  This has the following effects:
+the special bindings will be displayed (@pxref{Tooltips}).  This
+section's commands do not apply in those areas.
 
 @table @kbd
 @item Mouse-1
 @kindex Mouse-1 @r{(mode line)}
 @kbd{Mouse-1} on a mode line selects the window it belongs to.  By
 dragging @kbd{Mouse-1} on the mode line, you can move it, thus
-changing the height of the windows above and below.
+changing the height of the windows above and below.  Changing heights
+with the mouse in this way never deletes windows, it just refuses to
+make any window smaller than the minimum height.
 
 @item Mouse-2
 @kindex Mouse-2 @r{(mode line)}
@@ -425,7 +424,10 @@
 @end table
 
 @kindex C-Mouse-2 @r{(scroll bar)}
-  @kbd{C-Mouse-2} on a scroll bar splits the corresponding window
+@kindex Mouse-1 @r{(scroll bar)}
+  Using @kbd{Mouse-1} on the divider between two side-by-side mode
+lines, you can move the vertical boundary left or right.  Using
+@kbd{C-Mouse-2} on a scroll bar splits the corresponding window
 vertically.  @xref{Split Window}.
 
 @node Creating Frames
@@ -638,12 +640,12 @@
 @section Special Buffer Frames
 
 @vindex special-display-buffer-names
-  You can make certain chosen buffers, for which Emacs normally creates
-a second window when you have just one window, appear in special frames
-of their own.  To do this, set the variable
-@code{special-display-buffer-names} to a list of buffer names; any
-buffer whose name is in that list automatically gets a special frame,
-when an Emacs command wants to display it ``in another window.''
+  You can make certain chosen buffers, which Emacs normally displays
+in ``another window,'' appear in special frames of their own.  To do
+this, set the variable @code{special-display-buffer-names} to a list
+of buffer names; any buffer whose name is in that list automatically
+gets a special frame, when an Emacs command wants to display it ``in
+another window.''
 
   For example, if you set the variable this way,
 
@@ -664,7 +666,7 @@
   More generally, you can set @code{special-display-regexps} to a list
 of regular expressions; then a buffer gets its own frame if its name
 matches any of those regular expressions.  (Once again, this applies only
-to buffers that normally get displayed for you in a separate window.)
+to buffers that normally get displayed for you in ``another window.'')
 
 @vindex special-display-frame-alist
   The variable @code{special-display-frame-alist} specifies the frame
@@ -707,79 +709,38 @@
 @cindex Auto-Raise mode
 @cindex Auto-Lower mode
 
-  This section describes commands for altering the display style and
-window management behavior of the selected frame.
+@kindex S-Mouse-1
+  You can specify the font and colors used for text display, and the
+colors for the frame borders, the cursor, and the mouse cursor, by
+customizing the faces @code{default}, @code{border}, @code{cursor} and
+@code{mouse}.  @xref{Face Customization}.  You can also set a frame's
+default font through a pop-up menu.  Press @kbd{S-Mouse-1} to activate
+this menu.
 
-@findex set-foreground-color
-@findex set-background-color
-@findex set-cursor-color
-@findex set-mouse-color
-@findex set-border-color
-@findex auto-raise-mode
-@findex auto-lower-mode
-@cindex colors
+  These commands are available for controlling the window management
+behavior of the selected frame.
+
 @table @kbd
-@item M-x set-foreground-color @key{RET} @var{color} @key{RET}
-Specify color @var{color} for the foreground of the selected frame.
-(This also changes the foreground color of the default face.)  You can
-specify @var{color} either by its symbolic name or by its RGB
-numerical specification@footnote{
-See the X Window System documentation for more details.  On a typical
-GNU or Unix system, the command @kbd{man 7 X} or @kbd{man -s 7 X} will
-display the X manual page that explains how to specify colors.}.
-
-@item M-x set-background-color @key{RET} @var{color} @key{RET}
-Specify color @var{color} for the background of the selected frame.
-(This also changes the background color of the default face.)
-
-@item M-x set-cursor-color @key{RET} @var{color} @key{RET}
-Specify color @var{color} for the cursor of the selected frame.
-
-@item M-x set-mouse-color @key{RET} @var{color} @key{RET}
-Specify color @var{color} for the mouse cursor when it is over the
-selected frame.
-
-@item M-x set-border-color @key{RET} @var{color} @key{RET}
-Specify color @var{color} for the border of the selected frame.
-
-@item M-x list-colors-display
-Display the defined color names and show what the colors look like.
-This command is somewhat slow.  @xref{Colors, list-colors-display,
-Display available colors}.
-
+@findex auto-raise-mode
 @item M-x auto-raise-mode
 Toggle whether or not the selected frame should auto-raise.  Auto-raise
 means that every time you move the mouse onto the frame, it raises the
 frame.
 
-Note that this auto-raise feature is implemented by Emacs itself.  Some
-window managers also implement auto-raise.  If you enable auto-raise for
-Emacs frames in your X window manager, it should work, but it is beyond
-Emacs's control and therefore @code{auto-raise-mode} has no effect on
-it.
+Some window managers also implement auto-raise.  If you enable
+auto-raise for Emacs frames in your window manager, it will work, but
+it is beyond Emacs' control, so @code{auto-raise-mode} has no effect
+on it.
 
+@findex auto-lower-mode
 @item M-x auto-lower-mode
 Toggle whether or not the selected frame should auto-lower.
 Auto-lower means that every time you move the mouse off the frame,
-the frame moves to the bottom of the stack of X windows.
+the frame moves to the bottom of the stack on the screen.
 
 The command @code{auto-lower-mode} has no effect on auto-lower
-implemented by the X window manager.  To control that, you must use
-the appropriate window manager features.
-
-@findex set-frame-font
-@item M-x set-frame-font @key{RET} @var{font} @key{RET}
-@cindex font (principal)
-Specify font @var{font} as the principal font for the selected frame.
-The principal font controls several face attributes of the
-@code{default} face (@pxref{Faces}).  For example, if the principal font
-has a height of 12 pt, all text will be drawn in 12 pt fonts, unless you
-use another face that specifies a different height.  @xref{Font X}, for
-ways to list the available fonts on your system.
-
-@kindex S-Mouse-1
-You can also set a frame's principal font through a pop-up menu.
-Press @kbd{S-Mouse-1} to activate this menu.
+implemented by the window manager.  To control that, you must use the
+appropriate window manager features.
 @end table
 
   In Emacs versions that use an X toolkit, the color-setting and
@@ -800,13 +761,13 @@
 @cindex Scroll Bar mode
 @cindex mode, Scroll Bar
 
-  When using X, Emacs normally makes a @dfn{scroll bar} at the left of
-each Emacs window.@footnote{Placing it at the left is usually more
-useful with overlapping frames with text starting at the left margin.}
-The scroll bar runs the height of the window, and shows a moving
-rectangular inner box which represents the portion of the buffer
-currently displayed.  The entire height of the scroll bar represents the
-entire length of the buffer.
+  On graphical displays, Emacs normally makes a @dfn{scroll bar} at
+the left of each Emacs window.@footnote{Placing it at the left is
+usually more useful with overlapping frames with text starting at the
+left margin.}  The scroll bar runs the height of the window, and shows
+a moving rectangular inner box which represents the portion of the
+buffer currently displayed.  The entire height of the scroll bar
+represents the entire length of the buffer.
 
   You can use @kbd{Mouse-2} (normally, the middle button) in the scroll
 bar to move or drag the inner box up and down.  If you move it to the
@@ -826,16 +787,18 @@
 @findex scroll-bar-mode
 @vindex scroll-bar-mode
   You can enable or disable Scroll Bar mode with the command @kbd{M-x
-scroll-bar-mode}.  With no argument, it toggles the use of scroll bars.
-With an argument, it turns use of scroll bars on if and only if the
-argument is positive.  This command applies to all frames, including
-frames yet to be created.  Customize the variable @code{scroll-bar-mode}
-to control the use of scroll bars at startup.  You can use it to specify
-that they are placed at the right of windows if you prefer that.  You
-have to set this variable through the @samp{Customize} interface
-(@pxref{Easy Customization}).  Otherwise, it will not work properly.
-You can use the X resource @samp{verticalScrollBars} to control the
-initial setting of Scroll Bar mode similarly.  @xref{Resources}.
+scroll-bar-mode}.  With no argument, it toggles the use of scroll
+bars.  With an argument, it turns use of scroll bars on if and only if
+the argument is positive.  This command applies to all frames,
+including frames yet to be created.  Customize the variable
+@code{scroll-bar-mode} to control the use of scroll bars at startup.
+You can use it to specify that they are placed at the right of windows
+if you prefer that.  You have to set this variable through the
+@samp{Customize} interface (@pxref{Easy Customization}), or it will
+not work properly.
+
+  You can also use the X resource @samp{verticalScrollBars} to control
+the initial setting of Scroll Bar mode.  @xref{Resources}.
 
 @findex toggle-scroll-bar
   To enable or disable scroll bars for just the selected frame, use the
@@ -887,37 +850,8 @@
 you prefer to visit the file in a new window in such cases, customize
 the variable @code{dnd-open-file-other-window}.
 
-@ignore
-@c ??? To Lisp manual
-@vindex x-dnd-test-function
-@vindex x-dnd-known-types
-  When a user drags something from another application over Emacs, that other
-application expects Emacs to tell it if Emacs can handle the data that is
-dragged.  The variable @code{x-dnd-test-function} is used by Emacs to determine
-what to reply.  The default value is @code{x-dnd-default-test-function}
-which accepts drops if the type of the data to be dropped is present in
-@code{x-dnd-known-types}.  You can customize @code{x-dnd-test-function} and/or
-@code{x-dnd-known-types} if you want Emacs to accept or reject drops based
-on some other criteria.
-
-@vindex x-dnd-types-alist
-  If you want to change the way Emacs handles drop of different types
-or add a new type, customize @code{x-dnd-types-alist}.  This requires
-detailed knowledge of what types other applications use for drag and
-drop.
-
-@vindex dnd-protocol-alist
-  When an URL is dropped on Emacs it may be a file, but it may also be
-another URL type (ftp, http, etc.).  Emacs first checks
-@code{dnd-protocol-alist} to determine what to do with the URL.  If
-there is no match there and if @code{browse-url-browser-function} is
-an alist, Emacs looks for a match there.  If no match is found the
-text for the URL is inserted.  If you want to alter Emacs behavior,
-you can customize these variables.
-@end ignore
-
-  The drag and drop protocols XDND, Motif and the
-old KDE 1.x protocol are currently supported.
+  The XDND and Motif drag and drop protocols, and the old KDE 1.x
+protocol, are currently supported.
 
 @node Menu Bars
 @section Menu Bars
@@ -941,7 +875,7 @@
 
   @xref{Menu Bar}, for information on how to invoke commands with the
 menu bar.  @xref{X Resources}, for how to customize the menu bar
-menus.
+menus' visual appearance.
 
 @node Tool Bars
 @section Tool Bars
@@ -980,13 +914,18 @@
 windows (but those are not supported on all platforms).
 
 @vindex use-file-dialog
-  A file selection window is a special kind of dialog box for asking for
-file names.
+  A file selection window is a special kind of dialog box for asking
+for file names.  You can customize the variable @code{use-file-dialog}
+to suppress the use of file selection windows, even if you still want
+other kinds of dialogs.  This variable has no effect if you have
+suppressed all dialog boxes with the variable @code{use-dialog-box}.
 
-  You can customize the variable @code{use-file-dialog} to suppress the
-use of file selection windows even if you still want other kinds
-of dialogs.  This variable has no effect if you have suppressed all dialog
-boxes with the variable @code{use-dialog-box}.
+@vindex x-gtk-show-hidden-files
+  For Gtk+ version 2.4 and newer, Emacs use the Gtk+ file chooser
+dialog.  Emacs adds a toggle button that enables and disables showing
+of hidden files (files starting with a dot) in that dialog.  The
+variable @code{x-gtk-show-hidden-files} controls whether to show
+hidden files by default.
 
 @vindex x-use-old-gtk-file-dialog
   For Gtk+ version 2.4 and 2.6, you can make Emacs use the old file dialog
@@ -994,12 +933,6 @@
 value.  If Emacs is built with a Gtk+ version that has only one file dialog,
 the setting of this variable has no effect.
 
-@vindex x-gtk-show-hidden-files
-  For Gtk+ version 2.4 and newer, Emacs use the Gtk+ file chooser dialog.
-Emacs adds a toggle button that enables and disables showing of hidden files
-(files starting with a dot) in that dialog.  This variable controls if
-hidden files should be shown by default or not.
-
 @node Tooltips
 @section Tooltips
 @cindex tooltips
@@ -1010,13 +943,13 @@
 tooltips.
 
   @dfn{Help tooltips} typically display over text---including the mode
-line---but may be also available for many other parts of the Emacs
-frame such as the tool bar and menu items.
+line---but are also available for other parts of the Emacs frame, such
+as the tool bar and menu items.
 
 @findex tooltip-mode
-  You can toggle help tooltips (Tooltip mode) with the command
-  @kbd{M-x tooltip-mode}.  When Tooltip mode is disabled, the help text
-is displayed in the echo area instead.
+  You can toggle display of help tooltips (Tooltip mode) with the
+command @kbd{M-x tooltip-mode}.  When Tooltip mode is disabled, the
+help text is displayed in the echo area instead.
 
   @dfn{GUD tooltips} show values of variables.  They are useful when
 you are debugging a program.  @xref{Debugger Operation}.
@@ -1066,11 +999,10 @@
 @cindex non-window terminals
 @cindex single-frame terminals
 
-  If your terminal does not have a window system that Emacs supports,
-then it can display only one Emacs frame at a time.  However, you can
-still create multiple Emacs frames, and switch between them.  Switching
-frames on these terminals is much like switching between different
-window configurations.
+  On a text-only terminal, Emacs can display only one Emacs frame at a
+time.  However, you can still create multiple Emacs frames, and switch
+between them.  Switching frames on these terminals is much like
+switching between different window configurations.
 
   Use @kbd{C-x 5 2} to create a new frame and switch to it; use @kbd{C-x
 5 o} to cycle through the existing frames; use @kbd{C-x 5 0} to delete
@@ -1083,20 +1015,20 @@
 
 @findex set-frame-name
 @findex select-frame-by-name
-  @samp{F@var{n}} is actually the frame's name.  You can also specify a
-different name if you wish, and you can select a frame by its name.  Use
-the command @kbd{M-x set-frame-name @key{RET} @var{name} @key{RET}} to
-specify a new name for the selected frame, and use @kbd{M-x
-select-frame-by-name @key{RET} @var{name} @key{RET}} to select a frame
-according to its name.  The name you specify appears in the mode line
-when the frame is selected.
+  @samp{F@var{n}} is in fact the frame's initial name.  You can give
+frames more meaningful names if you wish, and you can select a frame
+by its name.  Use the command @kbd{M-x set-frame-name @key{RET}
+@var{name} @key{RET}} to specify a new name for the selected frame,
+and use @kbd{M-x select-frame-by-name @key{RET} @var{name} @key{RET}}
+to select a frame according to its name.  The name you specify appears
+in the mode line when the frame is selected.
 
 @node XTerm Mouse
 @section Using a Mouse in Terminal Emulators
 @cindex xterm, mouse support
 @cindex terminal emulators, mouse support
 
-Some terminal emulators under X support mouse clicks in the terminal
+  Some terminal emulators under X support mouse clicks in the terminal
 window.  In a terminal emulator which is compatible with @code{xterm},
 you can use @kbd{M-x xterm-mouse-mode} to give Emacs control over
 simple use of the mouse---basically, only non-modified single clicks
--- a/man/indent.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/indent.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -45,7 +45,7 @@
 
 A tab character is displayed as a stretch of whitespace which extends
 to the next display tab stop position, and the default width of a tab
-stop is eight.  @xref{Display Custom}, for more details.
+stop is eight.  @xref{Text Display}, for more details.
 
 @item
 Insert whitespace up to the next tab stop.  You can set tab stops at
@@ -114,13 +114,13 @@
 @kindex M-^
 @findex delete-indentation
   To join two lines cleanly, use the @kbd{M-^}
-(@code{delete-indentation}) command.  It deletes the indentation at the
-front of the current line, and the line boundary as well, replacing them
-with a single space.  As a special case (useful for Lisp code) the
-single space is omitted if the characters to be joined are consecutive
-open parentheses or closing parentheses, or if the junction follows
-another newline.  To delete just the indentation of a line, go to the
-beginning of the line and use @kbd{M-\}
+(@code{delete-indentation}) command.  It deletes the indentation at
+the front of the current line, and the line boundary as well,
+replacing them with a single space.  As a special case (useful for
+Lisp code) the single space is omitted if the characters to be joined
+are consecutive open parentheses or closing parentheses, or if the
+junction follows another newline.  To delete just the indentation of a
+line, go to the beginning of the line and use @kbd{M-\}
 (@code{delete-horizontal-space}), which deletes all spaces and tabs
 around the cursor.
 
@@ -140,12 +140,12 @@
 that column.  @kbd{C-x @key{TAB}} (@code{indent-rigidly}) moves all of
 the lines in the region right by its argument (left, for negative
 arguments).  The whole group of lines moves rigidly sideways, which is
-how the command gets its name.@refill
+how the command gets its name.
 
 @cindex remove indentation
-  If you want to remove all indentation from all of the line in the
-region, invoke @kbd{C-x @key{TAB}} with a large negative argument,
-such as -1000.
+  To remove all indentation from all of the lines in the region,
+invoke @kbd{C-x @key{TAB}} with a large negative argument, such as
+-1000.
 
 @findex indent-relative
   @kbd{M-x indent-relative} indents at point based on the previous line
--- a/man/kmacro.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/kmacro.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -7,22 +7,22 @@
 @cindex defining keyboard macros
 @cindex keyboard macro
 
-  In this chapter we describe how a sequence of editing commands can
-be recorded and repeated multiple times.
+  In this chapter we describe how to record a sequence of editing
+commands so you can repeat it conveniently later.
 
   A @dfn{keyboard macro} is a command defined by the user to stand for
 another sequence of keys.  For example, if you discover that you are
-about to type @kbd{C-n C-d} forty times, you can speed your work by
-defining a keyboard macro to do @kbd{C-n C-d} and calling it with a
-repeat count of forty.
+about to type @kbd{C-n M-d C-d} forty times, you can speed your work by
+defining a keyboard macro to do @kbd{C-n M-d C-d}, and then executing
+it 39 more times.
 
-  You define a keyboard macro while executing the commands which are the
-definition.  Put differently, as you define a keyboard macro, the
-definition is being executed for the first time.  This way, you can see
-what the effects of your commands are, so that you don't have to figure
-them out in your head.  When you are finished, the keyboard macro is
-defined and also has been, in effect, executed once.  You can then do the
-whole thing over again by invoking the macro.
+  You define a keyboard macro by executing and recording the commands
+which are its definition.  Put differently, as you define a keyboard
+macro, the definition is being executed for the first time.  This way,
+you can see the effects of your commands, so that you don't have to
+figure them out in your head.  When you close the definition, the
+keyboard macro is defined and also has been, in effect, executed once.
+You can then do the whole thing over again by invoking the macro.
 
   Keyboard macros differ from ordinary Emacs commands in that they are
 written in the Emacs command language rather than in Lisp.  This makes it
@@ -63,19 +63,6 @@
 Re-execute last keyboard macro, then add more keys to its definition.
 @item C-u C-u C-x (
 Add more keys to the last keyboard macro without re-executing it.
-@item C-x q
-When this point is reached during macro execution, ask for confirmation
-(@code{kbd-macro-query}).
-@item C-x C-k n
-Give a command name (for the duration of the session) to the most
-recently defined keyboard macro (@code{kmacro-name-last-macro}).
-@item C-x C-k b
-Bind the most recently defined keyboard macro to a key sequence (for
-the duration of the session) (@code{kmacro-bind-to-key}).
-@item M-x insert-kbd-macro
-Insert in the buffer a keyboard macro's definition, as Lisp code.
-@item C-x C-k e
-Edit a previously defined keyboard macro (@code{edit-kbd-macro}).
 @item C-x C-k r
 Run the last keyboard macro on each line that begins in the region
 (@code{apply-macro-to-region-lines}).
@@ -157,12 +144,12 @@
 the macro.  The effect of this may be hard to predict.  (Using the
 current mouse position would be even less predictable.)
 
-  One thing that doesn't always work well in a keyboard macro is the
+  One thing that sometimes works badly in a keyboard macro is the
 command @kbd{C-M-c} (@code{exit-recursive-edit}).  When this command
-exits a recursive edit that started within the macro, it works as you'd
-expect.  But if it exits a recursive edit that started before you
-invoked the keyboard macro, it also necessarily exits the keyboard macro
-as part of the process.
+exits a recursive edit that started within the macro, it works as
+you'd expect.  But if it exits a recursive edit that started before
+you invoked the keyboard macro, it also necessarily exits the keyboard
+macro as part of the process.
 
   After you have terminated the definition of a keyboard macro, you can add
 to the end of its definition by typing @kbd{C-u C-x (}.  This is equivalent
@@ -190,6 +177,17 @@
 a list of sequences of keys.  There is only one keyboard macro ring,
 shared by all buffers.
 
+@table @kbd
+@item C-x C-k C-k
+Execute the keyboard macro at the head of the ring (@code{kmacro-end-or-call-macro-repeat}).
+@item C-x C-k C-n
+Rotate the keyboard macro ring to the next macro (defined earlier)
+(@code{kmacro-cycle-ring-next}).
+@item C-x C-k C-p
+Rotate the keyboard macro ring to the previous macro (defined later)
+(@code{kmacro-cycle-ring-previous}).
+@end table
+
   All commands which operate on the keyboard macro ring use the
 same @kbd{C-x C-k} prefix.  Most of these commands can be executed and
 repeated immediately after each other without repeating the @kbd{C-x
@@ -212,7 +210,7 @@
 repeat the macro immediately by typing another @kbd{C-k}, or you can
 rotate the macro ring immediately by typing @kbd{C-n} or @kbd{C-p}.
 
-When a keyboard macro is being defined, @kbd{C-x C-k C-k} behaves like
+  When a keyboard macro is being defined, @kbd{C-x C-k C-k} behaves like
 @kbd{C-x )} except that, immediately afterward, you can use most key
 bindings of this section without the @kbd{C-x C-k} prefix.  For
 instance, another @kbd{C-k} will re-execute the macro.
@@ -231,12 +229,13 @@
 ring head immediately, just type @kbd{C-k}.
 
   Note that Emacs treats the head of the macro ring as the ``last
-defined keyboard macro''.  For instance, it is the keyboard macro that
-@kbd{C-x e} will execute.
+defined keyboard macro.''  For instance, @kbd{C-x e} will execute that
+macro, and @kbd{C-x C-k n} will give it a name.
 
+@ignore  @c This interface is too kludgy
+  @c and the functionality duplicates the functionality above -- rms.
 @findex kmacro-view-macro-repeat
 @kindex C-x C-k C-v
-
   The command @kbd{C-x C-k C-v} (@code{kmacro-view-macro-repeat})
 displays the last keyboard macro, or when repeated (with @kbd{C-v}),
 it displays the previous macro on the macro ring, just like @kbd{C-x
@@ -248,7 +247,11 @@
 macro the current macro and executes it twice, @kbd{C-x C-k C-v C-v
 C-v C-k C-k} will display and execute the 3rd previous macro once and
 then the current macro once.
+@end ignore
 
+@ignore  @c This is just too much feeping creaturism.
+ @c If you are reusing certain macros enough to want these,
+ @c you should give then names. -- rms
 @findex kmacro-delete-ring-head
 @kindex C-x C-k C-d
 
@@ -269,6 +272,7 @@
 
   The command @kbd{C-x C-k C-l} (@code{kmacro-call-ring-2nd-repeat})
 executes the previous (rather than the head) element on the macro ring.
+@end ignore
 
 @vindex kmacro-ring-max
   The maximum number of macros stored in the keyboard macro ring is
@@ -277,6 +281,19 @@
 @node Keyboard Macro Counter
 @section The Keyboard Macro Counter
 
+@table @kbd
+@item C-x C-k C-i
+Insert the keyboard macro counter value in the buffer
+(@code{kmacro-insert-counter}).
+@item C-x C-k C-c
+Set the keyboard macro counter (@code{kmacro-set-counter}).
+@item C-x C-k C-a
+Add the prefix arg to the keyboard macro counter (@code{kmacro-add-counter}).
+@item C-x C-k C-f
+Specify the format for inserting the keyboard macro counter
+(@code{kmacro-set-format}).
+@end table
+
   Each keyboard macro has an associated counter.  Normally, the
 macro counter is initialized to 0 when you start defining the macro,
 and incremented by 1 after each insertion of the counter value;
@@ -364,6 +381,12 @@
 @node Keyboard Macro Query
 @section Executing Macros with Variations
 
+@table @kbd
+@item C-x q
+When this point is reached during macro execution, ask for confirmation
+(@code{kbd-macro-query}).
+@end table
+
 @kindex C-x q
 @findex kbd-macro-query
   Using @kbd{C-x q} (@code{kbd-macro-query}), you can get an effect
@@ -408,6 +431,17 @@
 @node Save Keyboard Macro
 @section Naming and Saving Keyboard Macros
 
+@table @kbd
+@item C-x C-k n
+Give a command name (for the duration of the Emacs session) to the most
+recently defined keyboard macro (@code{kmacro-name-last-macro}).
+@item C-x C-k b
+Bind the most recently defined keyboard macro to a key sequence (for
+the duration of the session) (@code{kmacro-bind-to-key}).
+@item M-x insert-kbd-macro
+Insert in the buffer a keyboard macro's definition, as Lisp code.
+@end table
+
 @cindex saving keyboard macros
 @findex kmacro-name-last-macro
 @kindex C-x C-k n
@@ -434,7 +468,7 @@
 bind to a key sequence with an existing binding (in any keymap), this
 command asks you for confirmation before replacing the existing binding.
 
-To avoid problems caused by overriding existing bindings, the key
+  To avoid problems caused by overriding existing bindings, the key
 sequences @kbd{C-x C-k 0} through @kbd{C-x C-k 9} and @kbd{C-x C-k A}
 through @kbd{C-x C-k Z} are reserved for your own keyboard macro
 bindings.  In fact, to bind to one of these key sequences, you only
@@ -474,6 +508,16 @@
 @node Edit Keyboard Macro
 @section Editing a Keyboard Macro
 
+@table @kbd
+@item C-x C-k C-e
+Edit the last defined keyboard macro (@code{kmacro-edit-macro}).
+@item C-x C-k e @var{name} @key{RET}
+Edit a previously defined keyboard macro @var{name} (@code{edit-kbd-macro}).
+@item C-x C-k l
+Edit the last 100 keystrokes as a keyboard macro
+(@code{kmacro-edit-lossage}).
+@end table
+
 @findex kmacro-edit-macro
 @kindex C-x C-k C-e
 @kindex C-x C-k RET
--- a/man/macos.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/macos.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -130,7 +130,7 @@
 menu.
 
   On Mac, the role of the coding system for selection that is set by
-@code{set-selection-coding-system} (@pxref{Specify Coding}) is
+@code{set-selection-coding-system} (@pxref{Communication Coding}) is
 two-fold.  First, it is used as a preferred coding system for the
 traditional text flavor that does not specify any particular encodings
 and is mainly used by applications on Mac OS Classic.  Second, it
--- a/man/major.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/major.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -65,10 +65,10 @@
 most of the time Emacs determines which mode to use based on the file
 name or on special text in the file.
 
-  Explicit selection of a new major mode is done with a @kbd{M-x} command.
-From the name of a major mode, add @code{-mode} to get the name of a
-command to select that mode.  Thus, you can enter Lisp mode by executing
-@kbd{M-x lisp-mode}.
+  To explicitly select a new major, you use an @kbd{M-x} command.
+Take the name of a major mode and add @code{-mode} to get the name of
+the command to select that mode.  Thus, you can enter Lisp mode by
+executing @kbd{M-x lisp-mode}.
 
 @vindex auto-mode-alist
   When you visit a file, Emacs usually chooses the right major mode based
--- a/man/misc.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/misc.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -419,7 +419,7 @@
 buffer regardless of whether it is visible in a window.
 
   To specify a coding system for @kbd{M-!} or @kbd{M-|}, use the command
-@kbd{C-x @key{RET} c} immediately beforehand.  @xref{Specify Coding}.
+@kbd{C-x @key{RET} c} immediately beforehand.  @xref{Communication Coding}.
 
 @vindex shell-command-default-error-buffer
   Error output from the command is normally intermixed with the regular
@@ -481,7 +481,7 @@
   To specify a coding system for the shell, you can use the command
 @kbd{C-x @key{RET} c} immediately before @kbd{M-x shell}.  You can also
 specify a coding system after starting the shell by using @kbd{C-x
-@key{RET} p} in the shell buffer.  @xref{Specify Coding}.
+@key{RET} p} in the shell buffer.  @xref{Communication Coding}.
 
 @cindex @env{EMACS} environment variable
   Unless the environment variable @env{EMACS} is already defined,
--- a/man/msdog.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/msdog.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -344,7 +344,7 @@
 
 @cindex DOS-to-Unix conversion of files
   To visit a file and specify whether it uses DOS-style or Unix-style
-end-of-line, specify a coding system (@pxref{Specify Coding}).  For
+end-of-line, specify a coding system (@pxref{Text Coding}).  For
 example, @kbd{C-x @key{RET} c unix @key{RET} C-x C-f foobar.txt}
 visits the file @file{foobar.txt} without converting the EOLs; if some
 line ends with a carriage-return linefeed pair, Emacs will display
@@ -719,7 +719,7 @@
 the codepage, with completion, then creates the coding system for the
 specified codepage.  You can then use the new coding system to read and
 write files, but you must specify it explicitly for the file command
-when you want to use it (@pxref{Specify Coding}).
+when you want to use it (@pxref{Text Coding}).
 
   These coding systems are also useful for visiting a file encoded using
 a DOS codepage, using Emacs running on some other operating system.
--- a/man/mule.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/mule.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -40,10 +40,7 @@
 well as Cyrillic, Devanagari (for Hindi and Marathi), Ethiopic, Greek,
 Han (for Chinese and Japanese), Hangul (for Korean), Hebrew, IPA,
 Kannada, Lao, Malayalam, Tamil, Thai, Tibetan, and Vietnamese scripts.
-These features have been merged from the modified version of Emacs
-known as MULE (for ``MULti-lingual Enhancement to GNU Emacs'')
-
-  Emacs also supports various encodings of these characters used by
+Emacs also supports various encodings of these characters used by
 other internationalized software, such as word processors and mailers.
 
   Emacs allows editing text with international characters by supporting
@@ -57,15 +54,15 @@
 environment (@pxref{Language Environments}) takes care of setting up the
 coding systems and other options for a specific language or culture.
 Alternatively, you can specify how Emacs should encode or decode text
-for each command; see @ref{Specify Coding}.
+for each command; see @ref{Text Coding}.
 
 @item
-You can display non-@acronym{ASCII} characters encoded by the various scripts.
-This works by using appropriate fonts on X and similar graphics
-displays (@pxref{Defining Fontsets}), and by sending special codes to
-text-only displays (@pxref{Specify Coding}).  If some characters are
-displayed incorrectly, refer to @ref{Undisplayable Characters}, which
-describes possible problems and explains how to solve them.
+You can display non-@acronym{ASCII} characters encoded by the various
+scripts.  This works by using appropriate fonts on graphics displays
+(@pxref{Defining Fontsets}), and by sending special codes to text-only
+displays (@pxref{Terminal Coding}).  If some characters are displayed
+incorrectly, refer to @ref{Undisplayable Characters}, which describes
+possible problems and explains how to solve them.
 
 @item
 You can insert non-@acronym{ASCII} characters or search for them.  To do that,
@@ -73,12 +70,14 @@
 for your language, or use the default input method set up when you set
 your language environment.  If
 your keyboard can produce non-@acronym{ASCII} characters, you can select an
-appropriate keyboard coding system (@pxref{Specify Coding}), and Emacs
+appropriate keyboard coding system (@pxref{Terminal Coding}), and Emacs
 will accept those characters.  Latin-1 characters can also be input by
 using the @kbd{C-x 8} prefix, see @ref{Single-Byte Character Support,
-C-x 8}.  On X Window systems, your locale should be set to an
-appropriate value to make sure Emacs interprets keyboard input
-correctly; see @ref{Language Environments, locales}.
+C-x 8}.
+
+On X Window systems, your locale should be set to an appropriate value
+to make sure Emacs interprets keyboard input correctly; see
+@ref{Language Environments, locales}.
 @end itemize
 
   The rest of this chapter describes these issues in detail.
@@ -93,7 +92,11 @@
 * Coding Systems::          Character set conversion when you read and
                               write files, and so on.
 * Recognize Coding::        How Emacs figures out which conversion to use.
-* Specify Coding::          Various ways to choose which conversion to use.
+* Text Coding::             Choosing conversion to use for file text.
+* Communication Coding::    Coding systems for interprocess communication.
+* File Name Coding::        Coding systems for file @emph{names}.
+* Terminal Coding::         Specifying coding systems for converting
+                              terminal input and output.
 * Fontsets::                Fontsets are collections of fonts
                               that cover the whole spectrum of characters.
 * Defining Fontsets::       Defining a new fontset.
@@ -106,15 +109,16 @@
 @node International Chars
 @section Introduction to International Character Sets
 
-  The users of international character sets and scripts have established
-many more-or-less standard coding systems for storing files.  Emacs
-internally uses a single multibyte character encoding, so that it can
-intermix characters from all these scripts in a single buffer or string.
-This encoding represents each non-@acronym{ASCII} character as a sequence of bytes
-in the range 0200 through 0377.  Emacs translates between the multibyte
-character encoding and various other coding systems when reading and
-writing files, when exchanging data with subprocesses, and (in some
-cases) in the @kbd{C-q} command (@pxref{Multibyte Conversion}).
+  The users of international character sets and scripts have
+established many more-or-less standard coding systems for storing
+files.  Emacs internally uses a single multibyte character encoding,
+so that it can intermix characters from all these scripts in a single
+buffer or string.  This encoding represents each non-@acronym{ASCII}
+character as a sequence of bytes in the range 0200 through 0377.
+Emacs translates between the multibyte character encoding and various
+other coding systems when reading and writing files, when exchanging
+data with subprocesses, and (in some cases) in the @kbd{C-q} command
+(@pxref{Multibyte Conversion}).
 
 @kindex C-h h
 @findex view-hello-file
@@ -138,22 +142,23 @@
 @node Enabling Multibyte
 @section Enabling Multibyte Characters
 
+  By default, Emacs starts in multibyte mode, because that allows you to
+use all the supported languages and scripts without limitations.
+
 @cindex turn multibyte support on or off
   You can enable or disable multibyte character support, either for
-Emacs as a whole, or for a single buffer.  When multibyte characters are
-disabled in a buffer, then each byte in that buffer represents a
-character, even codes 0200 through 0377.  The old features for
-supporting the European character sets, ISO Latin-1 and ISO Latin-2,
-work as they did in Emacs 19 and also work for the other ISO 8859
-character sets.
+Emacs as a whole, or for a single buffer.  When multibyte characters
+are disabled in a buffer, we call that @dfn{unibyte mode}.  Then each
+byte in that buffer represents a character, even codes 0200 through
+0377.
 
-  However, there is no need to turn off multibyte character support to
-use ISO Latin; the Emacs multibyte character set includes all the
-characters in these character sets, and Emacs can translate
-automatically to and from the ISO codes.
-
-  By default, Emacs starts in multibyte mode, because that allows you to
-use all the supported languages and scripts without limitations.
+  The old features for supporting the European character sets, ISO
+Latin-1 and ISO Latin-2, work in unibyte mode as they did in Emacs 19
+and also work for the other ISO 8859 character sets.  However, there
+is no need to turn off multibyte character support to use ISO Latin;
+the Emacs multibyte character set includes all the characters in these
+character sets, and Emacs can translate automatically to and from the
+ISO codes.
 
   To edit a particular file in unibyte representation, visit it using
 @code{find-file-literally}.  @xref{Visiting}.  To convert a buffer in
@@ -162,7 +167,7 @@
 buffer, and find the file again with @code{find-file-literally}.  You
 can also use @kbd{C-x @key{RET} c}
 (@code{universal-coding-system-argument}) and specify @samp{raw-text} as
-the coding system with which to find or save a file.  @xref{Specify
+the coding system with which to find or save a file.  @xref{Text
 Coding}.  Finding a file as @samp{raw-text} doesn't disable format
 conversion, uncompression and auto mode selection as
 @code{find-file-literally} does.
@@ -209,8 +214,8 @@
   The mode line indicates whether multibyte character support is enabled
 in the current buffer.  If it is, there are two or more characters (most
 often two dashes) before the colon near the beginning of the mode line.
-When multibyte characters are not enabled, just one dash precedes the
-colon.
+When multibyte characters are not enabled, nothing precedes the colon
+except a single dash.
 
 @node Language Environments
 @section Language Environments
@@ -314,12 +319,12 @@
 @findex describe-language-environment
   To display information about the effects of a certain language
 environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
-@key{RET}} (@code{describe-language-environment}).  This tells you which
-languages this language environment is useful for, and lists the
+@key{RET}} (@code{describe-language-environment}).  This tells you
+which languages this language environment is useful for, and lists the
 character sets, coding systems, and input methods that go with it.  It
-also shows some sample text to illustrate scripts used in this language
-environment.  By default, this command describes the chosen language
-environment.
+also shows some sample text to illustrate scripts used in this
+language environment.  If you give an empty input for @var{lang-env},
+this command describes the chosen language environment.
 
 @vindex set-language-environment-hook
   You can customize any language environment with the normal hook
@@ -483,9 +488,9 @@
 
 @findex toggle-input-method
 @kindex C-\
-  Input methods use various sequences of @acronym{ASCII} characters to stand for
-non-@acronym{ASCII} characters.  Sometimes it is useful to turn off the input
-method temporarily.  To do this, type @kbd{C-\}
+  Input methods use various sequences of @acronym{ASCII} characters to
+stand for non-@acronym{ASCII} characters.  Sometimes it is useful to
+turn off the input method temporarily.  To do this, type @kbd{C-\}
 (@code{toggle-input-method}).  To reenable the input method, type
 @kbd{C-\} again.
 
@@ -674,13 +679,14 @@
 @code{iso-latin-1-mac}.
 
   The coding system @code{raw-text} is good for a file which is mainly
-@acronym{ASCII} text, but may contain byte values above 127 which are not meant to
-encode non-@acronym{ASCII} characters.  With @code{raw-text}, Emacs copies those
-byte values unchanged, and sets @code{enable-multibyte-characters} to
-@code{nil} in the current buffer so that they will be interpreted
-properly.  @code{raw-text} handles end-of-line conversion in the usual
-way, based on the data encountered, and has the usual three variants to
-specify the kind of end-of-line conversion to use.
+@acronym{ASCII} text, but may contain byte values above 127 which are
+not meant to encode non-@acronym{ASCII} characters.  With
+@code{raw-text}, Emacs copies those byte values unchanged, and sets
+@code{enable-multibyte-characters} to @code{nil} in the current buffer
+so that they will be interpreted properly.  @code{raw-text} handles
+end-of-line conversion in the usual way, based on the data
+encountered, and has the usual three variants to specify the kind of
+end-of-line conversion to use.
 
   In contrast, the coding system @code{no-conversion} specifies no
 character code conversion at all---none for non-@acronym{ASCII} byte values and
@@ -822,16 +828,16 @@
 
   If Emacs recognizes the encoding of a file incorrectly, you can
 reread the file using the correct coding system by typing @kbd{C-x
-@key{RET} r @var{coding-system}
-@key{RET}}.  To see what coding system Emacs actually used to decode
-the file, look at the coding system mnemonic letter near the left edge
-of the mode line (@pxref{Mode Line}), or type @kbd{C-h C @key{RET}}.
+@key{RET} r @var{coding-system} @key{RET}}.  To see what coding system
+Emacs actually used to decode the file, look at the coding system
+mnemonic letter near the left edge of the mode line (@pxref{Mode
+Line}), or type @kbd{C-h C @key{RET}}.
 
 @findex unify-8859-on-decoding-mode
   The command @code{unify-8859-on-decoding-mode} enables a mode that
 ``unifies'' the Latin alphabets when decoding text.  This works by
-converting all non-@acronym{ASCII} Latin-@var{n} characters to either Latin-1 or
-Unicode characters.  This way it is easier to use various
+converting all non-@acronym{ASCII} Latin-@var{n} characters to either
+Latin-1 or Unicode characters.  This way it is easier to use various
 Latin-@var{n} alphabets together.  In a future Emacs version we hope
 to move towards full Unicode support and complete unification of
 character sets.
@@ -843,7 +849,7 @@
 file.  This includes the commands @code{save-buffer} and
 @code{write-region}.  If you want to write files from this buffer using
 a different coding system, you can specify a different coding system for
-the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
+the buffer using @code{set-buffer-file-coding-system} (@pxref{Text
 Coding}).
 
   You can insert any possible character into any Emacs buffer, but
@@ -901,11 +907,12 @@
 translated (they are read and written in the Emacs internal character
 code).
 
-@node Specify Coding
-@section Specifying a Coding System
+@node Text Coding
+@section Specifying a Coding System for File Text
 
   In cases where Emacs does not automatically choose the right coding
-system, you can use these commands to specify one:
+system for a file's contents, you can use these commands to specify
+one:
 
 @table @kbd
 @item C-x @key{RET} f @var{coding} @key{RET}
@@ -919,32 +926,9 @@
 @item C-x @key{RET} r @var{coding} @key{RET}
 Revisit the current file using the coding system @var{coding}.
 
-@item C-x @key{RET} k @var{coding} @key{RET}
-Use coding system @var{coding} for keyboard input.
-
-@item C-x @key{RET} t @var{coding} @key{RET}
-Use coding system @var{coding} for terminal output.
-
-@item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
-Use coding systems @var{input-coding} and @var{output-coding} for
-subprocess input and output in the current buffer.
-
-@item C-x @key{RET} x @var{coding} @key{RET}
-Use coding system @var{coding} for transferring selections to and from
-other programs through the window system.
-
-@item C-x @key{RET} F @var{coding} @key{RET}
-Use coding system @var{coding} for encoding and decoding file
-@emph{names}.  This affects the use of non-ASCII characters in file
-names.  It has no effect on reading and writing the @emph{contents} of
-files.
-
-@item C-x @key{RET} X @var{coding} @key{RET}
-Use coding system @var{coding} for transferring @emph{one}
-selection---the next one---to or from the window system.
-
-@item M-x recode-region
-Convert the region from a previous coding system to a new one.
+@item M-x recode-region @key{RET} @var{right} @key{RET} @var{wrong} @key{RET}
+Convert a region that was decoded using coding system @var{wrong},
+decoding it using coding system @var{right} instead.
 @end table
 
 @kindex C-x RET f
@@ -978,10 +962,9 @@
   Other file commands affected by a specified coding system include
 @kbd{C-x C-i} and @kbd{C-x C-v}, as well as the other-window variants
 of @kbd{C-x C-f}.  @kbd{C-x @key{RET} c} also affects commands that
-start subprocesses, including @kbd{M-x shell} (@pxref{Shell}).
-
-  If the immediately following command does not use the coding system,
-then @kbd{C-x @key{RET} c} ultimately has no effect.
+start subprocesses, including @kbd{M-x shell} (@pxref{Shell}).  If the
+immediately following command does not use the coding system, then
+@kbd{C-x @key{RET} c} ultimately has no effect.
 
   An easy way to visit a file with no conversion is with the @kbd{M-x
 find-file-literally} command.  @xref{Visiting}.
@@ -1000,6 +983,136 @@
 with @kbd{C-x @key{RET} r} (@code{revert-buffer-with-coding-system}).
 This visits the current file again, using a coding system you specify.
 
+@findex recode-region
+  If a piece of text has already been inserted into a buffer using the
+wrong coding system, you can redo the decoding of it using @kbd{M-x
+recode-region}.  This prompts you for the proper coding system, then
+for the wrong coding system that was actually used, and does the
+conversion.  It first encodes the region using the wrong coding system,
+then decodes it again using the proper coding system.
+
+@node Communication Coding
+@section Coding Systems for Interprocess Communication
+
+  This section explains how to specify coding systems for use
+in communication with other processes.
+
+@table @kbd
+@item C-x @key{RET} x @var{coding} @key{RET}
+Use coding system @var{coding} for transferring selections to and from
+other programs through the window system.
+
+@item C-x @key{RET} X @var{coding} @key{RET}
+Use coding system @var{coding} for transferring @emph{one}
+selection---the next one---to or from the window system.
+
+@item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
+Use coding systems @var{input-coding} and @var{output-coding} for
+subprocess input and output in the current buffer.
+
+@item C-x @key{RET} c @var{coding} @key{RET}
+Specify coding system @var{coding} for the immediately following
+command.
+@end table
+
+@kindex C-x RET x
+@kindex C-x RET X
+@findex set-selection-coding-system
+@findex set-next-selection-coding-system
+  The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system})
+specifies the coding system for sending selected text to other windowing
+applications, and for receiving the text of selections made in other
+applications.  This command applies to all subsequent selections, until
+you override it by using the command again.  The command @kbd{C-x
+@key{RET} X} (@code{set-next-selection-coding-system}) specifies the
+coding system for the next selection made in Emacs or read by Emacs.
+
+@kindex C-x RET p
+@findex set-buffer-process-coding-system
+  The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
+specifies the coding system for input and output to a subprocess.  This
+command applies to the current buffer; normally, each subprocess has its
+own buffer, and thus you can use this command to specify translation to
+and from a particular subprocess by giving the command in the
+corresponding buffer.
+
+  You can also use @kbd{C-x @key{RET} c} just before the command that
+runs or starts a subprocess, to specify the coding system to use for
+communication with that subprocess.
+
+  The default for translation of process input and output depends on the
+current language environment.
+
+@vindex locale-coding-system
+@cindex decoding non-@acronym{ASCII} keyboard input on X
+  The variable @code{locale-coding-system} specifies a coding system
+to use when encoding and decoding system strings such as system error
+messages and @code{format-time-string} formats and time stamps.  That
+coding system is also used for decoding non-@acronym{ASCII} keyboard input on X
+Window systems.  You should choose a coding system that is compatible
+with the underlying system's text representation, which is normally
+specified by one of the environment variables @env{LC_ALL},
+@env{LC_CTYPE}, and @env{LANG}.  (The first one, in the order
+specified above, whose value is nonempty is the one that determines
+the text representation.)
+
+@node File Name Coding
+@section Coding Systems for File Names
+
+@table @kbd
+@item C-x @key{RET} F @var{coding} @key{RET}
+Use coding system @var{coding} for encoding and decoding file
+@emph{names}.
+@end table
+
+@vindex file-name-coding-system
+@cindex file names with non-@acronym{ASCII} characters
+  The variable @code{file-name-coding-system} specifies a coding
+system to use for encoding file names.  It has no effect on reading
+and writing the @emph{contents} of files.
+
+@findex set-file-name-coding-system
+@kindex C-x @key{RET} F
+  If you set the variable to a coding system name (as a Lisp symbol or
+a string), Emacs encodes file names using that coding system for all
+file operations.  This makes it possible to use non-@acronym{ASCII}
+characters in file names---or, at least, those non-@acronym{ASCII}
+characters which the specified coding system can encode.  Use @kbd{C-x
+@key{RET} F} (@code{set-file-name-coding-system}) to specify this
+interactively.
+
+  If @code{file-name-coding-system} is @code{nil}, Emacs uses a
+default coding system determined by the selected language environment.
+In the default language environment, any non-@acronym{ASCII}
+characters in file names are not encoded specially; they appear in the
+file system using the internal Emacs representation.
+
+  @strong{Warning:} if you change @code{file-name-coding-system} (or the
+language environment) in the middle of an Emacs session, problems can
+result if you have already visited files whose names were encoded using
+the earlier coding system and cannot be encoded (or are encoded
+differently) under the new coding system.  If you try to save one of
+these buffers under the visited file name, saving may use the wrong file
+name, or it may get an error.  If such a problem happens, use @kbd{C-x
+C-w} to specify a new file name for that buffer.
+
+@findex recode-file-name
+  If a mistake occurs when encoding a file name, use the command
+@kbd{M-x recode-file-name} to change the file name's coding
+system.  This prompts for an existing file name, its old coding
+system, and the coding system to which you wish to convert.
+
+@node Terminal Coding
+@section Coding Systems for Terminal I/O
+
+@table @kbd
+@item C-x @key{RET} k @var{coding} @key{RET}
+Use coding system @var{coding} for keyboard input.
+
+@item C-x @key{RET} t @var{coding} @key{RET}
+Use coding system @var{coding} for terminal output.
+@end table
+
 @kindex C-x RET t
 @findex set-terminal-coding-system
   The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
@@ -1049,92 +1162,15 @@
 printing characters.  Coding systems typically translate sequences of
 non-graphic characters.
 
-@kindex C-x RET x
-@kindex C-x RET X
-@findex set-selection-coding-system
-@findex set-next-selection-coding-system
-  The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system})
-specifies the coding system for sending selected text to the window
-system, and for receiving the text of selections made in other
-applications.  This command applies to all subsequent selections, until
-you override it by using the command again.  The command @kbd{C-x
-@key{RET} X} (@code{set-next-selection-coding-system}) specifies the
-coding system for the next selection made in Emacs or read by Emacs.
-
-@kindex C-x RET p
-@findex set-buffer-process-coding-system
-  The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
-specifies the coding system for input and output to a subprocess.  This
-command applies to the current buffer; normally, each subprocess has its
-own buffer, and thus you can use this command to specify translation to
-and from a particular subprocess by giving the command in the
-corresponding buffer.
-
-  The default for translation of process input and output depends on the
-current language environment.
-
-@findex recode-region
-  If a piece of text has already been inserted into a buffer using the
-wrong coding system, you can decode it again using @kbd{M-x
-recode-region}.  This prompts you for the old coding system and the
-desired coding system, and acts on the text in the region.
-
-@vindex file-name-coding-system
-@cindex file names with non-@acronym{ASCII} characters
-@findex set-file-name-coding-system
-@kindex C-x @key{RET} F
-  The variable @code{file-name-coding-system} specifies a coding
-system to use for encoding file names.  If you set the variable to a
-coding system name (as a Lisp symbol or a string), Emacs encodes file
-names using that coding system for all file operations.  This makes it
-possible to use non-@acronym{ASCII} characters in file names---or, at
-least, those non-@acronym{ASCII} characters which the specified coding
-system can encode.  Use @kbd{C-x @key{RET} F}
-(@code{set-file-name-coding-system}) to specify this interactively.
-
-  If @code{file-name-coding-system} is @code{nil}, Emacs uses a default
-coding system determined by the selected language environment.  In the
-default language environment, any non-@acronym{ASCII} characters in file names are
-not encoded specially; they appear in the file system using the internal
-Emacs representation.
-
-  @strong{Warning:} if you change @code{file-name-coding-system} (or the
-language environment) in the middle of an Emacs session, problems can
-result if you have already visited files whose names were encoded using
-the earlier coding system and cannot be encoded (or are encoded
-differently) under the new coding system.  If you try to save one of
-these buffers under the visited file name, saving may use the wrong file
-name, or it may get an error.  If such a problem happens, use @kbd{C-x
-C-w} to specify a new file name for that buffer.
-
-@findex recode-file-name
-  If a mistake occurs when encoding a file name, use the command
-@kbd{M-x recode-file-name} to change the file name's coding
-system.  This prompts for an existing file name, its old coding
-system, and the coding system to which you wish to convert.
-
-@vindex locale-coding-system
-@cindex decoding non-@acronym{ASCII} keyboard input on X
-  The variable @code{locale-coding-system} specifies a coding system
-to use when encoding and decoding system strings such as system error
-messages and @code{format-time-string} formats and time stamps.  That
-coding system is also used for decoding non-@acronym{ASCII} keyboard input on X
-Window systems.  You should choose a coding system that is compatible
-with the underlying system's text representation, which is normally
-specified by one of the environment variables @env{LC_ALL},
-@env{LC_CTYPE}, and @env{LANG}.  (The first one, in the order
-specified above, whose value is nonempty is the one that determines
-the text representation.)
-
 @node Fontsets
 @section Fontsets
 @cindex fontsets
 
-  A font for X typically defines shapes for a single alphabet or script.
-Therefore, displaying the entire range of scripts that Emacs supports
-requires a collection of many fonts.  In Emacs, such a collection is
-called a @dfn{fontset}.  A fontset is defined by a list of fonts, each
-assigned to handle a range of character codes.
+  A font for X Windows typically defines shapes for a single alphabet
+or script.  Therefore, displaying the entire range of scripts that
+Emacs supports requires a collection of many fonts.  In Emacs, such a
+collection is called a @dfn{fontset}.  A fontset is defined by a list
+of fonts, each assigned to handle a range of character codes.
 
   Each fontset has a name, like a font.  The available X fonts are
 defined by the X server; fontsets, however, are defined within Emacs
@@ -1148,11 +1184,11 @@
 
   Emacs creates two fontsets automatically: the @dfn{standard fontset}
 and the @dfn{startup fontset}.  The standard fontset is most likely to
-have fonts for a wide variety of non-@acronym{ASCII} characters; however, this is
-not the default for Emacs to use.  (By default, Emacs tries to find a
-font that has bold and italic variants.)  You can specify use of the
-standard fontset with the @samp{-fn} option, or with the @samp{Font} X
-resource (@pxref{Font X}).  For example,
+have fonts for a wide variety of non-@acronym{ASCII} characters;
+however, this is not the default for Emacs to use.  (By default, Emacs
+tries to find a font that has bold and italic variants.)  You can
+specify use of the standard fontset with the @samp{-fn} option, or
+with the @samp{Font} X resource (@pxref{Font X}).  For example,
 
 @example
 emacs -fn fontset-standard
@@ -1295,13 +1331,13 @@
 @section Undisplayable Characters
 
   There may be a some non-@acronym{ASCII} characters that your terminal cannot
-display.  Most non-windowing terminals support just a single character
+display.  Most text-only terminals support just a single character
 set (use the variable @code{default-terminal-coding-system}
-(@pxref{Specify Coding}) to tell Emacs which one); characters which
+(@pxref{Terminal Coding}) to tell Emacs which one); characters which
 can't be encoded in that coding system are displayed as @samp{?} by
 default.
 
-  Windowing terminals can display a broader range of characters, but
+  Graphical displays can display a broader range of characters, but
 you may not have fonts installed for all of them; characters that have
 no font appear as a hollow box.
 
@@ -1335,8 +1371,8 @@
 
   For more information about unibyte operation, see @ref{Enabling
 Multibyte}.  Note particularly that you probably want to ensure that
-your initialization files are read as unibyte if they contain non-@acronym{ASCII}
-characters.
+your initialization files are read as unibyte if they contain
+non-@acronym{ASCII} characters.
 
 @vindex unibyte-display-via-language-environment
   Emacs can also display those characters, provided the terminal or font
@@ -1377,11 +1413,11 @@
 representing non-@acronym{ASCII} characters, you can type those character codes
 directly.
 
-On a window system, you should not need to do anything special to use
+On a graphical display, you should not need to do anything special to use
 these keys; they should simply work.  On a text-only terminal, you
 should use the command @code{M-x set-keyboard-coding-system} or the
 variable @code{keyboard-coding-system} to specify which coding system
-your keyboard uses (@pxref{Specify Coding}).  Enabling this feature
+your keyboard uses (@pxref{Terminal Coding}).  Enabling this feature
 will probably require you to use @kbd{ESC} to type Meta characters;
 however, on a console terminal or in @code{xterm}, you can arrange for
 Meta to be converted to @kbd{ESC} and still be able type 8-bit
@@ -1417,11 +1453,11 @@
   Emacs groups all supported characters into disjoint @dfn{charsets}.
 Each character code belongs to one and only one charset.  For
 historical reasons, Emacs typically divides an 8-bit character code
-for an extended version of @acronym{ASCII} into two charsets: @acronym{ASCII}, which
-covers the codes 0 through 127, plus another charset which covers the
-``right-hand part'' (the codes 128 and up).  For instance, the
-characters of Latin-1 include the Emacs charset @code{ascii} plus the
-Emacs charset @code{latin-iso8859-1}.
+for an extended version of @acronym{ASCII} into two charsets:
+@acronym{ASCII}, which covers the codes 0 through 127, plus another
+charset which covers the ``right-hand part'' (the codes 128 and up).
+For instance, the characters of Latin-1 include the Emacs charset
+@code{ascii} plus the Emacs charset @code{latin-iso8859-1}.
 
   Emacs characters belonging to different charsets may look the same,
 but they are still different characters.  For example, the letter
--- a/man/windows.texi	Fri Feb 03 07:38:00 2006 +0000
+++ b/man/windows.texi	Sat Feb 04 01:01:38 2006 +0000
@@ -29,24 +29,24 @@
 
   Each Emacs window displays one Emacs buffer at any time.  A single
 buffer may appear in more than one window; if it does, any changes in
-its text are displayed in all the windows where it appears.  But the
-windows showing the same buffer can show different parts of it, because
-each window has its own value of point.
+its text are displayed in all the windows where it appears.  But these
+windows can show different parts of the buffer, because each window
+has its own value of point.
 
 @cindex selected window
-  At any time, one of the windows is the @dfn{selected window}; the
+  At any time, one Emacs window is the @dfn{selected window}; the
 buffer this window is displaying is the current buffer.  The terminal's
 cursor shows the location of point in this window.  Each other window
 has a location of point as well.  On text-only terminals, there is no
 way to show where those locations are, since the terminal has only one
-cursor.  If you are using a window system, the location of point in a
-non-selected window is indicated by a hollow box.  The cursor in the
+cursor.  On a graphical display, the location of point in a
+non-selected window is indicated by a hollow box; the cursor in the
 selected window is blinking or solid.
 
   Commands to move point affect the value of point for the selected Emacs
-window only.  They do not change the value of point in any other Emacs
-window, even one showing the same buffer.  The same is true for commands
-such as @kbd{C-x b} to change the current buffer in the selected window;
+window only.  They do not change the value of point in other Emacs
+windows, even those showing the same buffer.  The same is true for commands
+such as @kbd{C-x b} to switch buffers in the selected window;
 they do not affect other windows at all.  However, there are other commands
 such as @kbd{C-x 4 b} that select a different window and switch buffers in
 it.  Also, all commands that display information in a window, including
@@ -129,8 +129,7 @@
 avoid scrolling the text currently visible on the screen, by putting
 point in each window at a position already visible in the window.  It
 also selects whichever window contains the screen line that the cursor
-was previously on.  Some users prefer the latter mode on slow
-terminals.
+was previously on.  Some users prefer that mode on slow terminals.
 
 @node Other Window
 @section Using Other Windows
@@ -283,17 +282,6 @@
 (@code{shrink-window-if-larger-than-buffer}).
 @item C-x +
 Make all windows the same height (@code{balance-windows}).
-@item Drag-Mouse-1
-Dragging a window's mode line up or down with @kbd{Mouse-1} changes
-window heights.
-@item Mouse-2
-@kbd{Mouse-2} in a window's mode line deletes all other windows in the frame
-(@code{mouse-delete-other-windows}).
-@item Mouse-3
-@kbd{Mouse-3} in a window's mode line deletes that window
-(@code{mouse-delete-window}), unless the frame has only one window, in
-which case it buries the current buffer instead and switches to another
-buffer.
 @end table
 
 @kindex C-x 0
@@ -320,19 +308,6 @@
 the minibuffer); the selected window expands to use the whole frame
 except for the echo area.
 
-  You can also delete a window by clicking on its mode line with
-@kbd{Mouse-3}, and delete all the windows in a frame except one window
-by clicking on that window's mode line with @kbd{Mouse-2}.
-
-  You can also adjust window heights and widths with the mouse.  If
-you press @kbd{Mouse-1} on a mode line, you can drag that mode line up
-or down, changing the heights of the windows above and below it.  If
-you press it on the divider between two consecutive mode lines, you
-can drag that divider right or left, changing the widths of the
-windows to either side.  Note that changing heights and widths with
-the mouse never deletes windows, it just refuses to make any window
-smaller than it can be.
-
 @kindex C-x ^
 @findex enlarge-window
 @kindex C-x @}
@@ -341,7 +316,7 @@
 @vindex window-min-width
   To readjust the division of space among vertically adjacent windows,
 use @kbd{C-x ^} (@code{enlarge-window}).  It makes the currently
-selected window get one line bigger, or as many lines as is specified
+selected window one line bigger, or as many lines as is specified
 with a numeric argument.  With a negative argument, it makes the
 selected window smaller.  @kbd{C-x @}}
 (@code{enlarge-window-horizontally}) makes the selected window wider by
@@ -349,10 +324,10 @@
 (@code{shrink-window-horizontally}) makes the selected window narrower
 by the specified number of columns.
 
-  When you make a window bigger, the space comes from one of its
-neighbors.  If this makes any window too small, it is deleted and its
-space is given to an adjacent window.  The minimum size is specified by
-the variables @code{window-min-height} and @code{window-min-width}.
+  When you make a window bigger, the space comes from its peers.  If
+this makes any window too small, it is deleted and its space is given
+to an adjacent window.  The minimum size is specified by the variables
+@code{window-min-height} and @code{window-min-width}.
 
 @kindex C-x -
 @findex shrink-window-if-larger-than-buffer
@@ -366,6 +341,9 @@
   You can also use @kbd{C-x +} (@code{balance-windows}) to even out the
 heights of all the windows in the selected frame.
 
+  Mouse clicks on the mode line provide another way to change window
+heights and to delete windows.  @xref{Mode Line Mouse}.
+
 @node Window Convenience
 @section Window Handling Convenience Features and Customization
 
--- a/src/ChangeLog	Fri Feb 03 07:38:00 2006 +0000
+++ b/src/ChangeLog	Sat Feb 04 01:01:38 2006 +0000
@@ -1,3 +1,19 @@
+2006-02-03  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c: Cache last merged escape glyph face.
+	(last_escape_glyph_frame, last_escape_glyph_face_id)
+	(last_escape_glyph_merged_face_id): New variables.
+	(get_next_display_element): Use/update them.
+	(redisplay_internal): Reset them before redisplay.
+
+	* xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix.
+	Only recheck faces after displaying ellipsis.
+
+2006-02-02  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (decode_composition_emacs_mule): Fix handling of
+	incorrect format data.
+
 2006-01-31  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* gtkutil.c (update_frame_tool_bar): Use new tool bar functions
--- a/src/coding.c	Fri Feb 03 07:38:00 2006 +0000
+++ b/src/coding.c	Sat Feb 04 01:01:38 2006 +0000
@@ -1039,7 +1039,7 @@
       make_gap (bytes);
       GAP_SIZE += add; ZV -= add; Z -= add; ZV_BYTE -= add; Z_BYTE -= add;
     }
-  else
+  else if (c >= 0x80)
     {
       Lisp_Object this_buffer;
 
@@ -1308,6 +1308,8 @@
       *charbuf++ = ASCII_BYTE_P (c) ? c : BYTE8_TO_CHAR (c);
       coding->errors++;
     }
+  else
+    return 0;
 
  no_more_source:
   coding->consumed_char += consumed_chars_base;
--- a/src/xdisp.c	Fri Feb 03 07:38:00 2006 +0000
+++ b/src/xdisp.c	Sat Feb 04 01:01:38 2006 +0000
@@ -5425,6 +5425,10 @@
    display element from the current position of IT.  Value is zero if
    end of buffer (or C string) is reached.  */
 
+static struct frame *last_escape_glyph_frame = NULL;
+static unsigned last_escape_glyph_face_id = (1 << FACE_ID_BITS);
+static int last_escape_glyph_merged_face_id = 0;
+
 int
 get_next_display_element (it)
      struct it *it;
@@ -5536,11 +5540,19 @@
 		       face_id = merge_faces (it->f, Qt, lface_id,
 					      it->face_id);
 		    }
+		  else if (it->f == last_escape_glyph_frame
+			   && it->face_id == last_escape_glyph_face_id)
+		    {
+		      face_id = last_escape_glyph_merged_face_id;
+		    }
 		  else
 		    {
 		      /* Merge the escape-glyph face into the current face.  */
 		      face_id = merge_faces (it->f, Qescape_glyph, 0,
 					     it->face_id);
+		      last_escape_glyph_frame = it->f;
+		      last_escape_glyph_face_id = it->face_id;
+		      last_escape_glyph_merged_face_id = face_id;
 		    }
 
 		  XSETINT (it->ctl_chars[0], g);
@@ -5586,11 +5598,19 @@
 		  face_id = merge_faces (it->f, Qt, lface_id,
 					 it->face_id);
 		}
+	      else if (it->f == last_escape_glyph_frame
+		       && it->face_id == last_escape_glyph_face_id)
+		{
+		  face_id = last_escape_glyph_merged_face_id;
+		}
 	      else
 		{
 		  /* Merge the escape-glyph face into the current face.  */
 		  face_id = merge_faces (it->f, Qescape_glyph, 0,
 					 it->face_id);
+		  last_escape_glyph_frame = it->f;
+		  last_escape_glyph_face_id = it->face_id;
+		  last_escape_glyph_merged_face_id = face_id;
 		}
 
 	      /* Handle soft hyphens in the mode where they only get
@@ -5788,6 +5808,8 @@
 
       if (it->dpvec + it->current.dpvec_index == it->dpend)
 	{
+	  int recheck_faces = it->ellipsis_p;
+
 	  if (it->s)
 	    it->method = GET_FROM_C_STRING;
 	  else if (STRINGP (it->string))
@@ -5810,8 +5832,9 @@
 	      set_iterator_to_next (it, reseat_p);
 	    }
 
-	  /* Recheck faces after display vector */
-	  it->stop_charpos = IT_CHARPOS (*it);
+	  /* Maybe recheck faces after display vector */
+	  if (recheck_faces)
+	    it->stop_charpos = IT_CHARPOS (*it);
 	}
       break;
 
@@ -10651,6 +10674,8 @@
  retry:
   pause = 0;
   reconsider_clip_changes (w, current_buffer);
+  last_escape_glyph_frame = NULL;
+  last_escape_glyph_face_id = (1 << FACE_ID_BITS);
 
   /* If new fonts have been loaded that make a glyph matrix adjustment
      necessary, do it.  */