changeset 85688:b210bba3f477

Merge from emacs--rel--22 Patches applied: * emacs--rel--22 (patch 131-137) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 261-262) - Update from CVS Revision: emacs@sv.gnu.org/emacs--devo--0--patch-908
author Miles Bader <miles@gnu.org>
date Sat, 27 Oct 2007 09:07:17 +0000
parents 666ace46440f (current diff) b1530fa7fbb0 (diff)
children f72f7930bbb5 4bc33ffdda1a
files doc/emacs/ChangeLog doc/emacs/misc.texi doc/lispref/ChangeLog doc/lispref/elisp.texi doc/lispref/frames.texi doc/lispref/functions.texi doc/lispref/loading.texi doc/lispref/os.texi doc/lispref/variables.texi etc/ChangeLog etc/NEWS.22 etc/PROBLEMS leim/ChangeLog lib-src/ChangeLog lib-src/emacsclient.c lisp/ChangeLog lisp/ChangeLog.12 lisp/bs.el lisp/cus-edit.el lisp/emulation/tpu-edt.el lisp/gnus/ChangeLog lisp/gnus/gnus.el lisp/gnus/html2text.el lisp/indent.el lisp/loadhist.el lisp/menu-bar.el lisp/progmodes/f90.el lisp/progmodes/fortran.el lisp/savehist.el lisp/subr.el lisp/textmodes/css-mode.el lisp/textmodes/tex-mode.el src/ChangeLog src/eval.c src/frame.c src/keyboard.c src/print.c
diffstat 41 files changed, 574 insertions(+), 435 deletions(-) [+]
line wrap: on
line diff
--- a/doc/emacs/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/emacs/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -2,6 +2,10 @@
 
 	* fortran-xtra.texi (Fortran): F90 mode handles F2003.
 
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+	* misc.texi (Interactive Shell): Cleanup last change.
+
 2007-10-22  Juri Linkov  <juri@jurta.org>
 
 	* mini.texi (Minibuffer History): Add text about a list of minibuffer
--- a/doc/emacs/misc.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/emacs/misc.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -488,8 +488,8 @@
 Coding}.
 
 @cindex @env{INSIDE_EMACS} environment variable
-  Emacs sets the environment variable @env{INSIDE_EMACS} (to a
-comma-separated list including the Emacs version) in the subshell.
+  Emacs sets the environment variable @env{INSIDE_EMACS} in the
+subshell to a comma-separated list including the Emacs version.
 Programs can check this variable to determine whether they are running
 inside an Emacs subshell.
 
--- a/doc/lispref/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -8,6 +8,22 @@
 
 	* customize.texi (Variable Definitions): Add :risky and :safe keywords.
 
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+	* elisp.texi (Top): Delete Frame-Local Variables from subnode menu.
+
+	* variables.texi (Frame-Local Variables): Node deleted.
+	(Variables): Delete Frame-Local Variables from menu.
+	(Local Variables, Buffer-Local Variables, Intro to Buffer-Local)
+	(Default Value): Don't mention frame-local vars.
+
+	* os.texi (Idle Timers): current-idle-time returns nil if not idle.
+
+	* loading.texi (Unloading): Document FEATURE-unload-function
+	instead of FEATURE-unload-hook.
+
+	* frames.texi (Multiple Displays): Don't mention frame-local vars.
+
 2007-10-22  Juri Linkov  <juri@jurta.org>
 
 	* minibuf.texi (Text from Minibuffer, Minibuffer Completion)
--- a/doc/lispref/elisp.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/elisp.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -421,7 +421,6 @@
 * Setting Variables::       Storing new values in variables.
 * Variable Scoping::        How Lisp chooses among local and global values.
 * Buffer-Local Variables::  Variable values in effect only in one buffer.
-* Frame-Local Variables::   Variable values in effect only in one frame.
 * Future Local Variables::  New kinds of local values we might add some day.
 * File Local Variables::    Handling local variable lists in files.
 * Variable Aliases::        Variables that are aliases for other variables.
--- a/doc/lispref/frames.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/frames.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -141,7 +141,7 @@
 to.  These variables include @code{default-minibuffer-frame},
 @code{defining-kbd-macro}, @code{last-kbd-macro}, and
 @code{system-key-alist}.  They are always terminal-local, and can never
-be buffer-local (@pxref{Buffer-Local Variables}) or frame-local.
+be buffer-local (@pxref{Buffer-Local Variables}).
 
   A single X server can handle more than one screen.  A display name
 @samp{@var{host}:@var{server}.@var{screen}} has three parts; the last
--- a/doc/lispref/functions.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/functions.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -1326,6 +1326,9 @@
 @item call-interactively
 See @ref{Interactive Call}.
 
+@item called-interactively-p
+See @ref{Distinguish Interactive}.
+
 @item commandp
 See @ref{Interactive Call}.
 
@@ -1351,7 +1354,7 @@
 See @ref{Using Interactive}.
 
 @item interactive-p
-See @ref{Interactive Call}.
+See @ref{Distinguish Interactive}.
 
 @item mapatoms
 See @ref{Creating Symbols}.
--- a/doc/lispref/loading.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/loading.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -862,24 +862,27 @@
 It then restores any autoloads formerly associated with those symbols.
 (Loading saves these in the @code{autoload} property of the symbol.)
 
-@vindex unload-feature-special-hooks
 Before restoring the previous definitions, @code{unload-feature} runs
 @code{remove-hook} to remove functions in the library from certain
 hooks.  These hooks include variables whose names end in @samp{hook}
 or @samp{-hooks}, plus those listed in
-@code{unload-feature-special-hooks}.  This is to prevent Emacs from
-ceasing to function because important hooks refer to functions that
-are no longer defined.
+@code{unload-feature-special-hooks}, as well as
+@code{auto-mode-alist}.  This is to prevent Emacs from ceasing to
+function because important hooks refer to functions that are no longer
+defined.
 
-@vindex @var{feature}-unload-hook
+Standard unloading activities also undoes ELP profiling of functions
+in that library, unprovides any features provided by the library, and
+cancels timers held in variables defined by the library.
+
+@vindex @var{feature}-unload-function
 If these measures are not sufficient to prevent malfunction, a library
-can define an explicit unload hook.  If @code{@var{feature}-unload-hook}
-is defined, it is run as a normal hook before restoring the previous
-definitions, @emph{instead of} the usual hook-removing actions.  The
-unload hook ought to undo all the global state changes made by the
-library that might cease to work once the library is unloaded.
-@code{unload-feature} can cause problems with libraries that fail to do
-this, so it should be used with caution.
+can define an explicit unloader named @code{@var{feature}-unload-function}.
+If that symbol is defined as a function, @code{unload-feature} calls
+it with no arguments before doing anything else.  It can do whatever
+is appropriate to unload the library.  If it returns @code{nil},
+@code{unload-feature} proceeds to take the normal unload actions.
+Otherwise it considers the job to be done.
 
 Ordinarily, @code{unload-feature} refuses to unload a library on which
 other loaded libraries depend.  (A library @var{a} depends on library
--- a/doc/lispref/os.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/os.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -1561,10 +1561,10 @@
 
 @c Emacs 19 feature
 @defun current-idle-time
-This function returns the length of time Emacs has been idle, as a
-list of three integers: @code{(@var{high} @var{low} @var{microsec})}.
-The integers @var{high} and @var{low} combine to give the number of
-seconds of idleness, which is
+If Emacs is idle, this function returns the length of time Emacs has
+been idle, as a list of three integers: @code{(@var{high} @var{low}
+@var{microsec})}.  The integers @var{high} and @var{low} combine to
+give the number of seconds of idleness, which is
 @ifnottex
 @var{high} * 2**16 + @var{low}.
 @end ifnottex
@@ -1576,6 +1576,9 @@
 start of the current second (or 0 for systems that return time with
 the resolution of only one second).
 
+When Emacs is not idle, @code{current-idle-time} returns @code{nil}.
+This is a convenient way to test whether Emacs is idle.
+
 The main use of this function is when an idle timer function wants to
 ``take a break'' for a while.  It can set up another idle timer to
 call the same function again, after a few seconds more idleness.
--- a/doc/lispref/variables.texi	Sat Oct 27 00:25:43 2007 +0000
+++ b/doc/lispref/variables.texi	Sat Oct 27 09:07:17 2007 +0000
@@ -39,7 +39,6 @@
 * Setting Variables::     Storing new values in variables.
 * Variable Scoping::      How Lisp chooses among local and global values.
 * Buffer-Local Variables::  Variable values in effect only in one buffer.
-* Frame-Local Variables::   Variable values in effect only in one frame.
 * Future Local Variables::  New kinds of local values we might add some day.
 * File Local Variables::  Handling local variable lists in files.
 * Variable Aliases::      Variables that are aliases for other variables.
@@ -255,11 +254,10 @@
 @end itemize
 
   Variables can also have buffer-local bindings (@pxref{Buffer-Local
-Variables}) and frame-local bindings (@pxref{Frame-Local Variables}); a
-few variables have terminal-local bindings (@pxref{Multiple Displays}).
-These kinds of bindings work somewhat like ordinary local bindings, but
-they are localized depending on ``where'' you are in Emacs, rather than
-localized in time.
+Variables}); a few variables have terminal-local bindings
+(@pxref{Multiple Displays}).  These kinds of bindings work somewhat
+like ordinary local bindings, but they are localized depending on
+``where'' you are in Emacs, rather than localized in time.
 
 @defvar max-specpdl-size
 @anchor{Definition of max-specpdl-size}
@@ -1085,16 +1083,12 @@
 @cindex buffer-local variables
 
   Global and local variable bindings are found in most programming
-languages in one form or another.  Emacs, however, also supports additional,
-unusual kinds of variable binding: @dfn{buffer-local} bindings, which
-apply only in one buffer, and @dfn{frame-local} bindings, which apply only in
-one frame.  Having different values for a variable in different buffers
-and/or frames is an important customization method.
-
-  This section describes buffer-local bindings; for frame-local
-bindings, see the following section, @ref{Frame-Local Variables}.  (A few
-variables have bindings that are local to each terminal; see
-@ref{Multiple Displays}.)
+languages in one form or another.  Emacs, however, also supports
+additional, unusual kinds of variable binding, such as
+@dfn{buffer-local} bindings, which apply only in one buffer.  Having
+different values for a variable in different buffers is an important
+customization method.  (A few variables have bindings that are local
+to each terminal; see @ref{Multiple Displays}.)
 
 @menu
 * Intro to Buffer-Local::      Introduction and concepts.
@@ -1121,8 +1115,7 @@
 other buffers.  The default binding is shared by all the buffers that
 don't have their own bindings for the variable.  (This includes all
 newly-created buffers.)  If you set the variable in a buffer that does
-not have a buffer-local binding for it, this sets the default binding
-(assuming there are no frame-local bindings to complicate the matter),
+not have a buffer-local binding for it, this sets the default binding,
 so the new value is visible in all the buffers that see the default
 binding.
 
@@ -1153,11 +1146,11 @@
 be changed with @code{setq} in any buffer; the only way to change it is
 with @code{setq-default}.
 
-  @strong{Warning:} When a variable has buffer-local or frame-local
+  @strong{Warning:} When a variable has buffer-local
 bindings in one or more buffers, @code{let} rebinds the binding that's
 currently in effect.  For instance, if the current buffer has a
 buffer-local value, @code{let} temporarily rebinds that.  If no
-buffer-local or frame-local bindings are in effect, @code{let} rebinds
+buffer-local bindings are in effect, @code{let} rebinds
 the default value.  If inside the @code{let} you then change to a
 different current buffer in which a different binding is in effect,
 you won't see the @code{let} binding any more.  And if you exit the
