changeset 90114:e4694597cbf4

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-21 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0 (patch 129-149) - Update from CVS - Merge from gnus--rel--5.10 - (make-text-button): Default button type if not specified - quick-install-emacs: Use mkdir --verbose only when requested * miles@gnu.org--gnu-2005/gnus--rel--5.10 (patch 31-33) - Merge from emacs--cvs-trunk--0 - Update from CVS
author Miles Bader <miles@gnu.org>
date Thu, 03 Mar 2005 10:35:22 +0000
parents a50413a4ba8b (current diff) 70a63281c541 (diff)
children fb290921b93c
files admin/ChangeLog admin/FOR-RELEASE admin/quick-install-emacs etc/ChangeLog etc/DEBUG etc/NEWS lisp/ChangeLog lisp/button.el lisp/calendar/calendar.el lisp/calendar/diary-lib.el lisp/cus-edit.el lisp/double.el lisp/emacs-lisp/copyright.el lisp/emacs-lisp/debug.el lisp/emacs-lisp/re-builder.el lisp/emacs-lisp/trace.el lisp/gnus/ChangeLog lisp/gnus/gnus-sum.el lisp/gnus/mm-decode.el lisp/ibuf-ext.el lisp/mouse.el lisp/net/tramp.el lisp/progmodes/gdb-ui.el lisp/progmodes/perl-mode.el lisp/register.el lisp/replace.el lisp/reveal.el lisp/speedbar.el lisp/textmodes/flyspell.el lisp/textmodes/ispell.el lisp/textmodes/texinfmt.el lisp/vc.el lispref/ChangeLog lispref/abbrevs.texi lispref/advice.texi lispref/backups.texi lispref/commands.texi lispref/debugging.texi lispref/elisp.texi lispref/help.texi lispref/keymaps.texi lispref/macros.texi lispref/markers.texi lispref/os.texi lispref/processes.texi lispref/sequences.texi lispref/syntax.texi lispref/tips.texi man/ChangeLog man/building.texi man/calc.texi man/calendar.texi man/fixit.texi man/frames.texi man/m-x.texi man/mark.texi man/mini.texi man/screen.texi man/trouble.texi src/ChangeLog src/buffer.c src/dispextern.h src/gtkutil.c src/keyboard.c src/xdisp.c
diffstat 67 files changed, 1576 insertions(+), 1004 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/admin/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,9 @@
+2005-03-02  Miles Bader  <miles@gnu.org>
+
+	* quick-install-emacs: Only use the mkdir --verbose option if the
+	script's --verbose option was specified (this avoids problems with
+	default usage on systems where mkdir doesn't support that option).
+
 2005-02-15  Jason Rumney  <jasonr@gnu.org>
 
 	* nt/makedist.bat: Do not rely on non-standard behaviour of
--- a/admin/FOR-RELEASE	Wed Mar 02 11:04:29 2005 +0000
+++ b/admin/FOR-RELEASE	Thu Mar 03 10:35:22 2005 +0000
@@ -37,9 +37,6 @@
 
 ** Fix up url-ldap.el.
 