@@ -1421,7 +1414,7 @@
 @c Emacs 19 feature
   The special forms @code{defvar} and @code{defconst} also set the
 default value (if they set the variable at all), rather than any
-buffer-local or frame-local value.
+buffer-local value.
 
 @defun default-value symbol
 This function returns @var{symbol}'s default value.  This is the value
@@ -1520,112 +1513,6 @@
 @end example
 @end defun
 
-@node Frame-Local Variables
-@section Frame-Local Variables
-@cindex frame-local variables
-
-  Just as variables can have buffer-local bindings, they can also have
-frame-local bindings.  These bindings belong to one frame, and are in
-effect when that frame is selected.  Frame-local bindings are actually
-frame parameters: you create a frame-local binding in a specific frame
-by calling @code{modify-frame-parameters} and specifying the variable
-name as the parameter name.
-
-  To enable frame-local bindings for a certain variable, call the function
-@code{make-variable-frame-local}.
-
-@deffn Command make-variable-frame-local variable
-Enable the use of frame-local bindings for @var{variable}.  This does
-not in itself create any frame-local bindings for the variable; however,
-if some frame already has a value for @var{variable} as a frame
-parameter, that value automatically becomes a frame-local binding.
-
-If @var{variable} does not have a default value, then calling this
-command will give it a default value of @code{nil}.  If @var{variable}
-already has a default value, that value remains unchanged.
-
-If the variable is terminal-local, this function signals an error,
-because such variables cannot have frame-local bindings as well.
-@xref{Multiple Displays}.  A few variables that are implemented
-specially in Emacs can be buffer-local, but can never be frame-local.
-
-This command returns @var{variable}.
-@end deffn
-
-  Buffer-local bindings take precedence over frame-local bindings.  Thus,
-consider a variable @code{foo}: if the current buffer has a buffer-local
-binding for @code{foo}, that binding is active; otherwise, if the
-selected frame has a frame-local binding for @code{foo}, that binding is
-active; otherwise, the default binding of @code{foo} is active.
-
-  Here is an example.  First we prepare a few bindings for @code{foo}:
-
-@example
-(setq f1 (selected-frame))
-(make-variable-frame-local 'foo)
-
-;; @r{Make a buffer-local binding for @code{foo} in @samp{b1}.}
-(set-buffer (get-buffer-create "b1"))
-(make-local-variable 'foo)
-(setq foo '(b 1))
-
-;; @r{Make a frame-local binding for @code{foo} in a new frame.}
-;; @r{Store that frame in @code{f2}.}
-(setq f2 (make-frame))
-(modify-frame-parameters f2 '((foo . (f 2))))
-@end example
-
-  Now we examine @code{foo} in various contexts.  Whenever the
-buffer @samp{b1} is current, its buffer-local binding is in effect,
-regardless of the selected frame:
-
-@example
-(select-frame f1)
-(set-buffer (get-buffer-create "b1"))
-foo
-     @result{} (b 1)
-
-(select-frame f2)
-(set-buffer (get-buffer-create "b1"))
-foo
-     @result{} (b 1)
-@end example
-
-@noindent
-Otherwise, the frame gets a chance to provide the binding; when frame
-@code{f2} is selected, its frame-local binding is in effect:
-
-@example
-(select-frame f2)
-(set-buffer (get-buffer "*scratch*"))
-foo
-     @result{} (f 2)
-@end example
-
-@noindent
-When neither the current buffer nor the selected frame provides
-a binding, the default binding is used:
-
-@example
-(select-frame f1)
-(set-buffer (get-buffer "*scratch*"))
-foo
-     @result{} nil
-@end example
-
-@noindent
-When the active binding of a variable is a frame-local binding, setting
-the variable changes that binding.  You can observe the result with
-@code{frame-parameters}:
-
-@example
-(select-frame f2)
-(set-buffer (get-buffer "*scratch*"))
-(setq foo 'nobody)
-(assq 'foo (frame-parameters f2))
-     @result{} (foo . nobody)
-@end example
-
 @node Future Local Variables
 @section Possible Future Local Variables
 
--- a/etc/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/etc/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -3,6 +3,10 @@
 	* ses-example.ses: Get rid of silly life-universe-everything local
 	variable.  `symbolic-formulas' is now `ses--symbolic-formulas'.
 
+2007-10-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* NEWS: Mention desktop locking.
+
 2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
 
 	* NEWS: Explain the VC fileset changes a bit better.
--- a/etc/NEWS.22	Sat Oct 27 00:25:43 2007 +0000
+++ b/etc/NEWS.22	Sat Oct 27 09:07:17 2007 +0000
@@ -59,7 +59,7 @@
 special steps to use them. Emacs now has the appropriate resources linked
 in to make it use the scrollbars from the system theme.
 
-** focus-follows-mouse defaults to nil on MS Windows
+** focus-follows-mouse defaults to nil on MS Windows.
 Previously this variable was incorrectly documented as having no effect
 on MS Windows, and the default was inappropriate for the majority of
 Windows installations. Users of software which modifies the behaviour of
@@ -70,6 +70,13 @@
 was needed.  In text command mode, if you have problems before execution has
 started, use M-x gud-gdb.
 
+** desktop.el now detects conflicting uses of the desktop file.
+When loading the desktop, desktop.el can now detect that the file is already
+in use.  The default behavior is to ask the user what to do, but you can
+customize it with the new option `desktop-load-locked-desktop'.  When saving,
+desktop.el warns about attempts to overwrite a desktop file if it determines
+that the desktop being saved is not an update of the one on disk.
+
 * New Modes and Packages in Emacs 22.2
 
 ** bibtex-style-mode helps you write BibTeX's *.bst files.
@@ -97,6 +104,8 @@
 
 * Lisp Changes in Emacs 22.2.
 
+** Frame-local variables are deprecated and are slated for removal.
+   Use frame parameters instead.
 ** The function invisible-p returns non-nil if the character
 after a specified position is invisible.
 
--- a/etc/PROBLEMS	Sat Oct 27 00:25:43 2007 +0000
+++ b/etc/PROBLEMS	Sat Oct 27 09:07:17 2007 +0000
@@ -2200,12 +2200,9 @@
 of Windows. This is caused by a deficiency in the underlying system
 library function.
 
-The functions set-time-zone-rule, and display-time-world (which uses it)
-do not work on Windows. Fixing this is difficult, since Windows uses
-localtime for the system clock, and any attempt to change the timezone
-would have to be accompanied by a clock change for the results to remain
-consistent. The way in which these functions are used is not intended to
-cause such system-wide disruption.
+The function set-time-zone-rule gives incorrect results for many
+non-US timezones.  This is due to over-simplistic handling of
+daylight savings switchovers by the Windows libraries.
 
 Files larger than 4GB cause overflow in the size (represented as a
 32-bit integer) reported by `file-attributes'.  This affects Dired as
--- a/leim/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/leim/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -2,6 +2,11 @@
 
 	* quail/latin-ltx.el ("\\qed"): Add this rule.
 
+2007-10-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* quail/indian.el (quail-indian-update-preceding-char):
+	Don't mark the variable as frame-local; it wasn't used as such.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
 	* Relicense all FSF files to GPLv3 or later.
@@ -19,7 +24,7 @@
 2007-01-30  Kenichi Handa  <handa@m17n.org>
 
 	* CXTERM-DIC/CCDOSPY.tit, CXTERM-DIC/PY-b5.tit, CXTERM-DIC/SW.tit,
-	CXTERM-DIC/TONEPY.tit: Add copyright and license notices.
+	* CXTERM-DIC/TONEPY.tit: Add copyright and license notices.
 
 	* MISC-DIC/pinyin.map, MISC-DIC/ziranma.cin: Add copyright and
 	license notices.
@@ -31,8 +36,8 @@
 	* CXTERM-DIC/README: New file.
 
 	* CXTERM-DIC/4Corner.tit, CXTERM-DIC/CCDOSPY.tit,
-	CXTERM-DIC/PY-b5.tit, CXTERM-DIC/QJ-b5.tit, CXTERM-DIC/QJ.tit,
-	CXTERM-DIC/SW.tit, CXTERM-DIC/TONEPY.tit: Updated from
+	* CXTERM-DIC/PY-b5.tit, CXTERM-DIC/QJ-b5.tit, CXTERM-DIC/QJ.tit,
+	* CXTERM-DIC/SW.tit, CXTERM-DIC/TONEPY.tit: Updated from
 	X11R6/contrib/programs/cxterm.
 
 	* ja-dic/ja-dic.el: Regenerated.
--- a/leim/quail/indian.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/leim/quail/indian.el	Sat Oct 27 09:07:17 2007 +0000
@@ -47,13 +47,12 @@
       nil)))
 
 (defvar quail-indian-update-preceding-char nil)
-(make-variable-frame-local 'quail-indian-update-preceding-char)
 
 ;; Input value ::
 ;;   CONTROL-FLAG is integer `n'
 ;;     quail-current-key :: keyboard input.
 ;;                          Only first `n' can be translated.
-;;     quail-current-str :: corresonding string. 
+;;     quail-current-str :: corresonding string.
 ;;     jobs :: (1) put last (len-n) char to unrread-command-event.
 ;;             (2) put translated string to  quail-current-str.
 ;;
@@ -62,8 +61,8 @@
 ;;     quail-current-str :: corresponding string.
 ;;     jobs :: (1) put modified translated string to quail-current-str.
 ;;
-;; When non-nil value is returned from quail-translation-update-function, 
-;; the quail-current-str is split to characters and put into event queue, 
+;; When non-nil value is returned from quail-translation-update-function,
+;; the quail-current-str is split to characters and put into event queue,
 ;; with `compose-last-char' event with composition info at the end.
 
 (defun quail-indian-update-translation (control-flag)
@@ -79,7 +78,7 @@
   ;; Check the preceding character of the quail region.  If the
   ;; preceding character can be composed with quail-current-str, then
   ;; grab that preceding character into the quail-current-str and
-  ;; remove that char from the region.  
+  ;; remove that char from the region.
   (let* (prec-char-position composition-regexp
          prec-char-str candidate-str match-pos match-end)
     (when (and quail-current-str
@@ -103,9 +102,9 @@
       (setq quail-indian-update-preceding-char prec-char-str)
       (delete-region prec-char-position
                      (overlay-start quail-overlay))))
-  (setq quail-current-str 
+  (setq quail-current-str
         (indian-compose-string
-         (concat quail-indian-update-preceding-char 
+         (concat quail-indian-update-preceding-char
                  quail-current-str)))
   (if (numberp control-flag)
       (setq unread-command-events
--- a/lib-src/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/lib-src/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -8,6 +8,11 @@
 	(set_local_socket, set_socket, main): Use egetenv, not getenv.
 	(w32_get_resource, w32_getenv) [WINDOWSNT]: New functions.
 
+2007-10-25  Jason Rumney  <jasonr@gnu.org>
+
+	* emacsclient.c (sock_err_message): New function.
+	(set_tcp_socket): Use it.
+
 2007-10-09  Juanma Barranquero  <lekktu@gmail.com>
 
 	* emacsclient.c (print_help_and_exit): Fix space to improve
--- a/lib-src/emacsclient.c	Sat Oct 27 00:25:43 2007 +0000
+++ b/lib-src/emacsclient.c	Sat Oct 27 09:07:17 2007 +0000
@@ -666,6 +666,29 @@
 /* Socket used to communicate with the Emacs server process.  */
 HSOCKET emacs_socket = 0;
 
+/* On Windows, the socket library was historically separate from the standard
+   C library, so errors are handled differently.  */
+void
+sock_err_message (function_name)
+     char *function_name;
+{
+#ifdef WINDOWSNT
+  char* msg = NULL;
+
+  FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
+                 | FORMAT_MESSAGE_ALLOCATE_BUFFER
+                 | FORMAT_MESSAGE_ARGUMENT_ARRAY,
+                 NULL, WSAGetLastError (), 0, (LPTSTR)&msg, 0, NULL);
+
+  message (TRUE, "%s: %s: %s\n", progname, function_name, msg);
+
+  LocalFree (msg);
+#else
+  message (TRUE, "%s: %s: %s\n", progname, function_name, strerror (errno));
+#endif
+}
+
+
 /* Let's send the data to Emacs when either
    - the data ends in "\n", or
    - the buffer is full (but this shouldn't happen)
@@ -957,7 +980,7 @@
    */
   if ((s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
     {
-      message (TRUE, "%s: socket: %s\n", progname, strerror (errno));
+      sock_err_message ("socket");
       return INVALID_SOCKET;
     }
 
@@ -966,7 +989,7 @@
    */
   if (connect (s, (struct sockaddr *) &server, sizeof server) < 0)
     {
-      message (TRUE, "%s: connect: %s\n", progname, strerror (errno));
+      sock_err_message ("connect");
       return INVALID_SOCKET;
     }
 
--- a/lisp/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -160,6 +160,23 @@
 
 	* startup.el (window-system): Remove.  Don't make it frame-local.
 
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+	* savehist.el (savehist-save): Omit unreadable elements.
+
+	* loadhist.el (unload-function-defs-list): Renamed from
+	unload-function-features-list.
+	(unload-feature-special-hooks, unload-feature): Doc fixes.
+
+	* indent.el (indent-to-left-margin): If point's in the indentation,
+	move to the end of the indentation.
+
+	* cus-edit.el (customize-changed-options): Make arg optional.
+
+2007-10-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* bs.el (bs-select, bs-select-other-window): Fix typos in docstrings.
+
 2007-10-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* textmodes/org-publish.el (org-publish-attachment): Re-install
@@ -206,6 +223,19 @@
 	* simple.el (reindent-then-newline-and-indent): Use a `move after
 	insert' kind of marker in the save-excursion.
 
+2007-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* textmodes/css-mode.el: Require CL.
+	(comment-continue): Declare.
+
+	* subr.el (make-variable-frame-localizable): Remove.
+	(make-variable-frame-local): Mark obsolete.
+
+2007-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* textmodes/tex-mode.el (tex-uptodate-p): Don't signal an error if one
+	of the subdirs is unreadable.
+
 2007-10-23  Michael Albinus  <michael.albinus@gmx.de>
 
 	* net/tramp.el (tramp-set-file-uid-gid): Protect `call-process'
@@ -270,6 +300,20 @@
 	* printing.el: Move variable definitions before use.
 	(pr-menu-char-width, pr-menu-char-height): Pacify byte compiler.
 
+2007-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emulation/tpu-edt.el (tpu-edt-old-global-values): New var.
+	(tpu-edt-off): Use it.
+	(tpu-edt-on): Set it.  Make sure the tpu-global-map is not already on
+	the global-map before adding it to global-map.
+
+	* menu-bar.el (global-buffers-menu-map): New var.
+	(global-map, menu-bar-update-buffers): Use it.
+	* msb.el (msb-menu-bar-update-buffers): Use it.
+	(msb-sort-by-directory, msb--choose-menu, msb--mode-menu-cond)
+	(msb--most-recently-used-menu, msb--create-buffer-menu-2):
+	Use with-current-buffer.
+
 2007-10-22  Juri Linkov  <juri@jurta.org>
 
 	* isearch-multi.el: New file.
@@ -458,6 +502,10 @@
 	minibuffer default value list instead of pushing them temporarily
 	to the history list.
 
+2007-10-21  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* hexl.el (hexl-menu): New major mode menu.
+
 2007-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/byte-opt.el (byte-optimize-featurep): Fix paren typo.
@@ -2727,7 +2775,7 @@
 
 2007-09-16  Drew Adams  <drew.adams@oracle.com>
 
-	* cus-edit (custom-face-edit-activate): Doc fix.
+	* cus-edit.el (custom-face-edit-activate): Doc fix.
 
 2007-09-16  Glenn Morris  <rgm@gnu.org>
 
--- a/lisp/ChangeLog.12	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/ChangeLog.12	Sat Oct 27 09:07:17 2007 +0000
@@ -669,7 +669,7 @@
 
 2007-03-31  Markus Triska  <markus.triska@gmx.at>
 
-	* flymake.el (flymake-err-line-patterns): Doc fix.
+	* progmodes/flymake.el (flymake-err-line-patterns): Doc fix.
 
 2007-03-30  Reiner Steib  <Reiner.Steib@gmx.de>
 
@@ -2005,7 +2005,7 @@
 
 2007-02-07  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-	* ps-print.ps: The ps-print commands without face printing should not
+	* ps-print.el: The ps-print commands without face printing should not
 	print background color.  Reported by Leo <sdl.web@gmail.com>.
 	(ps-print-version): New version 6.7.3.
 	(ps-begin-job): New arg.  Fix ps-default-background and
@@ -2109,7 +2109,7 @@
 
 2007-02-02  Ulf Jasper  <ulf.jasper@web.de>
 
-	* newsticker.el (newsticker-version): Changed to "1.10".
+	* net/newsticker.el (newsticker-version): Changed to "1.10".
 	(newsticker--set-customvar): Doc string.
 	(newsticker-new-item-face): Doc string.
 	(newsticker-mode): Initialize `invisibility-spec' with t.
@@ -2423,7 +2423,8 @@
 
 2007-01-23  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-keym.el (viper-insert-basic-map): Delete binding for S-TAB.
+	* emulation/viper-keym.el (viper-insert-basic-map):
+	Delete binding for S-TAB.
 
 	* ediff-util.el (ediff-clone-buffer-for-region-comparison): Change text
 	of message.  Activate mark.
@@ -2536,7 +2537,7 @@
 
 2007-01-20  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
 
-	* lisp/emacs-lisp/lisp-mode.el (last-sexp-toggle-display):
+	* emacs-lisp/lisp-mode.el (last-sexp-toggle-display):
 	Fixed cursor position when toggle abbreviated display.
 
 2007-01-20  Nick Roberts  <nickrob@snap.net.nz>
@@ -2783,7 +2784,7 @@
 
 2007-01-03  Alan Mackenzie  <acm@muc.de>
 
-	* progmode/cc-cmds.el (c-mask-paragraph): Fix yesterday's buggy patch.
+	* progmodes/cc-cmds.el (c-mask-paragraph): Fix yesterday's buggy patch.
 
 2007-01-03  Chris Moore  <christopher.ian.moore@gmail.com>
 
@@ -3126,8 +3127,8 @@
 	* ediff-diff.el (ediff-diff-options): Clarify docstring.
 	(ediff-setup-diff-regions): Disallow -u in ediff-diff-options.
 
-	* viper-cmd.el (viper-post-command-sentinel): Protect against errors
-	in hooks.
+	* emulation/viper-cmd.el (viper-post-command-sentinel):
+	Protect against errors in hooks.
 	(viper-add-newline-at-eob-if-necessary): Add newline only if we
 	actually modify buffer; ignore errors if occur.
 
@@ -4941,8 +4942,8 @@
 	* help-fns.el (help-with-tutorial): Move to tutorial.el.
 
 	* tutorial.el: New file.
-	(help-with-tutorial): Move here from help-fns.el. Added help for
-	rebound keys.  Fixed resume of tutorial.
+	(help-with-tutorial): Move here from help-fns.el.  Add help for
+	rebound keys.  Fix resume of tutorial.
 	(tutorial--describe-nonstandard-key, tutorial--sort-keys)
 	(tutorial--find-changed-keys, tutorial--display-changes)
 	(tutorial--saved-dir, tutorial--saved-file)
@@ -5029,9 +5030,9 @@
 
 2006-10-23  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-prefix-arg-com): Define gg as G0.
-
-	* viper-ex.el (ex-read): Quote file argument.
+	* emulation/viper-cmd.el (viper-prefix-arg-com): Define gg as G0.
+
+	* emulation/viper-ex.el (ex-read): Quote file argument.
 
 	* ediff-diff.el (ediff-same-file-contents): Expand file names.
 
@@ -5300,7 +5301,7 @@
 		calling or due to edit to a buffer, install our own hook
 		(controlled by `cperl-hook-after-change').
 	(cperl-electric-pod): =cut may have been recognized as start.
-	(cperl-block-p): Move, updatedfor attributes.
+	(cperl-block-p): Move, updated for attributes.
 	(cperl-calculate-indent): Try to allow '_' be non-word char
 		Support subs with attributes.
 	(cperl-where-am-i): Quiet (?) a warning.
@@ -5880,7 +5881,7 @@
 
 2006-09-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-	* progmode/ebnf2ps.el: Doc fix. Implement arrow spacing and scaling.
+	* progmodes/ebnf2ps.el: Doc fix. Implement arrow spacing and scaling.
 	(ebnf-version): New version 4.3.
 	(ebnf-arrow-extra-width, ebnf-arrow-scale): New options.
 	(ebnf-prologue): Adjust PostScript programming.
@@ -6100,11 +6101,11 @@
 
 2006-09-18  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper.el: Bump up version/date of update to reflect the substantial
-	changes done in August 2006.
-
-	* viper-cmd (viper-next-line-at-bol): Make sure button-at, push-button
-	are defined.
+	* emulation/viper.el: Bump up version/date of update to reflect the
+	substantial changes done in August 2006.
+
+	* emulation/viper-cmd (viper-next-line-at-bol): Make sure button-at,
+	push-button are defined.
 
 	* ediff-util.el (ediff-add-to-history): New function.
 
@@ -6822,7 +6823,7 @@
 
 2006-09-02  Ryan Yeske  <rcyeske@gmail.com>
 
-	* rcirc.el (rcirc-keywords): New variable.
+	* net/rcirc.el (rcirc-keywords): New variable.
 	(rcirc-bright-nicks, rcirc-dim-nicks): New variables.
 	(rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Remove
 	variables.
@@ -6893,8 +6894,8 @@
 
 2006-08-30  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-special-read-and-insert-char): Convert events to
-	chars if XEmacs.
+	* emulation/viper-cmd.el (viper-special-read-and-insert-char):
+	Convert events to chars if XEmacs.
 	(viper-after-change-undo-hook): Check if undo-in-progress is bound.
 
 2006-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -7011,25 +7012,26 @@
 
 2006-08-25  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper.el (viper-set-hooks): Use frame bindings for
+	* emulation/viper.el (viper-set-hooks): Use frame bindings for
 	viper-vi-state-cursor-color.
 	(viper-non-hook-settings): Don't set default
 	mode-line-buffer-identification.
 
-	* viper-util.el (viper-set-cursor-color-according-to-state): New fun.
+	* emulation/viper-util.el (viper-set-cursor-color-according-to-state):
+	New fun.
 	(viper-set-cursor-color-according-to-state)
 	(viper-get-saved-cursor-color-in-replace-mode)
 	(viper-get-saved-cursor-color-in-insert-mode): Make conditional on
 	viper-emacs-state-cursor-color.
 
-	* viper-cmd.el (viper-envelop-ESC-key): Bug fix.
+	* emulation/viper-cmd.el (viper-envelop-ESC-key): Bug fix.
 	(viper-undo): Use point if undo-beg-posn is nil.
 	(viper-insert-state-post-command-sentinel, viper-change-state-to-emacs)
 	(viper-after-change-undo-hook): Don't use
 	viper-emacs-state-cursor-color by default.
 	(viper-undo): More sensible positioning after undo.
 
-	* viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr.
+	* emulation/viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr.
 	(viper-emacs-state-cursor-color): Default to nil, since this feature
 	doesn't work well yet.
 
@@ -7844,9 +7846,9 @@
 
 2006-07-20  Jay Belanger  <belanger@truman.edu>
 
-	* calc.el (calc-previous-alg-entry): Remove variable.
-
-	* calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
+	* calc/calc.el (calc-previous-alg-entry): Remove variable.
+
+	* calc/calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
 	New variables.
 	(calc-alg-entry): Use `calc-alg-entry-history'.
 	(calc-do-quick-calc): Use `calc-quick-calc-history'.
@@ -7859,17 +7861,17 @@
 	Change keybinding for `calcAlg-plus-minus', add keybindings for
 	`previous-history-element' and `next-history-element'.
 
-	* calc-rewr.el (calc-match): Remove reference to
+	* calc/calc-rewr.el (calc-match): Remove reference to
 	`calc-previous-alg-entry'.
 
-	* calc-sel.el (calc-selection-history): New variable.
+	* calc/calc-sel.el (calc-selection-history): New variable.
 	(calc-enter-selection, calc-sel-mult-both-sides)
 	(calc-sel-add-both-sides): Use `calc-selection-history'.
 
-	* calc-map.el (calc-get-operator-history): New variable.
+	* calc/calc-map.el (calc-get-operator-history): New variable.
 	(calc-get-operator): Use `calc-get-operator-history'.
 
-	* calcalg3.el (calc-curve-fit-history): New variable.
+	* calc/calcalg3.el (calc-curve-fit-history): New variable.
 	(calc-curve-fit): Use `calc-curve-fit-history'.
 
 2006-07-20  Kenichi Handa  <handa@m17n.org>
@@ -8643,7 +8645,7 @@
 
 2006-06-18  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-special-read-and-insert-char):
+	* emulation/viper-cmd.el (viper-special-read-and-insert-char):
 	Use read-key-sequence.
 	(viper-after-change-undo-hook): Misc enhancements.
 	(viper-after-change-undo-hook): New hook.
@@ -8652,9 +8654,10 @@
 	(viper-next-line-at-bol): If point is on a widget or a button, simulate
 	clicking on that widget/button.
 
-	* viper.el (viper-mode): Allow a separate cursor color in Emacs state.
-
-	* ediff-diff (ediff-test-patch-utility): Catch errors.
+	* emulation/viper.el (viper-mode): Allow a separate cursor color
+	in Emacs state.
+
+	* ediff-diff.el (ediff-test-patch-utility): Catch errors.
 	(ediff-actual-diff-options, ediff-actual-diff3-options): New variables.
 	(ediff-set-actual-diff-options): New function.
 	(ediff-reset-diff-options, ediff-toggle-ignore-case):
@@ -10378,7 +10381,7 @@
 
 2006-04-27  Jay Belanger  <belanger@truman.edu>
 
-	* calc-embed.el (calc-embedded-make-info): Use `math-read-expr' to
+	* calc/calc-embed.el (calc-embedded-make-info): Use `math-read-expr' to
 	read expression when `math-read-big-expr' doesn't work.
 
 2006-04-27  Reiner Steib  <Reiner.Steib@gmx.de>
@@ -11004,7 +11007,7 @@
 
 2006-04-08  Ryan Yeske  <rcyeske@gmail.com>
 
-	* rcirc.el (rcirc-default-server): Rename from rcirc-server.
+	* net/rcirc.el (rcirc-default-server): Rename from rcirc-server.
 	(rcirc-default-port): Rename from rcirc-port.
 	(rcirc-default-nick): Rename from rcirc-nick.
 	(rcirc-default-user-name): Rename from rcirc-user-name.
@@ -11829,8 +11832,8 @@
 
 2006-03-11  David Ponce  <david@dponce.com>
 
-	* ispell.el (ispell-find-aspell-dictionaries): Add aliases before
-	merging elements from the standard ispell-dictionary-alist.
+	* textmodes/ispell.el (ispell-find-aspell-dictionaries): Add aliases
+	before merging elements from the standard ispell-dictionary-alist.
 	(ispell-aspell-add-aliases): Add aliases to the passed dictionary
 	alist, and return the new alist.
 
@@ -12266,7 +12269,7 @@
 	(c-after-change): Protect the match data with save-match-data.
 	It was getting corrupted by c-after-change-check-<>-operators.
 
-	* cc-defs.el: [Supersedes patch V1.38]:
+	* progmodes/cc-defs.el: [Supersedes patch V1.38]:
 	(top level): Check for a buggy font-lock-compile-keywords ONLY in
 	XEmacs.  GNU Emacs 22 now has a check which would throw an error here.
 
@@ -12541,19 +12544,20 @@
 
 2006-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-insert-state-post-command-sentinel)
+	* emulation/viper-cmd.el (viper-insert-state-post-command-sentinel)
 	(viper-change-state-to-vi, viper-change-state-to-emacs):
 	Make aware of cursor coloring in the Emacs state.
 	(viper-special-read-and-insert-char): Use read-char-exclusive.
 	(viper-minibuffer-trim-tail): Workaround for fields in minibuffer.
 
-	* viper-init.el (viper-emacs-state-cursor-color): New variable.
-
-	* viper-util.el (viper-save-cursor-color)
+	* emulation/viper-init.el (viper-emacs-state-cursor-color):
+	New variable.
+
+	* emulation/viper-util.el (viper-save-cursor-color)
 	(viper-get-saved-cursor-color-in-replace-mode)
 	(viper-get-saved-cursor-color-in-insert-mode)
-	(viper-restore-cursor-color): Make aware of the cursor color in Emacs
-	state.
+	(viper-restore-cursor-color): Make aware of the cursor color
+	in Emacs state.
 	(viper-get-saved-cursor-color-in-emacs-mode): New function.
 
 	* ediff-diff.el (ediff-ignore-case, ediff-ignore-case-option)
@@ -15599,7 +15603,7 @@
 
 2005-12-10  John W. Eaton  <jwe@octave.org>
 
-	* emacs/octave-mod.el (octave-electric-space): Don't indent
+	* progmodes/octave-mod.el (octave-electric-space): Don't indent
 	comments or strings if octave-auto-indent is nil.
 
 2005-12-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
@@ -15749,7 +15753,7 @@
 	* progmodes/cc-fix.el: Add definitions of the macros push and pop
 	(for GNU Emacs 20.4).
 
-	* progmodes/cc-defs.el:
+	* progmodes/cc-defs.el
 	(i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4).
 
 	* progmodes/cc-cmds.el (c-show-syntactic-information): Change the
@@ -17594,13 +17598,13 @@
 
 2005-11-25  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-keym.el (viper-ESC-key): Use different values in terminal and
-	window modes.
-
-	* viper.el (viper-emacs-state-mode-list): Delete mail-mode, add
-	jde-javadoc-checker-report-mode.
-
-	* ediff-wind (ediff-make-wide-display): Slight simplification.
+	* emulation/viper-keym.el (viper-ESC-key): Use different values
+	in terminal and window modes.
+
+	* emulation/viper.el (viper-emacs-state-mode-list): Delete mail-mode,
+	add jde-javadoc-checker-report-mode.
+
+	* ediff-wind.el (ediff-make-wide-display): Slight simplification.
 
 	* ediff.el (ediff-date): Change the date of last update.
 
@@ -18110,10 +18114,10 @@
 
 2005-11-15  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-utils.el (viper-non-word-characters-reformed-vi):
+	* emulation/viper-utils.el (viper-non-word-characters-reformed-vi):
 	Quote `-' in string.
 
-	* viper.el (viper-emacs-state-mode-list): Ensure that
+	* emulation/viper.el (viper-emacs-state-mode-list): Ensure that
 	rcirc-mode buffers come up in Emacs state.
 
 	* ediff-util.el (ediff-make-temp-file): Use proper file-name-handler
@@ -18183,20 +18187,20 @@
 
 2005-11-14  Jay Belanger  <belanger@truman.edu>
 
-	* calc-alg.el (calcFunc-write-out-power): Rename it to
+	* calc/calc-alg.el (calcFunc-write-out-power): Rename it to
 	calcFunc-powerexpand.
 	(math-write-out-power): Rename it to math-powerexpand; have it
 	handle negative exponents.
 	(calc-writeoutpower): Rename it to calc-powerexpand.
 
-	* calc-ext.el: Change calcFunc-writeoutpower and
+	* calc/calc-ext.el: Change calcFunc-writeoutpower and
 	calc-writeoutpower to calcFunc-powerexpand and calc-powerexpand in
 	autoloads.
 	Add calcFunc-ldiv to autoloads.
 
-	* calc-arith.el (calcFunc-ldiv): New function.
-
-	* calc.el (calc-left-divide): New function.
+	* calc/calc-arith.el (calcFunc-ldiv): New function.
+
+	* calc/calc.el (calc-left-divide): New function.
 
 2005-11-14  Juri Linkov  <juri@jurta.org>
 
@@ -18565,7 +18569,7 @@
 
 2005-11-04  Ulf Jasper  <ulf.jasper@web.de>
 
-	* newsticker.el: Commentary updated.  Code formatting changed.
+	* net/newsticker.el: Commentary updated.  Code formatting changed.
 	(newsticker-version): Change to "1.9".
 	(newsticker, newsticker-feed): Doc fix.
 	(newsticker-url-list): Doc fix.  Add option "Weekly".
@@ -18778,8 +18782,8 @@
 
 2005-11-04  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* ediff-merge.el (ediff-merge-region-is-non-clash): Return t, if not
-	merging.
+	* ediff-merg.el (ediff-merge-region-is-non-clash):
+	Return t, if not merging.
 
 	* ediff-util.el (ediff-previous-difference): Don't skip regions that
 	have merge clashes.
@@ -20785,17 +20789,19 @@
 	* ediff-wind.el (ediff-setup-control-frame)
 	(ediff-destroy-control-frame): Check the menubar feature.
 
-	* viper-cmd.el (viper-normalize-minor-mode-map-alist)
+	* emulation/viper-cmd.el (viper-normalize-minor-mode-map-alist)
 	(viper-refresh-mode-line): Use make-local-variable to localize
 	some vars instead of make-variable-buffer-local.  Suggested by
 	Stefan Monnier.
 
-	* viper-init.el (viper-make-variable-buffer-local): Delete alias.
+	* emulation/viper-init.el (viper-make-variable-buffer-local):
+	Delete alias.
 	(viper-restore-cursor-type, viper-set-insert-cursor-type):
 	Use make-local-variable instead of make-variable-buffer-local.
 	Suggested by Stefan Monnier.
 
-	* viper.el (viper-mode): Don't use viper-make-variable-buffer-local.
+	* emulation/viper.el (viper-mode): Don't use
+	viper-make-variable-buffer-local.
 	(viper-comint-mode-hook): Use make-local-variable on
 	require-final-newline.
 	(viper-non-hook-settings): Don't use make-variable-buffer-local.
@@ -21798,8 +21804,8 @@
 
 2005-09-10  Alan Mackenzie  <acm@muc.de>
 
-	* page.el (narrow-to-page): Exclude _entire_ multi-line delimiter
-	from the region narrowed to.
+	* textmodes/page.el (narrow-to-page): Exclude _entire_ multi-line
+	delimiter from the region narrowed to.
 
 2005-09-10  Magnus Henoch  <mange@freemail.hu>
 
@@ -23232,23 +23238,23 @@
 
 2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper.el (viper-emacs-state-mode-list): Add recentf-dialog-mode.
-	Change the date of last update.
+	* emulation/viper.el (viper-emacs-state-mode-list):
+	Add recentf-dialog-mode.  Change the date of last update.
 
 2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-harness-minor-mode, viper-exec-delete)
+	* emulation/viper-cmd.el (viper-harness-minor-mode, viper-exec-delete)
 	(viper-exec-yank, viper-put-back): Don't display modification msg
 	if in the minibuffer.
 
-	* viper-init.el (viper-replace-overlay-cursor-color)
+	* emulation/viper-init.el (viper-replace-overlay-cursor-color)
 	(viper-insert-state-cursor-color, viper-vi-state-cursor-color):
 	Make variables frame local.
 
-	* viper-util.el (viper-append-filter-alist): Use append instead of
-	nconc.
-
-	* viper.el (viper-vi-state-mode-list)
+	* emulation/viper-util.el (viper-append-filter-alist):
+	Use append instead of nconc.
+
+	* emulation/viper.el (viper-vi-state-mode-list)
 	(viper-emacs-state-mode-list): Move help-mode and
 	completion-list-mode from the first list to the second.
 	(viper-mode): Docstring.
@@ -23912,7 +23918,7 @@
 
 2005-07-19  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-escape-to-state): Bug fix.
+	* emulation/viper-cmd.el (viper-escape-to-state): Bug fix.
 	(viper-envelop-ESC-key): Change the definition of fast
 	keysequence so it'll work with keyboard macros.
 
@@ -23993,8 +23999,7 @@
 
 2005-07-16  Jose E. Marchesi  <jemarch@gnu.org>
 
-	* lisp/mail/smtpmail.el (smtpmail-auth-supported):
-	Add plain auth method.
+	* mail/smtpmail.el (smtpmail-auth-supported): Add plain auth method.
 	(smtpmail-try-auth-methods): Add AUTH PLAIN dialog.
 
 2005-07-17  Kim F. Storm  <storm@cua.dk>
@@ -24357,26 +24362,26 @@
 
 2005-07-10  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper--key-maps): New variable.