-** url/*.el has lots of `(declare (special ...))' which
-are meaningless.  What's that trying to do?
-
 * BUGS
 
 ** Ange-ftp should ignore irrelevant IPv6 errors:
@@ -232,17 +229,17 @@
 
 SECTION                  READERS
 ----------------------------------
-lispref/abbrevs.texi     "Luc Teirlinck"
-lispref/advice.texi	 Joakim Verona <joakim@verona.se>
+lispref/abbrevs.texi     "Luc Teirlinck"   Chong Yidong
+lispref/advice.texi	 joakim@verona.se  Chong Yidong
 lispref/anti.texi
-lispref/backups.texi     "Luc Teirlinck"  Chong Yidong
+lispref/backups.texi     "Luc Teirlinck"   Chong Yidong
 lispref/buffers.texi     "Luc Teirlinck"   Chong Yidong
 lispref/calendar.texi    Joakim Verona <joakim@verona.se>
-lispref/commands.texi    "Luc Teirlinck"
+lispref/commands.texi    "Luc Teirlinck"   Chong Yidong
 lispref/compile.texi     "Luc Teirlinck"   Chong Yidong
 lispref/control.texi     "Luc Teirlinck"   Chong Yidong
 lispref/customize.texi
-lispref/debugging.texi   Joakim Verona <joakim@verona.se>
+lispref/debugging.texi   Joakim Verona <joakim@verona.se>   Lute Kamstra
 lispref/display.texi
 lispref/edebug.texi
 lispref/elisp.texi       "Luc Teirlinck"
@@ -252,17 +249,17 @@
 lispref/frames.texi      "Luc Teirlinck"   Chong Yidong
 lispref/functions.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/hash.texi	 "Luc Teirlinck"   Chong Yidong
-lispref/help.texi	 "Luc Teirlinck"
+lispref/help.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/hooks.texi
 lispref/internals.texi	 "Luc Teirlinck"
 lispref/intro.texi	 "Luc Teirlinck"
-lispref/keymaps.texi	 "Luc Teirlinck"
+lispref/keymaps.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/lists.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/loading.texi     "Luc Teirlinck"   Chong Yidong
 lispref/locals.texi
-lispref/macros.texi      "Luc Teirlinck"
+lispref/macros.texi      "Luc Teirlinck"   Chong Yidong
 lispref/maps.texi
-lispref/markers.texi     "Luc Teirlinck"
+lispref/markers.texi     "Luc Teirlinck"   Chong Yidong
 lispref/minibuf.texi     "Luc Teirlinck"   Chong Yidong
 lispref/modes.texi	 Chong Yidong
 lispref/nonascii.texi    "Luc Teirlinck"
@@ -270,7 +267,7 @@
 lispref/objects.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/os.texi		 "Luc Teirlinck"   Chong Yidong
 lispref/positions.texi	 "Luc Teirlinck"   Chong Yidong
-lispref/processes.texi
+lispref/processes.texi   Chong Yidong
 lispref/searching.texi	 "Luc Teirlinck"
 lispref/sequences.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/streams.texi	 "Luc Teirlinck"   Chong Yidong
--- a/admin/quick-install-emacs	Wed Mar 02 11:04:29 2005 +0000
+++ b/admin/quick-install-emacs	Thu Mar 03 10:35:22 2005 +0000
@@ -19,15 +19,16 @@
 
 me="`basename $0`"
 
-# Install commands (these commands are also expected to understand the
-# GNU -v (--verbose) option)
+# Install commands (if the user specifies the `--verbose' option, it is
+# passed to these commands, so that feature only works if these commands
+# implement it too)
 LINK='cp -lf'
 COPY='cp -f'
 REMOVE='rm -r'
+MKDIR='mkdir -p'
 
 # Used to execute commands once once we create them
 EXEC='sh'
-MKDIR='mkdir --verbose -p'
 
 NAWK=/usr/bin/nawk
 
@@ -157,7 +158,7 @@
 maybe_mkdir ()
 {
   if ! test -d "$1"; then
-    $MKDIR "$1" 2>&1 | sed "s/^mkdir:/$me:/" 1>&2
+    $MKDIR $VERBOSE "$1" 2>&1 | sed "s/^mkdir:/$me:/" 1>&2
   fi
 }
 
--- a/etc/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/etc/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,7 @@
+2005-03-01  David Kastrup  <dak@gnu.org>
+
+	* DEBUG: Add information about `-fno-crossjumping' for GCC.
+
 2005-02-14  Lute Kamstra  <lute@gnu.org>
 
 	* TODO: Remove battery.el entry (DONE).
--- a/etc/DEBUG	Wed Mar 02 11:04:29 2005 +0000
+++ b/etc/DEBUG	Thu Mar 03 10:35:22 2005 +0000
@@ -1,5 +1,5 @@
 Debugging GNU Emacs
-Copyright (c) 1985, 2000, 2001 Free Software Foundation, Inc.
+Copyright (c) 1985, 2000, 2001, 2005 Free Software Foundation, Inc.
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the
@@ -20,6 +20,13 @@
 where the executable was made.  That directory has a .gdbinit file
 that defines various "user-defined" commands for debugging Emacs.
 
+** When you are trying to analyze failed assertions, it will be
+essential to compile Emacs either completely without optimizations or
+at least (when using GCC) with the -fno-crossjumping option.  Failure
+to do so may make the compiler recycle the same abort call for all
+assertions in a given function, rendering the stack backtrace useless
+for identifying the specific failed assertion.
+
 ** It is a good idea to run Emacs under GDB (or some other suitable
 debugger) *all the time*.  Then, when Emacs crashes, you will be able
 to debug the live process, not just a core dump.  (This is especially
--- a/etc/NEWS	Wed Mar 02 11:04:29 2005 +0000
+++ b/etc/NEWS	Thu Mar 03 10:35:22 2005 +0000
@@ -228,8 +228,8 @@
 Dragging the Mouse-1 inside a link still performs the original
 drag-mouse-1 action, typically copy the text.
 
-You can customize the new Mouse-1 behavior via the new user option
-`mouse-1-click-follows-link'.
+You can customize the new Mouse-1 behavior via the new user options
+`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
 
 +++
 ** require-final-newline now has two new possible values:
@@ -1674,6 +1674,9 @@
 prompts for a year and a week number, and moves to the first
 day of that ISO week.
 
+** The new variable `calendar-minimum-window-height' affects the
+window generated by the function `generate-calendar-window'.
+
 ---
 ** The functions `holiday-easter-etc' and `holiday-advent' now take
 optional arguments, in order to only report on the specified holiday
--- a/lisp/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,11 +1,178 @@
+2005-03-02  Romain Francoise  <romain@orebokech.com>
+
+	* ibuf-ext.el (ibuffer-filter-disable): Move back to the current
+	buffer after removing limits.
+	(ibuffer-pop-filter): Ditto.
+	Update copyright.
+
+2005-03-02  Miles Bader  <miles@gnu.org>
+
+	* button.el (make-text-button): If the user doesn't specify a
+	type, use the default.  Rewrite to use `add-text-properties' and
+	plist functions.
+
+2005-03-01  Robert J. Chassell  <bob@rattlesnake.com>
+
+	* textmodes/texinfmt.el: (texinfo-no-refill-regexp): Comment out
+	inclusion of "itemize\\|", which may be unnecessary, is certainly
+	inelegant, and stops refilling in itemize lists when formatting
+	Japanese Texinfo files to Info.
+	Update copyright to 2005.
+
+2005-03-01  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (gdb-get-location): Use a warning instead
+	of an error if GDB can't find the source file.
+
+2005-03-01  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar/calendar.el (redraw-calendar): Work from any buffer,
+	not just the calendar.
+
+	* calendar/diary-lib.el (mark-diary-entries): Remove any old marks
+	first.
+	(diary-redraw-calendar): New function.
+	(make-diary-entry): Add diary-redraw-calendar to local
+	write-contents-functions.  Turn off selective display before
+	inserting in diary.
+
+2005-03-01  Kim F. Storm  <storm@cua.dk>
+
+	* emacs-lisp/copyright.el (copyright-fix-years): New command.
+
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/debug.el (debug-on-entry-1): Reimplement to make sure
+	that debug-entry-code can be safely removed from a function while
+	this code is being evaluated.  Revert the 2005-02-27 change as the
+	new implementation no longer requires it.  Make sure that a
+	function body containing just a string is not mistaken for a
+	docstring.
+	(debug): Skip one more frame in case of debug on entry.
+	(debugger-setup-buffer): Delete one more frame line in case of
+	debug on entry.
+	(debugger-frame-number): Update to use the new text introduced by
+	the 1999-11-03 change.  Skip one more frame in case of debug on
+	entry.
+
+2005-02-28  Kim F. Storm  <storm@cua.dk>
+
+	* double.el (double-translate-key): Call force-window-update after
+	read-event to avoid crash in redisplay.
+
+2005-02-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/debug.el (inhibit-debug-on-entry): New var.
+	(debug): Use it.  Move the inhibit-trace earlier.
+	(debug-entry-code): New const.
+	(debug-on-entry-1): Use it.
+
+2005-02-28  Chong Yidong" <cyd@stupidchicken.com> (tiny change)
+
+	* international/utf-16.el (ccl-encode-mule-utf-16le):
+	Fix BUFFER_MAGNIFICATION to 2.
+	(ccl-encode-mule-utf-16be): Likewise.
+
+2005-02-28  Kenichi Handa  <handa@m17n.org>
+
+	* international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
+	Fix BUFFER_MAGNIFICATION to 4.
+	(ccl-encode-mule-utf-16be-with-signature): Likewise.
+
+2005-02-28  Nick Roberts  <nickrob@snap.net.nz>
+
+	* speedbar.el (speedbar-update-flag): Doc fix.
+	(speedbar-show-info-under-mouse): Give set-mouse-position the right
+	argument.
+
+2005-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* reveal.el (reveal-post-command): Don't try to reveal overlays which
+	have a non-nil `invisible' property but are actually visible.
+
+	* progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries
+	for perldoc sections.
+	(perl-outline-regexp, perl-outline-level): New var and function.
+	(perl-mode): Use them.
+
+2005-02-27  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar/diary-lib.el (diary-remind): Discard any mark portion
+	from diary-entry.  Reported by Andrew Kemp <ajwk@pell.uklinux.net>.
+
+2005-02-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* cus-edit.el: Comment change.
+	(custom-buffer-create-internal): Slightly reword text at top of
+	Custom buffers.  Mention there that saving an option edits the
+	init file.  Add link to Emacs manual node on `custom-file'.
+	(custom-magic-alist): Rewrite individual State messages to use
+	capitalized keywords.  Doc fix.
+
+2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
+
+	* calendar/calendar.el (calendar-buffer): Move above
+	calendar-week-start-day.
+	(calendar-week-start-day): Doc fix.  Add :set function.
+	(calendar-minimum-window-height): New variable.
+	(generate-calendar-window): Only resize window if selected-window
+	is displaying the calendar buffer.  Use new variable
+	calendar-minimum-window-height.
+	(generate-calendar): Reword error message.
+	(calendar-mode-map): Bind DEL to scroll-other-window-down.
+
+2005-02-27  Andreas Schwab  <schwab@suse.de>
+
+	* vc.el (vc-do-command): Don't run command asynchronously when
+	operating in a remote directory.
+
+	* net/tramp.el (tramp-file-name-for-operation): Fix misapplied
+	change from sync with Tramp 2.0.47.
+
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+	* textmodes/ispell.el (ispell-change-dictionary): Doc fix.
+
+	* textmodes/flyspell.el (flyspell-mode-on):
+	Call ispell-change-dictionary only if necessary.
+
+	* emacs-lisp/re-builder.el (regexp-builder): New function.
+
+	* register.el (describe-register-1): Explicitly handle
+	yank-excluded-properties = t.
+
+	* cus-edit.el (custom-buffer-create-internal): Improve progress msgs.
+	(custom-magic-alist): Change the status descriptions again.
+	(face widget-type): Total rewrite based on `restricted-sexp'
+	to eliminate the confusing double hiding levels.
+
+	* emacs-lisp/debug.el (debug-on-entry-1):
+	If function body is empty, add nil as body form.
+
+2005-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/trace.el (inhibit-trace): New var.
+	(trace-make-advice): Use it.
+
+	* emacs-lisp/debug.el (debug): Put back the inhibit-trace.
+
+2005-02-26  Kim F. Storm  <storm@cua.dk>
+
+	* mouse.el (mouse-1-click-in-non-selected-windows): New defcustom.
+	(mouse-on-link-p, mouse-drag-region-1): Use it.
+
+2005-02-25  Lute Kamstra  <lute@gnu.org>
+
+	* replace.el (query-replace-read-from): Fix 2005-02-19 change.
+
 2005-02-24  Luc Teirlinck  <teirllm@auburn.edu>
 
 	* frame.el (blink-cursor-mode): Add :group keyword.
 
 2005-02-24  Ulf Jasper  <ulf.jasper@web.de>
 
-	* calendar/icalendar.el (icalendar--decode-isodatetime): New
-	optional argument DAY-SHIFT.
+	* calendar/icalendar.el (icalendar--decode-isodatetime):
+	New optional argument DAY-SHIFT.
 	(icalendar-export-region): Fix coding-system-for-write.
 	(icalendar--convert-ical-to-diary): Shift end-day of all-day
 	events by one.
@@ -20,6 +187,13 @@
 	during redisplay.  Call force-window-update after read-event
 	and delete-region to signal that window is not accurate.
 
+2005-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/debug.el (debug): Hide the buffer if it's not killed.
+	Remove unused and inexistent var `inhibit-trace'.
+	(debugger-mode): Use run-mode-hooks.
+	(debugger-list-functions): Add buttons; setup xref stack.
+
 2005-02-23  Richard M. Stallman  <rms@gnu.org>
 
 	* calendar/appt.el (appt-time-msg-list): 3rd elt of each
@@ -152,8 +326,8 @@
 	* 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): Use
-	viper-gnus-modifier-map.
+	* viper.el (viper-major-mode-modifier-list):
+	Use viper-gnus-modifier-map.
 
 2005-02-19  David Kastrup  <dak@gnu.org>
 
@@ -163,7 +337,7 @@
 2005-02-19  Jay Belanger  <belanger@truman.edu>
 
 	* calc/calc-math.el (calc-arctan, calc-tanh, calc-arctanh):
-	Removed extra definitions.
+	Remove extra definitions.
 	(calc-coth): New function.
 	(calcFunc-cot): Fix `let'.
 
@@ -180,8 +354,8 @@
 	query-replace-from-history-variable to handle the case of an empty
 	string entered to accept the suggested default.
 
-	* net/tramp.el (tramp-file-name-for-operation): Use
-	dired-call-process instead of dired-call-process-command.
+	* net/tramp.el (tramp-file-name-for-operation):
+	Use dired-call-process instead of dired-call-process-command.
 
 2005-02-19  Jay Belanger  <belanger@truman.edu>
 
@@ -202,22 +376,22 @@
 
 2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-	* ediff.el (ediff-set-diff-overlays-in-one-buffer,
-	ediff-set-fine-overlays-in-one-buffer,ediff-goto-word) make sure
+	* ediff.el (ediff-set-diff-overlays-in-one-buffer)
+	(ediff-set-fine-overlays-in-one-buffer,ediff-goto-word): Make sure
 	we use the syntax table of the correct buffer.
-	(ediff-same-file-contents,ediff-same-contents): enhancements thanks to
+	(ediff-same-file-contents,ediff-same-contents): Enhancements thanks to
 	Felix Gatzemeier.
 
-	* ediff-init.el (ediff-hide-face): checks for definedness of functions.
-	(ediff-file-remote-p): make synonymous with file-remote-p.
+	* ediff-init.el (ediff-hide-face): Check for definedness of functions.
+	(ediff-file-remote-p): Make synonymous with file-remote-p.
 	In all deffaces ediff-*-face-*, use min-colors.
 
-	* ediff-mult.el (ediff-meta-mark-equal-files): make use of
-        ediff-recurse-to-subdirectories.
-	(ediff-mark-if-equal): check that the arguments are strings, use
+	* ediff-mult.el (ediff-meta-mark-equal-files): Make use of
+	ediff-recurse-to-subdirectories.
+	(ediff-mark-if-equal): Check that the arguments are strings, use
 	ediff-same-contents (after to Felix Gatzemeier).
 
-	* ediff.el (ediff-merge-on-startup): don't set buffer-modified-p to
+	* ediff.el (ediff-merge-on-startup): Don't set buffer-modified-p to
 	nil.
 
 2005-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -287,7 +461,7 @@
 2005-02-15  Jay Belanger  <belanger@truman.edu>
 
 	* calc/calc-alg.el: Add simplification rules for calcFunc-sec,
-	calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch and
+	calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch, and
 	calcFunc-coth.
 	(math-simplify-sqrt): Add simplifications.
 
--- a/lisp/button.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/button.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; button.el --- clickable buttons
 ;;
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2005 Free Software Foundation, Inc.
 ;;
 ;; Author: Miles Bader <miles@gnu.org>
 ;; Keywords: extensions
@@ -298,24 +298,23 @@
 `make-text-button'.
 
 Also see `insert-text-button'."
-  (let (prop val)
-    (while properties
-      (setq prop (pop properties))
-      (setq val (pop properties))
-      ;; Note that all the following code is basically equivalent to
-      ;; `button-put', but we can do it much more efficiently since we
-      ;; already have BEG and END.
-      (cond ((memq prop '(type :type))
-	     ;; We translate a `type' property into a `category'
-	     ;; property, since that's what's actually used by
-	     ;; text-properties for inheritance.
-	     (setq prop 'category)
-	     (setq val (button-category-symbol val)))
-	    ((eq prop 'category)
-	     ;; Disallow setting the `category' property directly.
-	     (error "Button `category' property may not be set directly")))
-      ;; Add the property.
-      (put-text-property beg end prop val)))
+  (let ((type-entry
+	 (or (plist-member properties 'type)
+	     (plist-member properties :type))))
+    ;; Disallow setting the `category' property directly.
+    (when (plist-get properties 'category)
+      (error "Button `category' property may not be set directly"))
+    (if (null type-entry)
+	;; The user didn't specify a `type' property, use the default.
+	(setq properties (cons 'category (cons 'default-button properties)))
+      ;; The user did specify a `type' property.  Translate it into a
+      ;; `category' property, which is what's actually used by
+      ;; text-properties for inheritance.
+      (setcar type-entry 'category)
+      (setcar (cdr type-entry)
+	      (button-category-symbol (car (cdr type-entry))))))
+  ;; Now add all the text properties at once
+  (add-text-properties beg end properties)
   ;; Return something that can be used to get at the button.
   beg)
 
--- a/lisp/calendar/calendar.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/calendar/calendar.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,7 +1,7 @@
 ;;; calendar.el --- calendar functions
 
 ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
-;;	2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+;;	2000, 2001, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
 ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
@@ -141,11 +141,25 @@
   :group 'calendar)
 
 
+(defconst calendar-buffer "*Calendar*"
+  "Name of the buffer used for the calendar.")
+
 ;;;###autoload
 (defcustom calendar-week-start-day 0
   "*The day of the week on which a week in the calendar begins.
-0 means Sunday (default), 1 means Monday, and so on."
+0 means Sunday (default), 1 means Monday, and so on.
+
+If you change this variable directly (without using customize)
+after starting `calendar', you should call `redraw-calendar' to
+update the calendar display to reflect the change, otherwise
+movement commands will not work correctly."
   :type 'integer
+  :set (lambda (sym val)
+         (set sym val)
+         (let ((buffer (get-buffer calendar-buffer)))
+           (when (buffer-live-p buffer)
+             (with-current-buffer buffer
+               (redraw-calendar)))))
   :group 'calendar)
 
 ;;;###autoload
@@ -1303,9 +1317,6 @@
   :type 'sexp
   :group 'holidays)
 
-(defconst calendar-buffer "*Calendar*"
-  "Name of the buffer used for the calendar.")
-
 (defconst holiday-buffer "*Holidays*"
   "Name of the buffer used for the displaying the holidays.")
 
@@ -1563,7 +1574,7 @@
 The choices are: `one-frame' (calendar and diary together in one separate,
 dedicated frame); `two-frames' (calendar and diary in separate, dedicated
 frames); `calendar-only' (calendar in a separate, dedicated frame); with
-any other value the current frame is used.  Using any of the first 
+any other value the current frame is used.  Using any of the first
 three options overrides the value of `view-diary-entries-initially'."
   :type '(choice
           (const :tag "calendar and diary in separate frame" one-frame)
@@ -1572,6 +1583,12 @@
           (const :tag "use current frame" nil))
   :group 'calendar)
 
+(defcustom calendar-minimum-window-height 8
+  "Minimum height `generate-calendar-window' should use for calendar window."
+  :type 'integer
+  :version "22.1"
+  :group 'calendar)
+
 ;;;###autoload
 (defun calendar (&optional arg)
   "Choose between the one frame, two frame, or basic calendar displays.
@@ -2039,28 +2056,33 @@
           (or (not mon)
               (let ((offset (calendar-interval mon yr month year)))
                 (and (<= offset 1) (>= offset -1)))))
-         (day-in-week (calendar-day-of-week today)))
+         (day-in-week (calendar-day-of-week today))
+         (in-calendar-window (eq (window-buffer (selected-window))
+                                 (get-buffer calendar-buffer))))
     (update-calendar-mode-line)
     (if mon
         (generate-calendar mon yr)
-        (generate-calendar month year))
+      (generate-calendar month year))
     (calendar-cursor-to-visible-date
      (if today-visible today (list displayed-month 1 displayed-year)))
     (set-buffer-modified-p nil)
-    (if (or (one-window-p t) (/= (frame-width) (window-width)))
-	;; Don't mess with the window size, but ensure that the first
-	;; line is fully visible
-	(set-window-vscroll nil 0)
-      ;; Adjust the window to exactly fit the displayed calendar
-      (fit-window-to-buffer))
-    (sit-for 0)
+    ;; Don't do any window-related stuff if we weren't called from a
+    ;; window displaying the calendar
+    (when in-calendar-window
+      (if (or (one-window-p t) (/= (frame-width) (window-width)))
+          ;; Don't mess with the window size, but ensure that the first
+          ;; line is fully visible
+          (set-window-vscroll nil 0)
+        ;; Adjust the window to exactly fit the displayed calendar
+        (fit-window-to-buffer nil nil calendar-minimum-window-height))
+      (sit-for 0))
     (if (and (boundp 'font-lock-mode)
 	     font-lock-mode)
 	(font-lock-fontify-buffer))
     (and mark-holidays-in-calendar
 ;;;         (calendar-date-is-legal-p today) ; useful for BC dates
          (mark-calendar-holidays)
-         (sit-for 0))
+         (and in-calendar-window (sit-for 0)))
     (unwind-protect
         (if mark-diary-entries-in-calendar (mark-diary-entries))
       (if today-visible
@@ -2071,10 +2093,10 @@
   "Generate a three-month Gregorian calendar centered around MONTH, YEAR."
 ;;; A negative YEAR is interpreted as BC; -1 being 1 BC, and so on.
 ;;; Note that while calendars for years BC could be displayed as it
-;;; stands, almost all other calendar functions (eg holidays) would 
+;;; stands, almost all other calendar functions (eg holidays) would
 ;;; at best have unpredictable results for such dates.
   (if (< (+ month (* 12 (1- year))) 2)
-      (error "Months before February, 1 AD are not available"))
+      (error "Months before January, 1 AD cannot be displayed"))
   (setq displayed-month month
         displayed-year year)
   (erase-buffer)
@@ -2147,11 +2169,13 @@
   t)
 
 (defun redraw-calendar ()
-  "Redraw the calendar display."
+  "Redraw the calendar display, if `calendar-buffer' is live."
   (interactive)
-  (let ((cursor-date (calendar-cursor-to-nearest-date)))
-    (generate-calendar-window displayed-month displayed-year)
-    (calendar-cursor-to-visible-date cursor-date)))
+  (if (get-buffer calendar-buffer)
+      (with-current-buffer calendar-buffer
+        (let ((cursor-date (calendar-cursor-to-nearest-date)))
+          (generate-calendar-window displayed-month displayed-year)
+          (calendar-cursor-to-visible-date cursor-date)))))
 
 (defcustom calendar-debug-sexp nil
   "*Turn debugging on when evaluating a sexp in the diary or holiday list."
@@ -2229,6 +2253,7 @@
   (define-key calendar-mode-map "S"   'calendar-sunrise-sunset)
   (define-key calendar-mode-map "M"   'calendar-phases-of-moon)
   (define-key calendar-mode-map " "   'scroll-other-window)
+  (define-key calendar-mode-map (kbd "DEL") 'scroll-other-window-down)
   (define-key calendar-mode-map "\C-c\C-l" 'redraw-calendar)
   (define-key calendar-mode-map "."   'calendar-goto-today)
   (define-key calendar-mode-map "o"   'calendar-other-month)
--- a/lisp/calendar/diary-lib.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/calendar/diary-lib.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; diary-lib.el --- diary functions
 
-;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2003, 2004
+;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2003, 2004, 2005
 ;;           Free Software Foundation, Inc.
 
 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
@@ -841,6 +841,10 @@
 After the entries are marked, the hooks `nongregorian-diary-marking-hook' and
 `mark-diary-entries-hook' are run."
   (interactive)
+  ;; To remove any deleted diary entries.
+  (when mark-diary-entries-in-calendar
+    (setq mark-diary-entries-in-calendar nil)
+    (redraw-calendar))
   (let ((marking-diary-entries t)
         file-glob-attrs marks)
     (save-excursion
@@ -1625,8 +1629,10 @@
            (or (not marking-diary-entries) marking))
       (let ((date (calendar-gregorian-from-absolute
                    (+ (calendar-absolute-from-gregorian date) days))))
-        (if (setq diary-entry (eval sexp))
-            (mapconcat 'eval diary-remind-message ""))))
+        (when (setq diary-entry (eval sexp)) ; re-evaluate with adjusted date
+          ;; Discard any mark portion from diary-anniversary, etc.
+          (if (consp diary-entry) (setq diary-entry (cdr diary-entry)))
+          (mapconcat 'eval diary-remind-message ""))))
      ;; Diary entry may apply to one of a list of days before date
      ((and (listp days) days)
       (or (diary-remind sexp (car days) marking)
@@ -1645,11 +1651,26 @@
           (append diary-entries-list
                   (list (list date string specifier marker globcolor))))))
 
+(defun diary-redraw-calendar ()
+  "If `calendar-buffer' is live and diary entries are marked, redraw it."
+  (and mark-diary-entries-in-calendar
+       (redraw-calendar))
+  ;; Return value suitable for `write-contents-functions'.
+  nil)
+
 (defun make-diary-entry (string &optional nonmarking file)
   "Insert a diary entry STRING which may be NONMARKING in FILE.
-If omitted, NONMARKING defaults to nil and FILE defaults to `diary-file'."
+If omitted, NONMARKING defaults to nil and FILE defaults to
+`diary-file'.  Adds `diary-redraw-calendar' to
+`write-contents-functions' for FILE, so that the calendar will be
+redrawn with the new entry marked, if necessary."
   (let ((pop-up-frames (window-dedicated-p (selected-window))))
     (find-file-other-window (substitute-in-file-name (or file diary-file))))
+  (add-hook 'write-contents-functions 'diary-redraw-calendar nil t)
+  (when selective-display
+    (subst-char-in-region (point-min) (point-max) ?\^M ?\n t)
+    (setq selective-display nil)
+    (kill-local-variable 'mode-line-format))
   (widen)
   (goto-char (point-max))
   (when (let ((case-fold-search t))
--- a/lisp/cus-edit.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/cus-edit.el	Thu Mar 03 10:35:22 2005 +0000
@@ -121,10 +121,11 @@
 ;; 6. rogue
 
 ;;    There is no standard value.  This means that the variable was
-;;    not defined with defcustom.  You can not create a Custom buffer
-;;    for such variables using the normal interactive Custom commands.
-;;    However, such Custom buffers can be created in other ways, for
-;;    instance, by calling `customize-option' non-interactively.
+;;    not defined with defcustom, nor handled in cus-start.el.  You
+;;    can not create a Custom buffer for such variables using the
+;;    normal interactive Custom commands.  However, such Custom
+;;    buffers can be created in other ways, for instance, by calling
+;;    `customize-option' non-interactively.
 
 ;; 7. hidden
 
@@ -1367,7 +1368,6 @@
   :group 'custom-buffer)
 
 (defun custom-buffer-create-internal (options &optional description)
-  (message "Creating customization buffer...")
   (custom-mode)
   (if custom-buffer-verbose-help
       (progn
@@ -1377,17 +1377,23 @@
 	(widget-insert (format ".
 %s show active fields; type RET or click mouse-1
 on an active field to invoke its action.  Editing an option value
-changes the text in the buffer; invoke the State button and
-choose the Set operation to set the option value.
-Invoke " (if custom-raised-buttons
-	     "`Raised' buttons"
-	     "Square brackets")))
+changes only the text in the buffer.  Invoke the State button to set or
+save the option value.  Saving an option normally edits your init file.
+Invoke "
+			       (if custom-raised-buttons
+				   "`Raised' buttons"
+				 "Square brackets")))
+	(widget-create 'info-link
+		       :tag "Custom file"
+		       "(emacs)Saving Customizations")
+	(widget-insert
+	 " for information on how to save in a different file.
+Invoke ")
 	(widget-create 'info-link
 		       :tag "Help"
 		       :help-echo "Read the online help."
 		       "(emacs)Easy Customization")
-	(widget-insert " for more information.\n\n")
-	(message "Creating customization buttons...")
+	(widget-insert " for general information.\n\n")
 	(widget-insert "Operate on everything in this buffer:\n "))
     (widget-insert " "))
   (widget-create 'push-button
@@ -1478,13 +1484,15 @@
   (unless (eq (preceding-char) ?\n)
     (widget-insert "\n"))
   (message "Creating customization items ...done")
+  (message "Resetting customization items...")
   (unless (eq custom-buffer-style 'tree)
     (mapc 'custom-magic-reset custom-options))
+  (message "Resetting customization items...done")
   (message "Creating customization setup...")
   (widget-setup)
   (buffer-enable-undo)
   (goto-char (point-min))
-  (message "Creating customization buffer...done"))
+  (message "Creating customization setup...done"))
 
 ;;; The Tree Browser.
 
@@ -1665,31 +1673,31 @@
 
 (defconst custom-magic-alist
   '((nil "#" underline "\
-uninitialized, you should not see this.")
+UNINITIALIZED, you should not see this.")
     (unknown "?" italic "\
-unknown, you should not see this.")
+UNKNOWN, you should not see this.")
     (hidden "-" default "\
-hidden, invoke \"Show\" in the previous line to show." "\
+HIDDEN, invoke \"Show\" in the previous line to show." "\
 group now hidden, invoke \"Show\", above, to show contents.")
     (invalid "x" custom-invalid-face "\
-the value displayed for this %c is invalid and cannot be set.")
+INVALID, the displayed value cannot be set.")
     (modified "*" custom-modified-face "\
-you have edited the value as text, but you have not set the %c." "\
-you have edited something in this group, but not set anything yet.")
+EDITED, shown value does not take effect until you set or save it." "\
+something in this group has been edited but not set.")
     (set "+" custom-set-face "\
-you have set this %c, but not saved it for future sessions." "\
-you have set something in this group, but not saved anything yet.")
+SET for current session only." "\
+something in this group has been set but not saved.")
     (changed ":" custom-changed-face "\
-this %c has been changed outside the customize buffer." "\
+CHANGED outside Customize; operating on it here may be unreliable." "\
 something in this group has been changed outside customize.")
     (saved "!" custom-saved-face "\
-You have set this %c and saved it through Customize in your init file." "\
+SAVED and set." "\
 something in this group has been set and saved.")
     (rogue "@" custom-rogue-face "\
-this %c has not been changed with customize." "\
+NO CUSTOMIZATION DATA; you should not see this." "\
 something in this group is not prepared for customization.")
     (standard " " nil "\
-this %c is unchanged from its standard setting." "\
+STANDARD." "\
 visible group members are all at standard settings."))
   "Alist of customize option states.
 Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where
@@ -1709,7 +1717,7 @@
 `set'
    This item has been set but not saved.
 `changed'
-   The current value of this item has been changed temporarily.
+   The current value of this item has been changed outside Customize.
 `saved'
    This item is marked for saving.
 `rogue'
@@ -3285,54 +3293,69 @@
 
 ;;; The `face' Widget.
 
-(define-widget 'face 'default
-  "Select and customize a face."
-  :convert-widget 'widget-value-convert-widget
-  :button-prefix 'widget-push-button-prefix
-  :button-suffix 'widget-push-button-suffix
-  :format "%{%t%}: %[select face%] %v"
-  :tag "Face"
-  :value 'default
+(defvar widget-face-prompt-value-history nil
+  "History of input to `widget-face-prompt-value'.")
+
+(define-widget 'face 'restricted-sexp
+  "A Lisp face name."
+  :complete-function (lambda ()
+		       (interactive)
+		       (lisp-complete-symbol 'facep))
+  :prompt-value 'widget-field-prompt-value
+  :prompt-internal 'widget-symbol-prompt-internal
+  :prompt-match 'facep
+  :prompt-history 'widget-face-prompt-value-history
   :value-create 'widget-face-value-create
-  :value-delete 'widget-face-value-delete
-  :value-get 'widget-value-value-get
-  :validate 'widget-children-validate
-  :action 'widget-face-action
-  :match (lambda (widget value) (symbolp value)))
+  :action 'widget-field-action
+  :match-alternatives '(facep)
+  :validate (lambda (widget)
+	      (unless (facep (widget-value widget))
+		(widget-put widget :error (format "Invalid face: %S"
+						  (widget-value widget)))
+		widget))
+  :value 'ignore
+  :tag "Function")
+
+
+;;; There is a bug here: the sample doesn't get redisplayed
+;;; in the new font when you specify one.  Does anyone know how to
+;;; make that work?  -- rms.
 
 (defun widget-face-value-create (widget)
-  "Create a `custom-face' child."
-  (let* ((symbol (widget-value widget))
-	 (custom-buffer-style 'face)
-	 (child (widget-create-child-and-convert
-		 widget 'custom-face
-		 :custom-level nil
-		 :value symbol)))
-    (custom-magic-reset child)
-    (setq custom-options (cons child custom-options))
-    (widget-put widget :children (list child))))
-
-(defun widget-face-value-delete (widget)
-  "Remove the child from the options."
-  (let ((child (car (widget-get widget :children))))
-    (setq custom-options (delq child custom-options))
-    (widget-children-value-delete widget)))
-
-(defvar face-history nil
-  "History of entered face names.")
-
-(defun widget-face-action (widget &optional event)
-  "Prompt for a face."
-  (let ((answer (completing-read "Face: "
-				 (mapcar (lambda (face)
-					   (list (symbol-name face)))
-					 (face-list))
-				 nil nil nil
-				 'face-history)))
-    (unless (zerop (length answer))
-      (widget-value-set widget (intern answer))
-      (widget-apply widget :notify widget event)
-      (widget-setup))))
+  "Create an editable face name field."
+  (let ((buttons (widget-get widget :buttons))
+	(symbol (widget-get widget :value)))
+    ;; Sample.
+    (push (widget-create-child-and-convert widget 'item
+					   :format "(%{%t%})"
+					   :sample-face symbol
+					   :tag "sample")
+	  buttons)
+    (insert " ")
+    ;; Update buttons.
+    (widget-put widget :buttons buttons))
+
+  (let ((size (widget-get widget :size))
+	(value (widget-get widget :value))
+	(from (point))
+	;; This is changed to a real overlay in `widget-setup'.  We
+	;; need the end points to behave differently until
+	;; `widget-setup' is called.
+	(overlay (cons (make-marker) (make-marker))))
+    (widget-put widget :field-overlay overlay)
+    (insert value)
+    (and size
+	 (< (length value) size)
+	 (insert-char ?\  (- size (length value))))
+    (unless (memq widget widget-field-list)
+      (setq widget-field-new (cons widget widget-field-new)))
+    (move-marker (cdr overlay) (point))
+    (set-marker-insertion-type (cdr overlay) nil)
+    (when (null size)
+      (insert ?\n))
+    (move-marker (car overlay) from)
+    (set-marker-insertion-type (car overlay) t)))
+
 
 ;;; The `hook' Widget.
 
--- a/lisp/double.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/double.el	Thu Mar 03 10:35:22 2005 +0000
@@ -116,6 +116,7 @@
 	   ;; End of generated event.  See if he will repeat it...
 	   (let ((new (double-read-event prompt))
 		 (entry (assoc double-last-event double-map)))
+	     (force-window-update (selected-window))
 	     (if (eq new double-last-event)
 		 (progn
 		   (setq unread-command-events
--- a/lisp/emacs-lisp/copyright.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/emacs-lisp/copyright.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; copyright.el --- update the copyright notice in current buffer
 
-;; Copyright (C) 1991, 92, 93, 94, 95, 1998, 2001, 2003, 2004
+;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2003, 2004, 2005
 ;;           Free Software Foundation, Inc.
 
 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>
@@ -176,6 +176,41 @@
 
 
 ;;;###autoload
+(defun copyright-fix-years ()
+  "Convert 2 digit years to 4 digit years.
+Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
+  (interactive)
+  (widen)
+  (goto-char (point-min))
+  (if (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
+      (let ((s (match-beginning 2)) (e (make-marker))
+	    last)
+	(set-marker e (1+ (match-end 2)))
+	(goto-char s)
+	(while (and (< (point) (marker-position e))
+		    (re-search-forward "\\([^0-9]\\)\\([0-9]+\\)[^0-9]"
+				       (marker-position e) t))
+	  (let ((p (point))
+		(sep (match-string 1))
+		(year (string-to-number (match-string 2))))
+	    (goto-char (1+ (match-beginning 0)))
+	    (unless (= (char-syntax (string-to-char sep)) ?\s)
+	      (insert " "))
+	    (if (< year 100)
+		(insert (if (>= year 50) "19" "20")))
+	    (goto-char p)
+	    (setq last p)))
+	(when last
+	  (goto-char last)
+	  (let ((fill-prefix "     "))
+	    (fill-region s last))
+	  )
+	(set-marker e nil)
+	(copyright-update nil t))
+    (message "No copyright message")
+    (goto-char (point-min))))
+
+;;;###autoload
 (define-skeleton copyright
   "Insert a copyright by $ORGANIZATION notice at cursor."
   "Company: "
--- a/lisp/emacs-lisp/debug.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/emacs-lisp/debug.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,7 @@
 ;;; debug.el --- debuggers and related commands for Emacs
 
-;; Copyright (C) 1985, 1986, 1994, 2001, 2003  Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1994, 2001, 2003, 2005
+;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: lisp, tools, maint
@@ -24,7 +25,7 @@
 
 ;;; Commentary:
 
-;; This is a major mode documented in the Emacs manual.
+;; This is a major mode documented in the Emacs Lisp manual.
 
 ;;; Code:
 
@@ -92,6 +93,13 @@
 (defvar debugger-outer-inhibit-redisplay)
 (defvar debugger-outer-cursor-in-echo-area)
 
+(defvar inhibit-debug-on-entry nil)
+
+;; When you change this, you may also need to change the number of
+;; frames that the debugger skips.
+(defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug))
+  "Code added to a function to cause it to call the debugger upon entry.")
+
 ;;;###autoload
 (setq debugger 'debug)
 ;;;###autoload
@@ -146,6 +154,8 @@
       (setq overriding-terminal-local-map nil)
       ;; Don't let these magic variables affect the debugger itself.
       (let ((last-command nil) this-command track-mouse
+	    (inhibit-trace t)
+	    (inhibit-debug-on-entry t)
 	    unread-command-events
 	    unread-post-input-method-events
 	    last-input-event last-command-event last-nonmenu-event
@@ -184,12 +194,12 @@
 		  (message "%s" (buffer-string))
 		  (kill-emacs))
 		(if (eq (car debugger-args) 'debug)
-		    ;; Skip the frames for backtrace-debug, byte-code, and debug.
-		    (backtrace-debug 3 t))
+		    ;; Skip the frames for backtrace-debug, byte-code,
+		    ;; and debug-entry-code.
+		    (backtrace-debug 4 t))
 		(debugger-reenable)
 		(message "")
-		(let ((inhibit-trace t)
-		      (standard-output nil)
+		(let ((standard-output nil)
 		      (buffer-read-only t))
 		  (message "")
 		  ;; Make sure we unbind buffer-read-only in the right buffer.
@@ -197,15 +207,16 @@
 		    (recursive-edit)))))
 	  ;; Kill or at least neuter the backtrace buffer, so that users
 	  ;; don't try to execute debugger commands in an invalid context.
-	  (if (get-buffer-window debugger-buffer 'visible)
+	  (if (get-buffer-window debugger-buffer 0)
 	      ;; Still visible despite the save-window-excursion?  Maybe it
 	      ;; it's in a pop-up frame.  It would be annoying to delete and
 	      ;; recreate it every time the debugger stops, so instead we'll
-	      ;; erase it but leave it visible.
-	      (save-excursion
-		(set-buffer debugger-buffer)
+	      ;; erase it and hide it but keep it alive.
+	      (with-current-buffer debugger-buffer
 		(erase-buffer)
-		(fundamental-mode))
+		(fundamental-mode)
+		(with-selected-window (get-buffer-window debugger-buffer 0)
+		  (bury-buffer)))
 	    (kill-buffer debugger-buffer))
 	  (set-match-data debugger-outer-match-data)))
       ;; Put into effect the modified values of these variables
@@ -248,7 +259,9 @@
   (delete-region (point)
 		 (progn
 		   (search-forward "\n  debug(")
-		   (forward-line 1)
+		   (forward-line (if (eq (car debugger-args) 'debug)
+				     2	; Remove debug-entry-code frame.
+				   1))
 		   (point)))
   (insert "Debugger entered")
   ;; lambda is for debug-on-call when a function call is next.
@@ -421,14 +434,13 @@
 	  (count 0))
       (while (not (eq (cadr (backtrace-frame count)) 'debug))
 	(setq count (1+ count)))
+      ;; Skip debug-entry-code frame.
+      (when (member '(debug (quote debug)) (cdr (backtrace-frame (1+ count))))
+	(setq count (1+ count)))
       (goto-char (point-min))
-      (if (or (equal (buffer-substring (point) (+ (point) 6))
-		     "Signal")
-	      (equal (buffer-substring (point) (+ (point) 6))
-		     "Return"))
-	  (progn
-	    (search-forward ":")
-	    (forward-sexp 1)))
+      (when (looking-at "Debugger entered--\\(Lisp error\\|returning value\\):")
+	(goto-char (match-end 0))
+	(forward-sexp 1))
       (forward-line 1)
       (while (progn
 	       (forward-char 2)
@@ -474,8 +486,6 @@
 	(insert ? )))
   (beginning-of-line))
 
-
-
 (put 'debugger-env-macro 'lisp-indent-function 0)
 (defmacro debugger-env-macro (&rest body)
   "Run BODY in original environment."
@@ -543,29 +553,26 @@
 			       'read-expression-history)))
   (debugger-env-macro (eval-expression exp)))
 
-(defvar debugger-mode-map nil)
-(unless debugger-mode-map
-  (let ((loop ? ))
-    (setq debugger-mode-map (make-keymap))
-    (set-keymap-parent debugger-mode-map button-buffer-map)
-    (suppress-keymap debugger-mode-map)
-    (define-key debugger-mode-map "-" 'negative-argument)
-    (define-key debugger-mode-map "b" 'debugger-frame)
-    (define-key debugger-mode-map "c" 'debugger-continue)
-    (define-key debugger-mode-map "j" 'debugger-jump)
-    (define-key debugger-mode-map "r" 'debugger-return-value)
-    (define-key debugger-mode-map "u" 'debugger-frame-clear)
-    (define-key debugger-mode-map "d" 'debugger-step-through)
-    (define-key debugger-mode-map "l" 'debugger-list-functions)
-    (define-key debugger-mode-map "h" 'describe-mode)
-    (define-key debugger-mode-map "q" 'top-level)
-    (define-key debugger-mode-map "e" 'debugger-eval-expression)
-    (define-key debugger-mode-map " " 'next-line)
-    (define-key debugger-mode-map "R" 'debugger-record-expression)
-    (define-key debugger-mode-map "\C-m" 'help-follow)
-    (define-key debugger-mode-map [mouse-2] 'push-button)
-    ))
-
+(defvar debugger-mode-map
+  (let ((map (make-keymap)))
+    (set-keymap-parent map button-buffer-map)
+    (suppress-keymap map)
+    (define-key map "-" 'negative-argument)
+    (define-key map "b" 'debugger-frame)
+    (define-key map "c" 'debugger-continue)
+    (define-key map "j" 'debugger-jump)
+    (define-key map "r" 'debugger-return-value)
+    (define-key map "u" 'debugger-frame-clear)
+    (define-key map "d" 'debugger-step-through)
+    (define-key map "l" 'debugger-list-functions)
+    (define-key map "h" 'describe-mode)
+    (define-key map "q" 'top-level)
+    (define-key map "e" 'debugger-eval-expression)
+    (define-key map " " 'next-line)
+    (define-key map "R" 'debugger-record-expression)
+    (define-key map "\C-m" 'help-follow)
+    (define-key map [mouse-2] 'push-button)
+    map))
 
 (defcustom debugger-record-buffer "*Debugger-record*"
   "*Buffer name for expression values, for \\[debugger-record-expression]."
@@ -616,7 +623,7 @@
   (setq truncate-lines t)
   (set-syntax-table emacs-lisp-mode-syntax-table)
   (use-local-map debugger-mode-map)
-  (run-hooks 'debugger-mode-hook))
+  (run-mode-hooks 'debugger-mode-hook))
 
 ;;;###autoload
 (defun debug-on-entry (function)
@@ -699,39 +706,40 @@
 	(debug-on-entry-1 function (cdr defn) flag)
       (or (eq (car defn) 'lambda)
 	  (error "%s not user-defined Lisp function" function))
-      (let ((tail (cddr defn)))
+      (let ((tail (cdr defn)))
 	;; Skip the docstring.
-	(if (stringp (car tail)) (setq tail (cdr tail)))
+	(when (and (stringp (cadr tail)) (cddr tail))
+	  (setq tail (cdr tail)))
 	;; Skip the interactive form.
-	(if (eq 'interactive (car-safe (car tail))) (setq tail (cdr tail)))
-	(unless (eq flag (equal (car tail) '(debug 'debug)))
+	(when (eq 'interactive (car-safe (cadr tail)))
+	  (setq tail (cdr tail)))
+	(unless (eq flag (equal (cadr tail) debug-entry-code))
 	  ;; Add/remove debug statement as needed.
-	  (if (not flag)
-	      (progn (setcar tail (cadr tail))
-		     (setcdr tail (cddr tail)))
-	    (setcdr tail (cons (car tail) (cdr tail)))
-	    (setcar tail '(debug 'debug))))
+	  (if flag
+	      (setcdr tail (cons debug-entry-code (cdr tail)))
+	    (setcdr tail (cddr tail))))
 	defn))))
 
 (defun debugger-list-functions ()
   "Display a list of all the functions now set to debug on entry."
   (interactive)
-  (with-output-to-temp-buffer "*Help*"
-    (if (null debug-function-list)
-	(princ "No debug-on-entry functions now\n")
-      (princ "Functions set to debug on entry:\n\n")
-      (let ((list debug-function-list))
-	(while list
-	  (prin1 (car list))
-	  (terpri)
-	  (setq list (cdr list))))
-      (princ "Note: if you have redefined a function, then it may no longer\n")
-      (princ "be set to debug on entry, even if it is in the list."))
-    (save-excursion
-      (set-buffer standard-output)
-      (help-mode))))
+  (require 'help-mode)
+  (help-setup-xref '(debugger-list-functions) (interactive-p))
+  (with-output-to-temp-buffer (help-buffer)
+    (with-current-buffer standard-output
+      (if (null debug-function-list)
+	  (princ "No debug-on-entry functions now\n")
+	(princ "Functions set to debug on entry:\n\n")
+	(dolist (fun debug-function-list)
+	  (make-text-button (point) (progn (prin1 fun) (point))
+			    'type 'help-function
+			    'help-args (list fun))
+	  (terpri))
+	(terpri)
+	(princ "Note: if you have redefined a function, then it may no longer\n")
+	(princ "be set to debug on entry, even if it is in the list.")))))
 
 (provide 'debug)
 
-;;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b
+;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b
 ;;; debug.el ends here
--- a/lisp/emacs-lisp/re-builder.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/emacs-lisp/re-builder.el	Thu Mar 03 10:35:22 2005 +0000
@@ -327,10 +327,16 @@
   "Return binding for SYMBOL in the RE Builder target buffer."
   `(with-current-buffer reb-target-buffer ,symbol))
 
+;;; This is to help people find this in Apropos.
+;;;###autoload
+(defun regexp-builder ()
+  "Alias for `re-builder': Construct a regexp interactively."
+  (interactive)
+  (re-builder))
 
 ;;;###autoload
 (defun re-builder ()
-  "Call up the RE Builder for the current window."
+  "Construct a regexp interactively."
   (interactive)
 
   (if (and (string= (buffer-name) reb-buffer)
--- a/lisp/emacs-lisp/trace.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/emacs-lisp/trace.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; trace.el --- tracing facility for Emacs Lisp functions
 
-;; Copyright (C) 1993 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1998, 2000, 2005  Free Software Foundation, Inc.
 
 ;; Author: Hans Chalupsky <hans@cs.buffalo.edu>
 ;; Maintainer: FSF
@@ -175,6 +175,9 @@
 ;; Used to separate new trace output from previous traced runs:
 (defvar trace-separator (format "%s\n" (make-string 70 ?=)))
 
+(defvar inhibit-trace nil
+  "If non-nil, all tracing is temporarily inhibited.")
+
 (defun trace-entry-message (function level argument-bindings)
   ;; Generates a string that describes that FUNCTION has been entered at
   ;; trace LEVEL with ARGUMENT-BINDINGS.
@@ -183,14 +186,13 @@
 	  (if (> level 1) " " "")
 	  level
 	  function
-	  (mapconcat (function
-		      (lambda (binding)
-			(concat
-			 (symbol-name (ad-arg-binding-field binding 'name))
-			 "="
-			 ;; do this so we'll see strings:
-			 (prin1-to-string
-			  (ad-arg-binding-field binding 'value)))))
+	  (mapconcat (lambda (binding)
+		       (concat
+			(symbol-name (ad-arg-binding-field binding 'name))
+			"="
+			;; do this so we'll see strings:
+			(prin1-to-string
+			 (ad-arg-binding-field binding 'value))))
 		     argument-bindings
 		     " ")))
 
@@ -211,43 +213,27 @@
   ;; (quietly if BACKGROUND is t).
   (ad-make-advice
    trace-advice-name nil t
-   (cond (background
-	  `(advice
-	   lambda ()
-	   (let ((trace-level (1+ trace-level))
-		 (trace-buffer (get-buffer-create ,buffer)))
-	     (save-excursion
-	       (set-buffer trace-buffer)
-	       (goto-char (point-max))
-	       ;; Insert a separator from previous trace output:
-	       (if (= trace-level 1) (insert trace-separator))
-	       (insert
-		(trace-entry-message
-		 ',function trace-level ad-arg-bindings)))
-	     ad-do-it
-	     (save-excursion
-	       (set-buffer trace-buffer)
-	       (goto-char (point-max))
-	       (insert
-		(trace-exit-message
-		 ',function trace-level ad-return-value))))))
-	 (t `(advice
-	     lambda ()
-	     (let ((trace-level (1+ trace-level))
-		   (trace-buffer (get-buffer-create ,buffer)))
-	       (pop-to-buffer trace-buffer)
-	       (goto-char (point-max))
-	       ;; Insert a separator from previous trace output:
-	       (if (= trace-level 1) (insert trace-separator))
-	       (insert
-		(trace-entry-message
-		 ',function trace-level ad-arg-bindings))
-	       ad-do-it
-	       (pop-to-buffer trace-buffer)
-	       (goto-char (point-max))
-	       (insert
-		(trace-exit-message
-		 ',function trace-level ad-return-value))))))))
+   `(advice
+     lambda ()
+     (let ((trace-level (1+ trace-level))
+	   (trace-buffer (get-buffer-create ,buffer)))
+       (unless inhibit-trace
+	 (with-current-buffer trace-buffer
+	   ,(unless background '(pop-to-buffer trace-buffer))
+	   (goto-char (point-max))
+	   ;; Insert a separator from previous trace output:
+	   (if (= trace-level 1) (insert trace-separator))
+	   (insert
+	    (trace-entry-message
+	     ',function trace-level ad-arg-bindings))))
+       ad-do-it
+       (unless inhibit-trace
+	 (with-current-buffer trace-buffer
+	   ,(unless background '(pop-to-buffer trace-buffer))
+	   (goto-char (point-max))
+	   (insert
+	    (trace-exit-message
+	     ',function trace-level ad-return-value))))))))
 
 (defun trace-function-internal (function buffer background)
   ;; Adds trace advice for FUNCTION and activates it.
@@ -297,9 +283,9 @@
 was not traced this is a noop."
   (interactive
    (list (ad-read-advised-function "Untrace function: " 'trace-is-traced)))
-  (cond ((trace-is-traced function)
-	 (ad-remove-advice function 'around trace-advice-name)
-	 (ad-update function))))
+  (when (trace-is-traced function)
+    (ad-remove-advice function 'around trace-advice-name)
+    (ad-update function)))
 
 (defun untrace-all ()
   "Untraces all currently traced functions."
@@ -309,5 +295,5 @@
 
 (provide 'trace)
 
-;;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1
+;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1
 ;;; trace.el ends here
--- a/lisp/gnus/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/gnus/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,13 +1,31 @@
+2005-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* gnus-sum.el (gnus-summary-exit): Undo last change and fix it in
+	a more conservative way.
+
+2005-02-27  Arne J,Ax(Brgensen  <arne@arnested.dk>
+
+	* mm-decode.el (mm-dissect-buffer): Pass the from field on to
+	`mm-dissect-multipart' and receive the from field as an (optional)
+	argument from `mm-dissect-multipart'.
+	(mm-dissect-multipart): Receive the from field as an argument and
+	pass it on when we call `mm-dissect-buffer' on MIME parts.
+	Fixes verification/decryption of signed/encrypted MIME parts.
+
+2005-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* gnus-sum.el (gnus-summary-exit): Move point after displaying the
+	buffer, so it moves the window's cursor.
+
 2005-02-24  Reiner Steib  <Reiner.Steib@gmx.de>
 
-	* nnheader.el (nnheader-find-file-noselect): Added doc string.
+	* nnheader.el (nnheader-find-file-noselect): Add doc string.
 
 	* nnfolder.el (nnfolder-read-folder): Use RAWFILE for
-	`nnheader-find-file-noselect' to avoid
-	`large-file-warning-threshold'.
+	`nnheader-find-file-noselect' to avoid `large-file-warning-threshold'.
 
-	* gnus-sum.el (gnus-summary-caesar-message): Apply
-	`gnus-treat-article' after rotation.
+	* gnus-sum.el (gnus-summary-caesar-message):
+	Apply `gnus-treat-article' after rotation.
 
 	* gnus-group.el (gnus-group-clear-data): Mention process/prefix in
 	doc string.
@@ -41,7 +59,7 @@
 
 2005-02-16  Teodor Zlatanov  <tzz@lifelogs.com>
 
-	* gnus-registry.el (gnus-registry-delete-group): minor bug fix
+	* gnus-registry.el (gnus-registry-delete-group): Minor bug fix.
 
 	* gnus.el (gnus-install-group-spam-parameters): Doc fix.
 
--- a/lisp/gnus/gnus-sum.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,5 +1,5 @@
 ;;; gnus-sum.el --- summary mode commands for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -6681,6 +6681,10 @@
       (if quit-config
 	  (gnus-handle-ephemeral-exit quit-config)
 	(goto-char group-point)
+	;; If gnus-group-buffer is already displayed, make sure we also move
+	;; the cursor in the window that displays it.
+	(let ((win (get-buffer-window (current-buffer) 0)))
+	  (if win (set-window-point win (point))))
 	(unless leave-hidden
 	  (gnus-configure-windows 'group 'force)))
       ;; Clear the current group name.
--- a/lisp/gnus/mm-decode.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/gnus/mm-decode.el	Thu Mar 03 10:35:22 2005 +0000
@@ -509,10 +509,10 @@
     (message "Destroying external MIME viewers")
     (mm-destroy-parts mm-postponed-undisplay-list)))
 
-(defun mm-dissect-buffer (&optional no-strict-mime loose-mime)
+(defun mm-dissect-buffer (&optional no-strict-mime loose-mime from)
   "Dissect the current buffer and return a list of MIME handles."
   (save-excursion
-    (let (ct ctl type subtype cte cd description id result from)
+    (let (ct ctl type subtype cte cd description id result)
       (save-restriction
 	(mail-narrow-to-head)
 	(when (or no-strict-mime
@@ -523,8 +523,9 @@
 		cte (mail-fetch-field "content-transfer-encoding")
 		cd (mail-fetch-field "content-disposition")
 		description (mail-fetch-field "content-description")
-		from (mail-fetch-field "from")
 		id (mail-fetch-field "content-id"))
+	  (unless from
+		(setq from (mail-fetch-field "from")))
 	  ;; FIXME: In some circumstances, this code is running within
 	  ;; an unibyte macro.  mail-extract-address-components
 	  ;; creates unibyte buffers. This `if', though not a perfect
@@ -567,7 +568,7 @@
 					'from from
 					'start start)
 				  (car ctl))
-	     (cons (car ctl) (mm-dissect-multipart ctl))))
+	     (cons (car ctl) (mm-dissect-multipart ctl from))))
 	  (t
 	   (mm-possibly-verify-or-decrypt
 	    (mm-dissect-singlepart
@@ -594,7 +595,7 @@
     (mm-make-handle
      (mm-copy-to-buffer) ctl cte nil cdl description nil id)))
 
-(defun mm-dissect-multipart (ctl)
+(defun mm-dissect-multipart (ctl from)
   (goto-char (point-min))
   (let* ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary)))
 	 (close-delimiter (concat (regexp-quote boundary) "--[ \t]*$"))
@@ -611,7 +612,7 @@
 	(save-excursion
 	  (save-restriction
 	    (narrow-to-region start (point))
-	    (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+	    (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
       (end-of-line 2)
       (or (looking-at boundary)
 	  (forward-line 1))
@@ -620,7 +621,7 @@
       (save-excursion
 	(save-restriction
 	  (narrow-to-region start end)
-	  (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+	  (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
     (mm-possibly-verify-or-decrypt (nreverse parts) ctl)))
 
 (defun mm-copy-to-buffer ()
--- a/lisp/ibuf-ext.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/ibuf-ext.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; ibuf-ext.el --- extensions for ibuffer
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Colin Walters <walters@verbum.org>
 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
@@ -753,7 +753,10 @@
   "Disable all filters currently in effect in this buffer."
   (interactive)
   (setq ibuffer-filtering-qualifiers nil)
-  (ibuffer-update nil t))
+  (let ((buf (ibuffer-current-buffer)))
+    (ibuffer-update nil t)
+    (when buf
+      (ibuffer-jump-to-buffer (buffer-name buf)))))
 
 ;;;###autoload
 (defun ibuffer-pop-filter ()
@@ -762,7 +765,10 @@
   (when (null ibuffer-filtering-qualifiers)
     (error "No filters in effect"))
   (pop ibuffer-filtering-qualifiers)
-  (ibuffer-update nil t))
+  (let ((buf (ibuffer-current-buffer)))
+    (ibuffer-update nil t)
+    (when buf
+      (ibuffer-jump-to-buffer (buffer-name buf)))))
 
 (defun ibuffer-push-filter (qualifier)
   "Add QUALIFIER to `ibuffer-filtering-qualifiers'."
--- a/lisp/mouse.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/mouse.el	Thu Mar 03 10:35:22 2005 +0000
@@ -82,6 +82,17 @@
                  (other :tag "Single click" t))
   :group 'mouse)
 
+(defcustom mouse-1-click-in-non-selected-windows t
+  "*If non-nil, a Mouse-1 click also follows links in non-selected windows.
+
+If nil, a Mouse-1 click on a link in a non-selected window performs
+the normal mouse-1 binding, typically selects the window and sets
+point at the click position."
+  :type 'boolean
+  :version "22.1"
+  :group 'mouse)
+
+
 
 ;; Provide a mode-specific menu on a mouse button.
 
@@ -771,6 +782,8 @@
   "Return non-nil if POS is on a link in the current buffer.
 POS must be a buffer position in the current buffer or an mouse
 event location in the selected window, see `event-start'.
+However, if `mouse-1-click-in-non-selected-windows' is non-nil,
+POS may be a mouse event location in any window.
 
 A clickable link is identified by one of the following methods:
 
@@ -805,21 +818,24 @@
 
 - Otherwise, the mouse-1 event is translated into a mouse-2 event
 at the same position."
-  (if (consp pos)
-      (setq pos (and (eq (selected-window) (posn-window pos))
-		     (posn-point pos))))
-  (when pos
-    (let ((action
-	   (or (get-char-property pos 'follow-link)
-	       (save-excursion
-		 (goto-char pos)
-		 (key-binding [follow-link] nil t)))))
-      (cond
-       ((eq action 'mouse-face)
-	(and (get-char-property pos 'mouse-face) t))
-       ((functionp action)
-	(funcall action pos))
-       (t action)))))
+  (let ((w (and (consp pos) (posn-window pos))))
+    (if (consp pos)
+	(setq pos (and (or mouse-1-click-in-non-selected-windows
+			   (eq (selected-window) w))
+		       (posn-point pos))))
+    (when pos
+      (with-current-buffer (window-buffer w)
+	(let ((action
+	       (or (get-char-property pos 'follow-link)
+		   (save-excursion
+		     (goto-char pos)
+		     (key-binding [follow-link] nil t)))))
+	  (cond
+	   ((eq action 'mouse-face)
+	    (and (get-char-property pos 'mouse-face) t))
+	   ((functionp action)
+	    (funcall action pos))
+	   (t action)))))))
 
 
 (defun mouse-drag-region-1 (start-event)
@@ -839,7 +855,8 @@
 		   ;; Don't count the mode line.
 		   (1- (nth 3 bounds))))
 	 (on-link (and mouse-1-click-follows-link
-		       (eq start-window (selected-window))))
+		       (or mouse-1-click-in-non-selected-windows
+			   (eq start-window (selected-window)))))
 	 remap-double-click
 	 (click-count (1- (event-click-count start-event))))
     (setq mouse-selection-click-count click-count)
--- a/lisp/net/tramp.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/net/tramp.el	Thu Mar 03 10:35:22 2005 +0000
@@ -4107,7 +4107,7 @@
    ((member operation
 	    (list 'dired-call-process
                   ; Emacs only
-		  'shell
+		  'shell-command
                   ; Post Emacs 21.3 only
                   'process-file
 	          ; XEmacs only
--- a/lisp/progmodes/gdb-ui.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/progmodes/gdb-ui.el	Thu Mar 03 10:35:22 2005 +0000
@@ -880,8 +880,7 @@
   "An annotation handler for `post-prompt'.
 This begins the collection of output from the current command if that
 happens to be appropriate."
-  (if (not gdb-pending-triggers)
-      (progn
+  (unless gdb-pending-triggers
 	(gdb-get-current-frame)
 	(gdb-invalidate-frames)
 	(gdb-invalidate-breakpoints)
@@ -897,7 +896,7 @@
 	    (setq gdb-var-changed t)    ; force update
 	    (dolist (var gdb-var-list)
 	      (setcar (nthcdr 5 var) nil))
-	    (gdb-var-update)))))
+	    (gdb-var-update))))
   (let ((sink gdb-output-sink))
     (cond
      ((eq sink 'user) t)
@@ -1211,14 +1210,13 @@
 				  (goto-line (string-to-number line))
 				  (gdb-put-breakpoint-icon (eq flag ?y) bptno)))
 			    (gdb-enqueue-input
-			     (list (concat gdb-server-prefix "list "
+			     (list (concat "list "
 					   (match-string-no-properties 1) ":1\n")
 				   'ignore))
 			    (gdb-enqueue-input
-			     (list (concat gdb-server-prefix "info source\n")
-				   `(lambda ()
-				      (gdb-get-location
-				       ,bptno ,line ,flag)))))))))))
+			     (list "info source\n"
+				   `(lambda () (gdb-get-location
+						,bptno ,line ,flag)))))))))))
 	  (end-of-line)))))
   (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom)))
 
@@ -2108,22 +2106,29 @@
   "Find the directory containing the relevant source file.
 Put in buffer and place breakpoint icon."
   (goto-char (point-min))
-  (if (search-forward "Located in " nil t)
-      (if (looking-at "\\S-*")
-	  (push (cons bptno (match-string 0)) gdb-location-list))
-    (gdb-resync)
-    (push (cons bptno "File not found") gdb-location-list)
-    (error "Cannot find source file for breakpoint location.
+  (catch 'file-not-found
+    (if (search-forward "Located in " nil t)
+	(if (looking-at "\\S-*")
+	    (push (cons bptno (match-string 0)) gdb-location-list))
+      (gdb-resync)
+      (push (cons bptno "File not found") gdb-location-list)
+      (if (eq window-system 'x)
+	  (x-popup-dialog
+	   t '("Cannot find source file for breakpoint location.\n\
+Add directory to search path for source files using the GDB command, dir."
+	       ("Ok" . nil)))
+	(message "Cannot find source file for breakpoint location.\n\
 Add directory to search path for source files using the GDB command, dir."))
-  (with-current-buffer
-      (find-file-noselect (match-string 0))
-    (save-current-buffer
-      (set (make-local-variable 'gud-minor-mode) 'gdba)
-      (set (make-local-variable 'tool-bar-map) gud-tool-bar-map))
-    ;; only want one breakpoint icon at each location
-    (save-excursion
-      (goto-line (string-to-number line))
-      (gdb-put-breakpoint-icon (eq flag ?y) bptno))))
+      (throw 'file-not-found nil))
+    (with-current-buffer
+	(find-file-noselect (match-string 0))
+      (save-current-buffer
+	(set (make-local-variable 'gud-minor-mode) 'gdba)
+	(set (make-local-variable 'tool-bar-map) gud-tool-bar-map))
+      ;; only want one breakpoint icon at each location
+      (save-excursion
+	(goto-line (string-to-number line))
+	(gdb-put-breakpoint-icon (eq flag ?y) bptno)))))
 
 (add-hook 'find-file-hook 'gdb-find-file-hook)
 
--- a/lisp/progmodes/perl-mode.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/progmodes/perl-mode.el	Thu Mar 03 10:35:22 2005 +0000
@@ -161,10 +161,11 @@
 
 (defvar perl-imenu-generic-expression
   '(;; Functions
-    (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)\\(\\s-\\|\n\\)*{" 1 )
+    (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)" 1)
     ;;Variables
-    ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1 )
-    ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1 ))
+    ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1)
+    ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1)
+    ("Doc sections" "^=head[0-9][ \t]+\\(.*\\)" 1))
   "Imenu generic expression for Perl mode.  See `imenu-generic-expression'.")
 
 ;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and
@@ -411,6 +412,20 @@
 (defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]"
   "*Lines starting with this regular expression are not auto-indented."
   :type 'regexp)
+
+;; Outline support
+
+(defvar perl-outline-regexp
+  (concat (mapconcat 'cadr perl-imenu-generic-expression "\\|")
+	  "\\|^=cut\\>"))
+
+(defun perl-outline-level ()
+  (cond
+   ((looking-at "package\\s-") 0)
+   ((looking-at "sub\\s-") 1)
+   ((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0))
+   ((looking-at "=cut") 1)
+   (t 3)))
 
 ;;;###autoload
 (defun perl-mode ()
@@ -498,9 +513,12 @@
 			      . perl-font-lock-syntactic-face-function)
 			     (parse-sexp-lookup-properties . t)))
   ;; Tell imenu how to handle Perl.
-  (make-local-variable 'imenu-generic-expression)
-  (setq imenu-generic-expression perl-imenu-generic-expression)
+  (set (make-local-variable 'imenu-generic-expression)
+       perl-imenu-generic-expression)
   (setq imenu-case-fold-search nil)
+  ;; Setup outline-minor-mode.
+  (set (make-local-variable 'outline-regexp) perl-outline-regexp)
+  (set (make-local-variable 'outline-level) 'perl-outline-level)
   (run-hooks 'perl-mode-hook))
 
 ;; This is used by indent-for-comment
--- a/lisp/register.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/register.el	Thu Mar 03 10:35:22 2005 +0000
@@ -227,8 +227,10 @@
 	(princ (car val))))
 
      ((stringp val)
-      (remove-list-of-text-properties 0 (length val)
-                                      yank-excluded-properties val)
+      (if (eq yank-excluded-properties t)
+	  (set-text-properties 0 (length val) nil val)
+	(remove-list-of-text-properties 0 (length val)
+					yank-excluded-properties val))
       (if verbose
 	  (progn
 	    (princ "the text:\n")
--- a/lisp/replace.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/replace.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,7 +1,7 @@
 ;;; replace.el --- replace commands for Emacs
 
 ;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1996, 1997, 2000, 2001, 2002,
-;;   2003, 2004  Free Software Foundation, Inc.
+;;   2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 
@@ -116,10 +116,10 @@
 	       nil t t))))
       (if (and (zerop (length from)) lastto lastfrom)
 	  (progn
+	    (set query-replace-from-history-variable
+		 (cdr (symbol-value query-replace-from-history-variable)))
 	    (cons lastfrom
-		  (query-replace-compile-replacement lastto regexp-flag))
-	    (set query-replace-from-history-variable
-		 (cdr (symbol-value query-replace-from-history-variable))))
+		  (query-replace-compile-replacement lastto regexp-flag)))
 	;; Warn if user types \n or \t, but don't reject the input.
 	(and regexp-flag
 	     (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from)
--- a/lisp/reveal.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/reveal.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 ;;; reveal.el --- Automatically reveal hidden text at point
 
-;; Copyright (C) 2000, 2001, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: outlines
@@ -93,16 +93,22 @@
 			  (overlays-at (point))))
 	 (push (cons (selected-window) ol) reveal-open-spots)
 	 (setq old-ols (delq ol old-ols))
-	 (let ((open (overlay-get ol 'reveal-toggle-invisible)) inv)
-	   (when (or open
-		     (and (setq inv (overlay-get ol 'invisible))
-			  (symbolp inv)
-			  (or (setq open (or (get inv 'reveal-toggle-invisible)
-					     (overlay-get ol 'isearch-open-invisible-temporary)))
-			      (overlay-get ol 'isearch-open-invisible)
-			      (and (consp buffer-invisibility-spec)
-				   (assq inv buffer-invisibility-spec)))
-			  (overlay-put ol 'reveal-invisible inv)))
+	 (let ((inv (overlay-get ol 'invisible)) open)
+	   (when (and inv
+		      ;; There's an `invisible' property.  Make sure it's
+		      ;; actually invisible.
+		      (or (not (listp buffer-invisibility-spec))
+			  (memq inv buffer-invisibility-spec)
+			  (assq inv buffer-invisibility-spec))
+		      (or (setq open
+				(or (overlay-get ol 'reveal-toggle-invisible)
+				    (and (symbolp inv)
+					 (get inv 'reveal-toggle-invisible))
+				    (overlay-get ol 'isearch-open-invisible-temporary)))
+			  (overlay-get ol 'isearch-open-invisible)
+			  (and (consp buffer-invisibility-spec)
+			       (cdr (assq inv buffer-invisibility-spec))))
+		      (overlay-put ol 'reveal-invisible inv))
 	     (if (null open)
 		 (overlay-put ol 'invisible nil)
 	       ;; Use the provided opening function and repeat (since the
@@ -110,7 +116,8 @@
 	       (setq repeat t)
 	       (condition-case err
 		   (funcall open ol nil)
-		 (error (message "!!Reveal-show: %s !!" err)
+		 (error (message "!!Reveal-show (funcall %s %s nil): %s !!"
+				 open ol err)
 			;; Let's default to a meaningful behavior to avoid
 			;; getting stuck in an infinite loop.
 			(setq repeat nil)
@@ -147,7 +154,8 @@
 					   (overlay-get ol 'isearch-open-invisible-temporary)))))
 		   (condition-case err
 		       (funcall open ol t)
-		     (error (message "!!Reveal-hide: %s !!" err)))
+		     (error (message "!!Reveal-hide (funcall %s %s t): %s !!"
+				     open ol err)))
 		 (overlay-put ol 'invisible inv))))))))
    (error (message "Reveal: %s" err)))))
 
--- a/lisp/speedbar.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/speedbar.el	Thu Mar 03 10:35:22 2005 +0000
@@ -761,11 +761,9 @@
 				  (display-graphic-p)
 				window-system))
   "*Non-nil means to automatically update the display.
-When this is nil then speedbar will not follow the attached frame's path.
-When speedbar is active, use:
-
-\\<speedbar-key-map> `\\[speedbar-toggle-updates]'
-
+When this is nil then speedbar will not follow the attached
+frame's path.  Type \
+\\<speedbar-key-map>\\[speedbar-toggle-updates] in the speedbar \
 to toggle this value.")
 
 (defvar speedbar-syntax-table nil
@@ -1344,7 +1342,7 @@
     (if (equal (car pos) speedbar-frame)
 	(save-excursion
 	  (save-window-excursion
-	    (apply 'set-mouse-position pos)
+	    (apply 'set-mouse-position (list (car pos) (cadr pos) (cddr pos)))
 	    (speedbar-item-info))))))
 
 (defun speedbar-set-mode-line-format ()
--- a/lisp/textmodes/flyspell.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/textmodes/flyspell.el	Thu Mar 03 10:35:22 2005 +0000
@@ -543,8 +543,9 @@
   "Turn Flyspell mode on.  Do not use this; use `flyspell-mode' instead."
   (setq ispell-highlight-face 'flyspell-incorrect-face)
   ;; local dictionaries setup
-  (ispell-change-dictionary
-   (or ispell-local-dictionary ispell-dictionary flyspell-default-dictionary))
+  (or ispell-local-dictionary ispell-dictionary
+      (if flyspell-default-dictionary
+	  (ispell-change-dictionary flyspell-default-dictionary)))
   ;; we have to force ispell to accept the local definition or
   ;; otherwise it could be too late, the local dictionary may
   ;; be forgotten!
--- a/lisp/textmodes/ispell.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/textmodes/ispell.el	Thu Mar 03 10:35:22 2005 +0000
@@ -2387,9 +2387,10 @@
 ;;;###autoload
 (defun ispell-change-dictionary (dict &optional arg)
   "Change to dictionary DICT for Ispell.
-By just answering RET you can find out what the current dictionary is.
-
-With prefix argument, set the default dictionary."
+With a prefix arg, set it \"globally\", for all buffers.
+Without a prefix arg, set it \"locally\", just for this buffer.
+
+By just answering RET you can find out what the current dictionary is."
   (interactive
    (list (completing-read
 	  "Use new dictionary (RET for current, SPC to complete): "
--- a/lisp/textmodes/texinfmt.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/textmodes/texinfmt.el	Thu Mar 03 10:35:22 2005 +0000
@@ -1,7 +1,7 @@
 ;;; texinfmt.el --- format Texinfo files into Info files
 
 ;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993,
-;;               1994, 1995, 1996, 1997, 1998, 2000, 2001
+;;               1994, 1995, 1996, 1997, 1998, 2000, 2001, 2005
 ;;    Free Software Foundation, Inc.
 
 ;; Maintainer: Robert J. Chassell <bug-texinfo@gnu.org>
@@ -486,7 +486,8 @@
    ;;     I don't know if this causes other problems.
    ;;     I suspect itemized lists don't get filled properly and a
    ;;     more precise fix is required.  Bob
-   "itemize\\|"
+   ;; commented out on 2005 Feb 28 by Bob
+   ;; "itemize\\|"
    "direntry\\|"
    "lisp\\|"
    "smalllisp\\|"
--- a/lisp/url/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/url/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,8 @@
+2005-02-26  James Cloos  <cloos@jhcloos.com>  (tiny change)
+
+	* url-history.el (url-have-visited-url): Don't barf if
+	url-history-hash-table is nil.
+
 2005-02-14  Michael Welsh Duggan  <md5i@cs.cmu.edu>
 
 	* url-http.el (url-http-parse-headers): Test url-automatic-caching.
--- a/lisp/url/url-history.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/url/url-history.el	Thu Mar 03 10:35:22 2005 +0000
@@ -164,7 +164,8 @@
 
 (defun url-have-visited-url (url)
   (url-do-setup)
-  (gethash url url-history-hash-table nil))
+  (and url-history-hash-table
+       (gethash url url-history-hash-table nil)))
 
 (defun url-completion-function (string predicate function)
   (url-do-setup)
--- a/lisp/vc.el	Wed Mar 02 11:04:29 2005 +0000
+++ b/lisp/vc.el	Thu Mar 03 10:35:22 2005 +0000
@@ -958,6 +958,9 @@
 			   (mapconcat 'identity vc-path path-separator))
 		   process-environment))
 	    (w32-quote-process-args t))
+	(if (and (eq okstatus 'async) (file-remote-p default-directory))
+	    ;; start-process does not support remote execution
+	    (setq okstatus nil))
 	(if (eq okstatus 'async)
 	    (let ((proc (apply 'start-process command (current-buffer) command
 			       squeezed)))
--- a/lispref/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,79 @@
+2005-02-28  Lute Kamstra  <lute@gnu.org>
+
+	* debugging.texi (Debugging): Fix typo.
+	(Error Debugging): Document eval-expression-debug-on-error.
+	(Function Debugging): Update example.
+	(Using Debugger): Mention starred stack frames.
+	(Debugger Commands): Document `j' and `l'.
+	(Invoking the Debugger): `d' and `j' exit recursive edit too.
+	Update the messages that the debugger displays.
+	(Internals of Debugger): Add cross reference.  Update example.
+	(Excess Open): Minor improvement.
+	(Excess Close): Minor improvement.
+
+2005-02-26  Richard M. Stallman  <rms@gnu.org>
+
+	* tips.texi (Coding Conventions): Clarify.
+	Put all the major mode key reservations together.
+	Mention the Mouse-1 => Mouse-2 conventions.
+
+	* syntax.texi (Syntax Class Table): Clarify.
+	(Syntax Table Functions): syntax-after moved from here.
+	(Syntax Table Internals): syntax-after moved to here.
+	(Parsing Expressions): Update info on number of values
+	and what's meaningful in the STATE argument.
+	(Categories): Fix typo.
+
+	* sequences.texi (Arrays): Cleanup.
+	(Char-Tables): Clarify.
+
+	* processes.texi (Deleting Processes): Cleanups, add xref.
+	(Subprocess Creation): Explain nil in exec-path.  Cleanup.
+	(Process Information): set-process-coding-system, some args optional.
+	(Input to Processes): Explain various types for PROCESS args.
+	Rename them from PROCESS-NAME to PROCESS.
+	(Signals to Processes): Likewise.
+	(Decoding Output): Cleanup.
+	(Query Before Exit): Clarify.
+
+	* os.texi (Startup Summary): Correct the options; add missing ones.
+	(Terminal Output, Batch Mode): Clarify.
+	(Flow Control): Node deleted.
+
+	* markers.texi (The Mark): Clarify.
+
+	* macros.texi (Expansion): Cleanup.
+	(Indenting Macros): indent-spec allows ints, not floats.
+
+	* keymaps.texi (Keymaps): Clarify.
+	(Format of Keymaps): Update lisp-mode-map example.
+	(Active Keymaps, Key Lookup): Clarify.
+	(Changing Key Bindings): Add xref to `kbd'.
+	(Key Binding Commands, Simple Menu Items): Clarify.
+	(Mouse Menus, Menu Bar): Clarify.
+	(Menu Example): Replace print example with menu-bar-replace-menu.
+
+	* help.texi (Documentation Basics): Add function-documentation prop.
+
+	* elisp.texi (Top): Don't refer to Flow Control node.
+
+	* commands.texi (Command Overview): Improve xrefs.
+	(Adjusting Point): Adjusting point applies to intangible and invis.
+	(Key Sequence Input): Doc extra read-key-sequence args.
+	Likewise for read-key-sequence-vector.
+
+	* backups.texi (Rename or Copy): Minor fix.
+	(Numbered Backups): For version-control, say the default.
+	(Auto-Saving): make-auto-save-file-name example is simplified.
+
+	* advice.texi (Advising Functions): Don't imply one part of Emacs
+	should advise another part.  Markup changes.
+	(Defining Advice): Move transitional para.
+	(Activation of Advice): Cleanup.
+	Explain if COMPILE is nil or negative.
+
+	* abbrevs.texi (Abbrev Expansion): Clarify, fix typo.
+
 2005-02-24  Lute Kamstra  <lute@gnu.org>
 
 	* modes.texi (Defining Minor Modes): Explain that INIT-VALUE,
--- a/lispref/abbrevs.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/abbrevs.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -269,10 +269,10 @@
 @end deffn
 
 @deffn Command abbrev-prefix-mark &optional arg
-This command marks current point as the beginning of an abbrev.  The
-next call to @code{expand-abbrev} will use the text from here to point
-(where it is then) as the abbrev to expand, rather than using the
-previous word as usual.
+This command marks the current location of point as the beginning of
+an abbrev.  The next call to @code{expand-abbrev} will use the text
+from here to point (where it is then) as the abbrev to expand, rather
+than using the previous word as usual.
 
 First, this command expands any abbrev before point, unless @var{arg}
 is non-@code{nil}.  (Interactively, @var{arg} is the prefix argument.)
@@ -363,7 +363,7 @@
 			nil t)))
 @end smallexample
 
-Note that @code{foo-mode-pre-abbrex-expand} just returns @code{nil}
+Note that @code{foo-mode-pre-abbrev-expand} just returns @code{nil}
 without doing anything for lines not starting with @samp{#}.  Hence
 abbrevs expand normally using @code{foo-mode-abbrev-table} as local
 abbrev table for such lines.
--- a/lispref/advice.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/advice.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -7,15 +7,15 @@
 @chapter Advising Emacs Lisp Functions
 @cindex advising functions
 
-  The @dfn{advice} feature lets you add to the existing definition of a
-function, by @dfn{advising the function}.  This is a clean method for a
-library to customize functions defined by other parts of Emacs---cleaner
+  The @dfn{advice} feature lets you add to the existing definition of
+a function, by @dfn{advising the function}.  This is a clean method
+for a library to customize functions defined within Emacs---cleaner
 than redefining the whole function.
 
 @cindex piece of advice
   Each function can have multiple @dfn{pieces of advice}, separately
 defined.  Each defined piece of advice can be @dfn{enabled} or
-disabled explicitly.  All the enabled pieces of advice for any given
+@dfn{disabled} explicitly.  All the enabled pieces of advice for any given
 function actually take effect when you @dfn{activate} advice for that
 function, or when you define or redefine the function.  Note that
 enabling a piece of advice and activating advice for a function
@@ -129,6 +129,9 @@
 describing the entity being advised, but this always includes macros and
 special forms.
 
+  In place of the argument list in an ordinary definition, an advice
+definition calls for several different pieces of information.
+
 @cindex class of advice
 @cindex before-advice
 @cindex after-advice
@@ -154,9 +157,6 @@
 @var{function}.  The name allows you to refer to the piece of
 advice---to redefine it, or to enable or disable it.
 
-In place of the argument list in an ordinary definition, an advice
-definition calls for several different pieces of information.
-
 The optional @var{position} specifies where, in the current list of
 advice of the specified @var{class}, this new advice should be placed.
 It should be either @code{first}, @code{last} or a number that specifies
@@ -332,9 +332,9 @@
 @cindex advice, activating
 
 By default, advice does not take effect when you define it---only when
-you @dfn{activate} advice for the function that was advised.  However
-the advice will be automatically activated if the function is defined
-or redefined later.  You can request the activation of advice for a
+you @dfn{activate} advice for the function that was advised.  However,
+the advice will be activated automatically if you define or redefine
+the function later.  You can request the activation of advice for a
 function when you define the advice, by specifying the @code{activate}
 flag in the @code{defadvice}.  But normally you activate the advice
 for a function by calling the function @code{ad-activate} or one of
@@ -353,9 +353,11 @@
 @ref{Enabling Advice}.)  This definition is installed, and optionally
 byte-compiled as well, depending on conditions described below.
 
-In all of the commands to activate advice, if @var{compile} is @code{t},
-the command also compiles the combined definition which implements the
-advice.
+In all of the commands to activate advice, if @var{compile} is
+@code{t} (or anything but @code{nil} or a negative number), the
+command also compiles the combined definition which implements the
+advice.  If it is @code{nil} or a negative number, what happens
+depends on @code{ad-default-compilation-action} as described below.
 
 @deffn Command ad-activate function &optional compile
 This command activates all the advice defined for @var{function}.
@@ -438,9 +440,8 @@
 compiled or a built-in function.
 
 This variable takes effect only if the @var{compile} argument of
-@code{ad-activate} (or any of the above functions) was supplied as
-@code{nil}.  If that argument is non-@code{nil}, that means
-to compile the advice regardless.
+@code{ad-activate} (or any of the above functions) did not force
+compilation.
 @end defopt
 
   If the advised definition was constructed during ``preactivation''
--- a/lispref/backups.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/backups.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -198,7 +198,7 @@
 copying.
 @end defopt
 
-  The following two variables, when non-@code{nil}, cause the second
+  The following three variables, when non-@code{nil}, cause the second
 method to be used in certain special cases.  They have no effect on the
 treatment of files that don't fall into the special cases.
 
@@ -253,7 +253,7 @@
 @table @asis
 @item @code{nil}
 Make numbered backups if the visited file already has numbered backups;
-otherwise, do not.
+otherwise, do not.  This is the default.
 
 @item @code{never}
 Do not make numbered backups.
@@ -503,7 +503,8 @@
 @end group
 @end example
 
-The standard definition of this function is as follows:
+Here is a simplified version of the standard definition of this
+function:
 
 @example
 @group
--- a/lispref/commands.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/commands.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -74,15 +74,15 @@
 The editor command loop runs this normal hook before each command.  At
 that time, @code{this-command} contains the command that is about to
 run, and @code{last-command} describes the previous command.
-@xref{Hooks}.
+@xref{Command Loop Info}.
 @end defvar
 
 @defvar post-command-hook
 The editor command loop runs this normal hook after each command
 (including commands terminated prematurely by quitting or by errors),
 and also when the command loop is first entered.  At that time,
-@code{this-command} describes the command that just ran, and
-@code{last-command} describes the command before that.  @xref{Hooks}.
+@code{this-command} refers to the command that just ran, and
+@code{last-command} refers to the command before that.
 @end defvar
 
   Quitting is suppressed while running @code{pre-command-hook} and
@@ -840,21 +840,21 @@
 @node Adjusting Point
 @section Adjusting Point After Commands
 
-  It is not easy to display a value of point in the middle of a sequence
-of text that has the @code{display} or @code{composition} property.  So
-after a command finishes and returns to the command loop, if point is
-within such a sequence, the command loop normally moves point to the
-edge of the sequence.
+  It is not easy to display a value of point in the middle of a
+sequence of text that has the @code{display}, @code{composition} or
+@code{intangible} property, or is invisible.  Therefore, after a
+command finishes and returns to the command loop, if point is within
+such a sequence, the command loop normally moves point to the edge of
+the sequence.
 
   A command can inhibit this feature by setting the variable
 @code{disable-point-adjustment}:
 
 @defvar disable-point-adjustment
 @tindex disable-point-adjustment
-If this variable is non-@code{nil} when a command returns to the command
-loop, then the command loop does not check for text properties such as
-@code{display} and @code{composition}, and does not move point out of
-sequences that have these properties.
+If this variable is non-@code{nil} when a command returns to the
+command loop, then the command loop does not check for those text
+properties, and does not move point out of sequences that have them.
 
 The command loop sets this variable to @code{nil} before each command,
 so if a command sets it, the effect applies only to that command.
@@ -2051,7 +2051,7 @@
 @code{read-key-sequence}.  Lisp programs can also call this function;
 for example, @code{describe-key} uses it to read the key to describe.
 
-@defun read-key-sequence prompt
+@defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
 @cindex key sequence
 This function reads a key sequence and returns it as a string or
 vector.  It keeps reading events until it has accumulated a complete key
@@ -2066,8 +2066,28 @@
 events---characters, symbols, and lists.  The elements of the string or
 vector are the events in the key sequence.
 
-The argument @var{prompt} is either a string to be displayed in the echo
-area as a prompt, or @code{nil}, meaning not to display a prompt.
+The argument @var{prompt} is either a string to be displayed in the
+echo area as a prompt, or @code{nil}, meaning not to display a prompt.
+The argument @var{continue-echo}, if non-@code{nil}, means to echo
+this key as a continuation of the previous key.
+
+Normally any upper case event is converted to lower case if the
+original event is undefined and the lower case equivalent is defined.
+The argument @var{dont-downcase-last}, if non-@code{nil}, means do not
+convert the last event to lower case.  This is appropriate for reading
+a key sequence to be defined.
+
+The argument @var{switch-frame-ok}, if non-@code{nil}, means that this
+function should process a @code{switch-frame} event if the user
+switches frames before typing anything.  If the user switches frames
+in the middle of a key sequence, or at the start of the sequence but
+@var{switch-frame-ok} is @code{nil}, then the event will be put off
+until after the current key sequence.
+
+The argument @var{command-loop}, if non-@code{nil}, means that this
+key sequence is being read by something that will read commands one
+after another.  It should be @code{nil} if the caller will read just
+one key sequence.
 
 In the example below, the prompt @samp{?} is displayed in the echo area,
 and the user types @kbd{C-x C-f}.
@@ -2089,7 +2109,7 @@
 and does not set @code{quit-flag}.  @xref{Quitting}.
 @end defun
 
-@defun read-key-sequence-vector prompt
+@defun read-key-sequence-vector prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
 This is like @code{read-key-sequence} except that it always
 returns the key sequence as a vector, never as a string.
 @xref{Strings of Events}.
--- a/lispref/debugging.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/debugging.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2005
 @c   Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/debugging
@@ -14,7 +14,7 @@
 @item
 If the problem occurs when you run the program, you can use a Lisp
 debugger to investigate what is happening during execution.  In addition
-to the ordinary debugger, Emacs comes with a source level debugger,
+to the ordinary debugger, Emacs comes with a source-level debugger,
 Edebug.  This chapter describes both of them.
 
 @item
@@ -117,6 +117,15 @@
 @code{debug-ignored-errors} to @code{nil}.
 @end defopt
 
+@defopt eval-expression-debug-on-error
+If you set this variable to a non-@code{nil} value, then
+@code{debug-on-error} will be set to @code{t} when evaluating with the
+command @code{eval-expression}.  If
+@code{eval-expression-debug-on-error} is @code{nil}, then the value of
+@code{debug-on-error} is not changed.  @xref{Lisp Eval,, Evaluating
+Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}.
+@end defopt
+
 @defopt debug-on-signal
 Normally, errors that are caught by @code{condition-case} never run the
 debugger, even if @code{debug-on-error} is non-@code{nil}.  In other
@@ -240,14 +249,12 @@
 
 @group
 ------ Buffer: *Backtrace* ------
-Entering:
+Debugger entered--entering a function:
 * fact(3)
-  eval-region(4870 4878 t)
-  byte-code("...")
+  eval((fact 3))
+  eval-last-sexp-1(nil)
   eval-last-sexp(nil)
-  (let ...)
-  eval-insert-last-sexp(nil)
-* call-interactively(eval-insert-last-sexp)
+  call-interactively(eval-last-sexp)
 ------ Buffer: *Backtrace* ------
 @end group
 
@@ -317,7 +324,9 @@
 place where the Lisp interpreter records information about a particular
 invocation of a function.)  The frame whose line point is on is
 considered the @dfn{current frame}.  Some of the debugger commands
-operate on the current frame.
+operate on the current frame.  If a line starts with a star, that means
+that exiting that frame will call the debugger again.  This is useful
+for examining the return value of a function.
 
   If a function name is underlined, that means the debugger knows
 where its source code is located.  You can click @kbd{Mouse-2} on that
@@ -328,8 +337,6 @@
 itself.  These assumptions are false if the debugger is running
 interpreted.
 
-@need 3000
-
 @node Debugger Commands
 @subsection Debugger Commands
 @cindex debugger command list
@@ -378,6 +385,15 @@
 cancels a @kbd{b} command on that frame.  The visible effect is to
 remove the star from the line in the backtrace buffer.
 
+@item j
+Flag the current frame like @kbd{b}.  Then continue execution like
+@kbd{c}, but temporarily disable break-on-entry for all functions that
+are set up to do so by @code{debug-on-entry}.  The temporarily disabled
+functions are set up to debug on entry again when the debugger is
+entered or when @code{debug-on-entry} is called;
+@code{cancel-debug-on-entry} also re-enables these functions before it
+disables any functions that its argument says it should disable.
+
 @item e
 Read a Lisp expression in the minibuffer, evaluate it, and print the
 value in the echo area.  The debugger alters certain important
@@ -410,6 +426,13 @@
 effect as @kbd{c}, and the specified return value does not matter.
 
 You can't use @kbd{r} when the debugger was entered due to an error.
+
+@item l
+Display a list of functions that will invoke the debugger when called.
+This is a list of functions that are set to break on entry by means of
+@code{debug-on-entry}.  @strong{Warning:} if you redefine such a
+function and thus cancel the effect of @code{debug-on-entry}, it may
+erroneously show up in this list.
 @end table
 
 @node Invoking the Debugger
@@ -425,10 +448,10 @@
 about the stack of Lisp function calls.  It then enters a recursive
 edit, showing the backtrace buffer in Debugger mode.
 
-The Debugger mode @kbd{c} and @kbd{r} commands exit the recursive edit;
-then @code{debug} switches back to the previous buffer and returns to
-whatever called @code{debug}.  This is the only way the function
-@code{debug} can return to its caller.
+The Debugger mode @kbd{c}, @kbd{d}, @kbd{j}, and @kbd{r} commands exit
+the recursive edit; then @code{debug} switches back to the previous
+buffer and returns to whatever called @code{debug}.  This is the only
+way the function @code{debug} can return to its caller.
 
 The use of the @var{debugger-args} is that @code{debug} displays the
 rest of its arguments at the top of the @samp{*Backtrace*} buffer, so
@@ -443,41 +466,41 @@
 @table @code
 @item lambda
 @cindex @code{lambda} in debug
-A first argument of @code{lambda} means @code{debug} was called because
-of entry to a function when @code{debug-on-next-call} was
-non-@code{nil}.  The debugger displays @samp{Entering:} as a line of
-text at the top of the buffer.
+A first argument of @code{lambda} means @code{debug} was called
+because of entry to a function when @code{debug-on-next-call} was
+non-@code{nil}.  The debugger displays @samp{Debugger
+entered--entering a function:} as a line of text at the top of the
+buffer.
 
 @item debug
-@code{debug} as first argument indicates a call to @code{debug} because
-of entry to a function that was set to debug on entry.  The debugger
-displays @samp{Entering:}, just as in the @code{lambda} case.  It also
-marks the stack frame for that function so that it will invoke the
-debugger when exited.
+@code{debug} as first argument indicates a call to @code{debug}
+because of entry to a function that was set to debug on entry.  The
+debugger displays @samp{Debugger entered--entering a function:}, just
+as in the @code{lambda} case.  It also marks the stack frame for that
+function so that it will invoke the debugger when exited.
 
 @item t
 When the first argument is @code{t}, this indicates a call to
 @code{debug} due to evaluation of a list form when
-@code{debug-on-next-call} is non-@code{nil}.  The debugger displays the
-following as the top line in the buffer:
-
-@smallexample
-Beginning evaluation of function call form:
-@end smallexample
+@code{debug-on-next-call} is non-@code{nil}.  The debugger displays
+@samp{Debugger entered--beginning evaluation of function call form:}
+as the top line in the buffer.
 
 @item exit
-When the first argument is @code{exit}, it indicates the exit of a stack
-frame previously marked to invoke the debugger on exit.  The second
-argument given to @code{debug} in this case is the value being returned
-from the frame.  The debugger displays @samp{Return value:} in the top
-line of the buffer, followed by the value being returned.
+When the first argument is @code{exit}, it indicates the exit of a
+stack frame previously marked to invoke the debugger on exit.  The
+second argument given to @code{debug} in this case is the value being
+returned from the frame.  The debugger displays @samp{Debugger
+entered--returning value:} in the top line of the buffer, followed by
+the value being returned.
 
 @item error
 @cindex @code{error} in debug
 When the first argument is @code{error}, the debugger indicates that
-it is being entered because an error or @code{quit} was signaled and not
-handled, by displaying @samp{Signaling:} followed by the error signaled
-and any arguments to @code{signal}.  For example,
+it is being entered because an error or @code{quit} was signaled and
+not handled, by displaying @samp{Debugger entered--Lisp error:}
+followed by the error signaled and any arguments to @code{signal}.
+For example,
 
 @example
 @group
@@ -487,7 +510,7 @@
 
 @group
 ------ Buffer: *Backtrace* ------
-Signaling: (arith-error)
+Debugger entered--Lisp error: (arith-error)
   /(1 0)
 ...
 ------ Buffer: *Backtrace* ------
@@ -522,7 +545,7 @@
 
 The first argument that Lisp hands to the function indicates why it
 was called.  The convention for arguments is detailed in the description
-of @code{debug}.
+of @code{debug} (@pxref{Invoking the Debugger}).
 @end defvar
 
 @deffn Command backtrace
@@ -567,17 +590,14 @@
   (save-excursion ...)
   (let ...)
   (with-output-to-temp-buffer ...)
-  eval-region(1973 2142 #<buffer *scratch*>)
-  byte-code("...  for eval-print-last-sexp ...")
+  eval((with-output-to-temp-buffer ...))
+  eval-last-sexp-1(nil)
 @group
-  eval-print-last-sexp(nil)
-* call-interactively(eval-print-last-sexp)
+  eval-last-sexp(nil)
+  call-interactively(eval-last-sexp)
 ----------- Buffer: backtrace-output ------------
 @end group
 @end smallexample
-
-The character @samp{*} indicates a frame whose debug-on-exit flag is
-set.
 @end deffn
 
 @ignore @c Not worth mentioning
@@ -687,8 +707,8 @@
 
   The first step is to find the defun that is unbalanced.  If there is
 an excess open parenthesis, the way to do this is to go to the end of
-the file and type @kbd{C-u C-M-u}.  This will move you to the beginning
-of the defun that is unbalanced.
+the file and type @kbd{C-u C-M-u}.  This will move you to the
+beginning of the first defun that is unbalanced.
 
   The next step is to determine precisely what is wrong.  There is no
 way to be sure of this except by studying the program, but often the
@@ -719,9 +739,9 @@
 @node Excess Close
 @subsection Excess Close Parentheses
 
-  To deal with an excess close parenthesis, first go to the beginning of
-the file, then type @kbd{C-u -1 C-M-u} to find the end of the unbalanced
-defun.
+  To deal with an excess close parenthesis, first go to the beginning
+of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
+unbalanced defun.
 
   Then find the actual matching close parenthesis by typing @kbd{C-M-f}
 at the beginning of that defun.  This will leave you somewhere short of
--- a/lispref/elisp.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/elisp.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -873,7 +873,6 @@
 * System Environment::      Distinguish the name and kind of system.
 * Terminal Input::          Recording terminal input for debugging.
 * Terminal Output::         Recording terminal output for debugging.
-* Flow Control::            How to turn output flow control on or off.
 * Batch Mode::              Running Emacs without terminal interaction.
 
 Starting Up Emacs
--- a/lispref/help.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/help.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -66,9 +66,13 @@
 
 @itemize @bullet
 @item
-The documentation for a function is stored in the function definition
-itself (@pxref{Lambda Expressions}).  The function @code{documentation}
-knows how to extract it.
+@kindex function-documentation
+The documentation for a function is usually stored in the function
+definition itself (@pxref{Lambda Expressions}).  The function
+@code{documentation} knows how to extract it.  You can also put
+function documentation in the @code{function-documentation} property
+of the function name.  That is useful with definitions such as
+keyboard macros that can't hold a documentation string.
 
 @item
 @kindex variable-documentation
--- a/lispref/keymaps.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/keymaps.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -10,7 +10,7 @@
 
   The bindings between input events and commands are recorded in data
 structures called @dfn{keymaps}.  Each binding in a keymap associates
-(or @dfn{binds}) an individual event type either to another keymap or to
+(or @dfn{binds}) an individual event type, either to another keymap or to
 a command.  When an event type is bound to a keymap, that keymap is used
 to look up the next input event; this continues until a command is
 found.  The whole process is called @dfn{key lookup}.
@@ -202,24 +202,29 @@
 @end group
 @group
 (keymap
- ;; @key{TAB}
- (9 . lisp-indent-line)
+ (3 keymap
+    ;; @kbd{C-c C-z}
+    (26 . run-lisp))
 @end group
 @group
+ (27 keymap
+     ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}}
+     (24 . lisp-send-defun)
+     keymap
+     ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
+     (17 . indent-sexp)))
+@end group
+@group
+ ;; @r{This part is inherited from @code{lisp-mode-shared-map}.}
+ keymap
  ;; @key{DEL}
  (127 . backward-delete-char-untabify)
 @end group
 @group
- (3 keymap
-    ;; @kbd{C-c C-l}
-    (12 . run-lisp))
-@end group
-@group
  (27 keymap
      ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
-     (17 . indent-sexp)
-     ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}}
-     (24 . lisp-send-defun)))
+     (17 . indent-sexp))
+ (9 . lisp-indent-line))
 @end group
 @end example
 
@@ -565,8 +570,8 @@
 text or overlay property.  If that is non-@code{nil}, it is the first
 keymap to be processed, in normal circumstances.
 
-  However, there are also special circumstances, ways programs can
-substitute other keymaps for some of those.  The variable
+  However, there are also special ways for program can to substitute
+other keymaps for some of those.  The variable
 @code{overriding-local-map}, if non-@code{nil}, specifies a keymap
 that replaces all the usual active keymaps except the global keymap.
 Another way to do this is with @code{overriding-terminal-local-map};
@@ -679,8 +684,8 @@
 not do.  The @sc{cdr} can be either a keymap (a list) or a symbol whose
 function definition is a keymap.
 
-When more than one minor mode keymap is active, their order of priority
-is the order of @code{minor-mode-map-alist}.  But you should design
+When more than one minor mode keymap is active, the earlier one in
+@code{minor-mode-map-alist} takes priority.  But you should design
 minor modes so that they don't interfere with each other.  If you do
 this properly, the order will not matter.
 
@@ -763,8 +768,8 @@
 
   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 mouse events with just their types (symbols)
-instead of with entire mouse events (lists).  @xref{Input Events}.  Such
+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,
 but it is sufficient for looking up or rebinding a key.
 
@@ -1113,10 +1118,11 @@
 @code{C-H-left}.  One advantage of such lists is that the precise
 numeric codes for the modifier bits don't appear in compiled files.
 
-  For the functions below, an error is signaled if @var{keymap} is not a
-keymap or if @var{key} is not a string or vector representing a key
+  For the functions below, an error is signaled if @var{keymap} is not
+a keymap or if @var{key} is not a string or vector representing a key
 sequence.  You can use event types (symbols) as shorthand for events
-that are lists.
+that are lists.  The @code{kbd} macro (@pxref{Keymap Terminology}) is
+a convenient way to specify the key sequence.
 
 @defun define-key keymap key binding
 This function sets the binding for @var{key} in @var{keymap}.  (If
@@ -1396,7 +1402,7 @@
 @end smallexample
 
 @noindent
-redefines the first (leftmost) mouse button, typed with the Meta key, to
+redefines the first (leftmost) mouse button, entered with the Meta key, to
 set point where you click.
 
 @cindex non-@acronym{ASCII} text in keybindings
@@ -1743,7 +1749,7 @@
 describe the action of the command it corresponds to.  Note that it is
 not generally possible to display non-@acronym{ASCII} text in menus.  It will
 work for keyboard menus and will work to a large extent when Emacs is
-built with Gtk+ support.@footnote{In this case, the text is first
+built with the Gtk+ toolkit.@footnote{In this case, the text is first
 encoded using the @code{utf-8} coding system and then rendered by the
 toolkit as it sees fit.}
 
@@ -2044,13 +2050,8 @@
 special about @samp{@@} at the beginning of an item string is that the
 @samp{@@} doesn't appear in the menu item.
 
-  You can also produce multiple panes or submenus from separate keymaps.
-The full definition of a prefix key always comes from merging the
-definitions supplied by the various active keymaps (minor mode, local,
-and global).  When more than one of these keymaps is a menu, each of
-them makes a separate pane or panes (when Emacs does not use an
-X-toolkit) or a separate submenu (when using an X-toolkit).
-@xref{Active Keymaps}.
+  Multiple keymaps that define the same menu prefix key produce
+separate panes or separate submenus.
 
 @node Keyboard Menus
 @subsection Menus and the Keyboard
@@ -2094,29 +2095,29 @@
 @cindex menu definition example
 
   Here is a complete example of defining a menu keymap.  It is the
-definition of the @samp{Print} submenu in the @samp{Tools} menu in the
-menu bar, and it uses the simple menu item format (@pxref{Simple Menu
-Items}).  First we create the keymap, and give it a name:
-
-@example
-(defvar menu-bar-print-menu (make-sparse-keymap "Print"))
-@end example
+definition of the @samp{Replace} submenu in the @samp{Edit} menu in
+the menu bar, and it uses the extended menu item format
+(@pxref{Extended Menu Items}).  First we create the keymap, and give
+it a name:
+
+@smallexample
+(defvar menu-bar-replace-menu (make-sparse-keymap "Replace"))
+@end smallexample
 
 @noindent
 Next we define the menu items:
 
-@example
-(define-key menu-bar-print-menu [ps-print-region]
-  '("Postscript Print Region" . ps-print-region-with-faces))
-(define-key menu-bar-print-menu [ps-print-buffer]
-  '("Postscript Print Buffer" . ps-print-buffer-with-faces))
-(define-key menu-bar-print-menu [separator-ps-print]
-  '("--"))
-(define-key menu-bar-print-menu [print-region]
-  '("Print Region" . print-region))
-(define-key menu-bar-print-menu [print-buffer]
-  '("Print Buffer" . print-buffer))
-@end example
+@smallexample
+(define-key menu-bar-replace-menu [tags-repl-continue]
+  '(menu-item "Continue Replace" tags-loop-continue
+	      :help "Continue last tags replace operation"))
+(define-key menu-bar-replace-menu [tags-repl]
+  '(menu-item "Replace in tagged files" tags-query-replace
+	      :help "Interactively replace a regexp in all tagged files"))
+(define-key menu-bar-replace-menu [separator-replace-tags]
+  '(menu-item "--"))
+;; @r{@dots{}}
+@end smallexample
 
 @noindent
 Note the symbols which the bindings are ``made for''; these appear
@@ -2136,58 +2137,29 @@
 
   The binding whose definition is @code{("--")} is a separator line.
 Like a real menu item, the separator has a key symbol, in this case
-@code{separator-ps-print}.  If one menu has two separators, they must
-have two different key symbols.
-
-  Here is code to define enable conditions for two of the commands in
-the menu:
-
-@example
-(put 'print-region 'menu-enable 'mark-active)
-(put 'ps-print-region-with-faces 'menu-enable 'mark-active)
-@end example
+@code{separator-replace-tags}.  If one menu has two separators, they
+must have two different key symbols.
 
   Here is how we make this menu appear as an item in the parent menu:
 
 @example
-(define-key menu-bar-tools-menu [print]
-  (cons "Print" menu-bar-print-menu))
+(define-key menu-bar-edit-menu [replace]
+  (list 'menu-item "Replace" menu-bar-replace-menu))
 @end example
 
 @noindent
 Note that this incorporates the submenu keymap, which is the value of
-the variable @code{menu-bar-print-menu}, rather than the symbol
-@code{menu-bar-print-menu} itself.  Using that symbol in the parent menu
-item would be meaningless because @code{menu-bar-print-menu} is not a
-command.
-
-  If you wanted to attach the same print menu to a mouse click, you
+the variable @code{menu-bar-replace-menu}, rather than the symbol
+@code{menu-bar-replace-menu} itself.  Using that symbol in the parent
+menu item would be meaningless because @code{menu-bar-replace-menu} is
+not a command.
+
+  If you wanted to attach the same replace menu to a mouse click, you
 can do it this way:
 
 @example
 (define-key global-map [C-S-down-mouse-1]
-   menu-bar-print-menu)
-@end example
-
-  We could equally well use an extended menu item (@pxref{Extended Menu
-Items}) for @code{print-region}, like this:
-
-@example
-(define-key menu-bar-print-menu [print-region]
-  '(menu-item "Print Region" print-region
-              :enable mark-active))
-@end example
-
-@noindent
-With the extended menu item, the enable condition is specified
-inside the menu item itself.  If we wanted to make this
-item disappear from the menu entirely when the mark is inactive,
-we could do it this way:
-
-@example
-(define-key menu-bar-print-menu [print-region]
-  '(menu-item "Print Region" print-region
-              :visible mark-active))
+   menu-bar-replace-menu)
 @end example
 
 @node Menu Bar
@@ -2197,7 +2169,7 @@
   Most window systems allow each frame to have a @dfn{menu bar}---a
 permanently displayed menu stretching horizontally across the top of the
 frame.  The items of the menu bar are the subcommands of the fake
-``function key'' @code{menu-bar}, as defined by all the active keymaps.
+``function key'' @code{menu-bar}, as defined in the active keymaps.
 
   To add an item to the menu bar, invent a fake ``function key'' of your
 own (let's call it @var{key}), and make a binding for the key sequence
--- a/lispref/macros.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/macros.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -140,13 +140,10 @@
 
 @defun macroexpand-all form &optional environment
 @cindex macro expansion in entire form
-
 @code{macroexpand-all} expands macros like @code{macroexpand}, but
 will look for and expand all macros in @var{form}, not just at the
-top-level.
-
-In emacs-lisp, @code{macroexpand-all} guarantees that if no macros
-are expanded, the return value will be @code{eq} to @var{form}.
+top-level.  If no macros are expanded, the return value is @code{eq}
+to @var{form}.
 
 Repeating the example used for @code{macroexpand} above with
 @code{macroexpand-all}, we see that @code{macroexpand-all} @emph{does}
@@ -715,7 +712,7 @@
 @item @code{defun}
 Handle this function like a @samp{def} construct: treat the second
 line as the start of a @dfn{body}.
-@item a number, @var{number}
+@item an integer, @var{number}
 The first @var{number} arguments of the function are
 @dfn{distinguished} arguments; the rest are considered the body
 of the expression.  A line in the expression is indented according to
--- a/lispref/markers.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/markers.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -394,17 +394,17 @@
 @cindex mark ring
 
   One special marker in each buffer is designated @dfn{the mark}.  It
-records a position for the user for the sake of commands such as
-@code{kill-region} and @code{indent-rigidly}.  Lisp programs should set
-the mark only to values that have a potential use to the user, and never
-for their own internal purposes.  For example, the @code{replace-regexp}
-command sets the mark to the value of point before doing any
-replacements, because this enables the user to move back there
-conveniently after the replace is finished.
+specifies a position to bound a range of text for commands such as
+@code{kill-region} and @code{indent-rigidly}.  Lisp programs should
+set the mark only to values that have a potential use to the user, and
+never for their own internal purposes.  For example, the
+@code{replace-regexp} command sets the mark to the value of point
+before doing any replacements, because this enables the user to move
+back there conveniently after the replace is finished.
 
-  Many commands are designed so that when called interactively they
-operate on the text between point and the mark.  If you are writing such
-a command, don't examine the mark directly; instead, use
+  Many commands are designed to operate on the text between point and
+the mark when called interactively.  If you are writing such a
+command, don't examine the mark directly; instead, use
 @code{interactive} with the @samp{r} specification.  This provides the
 values of point and the mark as arguments to the command in an
 interactive call, but permits other Lisp programs to specify arguments
--- a/lispref/os.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/os.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -30,7 +30,6 @@
 * Terminal Output::     Recording terminal output for debugging.
 * Sound Output::        Playing sounds on the computer's speaker.
 * X11 Keysyms::         Operating on key symbols for X Windows
-* Flow Control::        How to turn output flow control on or off.
 * Batch Mode::          Running Emacs without terminal interaction.
 * Session Management::  Saving and restoring state with X Session Management.
 @end menu
@@ -86,22 +85,22 @@
 It runs the normal hook @code{before-init-hook}.
 
 @item
-It loads the library @file{site-start}, unless the option
-@samp{-no-site-file} was specified.  The library's file name is usually
-@file{site-start.el}.
+It loads the library @file{site-start} (if any), unless the option
+@samp{-Q} (or @samp{--no-site-file}) was specified.  The library's file
+name is usually @file{site-start.el}.
 @cindex @file{site-start.el}
 
 @item
-It loads your init file (usually @file{~/.emacs}), unless @samp{-q},
-@samp{-no-init-file}, or @samp{-batch} was specified on the command line.
-The @samp{-u} option can specify another user whose home directory
-should be used instead of @file{~}.
+It loads your init file (usually @file{~/.emacs}), unless @samp{-q}
+(or @samp{--no-init-file}), @samp{-Q}, or @samp{--batch} was specified
+on the command line.  The @samp{-u} option can specify another user
+whose home directory should be used instead of @file{~}.
 
 @item
-It loads the library @file{default}, unless @code{inhibit-default-init}
-is non-@code{nil}.  (This is not done in @samp{-batch} mode or if
-@samp{-q} was specified on the command line.)  The library's file name
-is usually @file{default.el}.
+It loads the library @file{default} (if any), unless
+@code{inhibit-default-init} is non-@code{nil}.  (This is not done in
+@samp{-batch} mode, or if @samp{-Q} or @samp{-q} was specified on the
+command line.)  The library's file name is usually @file{default.el}.
 @cindex @file{default.el}
 
 @item
@@ -118,7 +117,7 @@
 
 @item
 It displays the initial echo area message, unless you have suppressed
-that with @code{inhibit-startup-echo-area-message}.
+that with @code{inhibit-startup-echo-area-message} or @samp{-Q}.
 
 @item
 It processes the action arguments from the command line.
@@ -136,9 +135,8 @@
 
 @item
 It displays copyleft, nonwarranty, and basic use information, provided
-there were no remaining command-line arguments (a few steps above),
-the value of @code{inhibit-startup-message} is @code{nil}, and the
-buffer is still empty.
+the value of @code{inhibit-startup-message} is @code{nil}, you didn't
+specify @samp{--no-splash} or @samp{-Q}, and the buffer is still empty.
 @end enumerate
 
 @defopt inhibit-startup-message
@@ -179,36 +177,39 @@
 @cindex @file{.emacs}
 
   When you start Emacs, it normally attempts to load your @dfn{init
-file}, a file in your home directory.  Its normal name is @file{.emacs},
-but you can alternatively call it @file{.emacs.el}, which enables you to
-byte-compile it (@pxref{Byte Compilation}); then the actual file loaded
-will be @file{.emacs.elc}.
+file}, a file in your home directory.  Its normal name is
+@file{.emacs}, but you can alternatively call it @file{.emacs.el}.
+You can also store it inside a subdirectory @file{.emacs.d}.
+Whichever place you use, you can also compile the file (@pxref{Byte
+Compilation}); then the actual file loaded will be @file{.emacs.elc}.
 
-  The command-line switches @samp{-q} and @samp{-u} control whether and
-where to find the init file; @samp{-q} says not to load an init file,
-and @samp{-u @var{user}} says to load @var{user}'s init file instead of
-yours.  @xref{Entering Emacs,,, emacs, The GNU Emacs Manual}.  If
-neither option is specified, Emacs uses the @code{LOGNAME} environment
+  The command-line switches @samp{-q}, @samp{-Q}, and @samp{-u}
+control whether and where to find the init file; @samp{-q} (and the
+stronger @samp{-Q}) says not to load an init file, while @samp{-u
+@var{user}} says to load @var{user}'s init file instead of yours.
+@xref{Entering Emacs,,, emacs, The GNU Emacs Manual}.  If neither
+option is specified, Emacs uses the @code{LOGNAME} environment
 variable, or the @code{USER} (most systems) or @code{USERNAME} (MS
-systems) variable, to find your home directory and thus your init file;
-this way, even if you have su'd, Emacs still loads your own init file.
-If those environment variables are absent, though, Emacs uses your
-user-id to find your home directory.
+systems) variable, to find your home directory and thus your init
+file; this way, even if you have su'd, Emacs still loads your own init
+file.  If those environment variables are absent, though, Emacs uses
+your user-id to find your home directory.
 
 @cindex default init file
-  A site may have a @dfn{default init file}, which is the library named
-@file{default.el}.  Emacs finds the @file{default.el} file through the
-standard search path for libraries (@pxref{How Programs Do Loading}).
-The Emacs distribution does not come with this file; sites may provide
-one for local customizations.  If the default init file exists, it is
-loaded whenever you start Emacs, except in batch mode or if @samp{-q} is
-specified.  But your own personal init file, if any, is loaded first; if
-it sets @code{inhibit-default-init} to a non-@code{nil} value, then
-Emacs does not subsequently load the @file{default.el} file.
+  A site may have a @dfn{default init file}, which is the library
+named @file{default.el}.  Emacs finds the @file{default.el} file
+through the standard search path for libraries (@pxref{How Programs Do
+Loading}).  The Emacs distribution does not come with this file; sites
+may provide one for local customizations.  If the default init file
+exists, it is loaded whenever you start Emacs, except in batch mode or
+if @samp{-q} (or @samp{-Q}) is specified.  But your own personal init
+file, if any, is loaded first; if it sets @code{inhibit-default-init}
+to a non-@code{nil} value, then Emacs does not subsequently load the
+@file{default.el} file.
 
   Another file for site-customization is @file{site-start.el}.  Emacs
 loads this @emph{before} the user's init file.  You can inhibit the
-loading of this file with the option @samp{-no-site-file}.
+loading of this file with the option @samp{--no-site-file}.
 
 @defvar site-run-file
 This variable specifies the site-customization file to load before the
@@ -1526,7 +1527,7 @@
 
 If @var{flow} is non-@code{nil}, then Emacs uses @sc{xon/xoff}
 (@kbd{C-q}, @kbd{C-s}) flow control for output to the terminal.  This
-has no effect except in @sc{cbreak} mode.  @xref{Flow Control}.
+has no effect except in @sc{cbreak} mode.
 
 @c Emacs 19 feature
 The argument @var{meta} controls support for input character codes
@@ -1621,7 +1622,7 @@
 char-table.  Then we fill it in to swap the characters @kbd{C-s} and
 @kbd{C-\} and the characters @kbd{C-q} and @kbd{C-^}.  Subsequently,
 typing @kbd{C-\} has all the usual effects of typing @kbd{C-s}, and vice
-versa.  (@xref{Flow Control}, for more information on this subject.)
+versa.
 
 @cindex flow control example
 @example
@@ -1820,7 +1821,7 @@
 @section Terminal Output
 @cindex terminal output
 
-  The terminal output functions send output to the terminal, or keep
+  The terminal output functions send output to a text terminal, or keep
 track of output sent to the terminal.  The variable @code{baud-rate}
 tells you what Emacs thinks is the output speed of the terminal.
 
@@ -1852,6 +1853,7 @@
 @defun send-string-to-terminal string
 This function sends @var{string} to the terminal without alteration.
 Control characters in @var{string} have terminal-dependent effects.
+This function operates only on text terminals.
 
 One use of this function is to define function keys on terminals that
 have downloadable function key definitions.  For example, this is how (on
@@ -2003,98 +2005,6 @@
 @end lisp
 @end defvar
 
-@node Flow Control
-@section Flow Control
-@cindex flow control characters
-
-  This section attempts to answer the question ``Why does Emacs use
-flow-control characters in its command character set?''  For a second
-view on this issue, read the comments on flow control in the
-@file{emacs/INSTALL} file from the distribution; for help with Termcap
-entries and DEC terminal concentrators, see @file{emacs/etc/TERMS}.
-
-@cindex @kbd{C-s}
-@cindex @kbd{C-q}
-  At one time, most terminals did not need flow control, and none used
-@code{C-s} and @kbd{C-q} for flow control.  Therefore, the choice of
-@kbd{C-s} and @kbd{C-q} as command characters for searching and quoting
-was natural and uncontroversial.  With so many commands needing key
-assignments, of course we assigned meanings to nearly all @acronym{ASCII}
-control characters.
-
-  Later, some terminals were introduced which required these characters
-for flow control.  They were not very good terminals for full-screen
-editing, so Emacs maintainers ignored them.  In later years, flow
-control with @kbd{C-s} and @kbd{C-q} became widespread among terminals,
-but by this time it was usually an option.  And the majority of Emacs
-users, who can turn flow control off, did not want to switch to less
-mnemonic key bindings for the sake of flow control.
-
-  So which usage is ``right''---Emacs's or that of some terminal and
-concentrator manufacturers?  This question has no simple answer.
-
-  One reason why we are reluctant to cater to the problems caused by
-@kbd{C-s} and @kbd{C-q} is that they are gratuitous.  There are other
-techniques (albeit less common in practice) for flow control that
-preserve transparency of the character stream.  Note also that their use
-for flow control is not an official standard.  Interestingly, on the
-model 33 teletype with a paper tape punch (around 1970), @kbd{C-s} and
-@kbd{C-q} were sent by the computer to turn the punch on and off!
-
-  As window systems and PC terminal emulators replace character-only
-terminals, the flow control problem is gradually disappearing.  For the
-mean time, Emacs provides a convenient way of enabling flow control if
-you want it: call the function @code{enable-flow-control}.
-
-@deffn Command enable-flow-control &optional arg
-When @var{arg} is a positive integer, this function enables use of
-@kbd{C-s} and @kbd{C-q} for output flow control, and provides the
-characters @kbd{C-\} and @kbd{C-^} as aliases for them using
-@code{keyboard-translate-table} (@pxref{Translating Input}).
-
-When @var{arg} is a negative integer or zero, it disables these
-features.  When @var{arg} is @code{nil} or omitted, it toggles.
-Interactively, @var{arg} is the prefix argument.  If non-@code{nil},
-its numeric value is used.
-@end deffn
-
-You can use the function @code{enable-flow-control-on} in your
-init file to enable flow control automatically on certain
-terminal types.
-
-@defun enable-flow-control-on &rest termtypes
-This function enables flow control, and the aliases @kbd{C-\} and @kbd{C-^},
-if the terminal type is one of @var{termtypes}.  For example:
-
-@smallexample
-(enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
-@end smallexample
-@end defun
-
-  Here is how @code{enable-flow-control} does its job:
-
-@enumerate
-@item
-@cindex @sc{cbreak}
-It sets @sc{cbreak} mode for terminal input, and tells the operating
-system to handle flow control.  This is done using @code{set-input-mode}.
-
-@item
-It sets up @code{keyboard-translate-table} to translate @kbd{C-\} and
-@kbd{C-^} into @kbd{C-s} and @kbd{C-q}.  Except at its very
-lowest level, Emacs never knows that the characters typed were anything
-but @kbd{C-s} and @kbd{C-q}, so you can in effect type them as @kbd{C-\}
-and @kbd{C-^} even when they are input for other commands.
-@xref{Translating Input}.
-@end enumerate
-
-If the terminal is the source of the flow control characters, then once
-you enable kernel flow control handling, you probably can make do with
-less padding than normal for that terminal.  You can reduce the amount
-of padding by customizing the Termcap entry.  You can also reduce it by
-setting @code{baud-rate} to a smaller value so that Emacs uses a smaller
-speed when calculating the padding needed.  @xref{Terminal Output}.
-
 @node Batch Mode
 @section Batch Mode
 @cindex batch mode
@@ -2106,8 +2016,8 @@
 to be outputting to an erasable screen.  The idea is that you specify
 Lisp programs to run; when they are finished, Emacs should exit.  The
 way to specify the programs to run is with @samp{-l @var{file}}, which
-loads the library named @var{file}, and @samp{-f @var{function}}, which
-calls @var{function} with no arguments.
+loads the library named @var{file}, or @samp{-f @var{function}}, which
+calls @var{function} with no arguments, or @samp{--eval @var{form}}.
 
   Any Lisp program output that would normally go to the echo area,
 either using @code{message}, or using @code{prin1}, etc., with @code{t}
--- a/lispref/processes.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/processes.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -77,11 +77,12 @@
 @code{exec-path} contains a list of directories to search.  Emacs
 initializes @code{exec-path} when it starts up, based on the value of
 the environment variable @code{PATH}.  The standard file name
-constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as usual
-in @code{exec-path}, but environment variable substitutions
+constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as
+usual in @code{exec-path}, but environment variable substitutions
 (@samp{$HOME}, etc.) are not recognized; use
 @code{substitute-in-file-name} to perform them (@pxref{File Name
-Expansion}).
+Expansion}).  @code{nil} in this list refers to
+@code{default-directory}.
 
   Executing a program can also try adding suffixes to the specified
 name:
@@ -93,6 +94,10 @@
 system-dependent.
 @end defvar
 
+  @strong{Please note:} The argument @var{program} contains only the
+name of the program; it may not contain any command-line arguments.  You
+must use @var{args} to provide those.
+
   Each of the subprocess-creating functions has a @var{buffer-or-name}
 argument which specifies where the standard output from the program will
 go.  It should be a buffer or a buffer name; if it is a buffer name,
@@ -107,12 +112,7 @@
 argument, @var{args}.  The @var{args} must all be strings, and they are
 supplied to @var{program} as separate command line arguments.  Wildcard
 characters and other shell constructs have no special meanings in these
-strings, since the whole strings are passed directly to the specified
-program.
-
-  @strong{Please note:} The argument @var{program} contains only the
-name of the program; it may not contain any command-line arguments.  You
-must use @var{args} to provide those.
+strings, since the strings are passed directly to the specified program.
 
   The subprocess gets its current directory from the value of
 @code{default-directory} (@pxref{File Name Expansion}).
@@ -547,17 +547,16 @@
 subprocess.  Processes are deleted automatically after they terminate,
 but not necessarily right away.  You can delete a process explicitly
 at any time.  If you delete a terminated process explicitly before it
-is deleted automatically, no harm results.  Deletion of a running
+is deleted automatically, no harm results.  Deleting a running
 process sends a signal to terminate it (and its child processes if
-any), and calls the process sentinel if it has one.
+any), and calls the process sentinel if it has one.  @xref{Sentinels}.
 
-  @code{get-buffer-process} and @code{process-list} do not remember a
-deleted process, but the process object itself continues to exist as
-long as other Lisp objects point to it.  All the Lisp primitives that
-work on process objects accept deleted processes, but those that do
-I/O or send signals will report an error.  The process mark continues
-to point to the same place as before, usually into a buffer where
-output from the process was being inserted.
+  When a process is deleted, the process object itself continues to
+exist as long as other Lisp objects point to it.  All the Lisp
+primitives that work on process objects accept deleted processes, but
+those that do I/O or send signals will report an error.  The process
+mark continues to point to the same place as before, usually into a
+buffer where output from the process was being inserted.
 
 @defopt delete-exited-processes
 This variable controls automatic deletion of processes that have
@@ -567,15 +566,16 @@
 they exit.
 @end defopt
 
-@defun delete-process name
-This function deletes the process associated with @var{name}, killing
-it with a @code{SIGKILL} signal.  The argument @var{name} may be a
-process, the name of a process, a buffer, or the name of a buffer.
-Calling @code{delete-process} on a running process terminates it,
-updates the process status, and runs the sentinel (if any) immediately.
-If the process has already terminated, calling @code{delete-process}
-has no effect on its status, or on the running of its sentinel (which
-will happen sooner or later).
+@defun delete-process process
+This function deletes a process, killing it with a @code{SIGKILL}
+signal.  The argument may be a process, the name of a process, a
+buffer, or the name of a buffer.  (A buffer or buffer-name stands for
+the process that @code{get-buffer-process} returns.)  Calling
+@code{delete-process} on a running process terminates it, updates the
+process status, and runs the sentinel (if any) immediately.  If the
+process has already terminated, calling @code{delete-process} has no
+effect on its status, or on the running of its sentinel (which will
+happen sooner or later).
 
 @smallexample
 @group
@@ -728,7 +728,7 @@
 @end example
 @end defun
 
-@defun set-process-coding-system process decoding-system encoding-system
+@defun set-process-coding-system process &optional decoding-system encoding-system
 This function specifies the coding systems to use for subsequent output
 from and input to @var{process}.  It will use @var{decoding-system} to
 decode subprocess output, and @var{encoding-system} to encode subprocess
@@ -784,11 +784,14 @@
 input and make space in the buffer.  It also allows filters, sentinels
 and timers to run---so take account of that in writing your code.
 
-@defun process-send-string process-name string
-This function sends @var{process-name} the contents of @var{string} as
-standard input.  The argument @var{process-name} must be a process or
-the name of a process.  If it is @code{nil}, the current buffer's
-process is used.
+  In these functions, the @var{process} argument can be a process or
+the name of a process, or a buffer or buffer name (which stands
+for a process via @code{get-buffer-process}).  @code{nil} means
+the current buffer's process.
+
+@defun process-send-string process string
+This function sends @var{process} the contents of @var{string} as
+standard input.  If it is @code{nil}, the current buffer's process is used.
 
   The function returns @code{nil}.
 
@@ -811,26 +814,20 @@
 @end smallexample
 @end defun
 
-@defun process-send-region process-name start end
+@defun process-send-region process start end
 This function sends the text in the region defined by @var{start} and
-@var{end} as standard input to @var{process-name}, which is a process or
-a process name.  (If it is @code{nil}, the current buffer's process is
-used.)
+@var{end} as standard input to @var{process}.
 
 An error is signaled unless both @var{start} and @var{end} are
 integers or markers that indicate positions in the current buffer.  (It
 is unimportant which number is larger.)
 @end defun
 
-@defun process-send-eof &optional process-name
-  This function makes @var{process-name} see an end-of-file in its
+@defun process-send-eof &optional process
+This function makes @var{process} see an end-of-file in its
 input.  The @acronym{EOF} comes after any text already sent to it.
 
-  If @var{process-name} is not supplied, or if it is @code{nil}, then
-this function sends the @acronym{EOF} to the current buffer's process.  An
-error is signaled if the current buffer has no process.
-
-  The function returns @var{process-name}.
+The function returns @var{process}.
 
 @smallexample
 @group
@@ -875,10 +872,11 @@
   Each of the signal-sending functions takes two optional arguments:
 @var{process-name} and @var{current-group}.
 
-  The argument @var{process-name} must be either a process, the name of
-one, or @code{nil}.  If it is @code{nil}, the process defaults to the
-process associated with the current buffer.  An error is signaled if
-@var{process-name} does not identify a process.
+  The argument @var{process} must be either a process, a process
+name, a buffer, a buffer name, or @code{nil}.  A buffer or buffer name
+stands for a process through @code{get-buffer-process}.  @code{nil}
+stands for the process associated with the current buffer.  An error
+is signaled if @var{process} does not identify a process.
 
   The argument @var{current-group} is a flag that makes a difference
 when you are running a job-control shell as an Emacs subprocess.  If it
@@ -895,8 +893,8 @@
 job-control shells won't work when a pipe is used.  See
 @code{process-connection-type} in @ref{Asynchronous Processes}.
 
-@defun interrupt-process &optional process-name current-group
-This function interrupts the process @var{process-name} by sending the
+@defun interrupt-process &optional process current-group
+This function interrupts the process @var{process} by sending the
 signal @code{SIGINT}.  Outside of Emacs, typing the ``interrupt
 character'' (normally @kbd{C-c} on some systems, and @code{DEL} on
 others) sends this signal.  When the argument @var{current-group} is
@@ -904,21 +902,21 @@
 on the terminal by which Emacs talks to the subprocess.
 @end defun
 
-@defun kill-process &optional process-name current-group
-This function kills the process @var{process-name} by sending the
+@defun kill-process &optional process current-group
+This function kills the process @var{process} by sending the
 signal @code{SIGKILL}.  This signal kills the subprocess immediately,
 and cannot be handled by the subprocess.
 @end defun
 
-@defun quit-process &optional process-name current-group
+@defun quit-process &optional process current-group
 This function sends the signal @code{SIGQUIT} to the process
-@var{process-name}.  This signal is the one sent by the ``quit
+@var{process}.  This signal is the one sent by the ``quit
 character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
 Emacs.
 @end defun
 
-@defun stop-process &optional process-name current-group
-This function stops the process @var{process-name} by sending the
+@defun stop-process &optional process current-group
+This function stops the process @var{process} by sending the
 signal @code{SIGTSTP}.  Use @code{continue-process} to resume its
 execution.
 
@@ -929,9 +927,9 @@
 subprocess.
 @end defun
 
-@defun continue-process &optional process-name current-group
+@defun continue-process &optional process current-group
 This function resumes execution of the process @var{process} by sending
-it the signal @code{SIGCONT}.  This presumes that @var{process-name} was
+it the signal @code{SIGCONT}.  This presumes that @var{process} was
 stopped previously.
 @end defun
 
@@ -940,8 +938,9 @@
 This function sends a signal to process @var{process}.  The argument
 @var{signal} specifies which signal to send; it should be an integer.
 
-You can specify the target process by its process @acronym{ID}; that allows
-you to send signals to processes that are not children of Emacs.
+The @var{process} argument can be a system process @acronym{ID}; that
+allows you to send signals to processes that are not children of
+Emacs.
 @end defun
 
 @node Output from Processes
@@ -1240,7 +1239,7 @@
 it decodes the output according to the process output coding system.
 If the coding system is @code{raw-text} or @code{no-conversion}, Emacs
 converts the unibyte output to multibyte using
-@code{string-to-multibyte}, inserts the resulting multibyte text.
+@code{string-to-multibyte}, and inserts the resulting multibyte text.
 
   You can use @code{set-process-coding-system} to specify which coding
 system to use (@pxref{Process Information}).  Otherwise, the coding
@@ -1443,7 +1442,7 @@
 @section Querying Before Exit
 
   When Emacs exits, it terminates all its subprocesses by sending them
-the @code{SIGHUP} signal.  Because some subprocesses are doing
+the @code{SIGHUP} signal.  Because subprocesses may be doing
 valuable work, Emacs normally asks the user to confirm that it is ok
 to terminate them.  Each process has a query flag which, if
 non-@code{nil}, says that Emacs should ask for confirmation before
--- a/lispref/sequences.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/sequences.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -252,8 +252,8 @@
 change the length of an existing array.
 
 @item
-The array is a constant, for evaluation---in other words, it evaluates
-to itself.
+for purposes of evaluation, the array is a constant---in other words,
+it evaluates to itself.
 
 @item
 The elements of an array may be referenced or changed with the functions
@@ -580,12 +580,12 @@
 This function returns the subtype symbol of @var{char-table}.
 @end defun
 
-@defun set-char-table-default char-table new-default
-This function sets the default value of @var{char-table} to
-@var{new-default}.
+@defun set-char-table-default char-table char new-default
+This function sets the default value of generic character @var{char}
+in @var{char-table} to @var{new-default}.
 
-There is no special function to access the default value of a char-table.
-To do that, use @code{(char-table-range @var{char-table} nil)}.
+There is no special function to access default values in a char-table.
+To do that, use @code{char-table-range} (see below).
 @end defun
 
 @defun char-table-parent char-table
@@ -628,9 +628,10 @@
 @var{charset} (@pxref{Character Sets}).
 
 @item @var{generic-char}
-A generic character stands for a character set; specifying the generic
-character as argument is equivalent to specifying the character set
-name.  @xref{Splitting Characters}, for a description of generic characters.
+A generic character stands for a character set, or a row of a
+character set; specifying the generic character as argument is
+equivalent to specifying the character set name.  @xref{Splitting
+Characters}, for a description of generic characters.
 @end table
 @end defun
 
--- a/lispref/syntax.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/syntax.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -155,9 +155,10 @@
 @dfn{Punctuation characters} (designated by @samp{.}) are those
 characters that are used as punctuation in English, or are used in some
 way in a programming language to separate symbols from one another.
-Most programming language modes, including Emacs Lisp mode, have no
+Some programming language modes, such as Emacs Lisp mode, have no
 characters in this class since the few characters that are not symbol or
-word constituents all have other uses.
+word constituents all have other uses.  Other programming language modes,
+such as C mode, use punctuation syntax for operators.
 @end deffn
 
 @deffn {Syntax class} @w{open parenthesis character}
@@ -501,12 +502,6 @@
 @code{char-syntax}.
 @end defun
 
-@defun syntax-after pos
-This function returns a description of the syntax of the character in
-the buffer after position @var{pos}, taking account of syntax
-properties as well as the syntax table.
-@end defun
-
 @defun set-syntax-table table
 This function makes @var{table} the syntax table for the current buffer.
 It returns @var{table}.
@@ -664,13 +659,13 @@
 string, or the end of a comment or a string, whichever comes first.
 
 @cindex parse state
-The fifth argument @var{state} is a nine-element list of the same form
+The fifth argument @var{state} is a ten-element list of the same form
 as the value of this function, described below.  (It is OK to omit the
-last element of the nine.)  The return value of one call may be used to
-initialize the state of the parse on another call to
+last two elements of this list.)  The return value of one call may be
+used to initialize the state of the parse on another call to
 @code{parse-partial-sexp}.
 
-The result is a list of nine elements describing the final state of
+The result is a list of ten elements describing the final state of
 the parse:
 
 @enumerate 0
@@ -717,15 +712,16 @@
 the position where the comment began; while inside a string, this is the
 position where the string began.  When outside of strings and comments,
 this element is @code{nil}.
+
+@item
+Internal data for continuing the parsing.  The meaning of this
+data is subject to change; it is used if you pass this list
+as the @var{state} argument to another call.
+
 @end enumerate
 
-Elements 0, 3, 4, 5 and 7 are significant in the argument @var{state}.
-
-Actually, the return value is currently a list of ten, rather than
-nine, elements and @var{state} is allowed to be a list of ten elements
-as well.  However, the meaning of the tenth element is subject to
-change and only the first eight elements of @var{state} need to be
-specified.
+Elements 0, 3, 4, 5, 7 and 9 are significant in the argument
+@var{state}.
 
 @cindex indenting with parentheses
 This function is most often used to compute indentation for languages
@@ -941,6 +937,12 @@
 @var{matching-char})} corresponding to the syntax descriptor @var{desc}.
 @end defun
 
+@defun syntax-after pos
+This function returns the syntax code of the character in the buffer
+after position @var{pos}, taking account of syntax properties as well
+as the syntax table.
+@end defun
+
 @node Categories
 @section Categories
 @cindex categories of characters
@@ -973,7 +975,7 @@
 
 @defun define-category char docstring &optional table
 This function defines a new category, with name @var{char} and
-documentation @var{docstring}, for the category table @var{table},
+documentation @var{docstring}, for the category table @var{table}.
 @end defun
 
 @defun category-docstring category &optional table
--- a/lispref/tips.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/lispref/tips.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -46,7 +46,7 @@
 prefix.  This helps avoid name conflicts.
 
 This recommendation applies even to names for traditional Lisp
-primitives that are not primitives in Emacs Lisp---even to
+primitives that are not primitives in Emacs Lisp---such as
 @code{copy-list}.  Believe it or not, there is more than one plausible
 way to define @code{copy-list}.  Play it safe; append your name prefix
 to produce a name like @code{foo-copy-list} or @code{mylib-copy-list}
@@ -101,11 +101,7 @@
 that could cause name clashes for users who don't use that package.
 
 However, there is no problem with using the @code{cl} package at compile
-time, for the sake of macros.  You do that like this:
-
-@example
-(eval-when-compile (require 'cl))
-@end example
+time, with @code{(eval-when-compile (require 'cl))}.
 
 @item
 When defining a major mode, please follow the major mode
@@ -134,16 +130,26 @@
 @item
 @cindex reserved keys
 @cindex keys, reserved
-Please do not define @kbd{C-c @var{letter}} as a key in your major
-modes.  Sequences consisting of @kbd{C-c} and a letter (either upper
-or lower case) are reserved for users; they are the @strong{only}
-sequences reserved for users, so do not block them.
+Please do not define @kbd{C-c @var{letter}} as a key in Lisp programs.
+Sequences consisting of @kbd{C-c} and a letter (either upper or lower
+case) are reserved for users; they are the @strong{only} sequences
+reserved for users, so do not block them.
 
 Changing all the Emacs major modes to respect this convention was a
 lot of work; abandoning this convention would make that work go to
 waste, and inconvenience users.  Please comply with it.
 
 @item
+Function keys @key{F5} through @key{F9} without modifier keys are
+also reserved for users to define.
+
+@item
+Applications should not bind mouse events based on button 1 with the
+shift key held down.  These events include @kbd{S-mouse-1},
+@kbd{M-S-mouse-1}, @kbd{C-S-mouse-1}, and so on.  They are reserved for
+users.
+
+@item
 Sequences consisting of @kbd{C-c} followed by a control character or a
 digit are reserved for major modes.
 
@@ -158,10 +164,6 @@
 may be shadowed from time to time by minor modes.
 
 @item
-Function keys @key{F5} through @key{F9} without modifier keys are
-reserved for users to define.
-
-@item
 Do not bind @kbd{C-h} following any prefix character (including
 @kbd{C-c}).  If you don't bind @kbd{C-h}, it is automatically available
 as a help character for listing the subcommands of the prefix character.
@@ -189,12 +191,6 @@
 @kbd{@key{ESC} @key{ESC}} instead.
 
 @item
-Applications should not bind mouse events based on button 1 with the
-shift key held down.  These events include @kbd{S-mouse-1},
-@kbd{M-S-mouse-1}, @kbd{C-S-mouse-1}, and so on.  They are reserved for
-users.
-
-@item
 @cindex mouse-2
 @cindex references, following
 Special major modes used for read-only text should usually redefine
@@ -202,6 +198,9 @@
 Modes such as Dired, Info, Compilation, and Occur redefine it in this
 way.
 
+In addition, they should mark the text as a kind of ``link'' so that
+@kbd{mouse-1} will follow it also.  @xref{Links and Mouse-1}.
+
 @item
 When a package provides a modification of ordinary Emacs behavior, it is
 good to include a command to enable and disable the feature, provide a
@@ -382,8 +381,7 @@
 @item
 If you use many functions and variables from a certain file, you can
 add a @code{require} for that package to avoid compilation warnings
-for them.  It is better if the @code{require} acts only at compile
-time.  Here's how to do this:
+for them.  For instance,
 
 @example
 (eval-when-compile
@@ -434,7 +432,7 @@
 
 If you have signed papers to assign the copyright to the Foundation,
 then use @samp{Free Software Foundation, Inc.} as @var{name}.
-Otherwise, use your name.
+Otherwise, use your name.  See also @xref{Library Headers}.
 @end itemize
 
 @node Compilation Tips
--- a/man/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,61 @@
+2005-03-03  Nick Roberts  <nickrob@snap.net.nz>
+
+	* trouble.texi (Contributing): Mention Savannah. Direct users to
+	emacs-devel.
+
+2005-03-01  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar.texi (Adding to Diary): Mention redrawing of calendar
+	window.
+
+2005-03-01  Jay Belanger  <belanger@truman.edu>
+
+	* calc.texi (Trigonometric and Hyperbolic Functions):
+	Mention additional functions.
+	(Algebraic Simplifications): Mention additional simplifications.
+
+2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
+
+	* calendar.texi (General Calendar): Document binding of
+	scroll-other-window-down.
+	(Mayan Calendar): Fix earliest date.
+	(Time Intervals): Document timeclock-change.  Fix
+	timeclock-ask-before-exiting documentation.
+
+2005-02-26  Kim F. Storm  <storm@cua.dk>
+
+	* frames.texi (Mouse References):
+	Add mouse-1-click-in-non-selected-windows.
+
+2005-02-25  Richard M. Stallman  <rms@gnu.org>
+
+	* screen.texi (Screen): Explain better about cursors and mode lines;
+	don't presuppose text terminals.
+	(Point): Don't assume just one cursor.
+	Clarify explanation of cursors.
+	(Echo Area, Menu Bar): Cleanups.
+
+	* mini.texi (Minibuffer): Prompts are highlighted.
+	(Minibuffer Edit): Newline = C-j only on text terminals.
+	Clarify resize-mini-windows values.
+	Mention M-PAGEUP and M-PAGEDOWN.
+	(Completion Commands): Mouse-1 like Mouse-2.
+	(Minibuffer History): Explain history commands better.
+	(Repetition): Add xref to Incremental Search.
+
+	* mark.texi (Setting Mark): Clarify info about displaying mark.
+	Clarify explanation of C-@ and C-SPC.
+	(Transient Mark): Mention Delete Selection mode.
+	(Marking Objects): Clean up text about extending the region.
+
+	* m-x.texi (M-x): One C-g doesn't always go to top level.
+	No delay before suggest-key-bindings output.
+
+	* fixit.texi (Fixit): Mention C-/ for undo.
+	(Spelling): Mention ESC TAB like M-TAB.
+	Replacement words with r and R are rechecked.
+	Say where C-g leaves point.  Mention ? as input.
+
 2005-02-23  Lute Kamstra  <lute@gnu.org>
 
 	* cmdargs.texi (Initial Options): Add cross reference.
--- a/man/building.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/building.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -82,12 +82,13 @@
 Variables}).
 
   Starting a compilation displays the buffer @samp{*compilation*} in
-another window but does not select it.  The buffer's mode line tells you
-whether compilation is finished, with the word @samp{run} or @samp{exit}
-inside the parentheses.  You do not have to keep this buffer visible;
-compilation continues in any case.  While a compilation is going on, the
-string @samp{Compiling} appears in the mode lines of all windows.  When
-this string disappears, the compilation is finished.
+another window but does not select it.  The buffer's mode line tells
+you whether compilation is finished, with the word @samp{run},
+@samp{signal} or @samp{exit} inside the parentheses.  You do not have
+to keep this buffer visible; compilation continues in any case.  While
+a compilation is going on, the string @samp{Compiling} appears in the
+mode lines of all windows.  When this string disappears, the
+compilation is finished.
 
   If you want to watch the compilation transcript as it appears, switch
 to the @samp{*compilation*} buffer and move point to the end of the
@@ -104,12 +105,14 @@
 
 @findex kill-compilation
   When the compiler process terminates, for whatever reason, the mode
-line of the @samp{*compilation*} buffer changes to say @samp{signal}
-instead of @samp{run}.  Starting a new compilation also kills any
-running compilation, as only one can exist at any time.  However,
-@kbd{M-x compile} asks for confirmation before actually killing a
-compilation that is running.  You can also kill the compilation
-process with @kbd{M-x kill-compilation}.
+line of the @samp{*compilation*} buffer changes to say @samp{exit}
+(followed by the exit code, @samp{[0]} for a normal exit), or
+@samp{signal} (if a signal terminated the process), instead of
+@samp{run}.  Starting a new compilation also kills any running
+compilation, as only one can exist at any time.  However, @kbd{M-x
+compile} asks for confirmation before actually killing a compilation
+that is running.  You can also kill the compilation process with
+@kbd{M-x kill-compilation}.
 
 @findex recompile
   To rerun the last compilation with the same command, type @kbd{M-x
--- a/man/calc.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/calc.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -18473,6 +18473,25 @@
 vector as an argument and computes @code{arctan2} of the elements.
 (This command does not accept the Hyperbolic flag.)
 
+@pindex calc-sec
+@tindex sec
+@pindex calc-csc
+@tindex csc
+@pindex calc-cot
+@tindex cot
+@pindex calc-sech
+@tindex sech
+@pindex calc-csch
+@tindex csch
+@pindex calc-coth
+@tindex coth
+The remaining trigonometric functions, @code{calc-sec} [@code{sec}],
+@code{calc-csc} [@code{csc}] and @code{calc-sec} [@code{sec}], are also
+available.  With the Hyperbolic flag, these compute their hyperbolic
+counterparts, which are also available separately as @code{calc-sech}
+[@code{sech}], @code{calc-csch} [@code{csch}] and @code{calc-sech}
+[@code{sech}].  (These commmands do not accept the Inverse flag.)
+
 @node Advanced Math Functions, Branch Cuts, Trigonometric and Hyperbolic Functions, Scientific Functions
 @section Advanced Mathematical Functions
 
@@ -22730,18 +22749,27 @@
 \bigskip
 @end tex
 
-Trigonometric functions are simplified in several ways.  First,
-@expr{@tfn{sin}(@tfn{arcsin}(x))} is simplified to @expr{x}, and
-similarly for @code{cos} and @code{tan}.  If the argument to
-@code{sin} is negative-looking, it is simplified to 
-@expr{-@tfn{sin}(x),},  and similarly for @code{cos} and @code{tan}.
-Finally, certain special values of the argument are recognized;
-@pxref{Trigonometric and Hyperbolic Functions}.
-
+Trigonometric functions are simplified in several ways.  Whenever a
+products of two trigonometric functions can be replaced by a single
+function, the replacement is made; for example,
+@expr{@tfn{tan}(x) @tfn{cos}(x)} is simplified to @expr{@tfn{sin}(x)}. 
+Reciprocals of trigonometric functions are replaced by their reciprocal
+function; for example, @expr{1/@tfn{sec}(x)} is simplified to
+@expr{@tfn{cos}(x)}.  The corresponding simplifications for the
+hyperbolic functions are also handled.
+
+Trigonometric functions of their inverse functions are
+simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is
+simplified to @expr{x}, and similarly for @code{cos} and @code{tan}.  
 Trigonometric functions of inverses of different trigonometric
 functions can also be simplified, as in @expr{@tfn{sin}(@tfn{arccos}(x))}
 to @expr{@tfn{sqrt}(1 - x^2)}.
 
+If the argument to @code{sin} is negative-looking, it is simplified to
+@expr{-@tfn{sin}(x)}, and similarly for @code{cos} and @code{tan}.
+Finally, certain special values of the argument are recognized;
+@pxref{Trigonometric and Hyperbolic Functions}.
+
 Hyperbolic functions of their inverses and of negative-looking
 arguments are also handled, as are exponentials of inverse
 hyperbolic functions.
--- a/man/calendar.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/calendar.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -291,7 +291,9 @@
 @item C-c C-l
 Regenerate the calendar window (@code{redraw-calendar}).
 @item SPC
-Scroll the next window (@code{scroll-other-window}).
+Scroll the next window up (@code{scroll-other-window}).
+@item DEL
+Scroll the next window down (@code{scroll-other-window-down}).
 @item q
 Exit from calendar (@code{exit-calendar}).
 @end table
@@ -314,8 +316,9 @@
 
 @kindex SPC @r{(Calendar mode)}
   In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
-to scroll the other window.  This is handy when you display a list of
-holidays or diary entries in another window.
+and @kbd{DEL} (@code{scroll-other-window-down}) to scroll the other
+window up or down, respectively.  This is handy when you display a list
+of holidays or diary entries in another window.
 
 @kindex q @r{(Calendar mode)}
 @findex exit-calendar
@@ -437,8 +440,8 @@
 @findex list-calendar-holidays
   To get even more detailed information, use the @kbd{a} command, which
 displays a separate buffer containing a list of all holidays in the
-current three-month range.  You can use @key{SPC} in the calendar window
-to scroll that list.
+current three-month range.  You can use @key{SPC} and @key{DEL} in the
+calendar window to scroll that list up and down, respectively.
 
 @findex holidays
   The command @kbd{M-x holidays} displays the list of holidays for the
@@ -861,7 +864,7 @@
 @noindent
 Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
 tun, 16 uinal, and 6 kin.  The Emacs calendar can handle Mayan long
-count dates as early as 7.17.18.13.1, but no earlier.  When you use the
+count dates as early as 7.17.18.13.3, but no earlier.  When you use the
 @kbd{g m l} command, type the Mayan long count date with the baktun,
 katun, tun, uinal, and kin separated by periods.
 
@@ -1203,7 +1206,10 @@
 For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
 
   When you modify the diary file, be sure to save the file before
-exiting Emacs.
+exiting Emacs.  Saving the diary file after using any of the above
+insertion commands will automatically update the diary marks in the
+calendar window, if appropriate.  You can use the command
+@code{redraw-calendar} to force an update at any time.
 
 @node Special Diary Entries
 @subsection Special Diary Entries
@@ -1510,11 +1516,14 @@
 
 @findex timeclock-in
 @findex timeclock-out
+@findex timeclock-change
 @findex timeclock-workday-remaining
 @findex timeclock-when-to-leave
   Use the @kbd{M-x timeclock-in} command when you start working on a
 project, and @kbd{M-x timeclock-out} command when you're done.  Each
-time you do this, it adds one time interval to the record of the project.
+time you do this, it adds one time interval to the record of the
+project.  You can change to working on a different project with @kbd{M-x
+timeclock-change}.
 
   Once you've collected data from a number of time intervals, you can use
 @kbd{M-x timeclock-workday-remaining} to see how much time is left to
@@ -1529,12 +1538,13 @@
 @code{t}, or invoke the @kbd{M-x timeclock-modeline-display} command.
 
 @vindex timeclock-ask-before-exiting
-  Terminating the current Emacs session might or might not mean that
-you have stopped working on the project.  If you'd like Emacs to ask
-you about this, set the value of the variable
-@code{timeclock-ask-before-exiting} to @code{t} (via @kbd{M-x
-customize}).  By default, only an explicit @kbd{M-x timeclock-out}
-tells Emacs that the current interval is over.
+  Terminating the current Emacs session might or might not mean that you
+have stopped working on the project and, by default, Emacs queries this.
+You can, however, set the value of the variable
+@code{timeclock-ask-before-exiting} to @code{nil} (via @kbd{M-x
+customize}) to avoid this behaviour; then, only an explicit @kbd{M-x
+timeclock-out} or @kbd{M-x timeclock-change} will tell Emacs that the
+current interval is over.
 
 @cindex @file{.timelog} file
 @vindex timeclock-file
--- a/man/fixit.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/fixit.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -11,12 +11,12 @@
 it, or change your mind while composing text on the fly.
 
   The most fundamental command for correcting erroneous editing is the
-undo command, @kbd{C-x u} or @kbd{C-_}.  This command undoes a single
-command (usually), a part of a command (in the case of
-@code{query-replace}), or several consecutive self-inserting characters.
-Consecutive repetitions of @kbd{C-_} or @kbd{C-x u} undo earlier and
-earlier changes, back to the limit of the undo information available.
-@xref{Undo}, for more information.
+undo command, @kbd{C-x u} or @kbd{C-_} or @kbd{C-/}.  This command
+undoes a single command (usually), a part of a command (in the case of
+@code{query-replace}), or several consecutive self-inserting
+characters.  Consecutive repetitions of the undo command undo earlier
+and earlier changes, back to the limit of the undo information
+available.  @xref{Undo}, for more information.
 
 @menu
 * Kill Errors:: Commands to kill a batch of recently entered text.
@@ -164,6 +164,7 @@
 @item M-$
 Check and correct spelling of the word at point (@code{ispell-word}).
 @item M-@key{TAB}
+@itemx @key{ESC} @key{TAB}
 Complete the word before point based on the spelling dictionary
 (@code{ispell-complete-word}).
 @item M-x ispell
@@ -239,11 +240,13 @@
 here.
 
 @item r @var{new} @key{RET}
-Replace the word (just this time) with @var{new}.
+Replace the word (just this time) with @var{new}.  (The replacement
+string will be rescanned for more spelling errors.)
 
 @item R @var{new} @key{RET}
 Replace the word with @var{new}, and do a @code{query-replace} so you
-can replace it elsewhere in the buffer if you wish.
+can replace it elsewhere in the buffer if you wish.  (The replacements
+will be rescanned for more spelling errors.)
 
 @item @var{digit}
 Replace the word (just this time) with one of the displayed
@@ -277,8 +280,9 @@
 wildcard.
 
 @item C-g
-Quit interactive spell checking.  You can restart it again afterward
-with @kbd{C-u M-$}.
+Quit interactive spell checking, leaving point at the word that was
+being checked.  You can restart checking again afterward with @kbd{C-u
+M-$}.
 
 @item X
 Same as @kbd{C-g}.
@@ -296,6 +300,9 @@
 @item C-z
 This key has its normal command meaning (suspend Emacs or iconify this
 frame).
+
+@item ?
+Show the list of options.
 @end table
 
 @findex ispell-complete-word
--- a/man/frames.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/frames.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -312,6 +312,12 @@
 the region.  The variable @code{mouse-1-click-follows-link} controls
 whether @kbd{Mouse-1} has this behavior.
 
+@vindex mouse-1-click-follows-link
+  Normally, the @kbd{Mouse-1} click behavior is performed on links in
+any window.  The variable @code{mouse-1-click-in-non-selected-windows}
+controls whether @kbd{Mouse-1} has this behavior even in non-selected
+windows, or only in the selected window.
+
 @vindex mouse-highlight
   You can usually tell when @kbd{Mouse-1} and @kbd{Mouse-2} have this
 special sort of meaning because the sensitive text highlights when you
--- a/man/m-x.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/m-x.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -46,8 +46,9 @@
 the key @kbd{C-f}.  You can run any Emacs command by name using
 @kbd{M-x}, whether or not any keys are bound to it.
 
-  If you type @kbd{C-g} while the command name is being read, you cancel
-the @kbd{M-x} command and get out of the minibuffer, ending up at top level.
+  If you type @kbd{C-g} while the command name is being read, you
+cancel the @kbd{M-x} command and get out of the minibuffer, ending up
+at command level.
 
   To pass a numeric argument to the command you are invoking with
 @kbd{M-x}, specify the numeric argument before the @kbd{M-x}.  @kbd{M-x}
@@ -56,11 +57,10 @@
 
 @vindex suggest-key-bindings
   If the command you type has a key binding of its own, Emacs mentions
-this in the echo area, two seconds after the command finishes (if you
-don't type anything else first).  For example, if you type @kbd{M-x
+this in the echo area.  For example, if you type @kbd{M-x
 forward-word}, the message says that you can run the same command more
-easily by typing @kbd{M-f}.  You can turn off these messages by setting
-@code{suggest-key-bindings} to @code{nil}.
+easily by typing @kbd{M-f}.  You can turn off these messages by
+setting @code{suggest-key-bindings} to @code{nil}.
 
   Normally, when describing in this manual a command that is run by
 name, we omit the @key{RET} that is needed to terminate the name.  Thus
--- a/man/mark.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/mark.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -85,23 +85,28 @@
 button one across a range of text; that puts point where you release the
 mouse button, and sets the mark at the other end of that range.  Or you
 can click mouse button three, which sets the mark at point (like
-@kbd{C-@key{SPC}}) and then moves point (like @kbd{Mouse-1}).  Both of
-these methods copy the region into the kill ring in addition to setting
-the mark; that gives behavior consistent with other window-driven
-applications, but if you don't want to modify the kill ring, you must
-use keyboard commands to set the mark.  @xref{Mouse Commands}.
+@kbd{C-@key{SPC}}) and then moves point where you clicked (like
+@kbd{Mouse-1}).  Both of these methods copy the region into the kill
+ring in addition to setting the mark; that gives behavior consistent
+with other window-driven applications, but if you don't want to modify
+the kill ring, you must use keyboard commands to set the mark.
+@xref{Mouse Commands}.
 
 @kindex C-x C-x
 @findex exchange-point-and-mark
-  Ordinary terminals have only one cursor, so there is no way for Emacs
-to show you where the mark is located.  You have to remember.  The usual
-solution to this problem is to set the mark and then use it soon, before
-you forget where it is.  Alternatively, you can see where the mark is
-with the command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which
-puts the mark where point was and point where the mark was.  The extent
-of the region is unchanged, but the cursor and point are now at the
-previous position of the mark.  In Transient Mark mode, this command
-also reactivates the mark.
+  When Emacs was developed, terminals had only one cursor, so Emacs
+does not show where the mark is located--you have to remember.  If you
+enable Transient Mark mode (see below), then the region is highlighted
+when it is active; you can tell mark is at the other end of the
+highlighted region.  But this only applies when the mark is active.
+
+  The usual solution to this problem is to set the mark and then use
+it soon, before you forget where it is.  Alternatively, you can see
+where the mark is with the command @kbd{C-x C-x}
+(@code{exchange-point-and-mark}) which puts the mark where point was
+and point where the mark was.  The extent of the region is unchanged,
+but the cursor and point are now at the previous position of the mark.
+In Transient Mark mode, this command also reactivates the mark.
 
   @kbd{C-x C-x} is also useful when you are satisfied with the position
 of point but want to move the other end of the region (where the mark
@@ -113,14 +118,13 @@
 @ref{Mark Ring}.
 
 @kindex C-@@
-  There is no such character as @kbd{C-@key{SPC}} in @acronym{ASCII}; when you
-type @key{SPC} while holding down @key{CTRL}, what you get on most
-ordinary terminals is the character @kbd{C-@@}.  This key is actually
-bound to @code{set-mark-command}.  But unless you are unlucky enough to
-have a terminal where typing @kbd{C-@key{SPC}} does not produce
+  There is no such character as @kbd{C-@key{SPC}} in @acronym{ASCII};
+when you type @key{SPC} while holding down @key{CTRL} on a text
+terminal, what you get is the character @kbd{C-@@}.  This key is also
+bound to @code{set-mark-command}--so unless you are unlucky enough to
+have a text terminal where typing @kbd{C-@key{SPC}} does not produce
 @kbd{C-@@}, you might as well think of this character as
-@kbd{C-@key{SPC}}.  Under X, @kbd{C-@key{SPC}} is actually a distinct
-character, but its binding is still @code{set-mark-command}.
+@kbd{C-@key{SPC}}.
 
 @node Transient Mark
 @section Transient Mark Mode
@@ -182,6 +186,10 @@
 region active again by typing @kbd{C-x C-x}.
 
 @item
+If Delete Selection mode is also enabled, some commands delete the
+region when used while the mark is active.  @xref{Graphical Kill}.
+
+@item
 Quitting with @kbd{C-g} deactivates the mark.
 
 @item
@@ -320,10 +328,10 @@
 word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the
 next balanced expression (@pxref{Expressions}).  These commands handle
 arguments just like @kbd{M-f} and @kbd{C-M-f}.  If you repeat these
-commands, the region is extended.  For example, you can type either
-@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words.
-The region is also extended when the mark is active in Transient Mark
-mode, regardless of the last command.
+commands, that extends the region.  For example, you can type either
+@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words.  This
+command also extends the region when the mark is active in Transient
+Mark mode, regardless of the last command.
 
 @kindex C-x h
 @findex mark-whole-buffer
@@ -337,20 +345,20 @@
 point.  If the prefix argument is @minus{}@var{n}, @kbd{M-h} also
 marks @var{n} paragraphs, running back form the one surrounding point.
 In that last case, point moves forward to the end of that paragraph,
-and the mark goes at the start of the region.  The @kbd{M-h} command
-also supports the extension of the region, similar to @kbd{M-@@} and
-@kbd{C-M-@@}.
+and the mark goes at the start of the region.  Repeating the @kbd{M-h}
+command extends the region, just as with @kbd{M-@@} and @kbd{C-M-@@}.
 
   @kbd{C-M-h} (@code{mark-defun}) similarly puts point before, and the
 mark after, the current (or following) major top-level definition, or
-defun (@pxref{Moving by Defuns}).  (Currently it only marks one defun,
-but repeating it marks more defuns, like for @kbd{M-@@}.)  @kbd{C-x
-C-p} (@code{mark-page}) puts point before the current page, and mark
-at the end (@pxref{Pages}).  The mark goes after the terminating page
-delimiter (to include it in the region), while point goes after the
-preceding page delimiter (to exclude it).  A numeric argument
-specifies a later page (if positive) or an earlier page (if negative)
-instead of the current page.
+defun (@pxref{Moving by Defuns}).  Repeating @kbd{C-M-h} also extends
+the region.
+
+  @kbd{C-x C-p} (@code{mark-page}) puts point before the current page,
+and mark at the end (@pxref{Pages}).  The mark goes after the
+terminating page delimiter (to include it in the region), while point
+goes after the preceding page delimiter (to exclude it).  A numeric
+argument specifies a later page (if positive) or an earlier page (if
+negative) instead of the current page.
 
   Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire
 buffer as the region, by putting point at the beginning and the mark at
--- a/man/mini.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/mini.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -16,9 +16,10 @@
 @cindex prompt
   When the minibuffer is in use, it appears in the echo area, and the
 terminal's cursor moves there.  The beginning of the minibuffer line
-displays a @dfn{prompt} which says what kind of input you should supply and
-how it will be used.  Often this prompt is derived from the name of the
-command that the argument is for.  The prompt normally ends with a colon.
+displays a @dfn{prompt} in a special color, to say what kind of input
+you should supply and how it will be used.  Often this prompt is
+derived from the name of the command that the argument is for.  The
+prompt normally ends with a colon.
 
 @cindex default argument
   Sometimes a @dfn{default argument} appears in parentheses after the
@@ -123,8 +124,8 @@
 
   Since @key{RET} in the minibuffer is defined to exit the minibuffer,
 you can't use it to insert a newline in the minibuffer.  To do that,
-type @kbd{C-o} or @kbd{C-q C-j}.  (Recall that a newline is really the
-character control-J.)
+type @kbd{C-o} or @kbd{C-q C-j}.  (On text terminals, newline is
+really the @acronym{ASCII} character control-J.)
 
   The minibuffer has its own window which always has space on the screen
 but acts as if it were not there when the minibuffer is not in use.  When
@@ -147,12 +148,13 @@
 
 @vindex resize-mini-windows
   The minibuffer window expands vertically as necessary to hold the
-text that you put in the minibuffer, if @code{resize-mini-windows} is
-non-@code{nil}.  If @code{resize-mini-windows} is @code{t}, the window
-is always resized to fit the size of the text it displays.  If
-@code{resize-mini-windows} is the symbol @code{grow-only}, the window
-grows when the size of displayed text increases, but shrinks (back to
-the normal size) only when the minibuffer becomes inactive.
+text that you put in the minibuffer.  If @code{resize-mini-windows} is
+@code{t} (the default), the window is always resized to fit the size
+of the text it displays.  If its value is the symbol @code{grow-only},
+the window grows when the size of displayed text increases, but
+shrinks (back to the normal size) only when the minibuffer becomes
+inactive.  If its value is @code{nil}, you have to adjust the height
+yourself.
 
 @vindex max-mini-window-height
   The variable @code{max-mini-window-height} controls the maximum
@@ -161,11 +163,13 @@
 maximum number of lines; @code{nil} means do not resize the minibuffer
 window automatically.  The default value is 0.25.
 
-  If while in the minibuffer you issue a command that displays help text
-of any sort in another window, you can use the @kbd{C-M-v} command while
-in the minibuffer to scroll the help text.  This lasts until you exit
-the minibuffer.  This feature is especially useful when you display
-a buffer listing possible completions.  @xref{Other Window}.
+  If, while in the minibuffer, you issue a command that displays help
+text of any sort in another window, you can use the @kbd{C-M-v}
+command while in the minibuffer to scroll the help text.
+(@kbd{M-@key{PAGEUP}} and @kbd{M-@key{PAGEDOWN}} also operate on that
+help text.)  This lasts until you exit the minibuffer.  This feature
+is especially useful when you display a buffer listing possible
+completions.  @xref{Other Window}.
 
 @vindex enable-recursive-minibuffers
   Emacs normally disallows most commands that use the minibuffer while
@@ -273,8 +277,9 @@
 
 @table @kbd
 @findex mouse-choose-completion
-@item Mouse-2
-Clicking mouse button 2 on a completion in the list of possible
+@item Mouse-1
+@itemx Mouse-2
+Clicking mouse button 1 or 2 on a completion in the list of possible
 completions chooses that completion (@code{mouse-choose-completion}).
 You normally use this command while point is in the minibuffer, but you
 must click in the list of completions, not in the minibuffer itself.
@@ -447,10 +452,13 @@
 @findex previous-history-element
   The simplest way to reuse the saved arguments in the history list is
 to move through the history list one element at a time.  While in the
-minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
-to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
-down-arrow (@code{next-history-element}) to ``move to'' the next later
-input.
+minibuffer, use @kbd{M-p} or up-arrow
+(@code{previous-history-element}) to ``move to'' the next earlier
+minibuffer input, and use @kbd{M-n} or down-arrow
+(@code{next-history-element}) to ``move to'' the next later input.
+These commands don't move the cursor, they bring different saved
+strings into the minibuffer.  But you can think of them as ``moving''
+through the history list.
 
   The previous input that you fetch from the history entirely replaces
 the contents of the minibuffer.  To use it as the argument, exit the
@@ -570,7 +578,7 @@
 it normally does not appear in the history list for @kbd{C-x
 @key{ESC} @key{ESC}}.  You can make it appear in the history by
 setting @code{isearch-resume-in-command-history} to a non-@code{nil}
-value.
+value.  @xref{Incremental Search}.
 
 @vindex command-history
   The list of previous minibuffer-using commands is stored as a Lisp
--- a/man/screen.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/screen.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -29,19 +29,23 @@
 file (@pxref{Windows}).  In this manual, the word ``window'' always
 refers to the subdivisions of a frame within Emacs.
 
-  At any time, one window is the @dfn{selected window}; the most
-prominent cursor indicates which window is selected.  Most Emacs
-commands implicitly apply to the text in the selected window (though
-mouse commands generally operate on whatever window you click them in,
-whether selected or not).  The other windows display text for
-reference only, unless/until you select them.  If you use multiple
-frames under the X Window System, then giving the input focus to a
-particular frame selects a window in that frame.
+  At any time, one window is the @dfn{selected window}.  On graphical
+terminals, the selected window normally shows a more prominent cursor
+(solid and blinking) while other windows show a weaker cursor (such as
+a hollow box).  On text terminals, which have just one cursor, that cursor
+appears in the selected window.
+
+  Most Emacs commands implicitly apply to the text in the selected
+window (though mouse commands generally operate on whatever window you
+click them in, whether selected or not).  The other windows display
+text for reference only, unless/until you select them.  If you use
+multiple frames under the X Window System, then giving the input focus
+to a particular frame selects a window in that frame.
 
   Each window's last line is a @dfn{mode line}, which describes what
-is going on in that window.  It appears in inverse video, if the
-terminal supports that; its contents normally begin with
-@w{@samp{--:-- @ *scratch*}} when Emacs starts.  The mode line
+is going on in that window.  It appears in different color and/or a
+``3D'' box, if the terminal supports that; its contents normally begin
+with @w{@samp{--:-- @ *scratch*}} when Emacs starts.  The mode line
 displays status information such as what buffer is being displayed
 above it in the window, what major and minor modes are in use, and
 whether the buffer contains unsaved changes.
@@ -58,7 +62,7 @@
 @cindex point
 @cindex cursor
 
-  Within Emacs, the terminal's cursor shows the location at which
+  Within Emacs, the active cursor shows the location at which
 editing commands will take effect.  This location is called @dfn{point}.
 Many Emacs commands move point through the text, so that you can edit at
 different places in it.  You can also place point by clicking mouse
@@ -93,9 +97,9 @@
 point is.
 
   On graphical terminals, Emacs shows a cursor in each window; the
-selected window's cursor is solid or blinking, and the other cursors
-are just hollow.  Thus, the most striking cursor always shows you
-the selected window, on all kinds of terminals.
+selected window's cursor is solid and blinking, and the other cursors
+are just hollow.  Thus, the most prominent cursor always shows you the
+selected window, on all kinds of terminals.
 
   @xref{Cursor Display}, for customizable variables that control display
 of the cursor or cursors.
@@ -111,11 +115,11 @@
 
   The line at the bottom of the frame (below the mode line) is the
 @dfn{echo area}.  It is used to display small amounts of text for
-several purposes.
+various purposes.
 
-  @dfn{Echoing} means displaying the characters that you type.  Outside
-Emacs, the operating system normally echoes all your input.  Emacs
-handles echoing differently.
+  @dfn{Echoing} means displaying the characters that you type.  At the
+command line, the operating system normally echoes all your input.
+Emacs handles echoing differently.
 
   Single-character commands do not echo in Emacs, and multi-character
 commands echo only if you pause while typing them.  As soon as you pause
@@ -326,7 +330,7 @@
   When you are using a window system, you can use the mouse to choose a
 command from the menu bar.  An arrow pointing right, after the menu
 item, indicates that the item leads to a subsidiary menu; @samp{...} at
-the end means that the command will read arguments from the keyboard
+the end means that the command will read arguments (further input from you)
 before it actually does anything.
 
   To view the full command name and documentation for a menu item, type
--- a/man/trouble.texi	Wed Mar 02 11:04:29 2005 +0000
+++ b/man/trouble.texi	Thu Mar 03 10:35:22 2005 +0000
@@ -1037,17 +1037,22 @@
 
 If you would like to help pretest Emacs releases to assure they work
 well, or if you would like to work on improving Emacs, please contact
-the maintainers at @email{bug-gnu-emacs@@gnu.org}.  A pretester
+the maintainers at @email{emacs-devel@@gnu.org}.  A pretester
 should be prepared to investigate bugs as well as report them.  If you'd
 like to work on improving Emacs, please ask for suggested projects or
 suggest your own ideas.
 
 If you have already written an improvement, please tell us about it.  If
 you have not yet started work, it is useful to contact
-@email{bug-gnu-emacs@@gnu.org} before you start; it might be
+@email{emacs-devel@@gnu.org} before you start; it might be
 possible to suggest ways to make your extension fit in better with the
 rest of Emacs.
 
+The development version of Emacs can be downloaded from the CVS
+repository where it is actively maintained by a group of developers.
+See the Emacs project page http://savannah.gnu.org/projects/emacs/ for
+details.
+
 @node Service, Copying, Contributing, Top
 @section How To Get Help with GNU Emacs
 
--- a/src/ChangeLog	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/ChangeLog	Thu Mar 03 10:35:22 2005 +0000
@@ -1,3 +1,38 @@
+2005-03-02  Kim F. Storm  <storm@cua.dk>
+
+	* dispextern.h (XASSERTS): Define to 0 if not already defined.
+	(xassert) [!XASSERTS]: Define dummy version.
+
+2005-03-02  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (redisplay_window): YABX (yet another bogus xassert).
+	Reported by David Kastrup.
+
+2005-03-01  Ehud Karni  <ehud@unix.mvs.co.il>
+
+	* xdisp.c (get_next_display_element): Fix control and escape
+	glyph from display vector.
+
+2005-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* keyboard.c (Fposn_at_x_y): Check integerness of X and Y.
+
+2005-02-27  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* gtkutil.c (xg_resize_outer_widget): Remove unneeded call to
+	gtk_window_resize and x_wm_set_size_hint.
+
+2005-02-25  Kim F. Storm  <storm@cua.dk>
+
+	* dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16.
+
+	* xdisp.c (init_from_display_pos): Don't read past end of
+	it->overlay_strings array.
+
+2005-02-25  Stephan Stahl <stahl@eos.franken.de>  (tiny change)
+
+	* buffer.c (syms_of_buffer): Fix typo.
+
 2005-02-23  Lute Kamstra  <lute@gnu.org>
 
 	* buffer.c (Foverlay_buffer): Doc fix.
@@ -14,7 +49,7 @@
 	* window.c (window_scroll_pixel_based): When scrolling backwards,
 	handle partial visible line at end of window even when we hit PT.
 
-2005-02-21  Stefan  <monnier@iro.umontreal.ca>
+2005-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* keymap.h: Declare Fcurrent_active_maps, used in doc.c.
 
@@ -72,8 +107,7 @@
 	(Fx_window_property): Likewise.
 
 	* xselect.c (Fx_disown_selection_internal): Use union of struct
-	input_event and struct selection_input_event to avoid aliasing
-	issues.
+	input_event and struct selection_input_event to avoid aliasing issues.
 
 	* xterm.c (handle_one_xevent): Use union of struct input_event and
 	struct selection_input_event to avoid aliasing issues.
@@ -102,21 +136,20 @@
 	clipboard operations and delayed rendering.
 
 	Drop last_clipboard_text and related code, keep track of
-	ownership via clipboard_owner instead.  Drop old #if0
-	sections.
+	ownership via clipboard_owner instead.  Drop old #if0 sections.
 
 	(DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP)
 	(clipboard_owner, modifying_clipboard, cfg_coding_system)
 	(cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text)
 	(current_coding_system, current_requires_encoding)
-	(current_num_nls, current_clipboard_type, current_lcid): New
-	static variables.
+	(current_num_nls, current_clipboard_type, current_lcid):
+	New static variables.
 
 	(convert_to_handle_as_ascii, convert_to_handle_as_coded)
 	(render, render_all, run_protected, lisp_error_handler)
 	(owner_callback, create_owner, setup_config)
-	(enum_locale_callback, cp_from_locale, coding_from_cp): New
-	local functions.
+	(enum_locale_callback, cp_from_locale, coding_from_cp):
+	New local functions.
 
 	(term_w32select, globals_of_w32select): New global functions.
 
@@ -316,8 +349,7 @@
 	(casify_region): Fix loop condition, args to replace_range_2, and
 	update opoint_byte.
 
-	* insdel.c (replace_range_2): Fix bugs in adjusting markers and
-	point.
+	* insdel.c (replace_range_2): Fix bugs in adjusting markers and point.
 
 2005-02-01  Kim F. Storm  <storm@cua.dk>
 
@@ -10994,9 +11026,9 @@
 	These changes were in part based upon suggestions made by Peter
 	'Luna' Runestig [peter@runestig.com].
 
-	* w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token,
-	g_b_init_get_token_information, g_b_init_lookup_account_sid,
-	g_b_init_get_sid_identifier_authority ): Add several static
+	* w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token)
+	(g_b_init_get_token_information, g_b_init_lookup_account_sid)
+	(g_b_init_get_sid_identifier_authority ): Add several static
 	global variables.
 
 	* w32.c (globals_of_w32): New function.  Used to initialize those
--- a/src/buffer.c	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/buffer.c	Thu Mar 03 10:35:22 2005 +0000
@@ -5689,7 +5689,7 @@
 
 If value is a symbol `left' or `right', both angle and arrow bitmaps
 are displayed in the left or right fringe, resp.  Any other value
-that doesn't look like an alist means displat the angle bitmaps in
+that doesn't look like an alist means display the angle bitmaps in
 the left fringe but no arrows.
 
 You can exercise more precise control by using an alist as the
--- a/src/dispextern.h	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/dispextern.h	Thu Mar 03 10:35:22 2005 +0000
@@ -119,6 +119,13 @@
 #define GLYPH_DEBUG 0
 #endif
 
+/* If XASSERTS is non-zero, additional consistency checks are activated.
+   Turn it off by defining the macro XASSERTS to zero.  */
+
+#ifndef XASSERTS
+#define XASSERTS 0
+#endif
+
 /* Macros to include code only if GLYPH_DEBUG != 0.  */
 
 #if GLYPH_DEBUG