+	* emulation/viper-cmd.el (viper--key-maps): New variable.
 	(viper-normalize-minor-mode-map-alist): Use viper--key-maps and
 	emulation-mode-map-alists.
 	(viper-envelop-ESC-key): Use viper-subseq.
 	(viper-search-forward/backward/next): Disable debug-on-error.
 
-	* viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
+	* emulation/viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
 	(viper-ESC-key): New defcustoms.
 
-	* viper-macs.el (ex-map-read-args): Use viper-subseq.
-
-	* viper-util.el (viper-key-to-emacs-key): Use viper-subseq.
+	* emulation/viper-macs.el (ex-map-read-args): Use viper-subseq.
+
+	* emulation/viper-util.el (viper-key-to-emacs-key): Use viper-subseq.
 	(viper-subseq): Copy of subseq from cl.el.
 
-	* viper.el (viper-go-away, viper-set-hooks): Use
+	* emulation/viper.el (viper-go-away, viper-set-hooks): Use
 	emulation-mode-map-alists, advise self-insert-command, add-minor-mode.
 
-	* viper-mous.el (viper-current-frame-saved): Use defvar.
-
-	* viper-init.el: Get rid of -face in face names.
+	* emulation/viper-mous.el (viper-current-frame-saved): Use defvar.
+
+	* emulation/viper-init.el: Get rid of -face in face names.
 
 	* ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
 	Make it work with longlines mode.