@@ -127,8 +134,11 @@
 #define IF_DEBUG(X)	(void) 0
 #endif
 
-/* Maybe move this inside the above `#ifdef GLYPH_DEBUG' for release.  */
+#if XASSERTS
 #define xassert(X)	do {if (!(X)) abort ();} while (0)
+#else
+#define xassert(X)	(void) 0
+#endif
 
 /* Macro for displaying traces of redisplay.  If Emacs was compiled
    with GLYPH_DEBUG != 0, the variable trace_redisplay_p can be set to
@@ -1881,7 +1891,7 @@
 
   /* Vector of overlays to process.  Overlay strings are processed
      OVERLAY_STRING_CHUNK_SIZE at a time.  */
-#define OVERLAY_STRING_CHUNK_SIZE 3
+#define OVERLAY_STRING_CHUNK_SIZE 16
   Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
 
   /* Total number of overlay strings to process.  This can be >
--- a/src/gtkutil.c	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/gtkutil.c	Thu Mar 03 10:35:22 2005 +0000
@@ -556,12 +556,6 @@
      int columns;
      int rows;
 {
-  gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
-                     FRAME_PIXEL_WIDTH (f), FRAME_TOTAL_PIXEL_HEIGHT (f));
-
-  /* base_height is now changed.  */
-  x_wm_set_size_hint (f, 0, 0);
-
   /* If we are not mapped yet, set geometry once again, as window
      height now have changed.  */
   if (! GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f)))