@@ -26105,7 +26110,7 @@
 
 2005-06-11  Alan Mackenzie  <acm@muc.de>
 
-	* fill.el (fill-context-prefix): Try `adaptive-fill-function'
+	* textmodes/fill.el (fill-context-prefix): Try `adaptive-fill-function'
 	BEFORE `adaptive-fill-regexp' when determining a fill prefix.
 	(adaptive-file-function): Minor amendment to doc-string.
 
@@ -26790,13 +26795,13 @@
 
 2005-06-04  David Reitter  <david.reitter@gmail.com>  (tiny change)
 
-	* url-http.el (url-http-chunked-encoding-after-change-function):
+	* url/url-http.el (url-http-chunked-encoding-after-change-function):
 	Use `url-http-debug' instead of `message'.
 
 2005-06-04  Thierry Emery  <thierry.emery@free.fr>  (tiny change)
 
-	* url-http.el (url-http-parse-headers): Pass redirected URL as a
-	callback argument.
+	* url/url-http.el (url-http-parse-headers): Pass redirected URL
+	as a callback argument.
 
 2005-06-04  Kim F. Storm  <storm@cua.dk>
 
@@ -26850,10 +26855,11 @@
 	* ediff-mult.el (ediff-intersect-directories): Make sure that ".." and
 	"." files are deleted from all file lists before comparison.
 