--- a/src/keyboard.c	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/keyboard.c	Thu Mar 03 10:35:22 2005 +0000
@@ -1,6 +1,6 @@
 /* Keyboard and mouse input; editor command loop.
-   Copyright (C) 1985,86,87,88,89,93,94,95,96,97,99,2000,01,02,03,04
-     Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1996, 1997,
+     1999, 2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -10529,6 +10529,9 @@
   (x, y, frame_or_window, whole)
      Lisp_Object x, y, frame_or_window, whole;
 {
+  CHECK_NATNUM (x);
+  CHECK_NATNUM (y);
+
   if (NILP (frame_or_window))
     frame_or_window = selected_window;
 
--- a/src/xdisp.c	Wed Mar 02 11:04:29 2005 +0000
+++ b/src/xdisp.c	Thu Mar 03 10:35:22 2005 +0000
@@ -2541,7 +2541,10 @@
      after-string.  */
   init_iterator (it, w, charpos, bytepos, NULL, DEFAULT_FACE_ID);
 
-  for (i = 0; i < it->n_overlay_strings; ++i)
+  /* This only scans the current chunk -- it should scan all chunks.
+     However, OVERLAY_STRING_CHUNK_SIZE has been increased from 3 in 21.1
+     to 16 in 22.1 to make this a lesser problem.  */
+  for (i = 0; i < it->n_overlay_strings && i < OVERLAY_STRING_CHUNK_SIZE; ++i)
     {
       const char *s = SDATA (it->overlay_strings[i]);
       const char *e = s + SBYTES (it->overlay_strings[i]);
@@ -5178,11 +5181,12 @@
 		 display.  Then, set IT->dpvec to these glyphs.  */
 	      GLYPH g;
 	      int ctl_len;
-	      int face_id, lface_id;
+	      int face_id, lface_id = 0 ;
 	      GLYPH escape_glyph;
 
 	      if (it->c < 128 && it->ctl_arrow_p)
 		{
+		  g = '^';	     /* default glyph for Control */
 		  /* Set IT->ctl_chars[0] to the glyph for `^'.  */
 		  if (it->dp
 		      && INTEGERP (DISP_CTRL_GLYPH (it->dp))
@@ -5190,19 +5194,18 @@
 		    {
 		      g = XINT (DISP_CTRL_GLYPH (it->dp));
 		      lface_id = FAST_GLYPH_FACE (g);
-		      if (lface_id)
-			{
-			  g = FAST_GLYPH_CHAR (g);
-			  face_id = merge_faces (it->f, Qt, lface_id,
-						 it->face_id);
-			}
+		    }
+		  if (lface_id)
+		    {
+		       g = FAST_GLYPH_CHAR (g);
+		       face_id = merge_faces (it->f, Qt, lface_id,
+					      it->face_id);
 		    }
 		  else
 		    {
 		      /* Merge the escape-glyph face into the current face.  */
 		      face_id = merge_faces (it->f, Qescape_glyph, 0,
 					     it->face_id);
-		      g = '^';
 		    }
 
 		  XSETINT (it->ctl_chars[0], g);
@@ -5212,25 +5215,25 @@
 		  goto display_control;
 		}
 
+	      escape_glyph = '\\';    /* default for Octal display */
 	      if (it->dp
 		  && INTEGERP (DISP_ESCAPE_GLYPH (it->dp))
 		  && GLYPH_CHAR_VALID_P (XFASTINT (DISP_ESCAPE_GLYPH (it->dp))))
 		{
 		  escape_glyph = XFASTINT (DISP_ESCAPE_GLYPH (it->dp));
 		  lface_id = FAST_GLYPH_FACE (escape_glyph);
-		  if (lface_id)
-		    {
-		      escape_glyph = FAST_GLYPH_CHAR (escape_glyph);
-		      face_id = merge_faces (it->f, Qt, lface_id,
-					     it->face_id);
-		    }
+		}
+	      if (lface_id)
+		{
+		  escape_glyph = FAST_GLYPH_CHAR (escape_glyph);
+		  face_id = merge_faces (it->f, Qt, lface_id,
+					 it->face_id);
 		}
 	      else
 		{
 		  /* Merge the escape-glyph face into the current face.  */
 		  face_id = merge_faces (it->f, Qescape_glyph, 0,
 					 it->face_id);
-		  escape_glyph = '\\';
 		}
 
 	      if (it->c == 0xA0 || it->c == 0xAD)
@@ -5947,9 +5950,9 @@
   ((op & MOVE_TO_POS) != 0					\
    && BUFFERP (it->object)					\
    && IT_CHARPOS (*it) >= to_charpos				\
-   && (it->method == GET_FROM_BUFFER ||				\
-       (it->method == GET_FROM_DISPLAY_VECTOR &&		\
-	it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))
+   && (it->method == GET_FROM_BUFFER				\
+       || (it->method == GET_FROM_DISPLAY_VECTOR		\
+	   && it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))
 
 
   while (1)
@@ -12386,7 +12389,11 @@
     {
       init_iterator (&it, w, PT, PT_BYTE, NULL, DEFAULT_FACE_ID);
       move_it_vertically_backward (&it, 0);
+#if 0
+      /* I think this assert is bogus if buffer contains
+	 invisible text or images.  KFS.  */
       xassert (IT_CHARPOS (it) <= PT);
+#endif
       it.current_y = 0;
     }
 
@@ -20920,8 +20927,10 @@
 
   /* If whole rows or last part of a row came from a display overlay,
      row_containing_pos will skip over such rows because their end pos
-     equals the start pos of the overlay or interval.  Backtrack if we
-     have a STOP object and previous row's end glyph came from STOP.  */
+     equals the start pos of the overlay or interval.
+
+     Move back if we have a STOP object and previous row's
+     end glyph came from STOP.  */
   if (!NILP (stop))
     {
       struct glyph_row *prev;
@@ -20929,11 +20938,11 @@
 	     && MATRIX_ROW_END_CHARPOS (prev) == charpos
 	     && prev->used[TEXT_AREA] > 0)
 	{
-	  end = prev->glyphs[TEXT_AREA];
-	  glyph = end + prev->used[TEXT_AREA];
-	  while (--glyph >= end
+	  struct glyph *beg = prev->glyphs[TEXT_AREA];
+	  glyph = beg + prev->used[TEXT_AREA];
+	  while (--glyph >= beg
 		 && INTEGERP (glyph->object));
-	  if (glyph < end
+	  if (glyph < beg
 	      || !EQ (stop, glyph->object))
 	    break;
 	  row = prev;
@@ -22961,8 +22970,10 @@
   message_truncate_lines = 0;
 
   DEFVAR_LISP ("menu-bar-update-hook",  &Vmenu_bar_update_hook,
-    doc: /* Normal hook run for clicks on menu bar, before displaying a submenu.
-Can be used to update submenus whose contents should vary.  */);
+    doc: /* Normal hook run to update the menu bar definitions.
+Redisplay runs this hook before it redisplays the menu bar.
+This is used to update submenus such as Buffers,
+whose contents depend on various data.  */);
   Vmenu_bar_update_hook = Qnil;
 
   DEFVAR_BOOL ("inhibit-menubar-update", &inhibit_menubar_update,