-	* viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
+	* emulation/viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
 	(viper-ESC-key): Made them customizable.
 
-	* viper.el (viper-non-hook-settings): Fix the names of defadvices.
+	* emulation/viper.el (viper-non-hook-settings):
+	Fix the names of defadvices.
 
 2005-06-01  Luc Teirlinck  <teirllm@auburn.edu>
 
@@ -27008,7 +27014,7 @@
 
 2005-05-29  Richard M. Stallman  <rms@gnu.org>
 
-	* flyspell.el (flyspell-version): Function deleted.
+	* textmoddes/flyspell.el (flyspell-version): Function deleted.
 	(flyspell-auto-correct-previous-hook): Doc fix.
 
 	* jit-lock.el (jit-lock-function, jit-lock-after-change):
@@ -27030,13 +27036,14 @@
 
 2005-05-29  Peter Heslin  <p.j.heslin@durham.ac.uk>  (tiny change)
 
-	* flyspell.el (flyspell-auto-correct-previous-word):
+	* textmodes/flyspell.el (flyspell-auto-correct-previous-word):
 	Narrow down to what's on the screen, and recenter overlays
 	at the end of the next word.
 
 2005-05-29  Manuel Serrano  <Manuel.Serrano@sophia.inria.fr>
 
-	* flyspell.el (flyspell-emacs, flyspell-use-local-map): Vars moved up.
+	* textmodes/flyspell.el (flyspell-emacs, flyspell-use-local-map):
+	8Vars moved up.
 	(flyspell-default-delayed-commands): Add backward-delete-char-untabify.
 	(flyspell-abbrev-p): Default to nil.
 	(flyspell-use-global-abbrev-table-p): Doc fix.
@@ -27409,51 +27416,52 @@
 
 	CC Mode update to 5.30.10:
 
-	* cc-fonts.el (c-font-lock-declarators): Fix bug where the point
-	could go past the limit in decoration level 2, thereby causing
-	errors during interactive fontification.
-
-	* cc-mode.el (c-make-inherited-keymap): Fix cc-bytecomp bug when
-	the file is evaluated interactively.
-
-	* cc-engine.el (c-guess-basic-syntax): Handle operator
+	* progmodes/cc-fonts.el (c-font-lock-declarators): Fix bug where
+	the point could go past the limit in decoration level 2, thereby
+	causing errors during interactive fontification.
+
+	* progmodes/cc-mode.el (c-make-inherited-keymap): Fix cc-bytecomp
+	bug when the file is evaluated interactively.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Handle operator
 	declarations somewhat better in C++.
 
-	* cc-styles.el, cc-mode.el (c-run-mode-hooks): New helper macro to
-	make use of `run-mode-hooks' which has been added in Emacs 21.1.
+	* progmodes/cc-styles.el, cc-mode.el (c-run-mode-hooks):
+	New helper macro to make use of `run-mode-hooks'
+	which has been added in Emacs 21.1.
 	(c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode)
 	(awk-mode): Use it.
 	(make-local-hook): Suppress warning about obsoleteness.
 
-	* cc-engine.el, cc-align.el, cc-cmds.el
+	* progmodes/cc-engine.el, cc-align.el, cc-cmds.el
 	(c-append-backslashes-forward, c-delete-backslashes-forward)
 	(c-find-decl-spots, c-semi&comma-no-newlines-before-nonblanks):
 	Compensate for return value from `forward-line' when it has moved
 	but not to a different line due to eob.
 
-	* cc-engine.el (c-guess-basic-syntax): Fix anchoring in
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fix anchoring in
 	`objc-method-intro' and `objc-method-args-cont'.
 
 2005-05-23  Alan Mackenzie  <bug-cc-mode@gnu.org>
 
 	CC Mode update to 5.30.10:
 
-	* cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's address
-	in the copyright statement.  Incidentally, change "along with GNU
-	Emacs" to "along with this program" where it occurs.
-
-	* cc-mode.el: Add a fourth parameter `t' to the awk-mode autoload,
-	so that it is interactive, hence can be found by M-x awk-mode
+	* progmodes/cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's
+	address in the copyright statement.  Incidentally, change "along with
+	GNU Emacs" to "along with this program" where it occurs.
+
+	* progmodes/cc-mode.el: Add a fourth parameter `t' to the awk-mode
+	autoload, so that it is interactive, hence can be found by M-x awk-mode
 	whilst cc-mode is yet to be loaded.  Reported by Glenn Morris
 	<gmorris+emacs@ast.cam.ac.uk>.
 
-	* cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK
+	* progmodes/cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK
 	Mode's regexps.
 
 2005-05-23  Kevin Ryde  <user42@zip.com.au>
 
-	* cc-align.el (c-lineup-argcont): Ignore conses for {} pairs from
-	c-parse-state, to avoid a lisp error (on bad code).
+	* progmodes/cc-align.el (c-lineup-argcont): Ignore conses for {} pairs
+	from c-parse-state, to avoid a lisp error (on bad code).
 
 2005-05-23  Lute Kamstra  <lute@gnu.org>
 
@@ -28793,7 +28801,7 @@
 
 	* simple.el (next-error-overlay-arrow-position): Turn off, for ttys.
 
-	* loadup.el: load jka-comp-hook.
+	* loadup.el: Load jka-comp-hook.
 
 	* jka-compr.el: Many functions and vars moved to jka-comp-hook.el.
 	(jka-compr-handler): Add autoload.  `put' calls moved
@@ -30261,8 +30269,9 @@
 
 2005-03-30  Carsten Dominik  <dominik@science.uva.nl>
 
-	* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
-	(org-agenda-convert-date, org-agenda-goto-calendar): New commands.
+	* textmodes/org.el (org-agenda-phases-of-moon)
+	(org-agenda-sunrise-sunset, org-agenda-convert-date)
+	(org-agenda-goto-calendar): New commands.
 	(org-diary-default-entry): New function.
 	(org-get-entries-from-diary): Better parsing of diary entries.
 	(org-agenda-check-no-diary): New function.
@@ -31860,7 +31869,7 @@
 
 2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* viper-cmd.el (viper-prefix-commands): Make into a defconst.
+	* emulation/viper-cmd.el (viper-prefix-commands): Make into a defconst.
 	(viper-exec-buffer-search): Use regexp-quote to quote buffer string.
 	(viper-minibuffer-setup-sentinel): Make some variables buffer-local.
 	(viper-skip-separators): Bug fix.
@@ -31869,17 +31878,18 @@
 	(viper-del-backward-char-in-replace): Don't put deleted char on the
 	kill ring.
 
-	* viper-ex.el (viper-color-display-p): New function.
+	* emulation/viper-ex.el (viper-color-display-p): New function.
 	(viper-has-face-support-p): Use viper-color-display-p.
 
-	* viper-keym.el (viper-gnus-modifier-map): New keymap.
-
-	* viper-macs.el (viper-unrecord-kbd-macro): Bug fix.
-
-	* viper-util.el (viper-glob-unix-files): Fix shell status check.
+	* emulation/viper-keym.el (viper-gnus-modifier-map): New keymap.
+
+	* emulation/viper-macs.el (viper-unrecord-kbd-macro): Bug fix.
+
+	* emulation/viper-util.el (viper-glob-unix-files):
+	Fix shell status check.
 	(viper-file-remote-p): Make equivalent to file-remote-p.
 
-	* viper.el (viper-major-mode-modifier-list):
+	* emulation/viper.el (viper-major-mode-modifier-list):
 	Use viper-gnus-modifier-map.
 
 2005-02-19  David Kastrup  <dak@gnu.org>
@@ -32833,8 +32843,9 @@
 
 2005-01-15  Alan Mackenzie  <acm@muc.de>
 
-	* ebrowse.el (ebrowse-class-in-tree): Return the tail of the tree
-	rather than the element found, thus enabling the tree to be setcar'd.
+	* progmodes/ebrowse.el (ebrowse-class-in-tree):
+	Return the tail of the tree rather than the element found,
+	thus enabling the tree to be setcar'd.
 
 2005-01-14  Carsten Dominik  <dominik@science.uva.nl>
 
@@ -32842,7 +32853,7 @@
 	(org-show-hierarchy-above): Use `org-show-following-heading'.
 	(org-cycle): Documentation fix.
 
-	* textmodes/org.el (orgtbl-optimized): New option
+	* textmodes/org.el (orgtbl-optimized): New option.
 	(orgtbl-mode): New command, a minor mode.
 	(orgtbl-mode-map): New variable.
 	(turn-on-orgtbl, orgtbl-mode, orgtbl-make-binding)
--- a/lisp/bs.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/bs.el	Sat Oct 27 09:07:17 2007 +0000
@@ -736,7 +736,7 @@
 (defun bs-select ()
   "Select current line's buffer and other marked buffers.
 If there are no marked buffers the window configuration before starting
-Buffer Selectin Menu will be restored.
+Buffer Selection Menu will be restored.
 If there are marked buffers each marked buffer and the current line's buffer
 will be selected in a window.
 Leave Buffer Selection Menu."
@@ -760,7 +760,7 @@
 
 (defun bs-select-other-window ()
   "Select current line's buffer by `switch-to-buffer-other-window'.
-The window configuration before starting Buffer Selectin Menu will be restored
+The window configuration before starting Buffer Selection Menu will be restored
 unless there is no other window.  In this case a new window will be created.
 Leave Buffer Selection Menu."
   (interactive)
--- a/lisp/cus-edit.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/cus-edit.el	Sat Oct 27 09:07:17 2007 +0000
@@ -1142,7 +1142,7 @@
 (defalias 'customize-changed 'customize-changed-options)
 
 ;;;###autoload
-(defun customize-changed-options (since-version)
+(defun customize-changed-options (&optional since-version)
   "Customize all settings whose meanings have changed in Emacs itself.
 This includes new user option variables and faces, and new
 customization groups, as well as older options and faces whose meanings
--- a/lisp/emulation/tpu-edt.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/emulation/tpu-edt.el	Sat Oct 27 09:07:17 2007 +0000
@@ -273,6 +273,7 @@
 
 ;;; Code:
 
+(eval-when-compile (require 'cl))
 ;; we use picture-mode functions
 (require 'picture)
 
@@ -2378,6 +2379,7 @@
 	   (tpu-error (message "Sorry, couldn't copy - %s." (cdr conditions)))))
     (kill-buffer "*TPU-Notice*")))
 
+(defvar tpu-edt-old-global-values nil)
 
 ;;;
 ;;;  Start and Stop TPU-edt
@@ -2386,6 +2388,8 @@
 (defun tpu-edt-on ()
   "Turn on TPU/edt emulation."
   (interactive)
+  ;; To clean things up (and avoid cycles in the global map).
+  (tpu-edt-off)
   ;; First, activate tpu-global-map, while protecting the original keymap.
   (set-keymap-parent tpu-global-map global-map)
   (setq global-map tpu-global-map)
@@ -2396,9 +2400,12 @@
   (tpu-set-mode-line t)
   (tpu-advance-direction)
   ;; set page delimiter, display line truncation, and scrolling like TPU
-  (setq-default page-delimiter "\f")
-  (setq-default truncate-lines t)
-  (setq scroll-step 1)
+  (dolist (varval '((page-delimiter . "\f")
+                    (truncate-lines . t)
+                    (scroll-step . 1)))
+    (push (cons (car varval) (default-value (car varval)))
+          tpu-edt-old-global-values)
+    (set-default (car varval) (cdr varval)))
   (tpu-set-control-keys)
   (and window-system (tpu-load-xkeys nil))
   (tpu-arrow-history)
@@ -2415,9 +2422,9 @@
   (tpu-reset-control-keys nil)
   (remove-hook 'post-command-hook 'tpu-search-highlight)
   (tpu-set-mode-line nil)
-  (setq-default page-delimiter "^\f")
-  (setq-default truncate-lines nil)
-  (setq scroll-step 0)
+  (while tpu-edt-old-global-values
+    (let ((varval (pop tpu-edt-old-global-values)))
+      (set-default (car varval) (cdr varval))))
   ;; Remove tpu-global-map from the global map.
   (let ((map global-map))
     (while map
@@ -2425,7 +2432,7 @@
         (if (eq tpu-global-map parent)
             (set-keymap-parent map (keymap-parent parent))
           (setq map parent)))))
-  (ad-disable-regexp "\\`tpu-")
+  (ignore-errors (ad-disable-regexp "\\`tpu-"))
   (setq tpu-edt-mode nil))
 
 
--- a/lisp/gnus/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/gnus/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -1,3 +1,17 @@
+2007-10-23  Richard Stallman  <rms@gnu.org>
+
+	* gnus-group.el (gnus-group-highlight): Mark as risky.
+
+2007-10-23  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus.el (gnus-server-to-method): Return method found first in
+	gnus-newsrc-alist.
+
+2007-10-20  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* html2text.el (html2text-fix-paragraph): Use `forward-line' instead of
+	`next-line'.
+
 2007-10-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* nnmail.el (nnmail-fancy-expiry-target): Use rmail-dont-reply-to to
--- a/lisp/gnus/gnus-group.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/gnus/gnus-group.el	Sat Oct 27 09:07:17 2007 +0000
@@ -378,6 +378,7 @@
 ticked: The number of ticked articles."
   :group 'gnus-group-visual
   :type '(repeat (cons (sexp :tag "Form") face)))
+(put 'gnus-group-highlight 'risky-local-variable t)
 
 (defcustom gnus-new-mail-mark ?%
   "Mark used for groups with new mail."
--- a/lisp/gnus/gnus.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/gnus/gnus.el	Sat Oct 27 09:07:17 2007 +0000
@@ -3512,24 +3512,23 @@
 						       (cadar servers)))))
 		  (pop servers))
 		(car servers))
-              ;; This could be some sort of foreign server that I
-              ;; simply haven't opened (yet).  Do a brute-force scan
-              ;; of the entire gnus-newsrc-alist for the server name
-              ;; of every method.  As a side-effect, loads the
-              ;; gnus-server-method-cache so this only happens once,
-              ;; if at all.
-              (let (match)
-                (mapcar
-                 (lambda (info)
-                   (let ((info-method (gnus-info-method info)))
-                     (unless (stringp info-method)
-                       (let ((info-server (gnus-method-to-server info-method)))
-                         (when (equal server info-server)
-                           (setq match info-method))))))
-                 (cdr gnus-newsrc-alist))
-                match))))
-        (when result
-          (push (cons server result) gnus-server-method-cache))
+	      ;; This could be some sort of foreign server that I
+	      ;; simply haven't opened (yet).  Do a brute-force scan
+	      ;; of the entire gnus-newsrc-alist for the server name
+	      ;; of every method.  As a side-effect, loads the
+	      ;; gnus-server-method-cache so this only happens once,
+	      ;; if at all.
+	      (let ((alist (cdr gnus-newsrc-alist))
+		    method match)
+		(while alist
+		  (setq method (gnus-info-method (pop alist)))
+		  (when (and (not (stringp method))
+			     (equal server (gnus-method-to-server method)))
+		    (setq match method
+			  alist nil)))
+		match))))
+	(when result
+	  (push (cons server result) gnus-server-method-cache))
 	result)))
 
 (defsubst gnus-server-get-method (group method)
--- a/lisp/gnus/html2text.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/gnus/html2text.el	Sat Oct 27 09:07:17 2007 +0000
@@ -352,7 +352,7 @@
 	(setq refill-start (point))
 	(goto-char p2)
 	(re-search-backward ".+[^<][^b][^r][^>]$" refill-start t)
-	(next-line 1)
+	(forward-line 1)
 	(end-of-line)
 	;; refill-stop should ideally be adjusted to
 	;; accomodate the "<br>" strings which are removed
--- a/lisp/hexl.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/hexl.el	Sat Oct 27 09:07:17 2007 +0000
@@ -457,7 +457,7 @@
   (+ (* (/ address 16) 68) 10 (point-min) (/ (* (% address 16) 5) 2)))
 
 (defun hexl-goto-address (address)
-  "Goto hexl-mode (decimal) address ADDRESS.
+  "Go to hexl-mode (decimal) address ADDRESS.
 Signal error if ADDRESS is out of range."
   (interactive "nAddress: ")
   (if (or (< address 0) (> address hexl-max-address))
@@ -1104,6 +1104,43 @@
   (define-key hexl-mode-map "\C-x\C-s" 'hexl-save-buffer)
   (define-key hexl-mode-map "\C-x\C-t" 'undefined))
 
+(easy-menu-define hexl-menu hexl-mode-map "Hexl Mode menu"
+  `("Hexl"
+    :help "Hexl-specific Features"
+
+    ["Backward short" hexl-backward-short
+     :help "Move to left a short"]
+    ["Forward short" hexl-forward-short
+     :help "Move to right a short"]
+    ["Backward word" hexl-backward-short
+     :help "Move to left a word"]
+    ["Forward word" hexl-forward-short
+     :help "Move to right a word"]
+    "-"
+    ["Beginning of 512b page" hexl-beginning-of-512b-page
+     :help "Go to beginning of 512 byte boundary"]
+    ["End of 512b page" hexl-end-of-512b-page
+     :help "Go to end of 512 byte boundary"]
+    ["Beginning of 1K page" hexl-beginning-of-1k-page
+     :help "Go to beginning of 1KB boundary"]
+    ["End of 1K page" hexl-end-of-1k-page
+     :help "Go to end of 1KB boundary"]
+    "-"
+    ["Go to address" hexl-goto-address
+     :help "Go to hexl-mode (decimal) address"]
+    ["Go to address" hexl-goto-hex-address
+     :help "Go to hexl-mode (hex string) address"]
+    "-"
+    ["Insert decimal char" hexl-insert-decimal-char
+     :help "Insert a character given by its decimal code"]
+    ["Insert hex char" hexl-insert-hex-char
+     :help "Insert a character given by its hexadecimal code"]
+    ["Insert octal char" hexl-insert-octal-char
+     :help "Insert a character given by its octal code"]
+    "-"
+    ["Exit hexl mode" hexl-mode-exit
+     :help "Exit hexl mode returning to previous mode"]))
+
 (provide 'hexl)
 
 ;; arch-tag: d5a7aa8a-9bce-480b-bcff-6c4c7ca5ea4a
--- a/lisp/indent.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/indent.el	Sat Oct 27 09:07:17 2007 +0000
@@ -191,7 +191,12 @@
 ;; used in Fundamental Mode, Text Mode, etc.
 (defun indent-to-left-margin ()
   "Indent current line to the column given by `current-left-margin'."
-  (indent-line-to (current-left-margin)))
+  (save-excursion (indent-line-to (current-left-margin)))
+  ;; If we are within the indentation, move past it.
+  (when (save-excursion
+	  (skip-chars-backward " \t")
+	  (bolp))
+    (skip-chars-forward " \t")))
 
 (defun delete-to-left-margin (&optional from to)
   "Remove left margin indentation from a region.
--- a/lisp/loadhist.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/loadhist.el	Sat Oct 27 09:07:17 2007 +0000
@@ -133,35 +133,42 @@
     write-region-annotate-functions)
   "A list of special hooks from Info node `(elisp)Standard Hooks'.
 
-These are symbols with hook-type values whose names don't end in
-`-hook' or `-hooks', from which `unload-feature' tries to remove
+These are symbols with hooklike values whose names don't end in
+`-hook' or `-hooks', from which `unload-feature' should try to remove
 pertinent symbols.")
 
-(defvar unload-function-features-list nil
-  "List of features of the package being unloaded.
+(defvar unload-function-defs-list nil
+  "List of defintions in the Lisp library being unloaded.
 
-This is meant to be used by FEATURE-unload-function, see the
+This is meant to be used by `FEATURE-unload-function'; see the
 documentation of `unload-feature' for details.")
 (define-obsolete-variable-alias 'unload-hook-features-list
-    'unload-function-features-list "22.2")
+    'unload-function-defs-list "22.2")
 
 ;;;###autoload
 (defun unload-feature (feature &optional force)
-  "Unload the library that provided FEATURE, restoring all its autoloads.
+  "Unload the library that provided FEATURE.
 If the feature is required by any other loaded code, and prefix arg FORCE
 is nil, raise an error.
 
-This function tries to undo any modifications that the package has
-made to hook values in Emacs.  Normally it does this using heuristics.
-The packages may define a hook `FEATURE-unload-hook'; if that exists,
-it is called instead of the normal heuristics.
+Standard unloading activities include restoring old autoloads for
+functions defined by the library, undoing any additions that the
+library has made to hook variables or to `auto-mode-alist', undoing
+ELP profiling of functions in that library, unproviding any features
+provided by the library, and canceling timers held in variables
+defined by the library.
 
-Such a hook should undo all the relevant global state changes that may
-have been made by loading the package or executing functions in it.
-It has access to the package's feature list (before anything is unbound)
-in the variable `unload-hook-features-list' and could remove features
-from it in the event that the package has done something strange,
-such as redefining an Emacs function."
+If a function `FEATURE-unload-function' is defined, this function
+calls it with no arguments, before doing anything else.  That function
+can do whatever is appropriate to undo the loading of the library.  If
+`FEATURE-unload-function' returns non-nil, that suppresses the
+standard unloading of the library.  Otherwise the standard unloading
+proceeds.
+
+`FEATURE-unload-function' has access to the package's list of
+definitions in the variable `unload-function-defs-list' and could
+remove symbols from it in the event that the package has done
+something strange, such as redefining an Emacs function."
   (interactive
    (list
     (read-feature "Unload feature: " t)
@@ -174,8 +181,8 @@
       (when dependents
 	(error "Loaded libraries %s depend on %s"
 	       (prin1-to-string dependents) file))))
-  (let* ((unload-function-features-list (feature-symbols feature))
-         (file (pop unload-function-features-list))
+  (let* ((unload-function-defs-list (feature-symbols feature))
+         (file (pop unload-function-defs-list))
 	 ;; If non-nil, this is a symbol for which we should
 	 ;; restore a previous autoload if possible.
 	 restore-autoload
@@ -207,22 +214,22 @@
 		      (or (and (consp (symbol-value x)) ; Random hooks.
 			       (string-match "-hooks?\\'" (symbol-name x)))
 			  (memq x unload-feature-special-hooks)))	; Known abnormal hooks etc.
-	     (dolist (y unload-function-features-list)
+	     (dolist (y unload-function-defs-list)
 	       (when (and (eq (car-safe y) 'defun)
 			  (not (get (cdr y) 'autoload)))
 		 (remove-hook x (cdr y)))))))
 	;; Remove any feature-symbols from auto-mode-alist as well.
-	(dolist (y unload-function-features-list)
+	(dolist (y unload-function-defs-list)
 	  (when (and (eq (car-safe y) 'defun)
 		     (not (get (cdr y) 'autoload)))
 	    (setq auto-mode-alist
 		  (rassq-delete-all (cdr y) auto-mode-alist)))))
       (when (fboundp 'elp-restore-function) ; remove ELP stuff first
-	(dolist (elt unload-function-features-list)
+	(dolist (elt unload-function-defs-list)
 	  (when (symbolp elt)
 	    (elp-restore-function elt))))
 
-      (dolist (x unload-function-features-list)
+      (dolist (x unload-function-defs-list)
 	(if (consp x)
 	    (case (car x)
 	      ;; Remove any feature names that this file provided.
--- a/lisp/menu-bar.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/menu-bar.el	Sat Oct 27 09:07:17 2007 +0000
@@ -56,9 +56,10 @@
 (defvar menu-bar-tools-menu (make-sparse-keymap "Tools"))
 (define-key global-map [menu-bar tools] (cons "Tools" menu-bar-tools-menu))
 ;; This definition is just to show what this looks like.
-;; It gets overridden below when menu-bar-update-buffers is called.
+;; It gets modified in place when menu-bar-update-buffers is called.
+(defvar global-buffers-menu-map (make-sparse-keymap "Buffers"))
 (define-key global-map [menu-bar buffer]
-  (cons "Buffers" (make-sparse-keymap "Buffers")))
+  (cons "Buffers" global-buffers-menu-map))
 (defvar menu-bar-options-menu (make-sparse-keymap "Options"))
 (define-key global-map [menu-bar options]
   (cons "Options" menu-bar-options-menu))
@@ -1576,7 +1577,7 @@
        (or force (frame-or-buffer-changed-p))
        (let ((buffers (buffer-list))
 	     (frames (frame-list))
-	     buffers-menu frames-menu)
+	     buffers-menu)
 	 ;; If requested, list only the N most recently selected buffers.
 	 (if (and (integerp buffers-menu-max-size)
 		  (> buffers-menu-max-size 1))
@@ -1677,10 +1678,10 @@
 	 (setq buffers-menu
 	       (nconc buffers-menu menu-bar-buffers-menu-command-entries))
 
-	 (setq buffers-menu (cons 'keymap (cons "Select Buffer" buffers-menu)))
-	 (define-key (current-global-map) [menu-bar buffer]
-	   ;; Call copy-sequence so the string is not pure.
-	   (cons (copy-sequence "Buffers") buffers-menu)))))
+         ;; We used to "(define-key (current-global-map) [menu-bar buffer]"
+         ;; but that did not do the right thing when the [menu-bar buffer]
+         ;; entry above had been moved (e.g. to a parent keymap).
+	 (setcdr global-buffers-menu-map (cons "Select Buffer" buffers-menu)))))
 
 (add-hook 'menu-bar-update-hook 'menu-bar-update-buffers)
 
@@ -1789,5 +1790,5 @@
 
 (provide 'menu-bar)
 
-;;; arch-tag: 6e6a3c22-4ec4-4d3d-8190-583f8ef94ced
+;; arch-tag: 6e6a3c22-4ec4-4d3d-8190-583f8ef94ced
 ;;; menu-bar.el ends here
--- a/lisp/msb.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/msb.el	Sat Oct 27 09:07:17 2007 +0000
@@ -454,10 +454,10 @@
 (defun msb-sort-by-directory (item1 item2)
   "Sort the items ITEM1 and ITEM2 by directory name.  Made for dired.
 An item look like (NAME . BUFFER)."
-  (string-lessp (save-excursion (set-buffer (cdr item1))
-				(msb--dired-directory))
-		(save-excursion (set-buffer (cdr item2))
-				(msb--dired-directory))))
+  (string-lessp (with-current-buffer (cdr item1)
+                  (msb--dired-directory))
+		(with-current-buffer (cdr item2)
+                  (msb--dired-directory))))
 
 ;;;
 ;;; msb
@@ -581,8 +581,7 @@
     (while rest
       (let ((found-p nil)
 	    (tmp-rest rest)
-	    result
-	    new-dir item)
+            item)
 	(setq item (car tmp-rest))
 	;; Clump together the "rest"-buffers that have a dir that is
 	;; a subdir of the current one.
@@ -745,8 +744,7 @@
   (unless (and (not msb-display-invisible-buffers-p)
 	       (msb-invisible-buffer-p buffer))
     (condition-case nil
-	(save-excursion
-	  (set-buffer buffer)
+	(with-current-buffer buffer
 	  ;; Menu found.  Add to this menu
 	  (dolist (info (msb--collect function-info-vector))
 	    (msb--add-to-menu buffer info max-buffer-name-length)))
@@ -791,8 +789,7 @@
 results in
 \((a a1 a2 a4 a3) (b b1 b3 b2) (c c3))"
   (when (not (null alist))
-    (let (result
-	  same
+    (let (same
 	  tmp-old-car
 	  tmp-same
 	  (first-time-p t)
@@ -817,7 +814,8 @@
 			 old-car (car item))
 		   (list (cons tmp-old-car (nreverse tmp-same))))))
 	       (sort alist (lambda (item1 item2)
-			     (funcall sort-predicate (car item1) (car item2))))))
+			     (funcall sort-predicate
+                                      (car item1) (car item2))))))
        (list (cons old-car (nreverse same)))))))
 
 
@@ -831,8 +829,7 @@
 	    (sort
 	     (let ((mode-list nil))
 	       (dolist (buffer (cdr (buffer-list)))
-		 (save-excursion
-		   (set-buffer buffer)
+		 (with-current-buffer buffer
 		   (when (and (not (msb-invisible-buffer-p))
 			      (not (assq major-mode mode-list)))
 		     (push (cons major-mode mode-name)
@@ -850,12 +847,10 @@
 	   (most-recently-used
 	    (loop with n = 0
 		  for buffer in buffers
-		  if (save-excursion
-		       (set-buffer buffer)
+		  if (with-current-buffer buffer
 		       (and (not (msb-invisible-buffer-p))
 			    (not (eq major-mode 'dired-mode))))
-		  collect (save-excursion
-			    (set-buffer buffer)
+		  collect (with-current-buffer buffer
 			    (cons (funcall msb-item-handling-function
 					   buffer
 					   max-buffer-name-length)
@@ -908,22 +903,20 @@
     (when file-buffers
       (setq file-buffers
 	    (mapcar (lambda (buffer-list)
-		      (cons msb-files-by-directory-sort-key
-			    (cons (car buffer-list)
-				  (sort
-				   (mapcar (function
-					    (lambda (buffer)
-					      (cons (save-excursion
-						      (set-buffer buffer)
-						      (funcall msb-item-handling-function
-							       buffer
-							       max-buffer-name-length))
-						    buffer)))
-					   (cdr buffer-list))
-				   (function
-				    (lambda (item1 item2)
-				      (string< (car item1) (car item2))))))))
-		     (msb--choose-file-menu file-buffers))))
+		      (list* msb-files-by-directory-sort-key
+                             (car buffer-list)
+                             (sort
+                              (mapcar (lambda (buffer)
+                                        (cons (with-current-buffer buffer
+                                                (funcall
+                                                 msb-item-handling-function
+                                                 buffer
+                                                 max-buffer-name-length))
+                                              buffer))
+                                      (cdr buffer-list))
+                              (lambda (item1 item2)
+                                (string< (car item1) (car item2))))))
+                    (msb--choose-file-menu file-buffers))))
     ;; Now make the menu - a list of (TITLE . BUFFER-LIST)
     (let* (menu
 	   (most-recently-used
@@ -1103,7 +1096,8 @@
 	  buffers-menu frames-menu)
       ;; Make the menu of buffers proper.
       (setq msb--last-buffer-menu (msb--create-buffer-menu))
-      (setq buffers-menu msb--last-buffer-menu)
+      ;; Skip the `keymap' symbol.
+      (setq buffers-menu (cdr msb--last-buffer-menu))
       ;; Make a Frames menu if we have more than one frame.
       (when (cdr frames)
 	(let* ((frame-length (length frames))
@@ -1124,14 +1118,13 @@
 			   (cons nil nil))
 		     'menu-bar-select-frame))
 		  frames)))))
-      (define-key (current-global-map) [menu-bar buffer]
-	(cons "Buffers"
+      (setcdr global-buffers-menu-map
 	      (if (and buffers-menu frames-menu)
 		  ;; Combine Frame and Buffers menus with separator between
-		  (nconc (list 'keymap "Buffers and Frames" frames-menu
+		  (nconc (list "Buffers and Frames" frames-menu
 			       (and msb-separator-diff '(separator "--")))
-			 (cddr buffers-menu))
-		(or buffers-menu 'undefined)))))))
+			 (cdr buffers-menu))
+                buffers-menu)))))
 
 ;; Snarf current bindings of `mouse-buffer-menu' (normally
 ;; C-down-mouse-1).
@@ -1163,5 +1156,5 @@
 (provide 'msb)
 (eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks))
 
-;;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36
+;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36
 ;;; msb.el ends here
--- a/lisp/progmodes/f90.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/progmodes/f90.el	Sat Oct 27 09:07:17 2007 +0000
@@ -540,7 +540,7 @@
     ;; TODO ? actually check for balanced parens in that case.
     '("^[ \t0-9]*\\(?:pure\\|elemental\\)?[ \t]*\
 \\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|\
-enumerator\\|generic\\|procedure\\|logical\\|double[ \t]*precision\\)\
+enumerator\\|generic\\|procedure\\|logical\\|double[ \t]*precision\\|type[ \t]*(\\sw+)\\)\
 \\(.*::\\|[ \t]*(.*)\\)?\\([^&!\n]*\\)"
       (1 font-lock-type-face t) (4 font-lock-variable-name-face t))
     ;; Derived type/class variables.
@@ -1508,7 +1508,7 @@
 Return (TYPE NAME), or nil if not found."
   (interactive)
   (let ((case-fold-search t)
-        (count 1) 
+        (count 1)
         matching-end)
     (end-of-line)
     (while (and (> count 0)
--- a/lisp/progmodes/fortran.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/progmodes/fortran.el	Sat Oct 27 09:07:17 2007 +0000
@@ -100,7 +100,7 @@
   "String to appear in mode line in TAB format buffers."
   :type  'string
   :group 'fortran-indent)
-(put 'fortran-tab-mode-string 'risky-local-variable t)
+(put 'fortran-tab-mode-string 'safe-local-variable 'stringp)
 
 (defcustom fortran-do-indent 3
   "Extra indentation applied to DO blocks."
--- a/lisp/savehist.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/savehist.el	Sat Oct 27 09:07:17 2007 +0000
@@ -309,10 +309,40 @@
 	(insert ?\n)
 	(dolist (symbol savehist-minibuffer-history-variables)
 	  (when (boundp symbol)
-	    (let ((value (savehist-trim-history (symbol-value symbol))))
-	      (when value		; don't save empty histories
-		(prin1 `(setq ,symbol ',value) (current-buffer))
-		(insert ?\n))))))
+	    (let ((value (savehist-trim-history (symbol-value symbol)))
+		  excess-space)
+	      (when value		; Don't save empty histories.
+		(insert "(setq ")
+		(prin1 symbol (current-buffer))
+		(insert " '(")
+		;; We will print an extra space before the first element.
+		;; Record where that is.
+		(setq excess-space (point))
+		;; Print elements of VALUE one by one, carefully.
+		(dolist (elt value)
+		  (let ((start (point)))
+		    (insert " ")
+		    (prin1 elt (current-buffer))
+		    ;; Try to read the element we just printed.
+		    (condition-case nil
+			(save-excursion
+			  (goto-char start)
+			  (read (current-buffer)))
+		      (error
+		       ;; If reading it gets an error, comment it out.
+		       (goto-char start)
+		       (insert "\n")
+		       (while (not (eobp))
+			 (insert ";;; ")
+			 (forward-line 1))
+		       (insert "\n")))
+		    (goto-char (point-max))))
+		;; Delete the extra space before the first element.
+		(save-excursion
+		  (goto-char excess-space)
+		  (if (eq (following-char) ?\s)
+		      (delete-region (point) (1+ (point)))))
+		(insert "))\n"))))))
       ;; Save the additional variables.
       (dolist (symbol savehist-additional-variables)
 	(when (boundp symbol)
--- a/lisp/subr.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/subr.el	Sat Oct 27 09:07:17 2007 +0000
@@ -945,7 +945,7 @@
 (make-obsolete 'focus-frame "it does nothing." "22.1")
 (defalias 'unfocus-frame 'ignore "")
 (make-obsolete 'unfocus-frame "it does nothing." "22.1")
-
+(make-obsolete 'make-variable-frame-local "use a frame-parameter instead" "22.2")
 
 ;;;; Obsolescence declarations for variables, and aliases.
 
@@ -989,7 +989,6 @@
 (defalias 'search-backward-regexp (symbol-function 're-search-backward))
 (defalias 'int-to-string 'number-to-string)
 (defalias 'store-match-data 'set-match-data)
-(defalias 'make-variable-frame-localizable 'make-variable-frame-local)
 ;; These are the XEmacs names:
 (defalias 'point-at-eol 'line-end-position)
 (defalias 'point-at-bol 'line-beginning-position)
--- a/lisp/textmodes/css-mode.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/textmodes/css-mode.el	Sat Oct 27 09:07:17 2007 +0000
@@ -37,6 +37,8 @@
   "Cascading Style Sheets (CSS) editing mode."
   :group 'languages)
 
+(eval-when-compile (require 'cl))
+
 (defun css-extract-keyword-list (res)
   (with-temp-buffer
     (url-insert-file-contents "http://www.w3.org/TR/REC-CSS2/css2.txt")
@@ -295,7 +297,7 @@
         ;; css-mode but for all modes.
         (save-restriction
           (narrow-to-region (nth 8 ppss) eol)
-          (comment-normalize-vars)
+          (comment-normalize-vars)      ;Will define comment-continue.
           (let ((fill-paragraph-function nil)
                 (paragraph-separate
                  (if (and comment-continue
--- a/lisp/textmodes/tex-mode.el	Sat Oct 27 00:25:43 2007 +0000
+++ b/lisp/textmodes/tex-mode.el	Sat Oct 27 09:07:17 2007 +0000
@@ -1932,7 +1932,8 @@
 		  (not (file-symlink-p f)))
 	     (unless (string-match ignored-dirs-re f)
 	       (setq files (nconc
-			    (directory-files f t tex-input-files-re)
+                            (ignore-errors ;Not readable or something.
+                              (directory-files f t tex-input-files-re))
 			    files)))
 	   (when (file-newer-than-file-p f file)
 	     (setq uptodate nil)))))
--- a/src/ChangeLog	Sat Oct 27 00:25:43 2007 +0000
+++ b/src/ChangeLog	Sat Oct 27 09:07:17 2007 +0000
@@ -56,6 +56,15 @@
 	* frame.c (Qwindow_system): Remove.  In `syms_of_frame' as well.
 	(Fmake_terminal_frame): Don't set obsolete `window-system' frame-param.
 
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+	* frame.c (x_figure_window_size): For fullscreen case,
+	set USPosition | PPosition without clobbering rest of window_prompting.
+
+	* keyboard.c (Fcurrent_idle_time): Doc fix.
+
+	* print.c (Fwith_output_to_temp_buffer): Doc fix.
+
 2007-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* process.c (unwind_request_sigio): Only define if __ultrix__.
--- a/src/eval.c	Sat Oct 27 00:25:43 2007 +0000
+++ b/src/eval.c	Sat Oct 27 09:07:17 2007 +0000
@@ -2194,7 +2194,14 @@
   /* Preserve the match data.  */
   record_unwind_save_match_data ();
 
-  /* Value saved here is to be restored into Vautoload_queue.  */
+  /* If autoloading gets an error (which includes the error of failing
+     to define the function being called), we use Vautoload_queue
+     to undo function definitions and `provide' calls made by
+     the function.  We do this in the specific case of autoloading
+     because autoloading is not an explicit request "load this file",
+     but rather a request to "call this function".
+     
+     The value saved here is to be restored into Vautoload_queue.  */
   record_unwind_protect (un_autoload, Vautoload_queue);
   Vautoload_queue = Qt;
   Fload (Fcar (Fcdr (fundef)), Qnil, Qt, Qnil, Qt);
--- a/src/frame.c	Sat Oct 27 00:25:43 2007 +0000
+++ b/src/frame.c	Sat Oct 27 09:07:17 2007 +0000
@@ -4182,7 +4182,7 @@
       int width, height;
 
       /* It takes both for some WM:s to place it where we want */
-      window_prompting = USPosition | PPosition;
+      window_prompting |= USPosition | PPosition;
       x_fullscreen_adjust (f, &width, &height, &top, &left);
       FRAME_COLS (f) = width;
       FRAME_LINES (f) = height;
--- a/src/keyboard.c	Sat Oct 27 00:25:43 2007 +0000
+++ b/src/keyboard.c	Sat Oct 27 09:07:17 2007 +0000
@@ -4716,12 +4716,14 @@
 }
 
 DEFUN ("current-idle-time", Fcurrent_idle_time, Scurrent_idle_time, 0, 0, 0,
-       doc: /* Return the current length of Emacs idleness.
-The value is returned as a list of three integers.  The first has the
+       doc: /* Return the current length of Emacs idleness, or nil.
+The value when Emacs is idle is a list of three integers.  The first has the
 most significant 16 bits of the seconds, while the second has the
 least significant 16 bits.  The third integer gives the microsecond
 count.
 
+The value when Emacs is not idle is nil.
+
 The microsecond count is zero on systems that do not provide
 resolution finer than a second.  */)
   ()
--- a/src/print.c	Sat Oct 27 00:25:43 2007 +0000
+++ b/src/print.c	Sat Oct 27 09:07:17 2007 +0000
@@ -675,21 +675,30 @@
        Fwith_output_to_temp_buffer, Swith_output_to_temp_buffer,
        1, UNEVALLED, 0,
        doc: /* Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.
-The buffer is cleared out initially, and marked as unmodified when done.
-All output done by BODY is inserted in that buffer by default.
-The buffer is displayed in another window, but not selected.
-The value of the last form in BODY is returned.
-If BODY does not finish normally, the buffer BUFNAME is not displayed.
+
+This construct makes buffer BUFNAME empty before running BODY.
+It does not make the buffer current for BODY.
+Instead it binds `standard-output' to that buffer, so that output
+generated with `prin1' and similar functions in BODY goes into
+the buffer.
 
-The hook `temp-buffer-setup-hook' is run before BODY,
-with the buffer BUFNAME temporarily current.
-The hook `temp-buffer-show-hook' is run after the buffer is displayed,
-with the buffer temporarily current, and the window that was used
-to display it temporarily selected.
+At the end of BODY, this marks buffer BUFNAME unmodifed and displays
+it in a window, but does not select it.  The normal way to do this is
+by calling `display-buffer', then running `temp-buffer-show-hook'.
+However, if `temp-buffer-show-function' is non-nil, it calls that
+function instead (and does not run `temp-buffer-show-hook').  The
+function gets one argument, the buffer to display.
 
-If variable `temp-buffer-show-function' is non-nil, call it at the end
-to get the buffer displayed instead of just displaying the non-selected
-buffer and calling the hook.  It gets one argument, the buffer to display.
+The return value of `with-output-to-temp-buffer' is the value of the
+last form in BODY.  If BODY does not finish normally, the buffer
+BUFNAME is not displayed.
+
+This runs the hook `temp-buffer-setup-hook' before BODY,
+with the buffer BUFNAME temporarily current.  It runs the hook
+`temp-buffer-show-hook' after displaying buffer BUFNAME, with that
+buffer temporarily current, and the window that was used to display it
+temporarily selected.  But it doesn't run `temp-buffer-show-hook'
+if it uses `temp-buffer-show-function'.
 
 usage: (with-output-to-temp-buffer BUFNAME BODY...)  */)
      (args)