changeset 83267:c7d2b6ee3a80

Merged from miles@gnu.org--gnu-2005 (patch 159) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-159 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-307
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 16 Mar 2005 15:59:10 +0000
parents e5edfda9b768 (current diff) 9767b6328a66 (diff)
children 7ea3d7198adc
files lisp/ChangeLog lisp/bindings.el lisp/font-lock.el lisp/simple.el lisp/startup.el lispref/ChangeLog man/ChangeLog man/eshell.texi man/mh-e.texi man/pcl-cvs.texi man/woman.texi src/keyboard.c src/lisp.h
diffstat 56 files changed, 745 insertions(+), 745 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/ChangeLog	Wed Mar 16 15:59:10 2005 +0000
@@ -1,3 +1,50 @@
+2005-03-06  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* menu-bar.el (menu-bar-file-menu): Add the same :enable to
+	"Open Directory" as for "Open File".
+
+2005-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (activate-mark-hook, deactivate-mark-hook): Add defvars.
+	(push-mark-command): Run activate-mark-hook.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* help-mode.el (help-mode-finish): Don't alter the element
+	in view-return-to-alist if there already is one.
+
+	* jit-lock.el (jit-lock-stealth-fontify): When calling sit-for,
+	make sure the current buffer is the expected one.
+
+	* novice.el (disabled-command-function): Output in *Disabled Command*.
+	Explicitly ignore non-keyboard events, and explicitly handle C-g.
+
+	* textmodes/flyspell.el (flyspell-large-region):
+	Pass args differently for aspell.
+
+	* files.el (mode-require-final-newline): Doc fix.
+
+2005-03-03  Stephan Stahl  <stahl@eos.franken.de> (tiny change)
+
+	* progmodes/which-func.el (which-function): 
+	Specify NOERROR when calling imenu--make-index-alist.
+
+2005-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* simple.el (normal-erase-is-backspace): Define default value.
+
+	* custom.el (custom-theme-set-variables): Remove unused var `immediate'.
+	(custom-reevaluate-setting): Simple function to handle
+	variables that are defined before their default value can really
+	be computed.
+
+	* startup.el (command-line): Use it for temporary-file-directory,
+	small-emporary-file-directory, auto-save-file-name-transforms,
+	blink-cursor-mode, and normal-erase-is-backspace.
+
+	* font-lock.el (font-lock-fontify-keywords-region): Ensure forward
+	progress, even with buggy anchored keywords.
+
 2005-03-05  Luc Teirlinck  <teirllm@auburn.edu>
 
 	* simple.el (goto-line): Remove unbalanced final parenthesis.
--- a/lisp/bindings.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/bindings.el	Wed Mar 16 15:59:10 2005 +0000
@@ -701,6 +701,7 @@
 (define-key global-map "\C-p" 'previous-line)
 (define-key ctl-x-map "\C-n" 'set-goal-column)
 (define-key global-map "\C-e" 'move-end-of-line)
+(define-key esc-map "g" 'goto-line)
 
 ;;(defun function-key-error ()
 ;;  (interactive)
--- a/lisp/custom.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/custom.el	Wed Mar 16 15:59:10 2005 +0000
@@ -1,6 +1,6 @@
 ;;; custom.el --- tools for declaring and initializing options
 ;;
-;; Copyright (C) 1996, 1997, 1999, 2001, 2002, 2004
+;; Copyright (C) 1996, 1997, 1999, 2001, 2002, 2004, 2005
 ;;  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
@@ -726,6 +726,15 @@
 COMMENT is a comment string about SYMBOL."
   (apply 'custom-theme-set-variables 'user args))
 
+(defun custom-reevaluate-setting (symbol)
+  "Reset the value of SYMBOL by re-evaluating its saved or default value.
+This is useful for variables that are defined before their default value
+can really be computed.  E.g. dumped variables whose default depends on
+run-time information."
+  (funcall (or (get symbol 'custom-set) 'set-default)
+	   symbol
+	   (eval (car (or (get symbol 'saved-value) (get symbol 'standard-value))))))
+
 (defun custom-theme-set-variables (theme &rest args)
   "Initialize variables for theme THEME according to settings in ARGS.
 Each of the arguments in ARGS should be a list of this form:
@@ -753,44 +762,43 @@
 EXP itself is saved unevaluated as SYMBOL property `saved-value' and
 in SYMBOL's list property `theme-value' \(using `custom-push-theme')."
   (custom-check-theme theme)
-  (let ((immediate (get theme 'theme-immediate)))
-    (setq args
-	  (sort args
-		(lambda (a1 a2)
-		  (let* ((sym1 (car a1))
-			 (sym2 (car a2))
-			 (1-then-2 (memq sym1 (get sym2 'custom-dependencies)))
-			 (2-then-1 (memq sym2 (get sym1 'custom-dependencies))))
-		    (cond ((and 1-then-2 2-then-1)
-			   (error "Circular custom dependency between `%s' and `%s'"
-				  sym1 sym2))
-			  (2-then-1 nil)
-			  ;; Put symbols with :require last.  The macro
-			  ;; define-minor-mode generates a defcustom
-			  ;; with a :require and a :set, where the
-			  ;; setter function calls the mode function.
-			  ;; Putting symbols with :require last ensures
-			  ;; that the mode function will see other
-			  ;; customized values rather than default
-			  ;; values.
-			  (t (nth 3 a2)))))))
-    (while args
-      (let ((entry (car args)))
-	(if (listp entry)
-	    (let* ((symbol (indirect-variable (nth 0 entry)))
-		   (value (nth 1 entry))
-		   (now (nth 2 entry))
-		   (requests (nth 3 entry))
-		   (comment (nth 4 entry))
-                   set)
-	      (when requests
-		(put symbol 'custom-requests requests)
-		(mapc 'require requests))
-	      (setq set (or (get symbol 'custom-set) 'custom-set-default))
-	      (put symbol 'saved-value (list value))
-	      (put symbol 'saved-variable-comment comment)
-              (custom-push-theme 'theme-value symbol theme 'set value)
-	      ;; Allow for errors in the case where the setter has
+  (setq args
+	(sort args
+	      (lambda (a1 a2)
+		(let* ((sym1 (car a1))
+		       (sym2 (car a2))
+		       (1-then-2 (memq sym1 (get sym2 'custom-dependencies)))
+		       (2-then-1 (memq sym2 (get sym1 'custom-dependencies))))
+		  (cond ((and 1-then-2 2-then-1)
+			 (error "Circular custom dependency between `%s' and `%s'"
+				sym1 sym2))
+			(2-then-1 nil)
+			;; Put symbols with :require last.  The macro
+			;; define-minor-mode generates a defcustom
+			;; with a :require and a :set, where the
+			;; setter function calls the mode function.
+			;; Putting symbols with :require last ensures
+			;; that the mode function will see other
+			;; customized values rather than default
+			;; values.
+			(t (nth 3 a2)))))))
+  (while args
+    (let ((entry (car args)))
+      (if (listp entry)
+	  (let* ((symbol (indirect-variable (nth 0 entry)))
+		 (value (nth 1 entry))
+		 (now (nth 2 entry))
+		 (requests (nth 3 entry))
+		 (comment (nth 4 entry))
+		 set)
+	    (when requests
+	      (put symbol 'custom-requests requests)
+	      (mapc 'require requests))
+	    (setq set (or (get symbol 'custom-set) 'custom-set-default))
+	    (put symbol 'saved-value (list value))
+	    (put symbol 'saved-variable-comment comment)
+	    (custom-push-theme 'theme-value symbol theme 'set value)
+	    ;; Allow for errors in the case where the setter has
 	    ;; changed between versions, say, but let the user know.
 	    (condition-case data
 		(cond (now
@@ -802,18 +810,18 @@
 		       (funcall set symbol (eval value))))
 	      (error
 	       (message "Error setting %s: %s" symbol data)))
-	      (setq args (cdr args))
-	      (and (or now (default-boundp symbol))
-		   (put symbol 'variable-comment comment)))
-	  ;; Old format, a plist of SYMBOL VALUE pairs.
-	  (message "Warning: old format `custom-set-variables'")
-	  (ding)
-	  (sit-for 2)
-	  (let ((symbol (indirect-variable (nth 0 args)))
-		(value (nth 1 args)))
-	    (put symbol 'saved-value (list value))
-            (custom-push-theme 'theme-value symbol theme 'set value))
-	  (setq args (cdr (cdr args))))))))
+	    (setq args (cdr args))
+	    (and (or now (default-boundp symbol))
+		 (put symbol 'variable-comment comment)))
+	;; Old format, a plist of SYMBOL VALUE pairs.
+	(message "Warning: old format `custom-set-variables'")
+	(ding)
+	(sit-for 2)
+	(let ((symbol (indirect-variable (nth 0 args)))
+	      (value (nth 1 args)))
+	  (put symbol 'saved-value (list value))
+	  (custom-push-theme 'theme-value symbol theme 'set value))
+	(setq args (cdr (cdr args)))))))
 
 (defun custom-set-default (variable value)
   "Default :set function for a customizable variable.
@@ -1091,5 +1099,5 @@
 
 (provide 'custom)
 
-;;; arch-tag: 041b6116-aabe-4f9a-902d-74092bc3dab2
+;; arch-tag: 041b6116-aabe-4f9a-902d-74092bc3dab2
 ;;; custom.el ends here
--- a/lisp/facemenu.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/facemenu.el	Wed Mar 16 15:59:10 2005 +0000
@@ -39,8 +39,8 @@
 ;; modifications before inserting or typing anything.
 ;;
 ;; Faces can be selected from the keyboard as well.
-;; The standard keybindings are M-g (or ESC g) + letter:
-;; M-g i = "set italic",  M-g b = "set bold", etc.
+;; The standard keybindings are M-o (or ESC o) + letter:
+;; M-o i = "set italic",  M-o b = "set bold", etc.
 
 ;;; Customization:
 ;; An alternative set of keybindings that may be easier to type can be set up
@@ -91,12 +91,12 @@
   (require 'button))
 
 ;;; Provide some binding for startup:
-;;;###autoload (define-key global-map "\M-g" 'facemenu-keymap)
+;;;###autoload (define-key global-map "\M-o" 'facemenu-keymap)
 ;;;###autoload (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
 
 ;; Global bindings:
 (define-key global-map [C-down-mouse-2] 'facemenu-menu)
-(define-key global-map "\M-g" 'facemenu-keymap)
+(define-key global-map "\M-o" 'facemenu-keymap)
 
 (defgroup facemenu nil
   "Create a face menu for interactively adding fonts to text"
--- a/lisp/font-lock.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/font-lock.el	Wed Mar 16 15:59:10 2005 +0000
@@ -1,7 +1,7 @@
 ;;; font-lock.el --- Electric font lock mode
 
 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2001, 2002, 2003, 2004  Free Software Foundation, Inc.
+;;   2000, 2001, 2002, 2003, 2004 2005  Free Software Foundation, Inc.
 
 ;; Author: jwz, then rms, then sm
 ;; Maintainer: FSF
@@ -1425,7 +1425,10 @@
 	(while highlights
 	  (if (numberp (car (car highlights)))
 	      (font-lock-apply-highlight (car highlights))
-	    (font-lock-fontify-anchored-keywords (car highlights) end))
+	    (let ((pos (point)))
+	      (font-lock-fontify-anchored-keywords (car highlights) end)
+	      ;; Ensure forward progress.
+	      (if (< (point) pos) (goto-char pos))))
 	  (setq highlights (cdr highlights))))
       (setq keywords (cdr keywords)))))
 
--- a/lisp/help-mode.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/help-mode.el	Wed Mar 16 15:59:10 2005 +0000
@@ -194,8 +194,12 @@
 ;;;###autoload
 (defun help-mode-finish ()
   (let ((entry (assq (selected-window) view-return-to-alist)))
-	(if entry (setcdr entry (cons (selected-window)
-				      help-return-method))
+	(if entry
+	    ;; When entering Help mode from the Help window,
+	    ;; such as by following a link, preserve the same
+	    ;; meaning for the q command.
+	    ;; (setcdr entry (cons (selected-window) help-return-method))
+	    nil
 	  (setq view-return-to-alist
 		(cons (cons (selected-window) help-return-method)
 		      view-return-to-alist))))
--- a/lisp/jit-lock.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/jit-lock.el	Wed Mar 16 15:59:10 2005 +0000
@@ -415,6 +415,7 @@
   (unless (or executing-kbd-macro
 	      (window-minibuffer-p (selected-window)))
     (let ((buffers (buffer-list))
+	  (outer-buffer (current-buffer))
 	  minibuffer-auto-raise
 	  message-log-max)
       (with-local-quit
@@ -449,7 +450,10 @@
 		      (point (point-min)))
 		  (while (and (setq start
 				    (jit-lock-stealth-chunk-start point))
-			      (sit-for nice))
+			      ;; In case sit-for runs any timers,
+			      ;; give them the expected current buffer.
+			      (with-current-buffer outer-buffer
+				(sit-for nice)))
 
 		    ;; fontify a block.
 		    (jit-lock-fontify-now start (+ start jit-lock-chunk-size))
@@ -461,7 +465,10 @@
 		    ;; Wait a little if load is too high.
 		    (when (and jit-lock-stealth-load
 			       (> (car (load-average)) jit-lock-stealth-load))
-		      (sit-for (or jit-lock-stealth-time 30)))))))))))))
+		      ;; In case sit-for runs any timers,
+		      ;; give them the expected current buffer.
+		      (with-current-buffer outer-buffer
+			(sit-for (or jit-lock-stealth-time 30))))))))))))))
 
 
 
--- a/lisp/menu-bar.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/menu-bar.el	Wed Mar 16 15:59:10 2005 +0000
@@ -184,6 +184,8 @@
 	      :help "Insert another file into current buffer"))
 (define-key menu-bar-file-menu [dired]
   '(menu-item "Open Directory..." dired
+	      :enable (not (window-minibuffer-p
+			    (frame-selected-window menu-updating-frame)))
 	      :help "Read a directory, operate on its files"))
 (define-key menu-bar-file-menu [open-file]
   '(menu-item "Open File..." find-file-existing
--- a/lisp/novice.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/novice.el	Wed Mar 16 15:59:10 2005 +0000
@@ -49,7 +49,7 @@
 (defun disabled-command-function (&rest ignore)
   (let (char)
     (save-window-excursion
-     (with-output-to-temp-buffer "*Help*"
+     (with-output-to-temp-buffer "*Disabled Command*"
        (let ((keys (this-command-keys)))
 	 (if (or (eq (aref keys 0)
 		     (if (stringp keys)
@@ -68,7 +68,7 @@
 	 (princ "It is disabled because new users often find it confusing.\n")
 	 (princ "Here's the first part of its description:\n\n")
 	 ;; Keep only the first paragraph of the documentation.
-	 (with-current-buffer "*Help*"
+	 (with-current-buffer "*Disabled Command*"
 	   (goto-char (point-max))
 	   (let ((start (point)))
 	     (save-excursion
@@ -91,10 +91,15 @@
 	(help-mode)))
      (message "Type y, n, ! or SPC (the space bar): ")
      (let ((cursor-in-echo-area t))
-       (while (not (memq (setq char (downcase (read-char)))
-			 '(?! ?y ?n ?\ )))
+       (while (progn (setq char (read-event))
+		     (or (not (numberp char))
+			 (not (memq (downcase char)
+				    '(?! ?y ?n ?\  ?\C-g)))))
 	 (ding)
 	 (message "Please type y, n, ! or SPC (the space bar): "))))
+    (setq char (downcase char))
+    (if (= char ?\C-g)
+	(setq quit-flag t))
     (if (= char ?!)
 	(setq disabled-command-function nil))
     (if (= char ?y)
--- a/lisp/simple.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/simple.el	Wed Mar 16 15:59:10 2005 +0000
@@ -2917,6 +2917,14 @@
 (put 'mark-inactive 'error-conditions '(mark-inactive error))
 (put 'mark-inactive 'error-message "The mark is not active now")
 
+(defvar activate-mark-hook nil
+  "Hook run when the mark becomes active.
+It is also run at the end of a command, if the mark is active and
+it is possible that the region may have changed")
+
+(defvar deactivate-mark-hook nil
+  "Hook run when the mark becomes inactive.")
+
 (defun mark (&optional force)
   "Return this buffer's mark value as integer; error if mark inactive.
 If optional argument FORCE is non-nil, access the mark value
@@ -3008,6 +3016,7 @@
     (if (or arg (null mark) (/= mark (point)))
 	(push-mark nil nomsg t)
       (setq mark-active t)
+      (run-hooks 'activate-mark-hook)
       (unless nomsg
 	(message "Mark activated")))))
 
@@ -5029,7 +5038,17 @@
 
 ;;; Handling of Backspace and Delete keys.
 
-(defcustom normal-erase-is-backspace nil
+(defcustom normal-erase-is-backspace
+  (and (not noninteractive)
+       (or (memq system-type '(ms-dos windows-nt))
+	   (and (memq initial-window-system '(x))
+		(fboundp 'x-backspace-delete-keys-p)
+		(x-backspace-delete-keys-p))
+	   ;; If the terminal Emacs is running on has erase char
+	   ;; set to ^H, use the Backspace key for deleting
+	   ;; backward and, and the Delete key for deleting forward.
+	   (and (null initial-window-system)
+		(eq tty-erase-char ?\^H))))
   "If non-nil, Delete key deletes forward and Backspace key deletes backward.
 
 On window systems, the default value of this option is chosen
--- a/lisp/startup.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/startup.el	Wed Mar 16 15:59:10 2005 +0000
@@ -1,7 +1,7 @@
 ;;; startup.el --- process Emacs shell arguments
 
-;; Copyright (C) 1985, 86, 92, 94, 95, 96, 97, 98, 99, 2000, 01, 02, 2004
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+;;   2001, 2002, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: internal
@@ -568,22 +568,9 @@
   (setq command-line-default-directory default-directory)
 
   ;; Choose a reasonable location for temporary files.
-  (setq temporary-file-directory
-	(file-name-as-directory
-	 (cond ((memq system-type '(ms-dos windows-nt))
-		(or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
-	       ((memq system-type '(vax-vms axp-vms))
-		(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "SYS$SCRATCH:"))
-	       (t
-		(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp")))))
-  (setq small-temporary-file-directory
-	(if (eq system-type 'ms-dos)
-	    (getenv "TMPDIR")))
-  (setq auto-save-file-name-transforms
-	(list (list (car (car auto-save-file-name-transforms))
-		    ;; Don't put "\\2" inside expand-file-name, since
-		    ;; it will be transformed to "/2" on DOS/Windows.
-		    (concat temporary-file-directory "\\2") t)))
+  (custom-reevaluate-setting 'temporary-file-directory)
+  (custom-reevaluate-setting 'small-emporary-file-directory)
+  (custom-reevaluate-setting 'auto-save-file-name-transforms)
 
   ;; See if we should import version-control from the environment variable.
   (let ((vc (getenv "VERSION_CONTROL")))
@@ -749,35 +736,14 @@
     (tool-bar-mode 1))
 
   ;; Can't do this init in defcustom because the relevant variables
-  ;; are not set.  If you make any changes to the `or' form below,
-  ;; you should also change the corresponding expression in the
-  ;; defcustom in frame.el, or Custom will be badly confused.
-  (unless (or noninteractive
-	      no-blinking-cursor
-              (eq system-type 'ms-dos)
-              (not (memq initial-window-system '(x w32))))
-    (blink-cursor-mode 1))
-
-  (unless noninteractive
-    ;; DOS/Windows systems have a PC-type keyboard which has both
-    ;; <delete> and <backspace> keys.
-    (when (or (memq system-type '(ms-dos windows-nt))
-	      (and (memq initial-window-system '(x))
-		   (fboundp 'x-backspace-delete-keys-p)
-		   (x-backspace-delete-keys-p))
-	      ;; If the terminal Emacs is running on has erase char
-	      ;; set to ^H, use the Backspace key for deleting
-	      ;; backward and, and the Delete key for deleting forward.
-	      (and (null initial-window-system)
-		   (eq tty-erase-char 8)))
-      (setq-default normal-erase-is-backspace t)
-      (normal-erase-is-backspace-mode 1)))
+  ;; are not set.
+  (custom-reevaluate-setting 'blink-cursor-mode)
+  (custom-reevaluate-setting 'normal-erase-is-backspace)
 
   (unless (or noninteractive
 	      emacs-quick-startup
               (not (display-graphic-p))
               (not (fboundp 'x-show-tip)))
-    (setq-default tooltip-mode t)
     (tooltip-mode 1))
 
   ;; Register default TTY colors for the case the terminal hasn't a
@@ -1757,5 +1723,5 @@
       (setq file (replace-match "/" t t file)))
     file))
 
-;;; arch-tag: 7e294698-244d-4758-984b-4047f887a5db
+;; arch-tag: 7e294698-244d-4758-984b-4047f887a5db
 ;;; startup.el ends here
--- a/lisp/textmodes/flyspell.el	Tue Mar 08 02:17:02 2005 +0000
+++ b/lisp/textmodes/flyspell.el	Wed Mar 16 15:59:10 2005 +0000
@@ -1329,7 +1329,7 @@
 		    nil
 		    buffer
 		    nil
-		    "-l"
+		    (if ispell-really-aspell "list" "-l")
 		    (let (args)
 		      ;; Local dictionary becomes the global dictionary in use.
 		      (if ispell-local-dictionary
--- a/lispref/ChangeLog	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/ChangeLog	Wed Mar 16 15:59:10 2005 +0000
@@ -1,3 +1,52 @@
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* windows.texi (Vertical Scrolling): Get rid of "Emacs 21".
+	(Resizing Windows): Likewise.
+
+	* text.texi (Change Hooks): Get rid of "Emacs 21".
+
+	* strings.texi (Formatting Strings): Get rid of "Emacs 21".
+
+	* streams.texi (Output Variables): Get rid of "Emacs 21".
+
+	* searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21".
+
+	* os.texi (Translating Input): Replace flow-control example
+	with a less obsolete example that uses `keyboard-translate'.
+
+	* objects.texi (Hash Table Type, Circular Objects): 
+	Get rid of "Emacs 21".
+	
+	* modes.texi (Mode Line Format): Get rid of "Emacs 21".
+	(Mode Line Data, Properties in Mode, Header Lines): Likewise.
+
+	* minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21".
+
+	* lists.texi (List Elements, Building Lists): Get rid of "Emacs 21".
+
+	* keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21".
+	(Menu Bar): Fix when menu-bar-update-hook is called.
+
+	* hash.texi (Hash Tables): Get rid of "Emacs 21".
+
+	* frames.texi (Text Terminal Colors): Get rid of "Emacs 21",
+	and make it read better.
+
+	* files.texi (Writing to Files): Get rid of "Emacs 21".
+	(Unique File Names): Likewise.
+
+	* elisp.texi: Update Emacs version to 22.
+
+	* display.texi (Forcing Redisplay): Get rid of "Emacs 21".
+	(Overlay Properties, Face Attributes): Likewise.
+	(Managing Overlays): Fix punctuation.
+	(Attribute Functions): Clarify set-face-font; get rid of
+	info about old Emacs versions.
+	(Auto Faces, Font Lookup, Display Property, Images):
+	Get rid of "Emacs 21".
+
+	* calendar.texi (Calendar Customizing): Get rid of "Emacs 21".
+
 2005-03-05  Richard M. Stallman  <rms@gnu.org>
 
 	* debugging.texi (Error Debugging): Remove stack-trace-on-error.
--- a/lispref/calendar.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/calendar.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -115,8 +115,8 @@
 the current date is @emph{not} visible in the window.
 
 @vindex calendar-move-hook
-  Starting in Emacs 21, each of the calendar cursor motion commands
-runs the hook @code{calendar-move-hook} after it moves the cursor.
+  Each of the calendar cursor motion commands runs the hook
+@code{calendar-move-hook} after it moves the cursor.
 
 @node Holiday Customizing
 @section Customizing the Holidays
--- a/lispref/display.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/display.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -102,8 +102,7 @@
 @defvar redisplay-dont-pause
 If this variable is non-@code{nil}, pending input does not
 prevent or halt redisplay; redisplay occurs, and finishes,
-regardless of whether input is available.  This feature is available
-as of Emacs 21.
+regardless of whether input is available.
 @end defvar
 
   You can request a display update, but only if no input is pending,
@@ -1180,12 +1179,12 @@
 A face name (a symbol or string).
 
 @item
-Starting in Emacs 21, a property list of face attributes.  This has the
-form (@var{keyword} @var{value} @dots{}), where each @var{keyword} is a
-face attribute name and @var{value} is a meaningful value for that
-attribute.  With this feature, you do not need to create a face each
-time you want to specify a particular attribute for certain text.
-@xref{Face Attributes}.
+A property list of face attributes.  This has the form (@var{keyword}
+@var{value} @dots{}), where each @var{keyword} is a face attribute
+name and @var{value} is a meaningful value for that attribute.  With
+this feature, you do not need to create a face each time you want to
+specify a particular attribute for certain text.  @xref{Face
+Attributes}.
 
 @item
 A cons cell of the form @code{(foreground-color . @var{color-name})} or
@@ -1340,7 +1339,7 @@
 
 @defun overlay-buffer overlay
 This function returns the buffer that @var{overlay} belongs to.  It
-returns @code{nil}, if @var{overlay} has been deleted.
+returns @code{nil} if @var{overlay} has been deleted.
 @end defun
 
 @defun delete-overlay overlay
@@ -1909,11 +1908,11 @@
 given piece of text; when that happens, the attributes of all the faces
 are merged to specify how to display the text.  @xref{Displaying Faces}.
 
-  In Emacs 21, any attribute in a face can have the value
-@code{unspecified}.  This means the face doesn't specify that attribute.
-In face merging, when the first face fails to specify a particular
-attribute, that means the next face gets a chance.  However, the
-@code{default} face must specify all attributes.
+  Any attribute in a face can have the value @code{unspecified}.  This
+means the face doesn't specify that attribute.  In face merging, when
+the first face fails to specify a particular attribute, that means the
+next face gets a chance.  However, the @code{default} face must
+specify all attributes.
 
   Some of these font attributes are meaningful only on certain kinds of
 displays---if your display cannot handle a certain attribute, the
@@ -2043,11 +2042,10 @@
 is used.
 @end table
 
-  The attributes @code{:overline}, @code{:strike-through} and
-@code{:box} are new in Emacs 21.  The attributes @code{:family},
-@code{:height}, @code{:width}, @code{:weight}, @code{:slant} are also
-new; previous versions used the following attributes, now semi-obsolete,
-to specify some of the same information:
+  In older versions of Emacs, before @code{:family}, @code{:height},
+@code{:width}, @code{:weight}, and @code{:slant} existed, these
+attributes were used to specify the type face.  They are now
+semi-obsolete, but they still work:
 
 @table @code
 @item :font
@@ -2060,8 +2058,8 @@
 A non-@code{nil} value specifies an italic font.
 @end table
 
-  For compatibility, you can still set these ``attributes'' in Emacs 21,
-even though they are not real face attributes.  Here is what that does:
+  For compatibility, you can still set these ``attributes'', even
+though they are not real face attributes.  Here is what that does:
 
 @table @code
 @item :font
@@ -2195,31 +2193,22 @@
 @end defun
 
 @defun set-face-font face font &optional frame
-This function sets the font of face @var{face}.
-
-In Emacs 21, this actually sets the attributes @code{:family},
-@code{:width}, @code{:height}, @code{:weight}, and @code{:slant}
-according to the font name @var{font}.
-
-In Emacs 20, this sets the font attribute.  Once you set the font
-explicitly, the bold and italic attributes cease to have any effect,
-because the precise font that you specified is used.
+This function sets the font of face @var{face}.  This actually sets
+the attributes @code{:family}, @code{:width}, @code{:height},
+@code{:weight}, and @code{:slant} according to the font name
+@var{font}.
 @end defun
 
 @defun set-face-bold-p face bold-p &optional frame
 This function specifies whether @var{face} should be bold.  If
 @var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no.
-
-In Emacs 21, this sets the @code{:weight} attribute.
-In Emacs 20, it sets the @code{:bold} attribute.
+This actually sets the @code{:weight} attribute.
 @end defun
 
 @defun set-face-italic-p face italic-p &optional frame
 This function specifies whether @var{face} should be italic.  If
 @var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no.
-
-In Emacs 21, this sets the @code{:slant} attribute.
-In Emacs 20, it sets the @code{:italic} attribute.
+This actually sets the @code{:slant} attribute.
 @end defun
 
 @defun set-face-underline-p face underline-p &optional frame
@@ -2519,9 +2508,8 @@
 @cindex faces, automatic choice
 
 @cindex Font-Lock mode
-  Starting with Emacs 21, a hook is available for automatically
-assigning faces to text in the buffer.  This hook is used for part of
-the implementation of Font-Lock mode.
+  This hook is used for automatically assigning faces to text in the
+buffer.  It is part of the implementation of Font-Lock mode.
 
 @tindex fontification-functions
 @defvar fontification-functions
@@ -2572,8 +2560,6 @@
 many fonts match the pattern.
 @end defun
 
-  These additional functions are available starting in Emacs 21.
-
 @defun x-family-fonts &optional family frame
 @tindex x-family-fonts
 This function returns a list describing the available fonts for family
@@ -3031,11 +3017,10 @@
 
   The @code{display} text property (or overlay property) is used to
 insert images into text, and also control other aspects of how text
-displays.  These features are available starting in Emacs 21.  The value
-of the @code{display} property should be a display specification, or a
-list or vector containing several display specifications.  The rest of
-this section describes several kinds of display specifications and what
-they mean.
+displays.  The value of the @code{display} property should be a
+display specification, or a list or vector containing several display
+specifications.  The rest of this section describes several kinds of
+display specifications and what they mean.
 
 @menu
 * Specified Space::      Displaying one space with a specified width.
@@ -3344,8 +3329,7 @@
 
   To display an image in an Emacs buffer, you must first create an image
 descriptor, then use it as a display specifier in the @code{display}
-property of text that is displayed (@pxref{Display Property}).  Like the
-@code{display} property, this feature is available starting in Emacs 21.
+property of text that is displayed (@pxref{Display Property}).
 
   Emacs can display a number of different image formats; some of them
 are supported only if particular support libraries are installed on
--- a/lispref/elisp.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/elisp.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -26,7 +26,7 @@
 
 @ifnottex
 This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
-Reference Manual, corresponding to Emacs version 21.3.
+Reference Manual, corresponding to Emacs version 22.1.
 @c Please REMEMBER to update edition number in *four* places in this file
 @c                 and also in *one* place in intro.texi and *one* in README.
 
@@ -52,7 +52,7 @@
 
 @titlepage
 @title GNU Emacs Lisp Reference Manual
-@subtitle For Emacs Version 21
+@subtitle For Emacs Version 22
 @c The edition number appears in several places in this file
 @c and also in the file intro.texi.
 @subtitle Revision @value{VERSION}, January 2002
@@ -66,7 +66,7 @@
 
 @sp 2
 Edition @value{VERSION} @*
-Revised for Emacs Version 21.3,@*
+Revised for Emacs Version 22.1,@*
 January 2002.@*
 @sp 2
 ISBN 1-882114-73-6
@@ -96,7 +96,7 @@
 
 @ifnottex
 This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
-Reference Manual, corresponding to GNU Emacs version 21.3.
+Reference Manual, corresponding to GNU Emacs version 22.1.
 @end ifnottex
 
 @menu
@@ -173,7 +173,7 @@
 * Index::                   Index including concepts, functions, variables,
                               and other terms.
 
-* New Symbols::             New functions and variables in Emacs 21.
+* New Symbols::             New functions and variables in Emacs 22.
 
       --- The Detailed Node Listing ---
 
--- a/lispref/files.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/files.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -578,16 +578,15 @@
 this case.
 
 If @var{append} is non-@code{nil}, then the specified text is appended
-to the existing file contents (if any).  Starting in Emacs 21, if
-@var{append} is an integer, then @code{write-region} seeks to that byte
-offset from the start of the file and writes the data from there.
+to the existing file contents (if any).  If @var{append} is an
+integer, @code{write-region} seeks to that byte offset from the start
+of the file and writes the data from there.
 
 If @var{mustbenew} is non-@code{nil}, then @code{write-region} asks
-for confirmation if @var{filename} names an existing file.
-Starting in Emacs 21, if @var{mustbenew} is the symbol @code{excl},
-then @code{write-region} does not ask for confirmation, but instead
-it signals an error @code{file-already-exists} if the file already
-exists.
+for confirmation if @var{filename} names an existing file.  If
+@var{mustbenew} is the symbol @code{excl}, then @code{write-region}
+does not ask for confirmation, but instead it signals an error
+@code{file-already-exists} if the file already exists.
 
 The test for an existing file, when @var{mustbenew} is @code{excl}, uses
 a special system feature.  At least for files on a local disk, there is
@@ -2013,7 +2012,7 @@
 @subsection Generating Unique File Names
 
   Some programs need to write temporary files.  Here is the usual way to
-construct a name for such a file, starting in Emacs 21:
+construct a name for such a file:
 
 @example
 (make-temp-file @var{name-of-application})
@@ -2106,7 +2105,7 @@
 
 @tindex small-temporary-file-directory
 @defvar small-temporary-file-directory
-This variable (new in Emacs 21) specifies the directory name for
+This variable specifies the directory name for
 creating certain temporary files, which are likely to be small.
 
 If you want to write a temporary file which is likely to be small, you
--- a/lispref/frames.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/frames.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1700,13 +1700,12 @@
 @section Text Terminal Colors
 @cindex colors on text-only terminals
 
-  Emacs can display color on text-only terminals, starting with version
-21.  These terminals usually support only a small number of colors, and
-the computer uses small integers to select colors on the terminal.  This
-means that the computer cannot reliably tell what the selected color
-looks like; instead, you have to inform your application which small
-integers correspond to which colors.  However, Emacs does know the
-standard set of colors and will try to use them automatically.
+  Text-only terminals usually support only a small number of colors,
+and the computer uses small integers to select colors on the terminal.
+This means that the computer cannot reliably tell what the selected
+color looks like; instead, you have to inform your application which
+small integers correspond to which colors.  However, Emacs does know
+the standard set of colors and will try to use them automatically.
 
   The functions described in this section control how terminal colors
 are used by Emacs.
--- a/lispref/hash.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/hash.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -27,9 +27,9 @@
 the way two alists can share a common tail.
 @end itemize
 
-  Emacs Lisp (starting with Emacs 21) provides a general-purpose hash
-table data type, along with a series of functions for operating on them.
-Hash tables have no read syntax, and print in hash notation, like this:
+  Emacs Lisp provides a general-purpose hash table data type, along
+with a series of functions for operating on them.  Hash tables have no
+read syntax, and print in hash notation, like this:
 
 @example
 (make-hash-table)
--- a/lispref/keymaps.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/keymaps.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1930,8 +1930,8 @@
 That specifies the default kind of separator.  (For compatibility,
 @code{""} and @code{-} also count as separators.)
 
-  Starting in Emacs 21, certain other values of @var{separator-type}
-specify a different style of separator.  Here is a table of them:
+  Certain other values of @var{separator-type} specify a different
+style of separator.  Here is a table of them:
 
 @table @code
 @item "--no-line"
@@ -2247,9 +2247,11 @@
 @end defvar
 
 @defvar menu-bar-update-hook
-This normal hook is run whenever the user clicks on the menu bar, before
-displaying a submenu.  You can use it to update submenus whose contents
-should vary.
+This normal hook is run by redisplay to update the menu bar contents,
+before redisplaying the menu bar.  You can use it to update submenus
+whose contents should vary.  Since this hook is run frequently, we
+advise you to ensure that the functions it calls do not take much time
+in the usual case.
 @end defvar
 
 @node Tool Bar
@@ -2258,7 +2260,7 @@
 
   A @dfn{tool bar} is a row of icons at the top of a frame, that execute
 commands when you click on them---in effect, a kind of graphical menu
-bar.  Emacs supports tool bars starting with version 21.
+bar.
 
   The frame parameter @code{tool-bar-lines} (X resource @samp{toolBar})
 controls how many lines' worth of height to reserve for the tool bar.  A
--- a/lispref/lists.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/lists.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -248,7 +248,7 @@
 @tindex pop
 @defmac pop listname
 This macro is a way of examining the @sc{car} of a list,
-and taking it off the list, all at once.  It is new in Emacs 21.
+and taking it off the list, all at once.
 
 It operates on the list which is stored in the symbol @var{listname}.
 It removes this element from the list by setting @var{listname}
@@ -436,7 +436,6 @@
 @defmac push newelt listname
 This macro provides an alternative way to write
 @code{(setq @var{listname} (cons @var{newelt} @var{listname}))}.
-It is new in Emacs 21.
 
 @example
 (setq l '(a b))
--- a/lispref/minibuf.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/minibuf.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1731,14 +1731,14 @@
 
 @defun minibuffer-prompt-end
 @tindex minibuffer-prompt-end
-This function, available starting in Emacs 21, returns the current
+This function returns the current
 position of the end of the minibuffer prompt, if a minibuffer is
 current.  Otherwise, it returns the minimum valid buffer position.
 @end defun
 
 @defun minibuffer-contents
 @tindex minibuffer-contents
-This function, available starting in Emacs 21, returns the editable
+This function returns the editable
 contents of the minibuffer (that is, everything except the prompt) as
 a string, if a minibuffer is current.  Otherwise, it returns the
 entire contents of the current buffer.
@@ -1752,7 +1752,7 @@
 
 @defun delete-minibuffer-contents
 @tindex delete-minibuffer-contents
-This function, available starting in Emacs 21, erases the editable
+This function erases the editable
 contents of the minibuffer (that is, everything except the prompt), if
 a minibuffer is current.  Otherwise, it erases the entire buffer.
 @end defun
--- a/lispref/modes.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/modes.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1220,7 +1220,7 @@
 buffer, such as its name, associated file, depth of recursive editing,
 and major and minor modes.  A window can also have a @dfn{header
 line}, which is much like the mode line but appears at the top of the
-window (starting in Emacs 21).
+window.
 
   This section describes how to control the contents of the mode line
 and header line.  We include it in this chapter because much of the
@@ -1295,7 +1295,7 @@
 where they appear.
 
 If you set this variable to @code{nil} in a buffer, that buffer does not
-have a mode line.  (This feature was added in Emacs 21.)
+have a mode line.
 @end defvar
 
   A mode-line construct may be as simple as a fixed string of text, but
@@ -1349,7 +1349,6 @@
 @item (:eval @var{form})
 A list whose first element is the symbol @code{:eval} says to evaluate
 @var{form}, and use the result as a string to display.
-(This feature is new as of Emacs 21.)
 
 @item (:propertize @var{elt} @var{props}@dots{})
 A list whose first element is the symbol @code{:propertize} says to
@@ -1713,7 +1712,7 @@
 @subsection Properties in the Mode Line
 @cindex text properties in the mode line
 
-  Starting in Emacs 21, certain text properties are meaningful in the
+  Certain text properties are meaningful in the
 mode line.  The @code{face} property affects the appearance of text; the
 @code{help-echo} property associate help strings with the text, and
 @code{local-map} can make the text mouse-sensitive.
@@ -1757,7 +1756,7 @@
 @cindex header line (of a window)
 @cindex window header line
 
-  Starting in Emacs 21, a window can have a @dfn{header line} at the
+  A window can have a @dfn{header line} at the
 top, just as it can have a mode line at the bottom.  The header line
 feature works just like the mode-line feature, except that it's
 controlled by different variables.
--- a/lispref/objects.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/objects.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1166,7 +1166,7 @@
 
     A hash table is a very fast kind of lookup table, somewhat like an
 alist in that it maps keys to corresponding values, but much faster.
-Hash tables are a new feature in Emacs 21; they have no read syntax, and
+Hash tables have no read syntax, and
 print using hash notation.  @xref{Hash Tables}.
 
 @example
@@ -1549,9 +1549,9 @@
 @cindex @samp{#@var{n}=} read syntax
 @cindex @samp{#@var{n}#} read syntax
 
-  In Emacs 21, to represent shared or circular structures within a
-complex of Lisp objects, you can use the reader constructs
-@samp{#@var{n}=} and @samp{#@var{n}#}.
+  To represent shared or circular structures within a complex of Lisp
+objects, you can use the reader constructs @samp{#@var{n}=} and
+@samp{#@var{n}#}.
 
   Use @code{#@var{n}=} before an object to label it for later reference;
 subsequently, you can use @code{#@var{n}#} to refer the same object in
--- a/lispref/os.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/os.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1618,35 +1618,6 @@
 looked up in this char-table.  If the value found there is
 non-@code{nil}, then it is used instead of the actual input character.
 
-In the example below, we set @code{keyboard-translate-table} to a
-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.
-
-@cindex flow control example
-@example
-@group
-(defun evade-flow-control ()
-  "Replace C-s with C-\ and C-q with C-^."
-  (interactive)
-@end group
-@group
-  (setq keyboard-translate-table
-        (make-char-table 'keyboard-translate-table nil))
-@end group
-@group
-  ;; @r{Swap @kbd{C-s} and @kbd{C-\}.}
-  (aset keyboard-translate-table ?\034 ?\^s)
-  (aset keyboard-translate-table ?\^s ?\034)
-@end group
-@group
-  ;; @r{Swap @kbd{C-q} and @kbd{C-^}.}
-  (aset keyboard-translate-table ?\036 ?\^q)
-  (aset keyboard-translate-table ?\^q ?\036))
-@end group
-@end example
-
 Note that this translation is the first thing that happens to a
 character after it is read from the terminal.  Record-keeping features
 such as @code{recent-keys} and dribble files record the characters after
@@ -1664,6 +1635,26 @@
 the keyboard translate table if necessary.
 @end defun
 
+  Here's an example of using the @code{keyboard-translate-table} to
+make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
+operations:
+
+@example
+(keyboard-translate ?\C-x 'control-x)
+(keyboard-translate ?\C-c 'control-c)
+(keyboard-translate ?\C-v 'control-v)
+(global-set-key [control-x] 'kill-region)
+(global-set-key [control-c] 'kill-ring-save)
+(global-set-key [control-v] 'yank)
+@end example
+
+@noindent
+On a graphical terminal that supports extended @acronym{ASCII} input,
+you can still get the standard Emacs meanings of one of those
+characters by typing it with the shift key.  That makes it a different
+character as far as keyboard translation is concerned, but it has the
+same usual meaning.
+
   The remaining translation features translate subsequences of key
 sequences being read.  They are implemented in @code{read-key-sequence}
 and have no effect on input read with @code{read-event}.
--- a/lispref/searching.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/searching.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -338,7 +338,7 @@
 in both multibyte and unibyte representations, because only the
 @acronym{ASCII} characters are excluded.
 
-Starting in Emacs 21, a character alternative can also specify named
+A character alternative can also specify named
 character classes (@pxref{Char Classes}).  This is a POSIX feature whose
 syntax is @samp{[:@var{class}:]}.  Using a character class is equivalent
 to mentioning each of the characters in that class; but the latter is
@@ -416,7 +416,7 @@
 @cindex character classes in regexp
 
   Here is a table of the classes you can use in a character alternative,
-in Emacs 21, and what they mean:
+and what they mean:
 
 @table @samp
 @item [:ascii:]
--- a/lispref/streams.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/streams.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -790,7 +790,7 @@
 @end defopt
 
   These variables are used for detecting and reporting circular
-and shared structure---but they are only defined in Emacs 21.
+and shared structure:
 
 @tindex print-circle
 @defvar print-circle
--- a/lispref/strings.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/strings.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -691,8 +691,8 @@
 arguments @var{objects} are the computed values to be formatted.
 
 The characters in @var{string}, other than the format specifications,
-are copied directly into the output; starting in Emacs 21, if they have
-text properties, these are copied into the output also.
+are copied directly into the output; if they have text properties,
+these are copied into the output also.
 @end defun
 
 @cindex @samp{%} in format
@@ -732,7 +732,7 @@
 by their contents alone, with no @samp{"} characters, and symbols appear
 without @samp{\} characters.
 
-Starting in Emacs 21, if the object is a string, its text properties are
+If the object is a string, its text properties are
 copied into the output.  The text properties of the @samp{%s} itself
 are also copied, but those of the object take priority.
 
--- a/lispref/text.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/text.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -4225,8 +4225,6 @@
 described above in this section, as well as the hooks attached to
 certain special text properties (@pxref{Special Properties}) and overlay
 properties (@pxref{Overlay Properties}).
-
-This variable is available starting in Emacs 21.
 @end defvar
 
 @ignore
--- a/lispref/windows.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/lispref/windows.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1583,7 +1583,7 @@
 
   @dfn{Vertical fractional scrolling} means shifting the image in the
 window up or down by a specified multiple or fraction of a line.
-Starting in Emacs 21, each window has a @dfn{vertical scroll position},
+Each window has a @dfn{vertical scroll position},
 which is a number, never less than zero.  It specifies how far to raise
 the contents of the window.  Raising the window contents generally makes
 all or part of some lines disappear off the top, and all or part of some
@@ -2053,7 +2053,6 @@
 If this variable is non-@code{nil}, in any given buffer,
 then the size of any window displaying the buffer remains fixed
 unless you explicitly change it or Emacs has no other choice.
-(This feature is new in Emacs 21.)
 
 If the value is @code{height}, then only the window's height is fixed;
 if the value is @code{width}, then only the window's width is fixed.
--- a/man/ChangeLog	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/ChangeLog	Wed Mar 16 15:59:10 2005 +0000
@@ -1,3 +1,77 @@
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* building.texi (Starting GUD): Don't explain text vs graphical
+	GDB here.  Just mention it and xref.
+	Delete "just one debugger process".
+	(Debugger Operation): Move GUD tooltip info here.
+	(GUD Tooltips): Node deleted.
+	(GDB Graphical Interface): Explain the two GDB modes here.
+
+	* woman.texi (Introduction): Minor cleanups.
+
+	* url.texi (HTTP language/coding): Get rid of "Emacs 21".
+
+	* sending.texi (Sending Mail): Minor cleanup.
+	(Mail Aliases): Explain quoting conventions.
+	Update key rebinding example.
+	(Header Editing): C-M-i is like M-TAB.
+	(Mail Mode Misc): mail-attach-file does not do MIME.
+
+	* rmail.texi (Rmail Inbox): Move text from Remote Mailboxes
+	that really belongs here.
+	(Remote Mailboxes): Text moved to Rmail Inbox.
+	(Rmail Display): Mention Mouse-1.
+	(Movemail): Clarify two movemail versions.
+	Clarify rmail-movemail-program.
+	
+	* pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21".
+	(Installation): Node deleted.
+
+	* misc.texi (Single Shell): Replace uudecode example with gpg example.
+	Document async shell commands.
+	(Shell History): Clarify.
+	(Shell Ring): Mention C-UP an C-DOWN.
+	(Shell Options): Add comint-prompt-read-only.
+	(Invoking emacsclient): Set EDITOR to run Emacs.
+	(Sorting): No need to explain what region is.
+	(Saving Emacs Sessions): Fix typo.
+	(Recursive Edit): Fix punctuation.
+	(Emulation): Don't mention "PC bindings" which are standard.
+	(Hyperlinking): Explain Mouse-1 convention here.
+	(Find Func): Node deleted.
+
+	* mh-e.texi (Preface): Get rid of "Emacs 21".
+
+	* help.texi (Name Help): Xref to Hyperlinking.
+
+	* glossary.texi (Glossary):
+	Rename "Balance Parentheses" to "Balancing...".
+	Add "Byte Compilation".  Correct "Copyleft".
+	New xref in "Customization".
+	Clarify "Current Line", "Echoing", "Fringe", "Frame", "Speedbar".
+	Add "Graphical Terminal" "Keybinding", "Margin", "Window System".
+	Rename "Registers" to "Register".
+	Replace "Selecting" with "Selected Frame",
+	"Selected Window", and "Selecting a Buffer".
+
+	* files.texi (Types of Log File): Explain how projects'
+	methods can vary.
+
+	* eshell.texi (Installation): Delete node (for Emacs 20).
+
+	* display.texi (Faces): Delete "Emacs 21".
+
+	* custom.texi (Changing a Variable): C-M-i like M-TAB.
+	* fixit.texi (Spelling): C-M-i like M-TAB.
+	* mini.texi (Completion Options): C-M-i like M-TAB.
+	* programs.texi (Symbol Completion): C-M-i like M-TAB.
+	* text.texi (Text Mode): C-M-i like M-TAB.
+
+	* commands.texi (Keys): Mention F1 and F2 in list of prefixes.
+
+	* calendar.texi (Specified Dates): Mention `g w'.
+	(Appointments): appt-activate toggles with no arg.
+
 2005-03-05  Thien-Thi Nguyen  <ttn@gnu.org>
 
 	* flymake.texi: Refill and tweak style in @lisp blocks.
@@ -32,6 +106,10 @@
 	Mention additional functions.
 	(Algebraic Simplifications): Mention additional simplifications.
 
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+	* building.texi (Compilation): Update mode line status info.
+
 2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
 
 	* calendar.texi (General Calendar): Document binding of
--- a/man/building.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/building.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -325,7 +325,6 @@
 * Debugger Operation::	Connection between the debugger and source buffers.
 * Commands of GUD::	Key bindings for common commands.
 * GUD Customization::	Defining your own commands for GUD.
-* GUD Tooltips::        Showing variable values by pointing with the mouse.
 * GDB Graphical Interface::  An enhanced mode that uses GDB features to
                         implement a graphical debugging environment through
                         Emacs.
@@ -340,18 +339,9 @@
 @table @kbd
 @item M-x gdb @key{RET} @var{file} @key{RET}
 @findex gdb
-Run GDB as a subprocess of Emacs.  By default, GDB starts as for
-@kbd{M-x gdba} below.  If you want GDB to start as in Emacs 21.3 and
-earlier then edit the string in the minibuffer or set
-@code{gud-gdb-command-name} to ``gdb --fullname''.  You need to do
-this if you want to run multiple debugging sessions within one Emacs
-session.  In this case, the command creates a buffer for input and
-output to GDB, and switches to it.  If a GDB buffer already exists, it
-just switches to that buffer.
-
-@item M-x gdba @key{RET} @var{file} @key{RET}
-Run GDB as a subprocess of Emacs, providing a graphical interface
-to GDB features through Emacs.  @xref{GDB Graphical Interface}.
+Run GDB as a subprocess of Emacs.  By default, this operates in
+graphical mode; @xref{GDB Graphical Interface}.  Graphical mode
+does not support any other debuggers.
 
 @item M-x dbx @key{RET} @var{file} @key{RET}
 @findex dbx
@@ -396,8 +386,6 @@
 allowed.  GUD assumes that the first argument not starting with a
 @samp{-} is the executable file name.
 
-  Emacs can only run one debugger process at a time.
-
 @node Debugger Operation
 @subsection Debugger Operation
 
@@ -424,6 +412,14 @@
 commands for your debugger are available, and you can use the Shell mode
 history commands to repeat them.  @xref{Shell Mode}.
 
+@cindex tooltips with GUD
+@vindex tooltip-gud-modes
+  The Tooltip facility (@pxref{Tooltips}) provides support for GUD@.
+You activate this feature by customizing the @code{tooltip} group.
+Then you can display a variable's value in a tooltip simply by
+pointing at it with the mouse.  This operates in the GUD buffer and in
+source buffers with major modes in the list @code{tooltip-gud-modes}.
+
 @node Commands of GUD
 @subsection Commands of GUD
 
@@ -653,28 +649,24 @@
 ignores any numeric argument.
 @end table
 
-@node GUD Tooltips
-@subsection GUD Tooltips
-
-@cindex tooltips with GUD
-The Tooltip facility (@pxref{Tooltips}) provides support for GUD@.  If
-GUD support is activated by customizing the @code{tooltip} group,
-variable values can be displayed in tooltips by pointing at them with
-the mouse in the GUD buffer or in source buffers with major modes in the
-customizable list @code{tooltip-gud-modes}.
-
 @node GDB Graphical Interface
 @subsection GDB Graphical Interface
 
-By default, the command @code{gdb} starts GDB using a graphical
+  By default, the command @code{gdb} starts GDB using a graphical
 interface where you view and control the program's data using Emacs
 windows.  You can still interact with GDB through the GUD buffer, but
 the point of this mode is that you can do it through menus and clicks,
 without needing to know GDB commands.
 
+@vindex gud-gdb-command-name
 @findex gdba
-If you have customised @code{gud-gdb-command-name}, then start this
-mode with the command @code{gdba}.
+  You can also run GDB in text command mode, which creates a buffer
+for input and output to GDB.  To do this, set
+@code{gud-gdb-command-name} to @code{"gdb --fullname"} or edit the
+startup command in the minibuffer to say that.  You need to do use
+text command mode to run multiple debugging sessions within one Emacs
+session.  If you have customised @code{gud-gdb-command-name} in that
+way, then you can use @kbd{M-x gdba} to invoke GDB in graphical mode.
 
 @menu
 * Layout::               Control the number of displayed buffers.
--- a/man/calendar.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/calendar.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -186,6 +186,8 @@
 Move point to specified date (@code{calendar-goto-date}).
 @item g D
 Move point to specified day of year (@code{calendar-goto-day-of-year}).
+@item g w
+Move point to specified week of year (@code{calendar-goto-iso-week}).
 @item o
 Center calendar around specified month (@code{calendar-other-month}).
 @item .
@@ -201,9 +203,13 @@
 
 @kindex g D @r{(Calendar mode)}
 @findex calendar-goto-day-of-year
+@kindex g w @r{(Calendar mode)}
+@findex calendar-goto-iso-week
   @kbd{g D} (@code{calendar-goto-day-of-year}) prompts for a year and
-day number, and moves to that date.  Negative day numbers count backward
-from the end of the year.
+day number, and moves to that date.  Negative day numbers count
+backward from the end of the year.  @kbd{g w}
+(@code{calendar-goto-iso-week}) prompts for a year and week number,
+and moves to that week.
 
 @kindex o @r{(Calendar mode)}
 @findex calendar-other-month
@@ -1351,7 +1357,7 @@
 appointment list for today from the diary file, giving all diary entries
 found with recognizable times of day, and reminds you just before each
 of them. Calling @code{appt-activate} with a negative argument disables
-the appointment package.
+the appointment package.  With no argument, it toggles.
 
   For example, suppose the diary file contains these lines:
 
--- a/man/commands.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/commands.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -168,11 +168,13 @@
 key sequences, not one.@refill
 
   All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
-@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x n}, @w{@kbd{C-x
-r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, @key{ESC}, and
-@kbd{M-g}.  But this list is not cast in concrete; it is
-just a matter of Emacs's standard key bindings.  If you customize Emacs,
-you can make new prefix keys, or eliminate these.  @xref{Key Bindings}.
+@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
+n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x
+6}, @key{ESC}, and @kbd{M-g}.  (@key{F1} and @key{F2} are aliases for
+@kbd{C-h} and @kbd{C-x 6}.)  But this list is not cast in concrete; it
+is just a matter of Emacs's standard key bindings.  If you customize
+Emacs, you can make new prefix keys, or eliminate these.  @xref{Key
+Bindings}.
 
   If you do make or eliminate prefix keys, that changes the set of
 possible key sequences.  For example, if you redefine @kbd{C-f} as a
--- a/man/custom.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/custom.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -345,8 +345,9 @@
 @kindex M-TAB @r{(customization buffer)}
 @findex widget-complete
   While editing a value or field that is a file name, directory name,
-command name, or anything else for which completion is defined, you can
-type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
+command name, or anything else for which completion is defined, you
+can type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
+(@kbd{@key{ESC} @key{TAB}} and @kbd{C-M-i} do the same thing.)
 
   Some variables have a small fixed set of possible legitimate values.
 These variables don't let you edit the value textually.  Instead, an
--- a/man/display.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/display.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -81,14 +81,14 @@
 background colors for the current frame only; see @ref{Frame
 Parameters}.)
 
-  Emacs 21 can correctly display variable-width fonts, but Emacs
-commands that calculate width and indentation do not know how to
-calculate variable widths.  This can sometimes lead to incorrect
-results when you use variable-width fonts.  In particular, indentation
-commands can give inconsistent results, so we recommend you avoid
-variable-width fonts for editing program source code.  Filling will
-sometimes make lines too long or too short.  We plan to address these
-issues in future Emacs versions.
+  Emacs can correctly display variable-width fonts, but Emacs commands
+that calculate width and indentation do not know how to calculate
+variable widths.  This can sometimes lead to incorrect results when
+you use variable-width fonts.  In particular, indentation commands can
+give inconsistent results, so we recommend you avoid variable-width
+fonts for editing program source code.  Filling will sometimes make
+lines too long or too short.  We plan to address these issues in
+future Emacs versions.
 
 @findex list-faces-display
   To see what faces are currently defined, and what they look like, type
--- a/man/eshell.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/eshell.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -80,7 +80,6 @@
 
 @menu
 * What is Eshell?::             A brief introduction to the Emacs Shell.
-* Installation::                For users of Emacs 20 and XEmacs.
 * Command basics::              The basics of command usage.
 * Commands::
 * Arguments::
@@ -146,8 +145,6 @@
 looks like: But don't let it fool you; once you know what's going on,
 it's easier than it looks: @code{ls -lt **/*.doc(Lk+50aM+5)}.}
 
-As of Emacs 21, Eshell is part of the standard Emacs distribution.
-
 @menu
 * Contributors to Eshell::      People who have helped out!
 @end menu
@@ -192,196 +189,6 @@
 requests, bug reports and encouragement.  Thanks a lot!  Without you
 there would be no new releases of Eshell.
 
-@node Installation
-@chapter Installation
-@cindex installation
-
-As mentioned above, Eshell comes preinstalled as of Emacs 21.  If you're
-using Emacs 20.4 or later, or XEmacs 21, you can download the most
-recent version of Eshell from
-@url{http://www.gci-net.com/users/j/johnw/Emacs/packages/eshell.tar.gz}.
-
-However, if you are using Emacs 21, you may skip this section.
-
-@section Short Form
-
-Here's exactly what to do, with no explanation why:
-
-@enumerate
-@item
-@samp{M-x load-file RET eshell-auto.el RET}.
-
-@item
-@samp{ESC : (add-to-list 'load-path "<path where Eshell resides>") RET}.
-
-@item
-@samp{ESC : (add-to-list 'load-path "<path where Pcomplete resides>") RET}.
-
-@item
-@samp{M-x eshell RET}.
-
-You should see a version banner displayed.
-
-@item
-@samp{ls RET}.
-
-Confirm that you see a file listing.
-
-@item
-@samp{eshell-test RET}.
-
-Confirm that everything runs correctly.  Use @kbd{M-x eshell-report-bug} if
-not.
-
-@item
-@samp{cd $@{dirname (locate-library "eshell-auto")@} RET}.
-
-@item
-@samp{find-file Makefile RET}.
-
-@item
-Edit the Makefile to reflect your site.
-
-@item
-@samp{M-x eshell RET}.
-
-@item
-@samp{make install RET}.
-
-@item
-@samp{find-file $user-init-file RET}.
-
-@item
-Add the following lines to your @file{.emacs} file:
-
-@example
-(add-to-list 'load-path "<directory where you install Eshell>")
-(load "eshell-auto")
-@end example
-
-@item
-@samp{M-x eshell RET}.
-
-@item
-@samp{customize-option #'eshell-modules-list RET}.
-
-@item
-Select the extension modules you prefer.
-
-@item
-Restart Emacs!
-
-@item
-@samp{M-x info RET m Eshell RET}.
-
-Read the manual and enjoy!
-@end enumerate
-
-@section Long Form
-
-@enumerate
-@item
-Before building and installing Eshell, it is important to test that it
-will work properly on your system.  To do this, first load the file
-@file{eshell-auto}, which will define certain autoloads required to run
-Eshell.  This can be done using the command @kbd{M-x load-file}, and
-then selecting the file @file{eshell-auto.el}.
-
-@item
-In order for Emacs to find Eshell's files, the Eshell directory must be
-added to the @code{load-path} variable.  This can be done within Emacs by
-typing:
-
-@example
-ESC : (add-to-list 'load-path "<path where Eshell resides>") RET
-ESC : (add-to-list 'load-path "<path where Pcomplete resides>") RET
-@end example
-
-@item
-Start Eshell from the distributed sources, using default settings, by
-typing @kbd{M-x eshell}.
-
-@item
-Verify that Eshell is functional by typing @command{ls} followed by
-@key{RET}.  You should have already seen a version banner announcing the
-version number of this release, followed by a prompt.
-
-@item
-Run the test suite by typing @command{eshell-test} followed by @key{RET}
-in the Eshell buffer.  It is important that Emacs be left alone while
-the tests are running, since extraneous command input may cause some of
-the tests to fail (they were never intended to run in the background).
-If all of the tests pass, Eshell should work just fine on your system.
-If any of the tests fail, please send e-mail to the Eshell maintainer
-using the command @kbd{M-x eshell-report-bug}.
-
-@item
-Edit the file @file{Makefile} in the directory containing the Eshell
-sources to reflect the location of certain Emacs directories at your
-site.  The only things you really have to change are the definitions of
-@code{lispdir} and @code{infodir}.  The elisp files will be copied to
-@code{lispdir}, and the info file to @code{infodir}.
-
-@item
-Type @kbd{make install} in the directory containing the Eshell sources.
-This will byte-compile all of the @file{*.el} files and copy both the
-source and compiled versions to the directories specified in the
-previous step.  It will also copy the info file, and add a corresponding
-entry to your @file{dir} file----if the program @code{install-info} can
-be found on your system.
-
-If you only want to create the compiled elisp files, but don't want to
-install them, you can type just @kbd{make} instead.
-
-@item
-Add the directory into which Eshell was installed to your
-@code{load-path} variable.  This can be done by adding the following
-line to your @file{.emacs} file:
-
-@example
-(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/eshell")
-@end example
-
-The actual directory on your system may differ.
-
-@item
-To install Eshell privately, edit your @file{.emacs} file; to install
-Eshell site-wide, edit the file @file{site-start.el} in your
-@file{site-lisp} directory (usually
-@file{/usr/local/share/emacs/site-lisp} or something similar).  In
-either case enter the following line into the appropriate file:
-
-@example
-(load "eshell-auto")
-@end example
-
-@item
-Restart Emacs.  After restarting, customize the variable
-@code{eshell-modules-list}.  This variable selects which Eshell
-extension modules you want to use.  You will find documentation on each
-of those modules in the Info manual.
-@end enumerate
-
-@cindex documentation, printed version
-@cindex printed version of documentation
-If you have @TeX{} installed at your site, you can make a typeset manual
-from @file{eshell.texi}.
-
-@enumerate
-@item
-Run @TeX{} by typing @kbd{texi2dvi eshell.texi}.  (With Emacs 21.1 or
-later, typing @kbd{make eshell.dvi} in the @file{man/} subdirectory of
-the Emacs source distribution will do that.)
-
-@item
-Convert the resulting device independent file @file{eshell.dvi} to a
-form which your printer can output and print it.  If you have a
-postscript printer, there is a program, @code{dvi2ps}, which does that; there
-is also a program which comes together with @TeX{}, @code{dvips}, which
-you can use.  For other printers, use a suitable DVI driver,
-e.g., @code{dvilj4} for LaserJet-compatible printers.
-@end enumerate
-
 @node Command basics
 @chapter Basic overview
 
--- a/man/files.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/files.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1297,23 +1297,27 @@
 @cindex log File, types of
 @cindex version control log
 
-GNU projects under a revision control system generally possess
-@emph{two} types of log for changes.  One is the per-file log
-maintained by the revision control system: each time you check in a
-change, you must fill out a @dfn{log entry} for the change (@pxref{Log
-Buffer}).  This kind of log is called the @dfn{version control log},
-also the @dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}.
-
-The other kind of log is the change log file, typically a file called
-@file{ChangeLog}.  It provides a chronological record of all changes
-to a large portion of a program---one directory and its
-subdirectories.  A small program would use one @file{ChangeLog} file;
-a large program may well merit a @file{ChangeLog} file in each major
-directory.  @xref{Change Log}.
-
-When you use version control, you can use just the per-file log if you
-wish, or you can use both kinds of logs.  When you use both, you
-typically want to write just one entry for each change.  You can write
+  Projects that use a revision control system can have @emph{two}
+types of log for changes.  One is the per-file log maintained by the
+revision control system: each time you check in a change, you must
+fill out a @dfn{log entry} for the change (@pxref{Log Buffer}).  This
+kind of log is called the @dfn{version control log}, also the
+@dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}.
+
+  The other kind of log is the file @file{ChangeLog} (@pxref{Change
+Log}).  It provides a chronological record of all changes to a large
+portion of a program---typically one directory and its subdirectories.
+A small program would use one @file{ChangeLog} file; a large program
+may well merit a @file{ChangeLog} file in each major directory.
+@xref{Change Log}.
+
+  A project maintained with version control can use just the per-file
+log, or it can use both kinds of logs.  It can handle some files one
+way and some files the other way.  Each project has its policy, which
+you should follow.
+
+  When the policy is to use both, you typically want to write an entry
+for each change just once, then put it into both logs.  You can write
 the entry in @file{ChangeLog}, then copy it to the log buffer when you
 check in the change.  Or you can write the entry in the log buffer
 while checking in the change, and later use the @kbd{C-x v a} command
--- a/man/fixit.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/fixit.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -311,9 +311,10 @@
 completions based on spelling correction.  Insert the beginning of a
 word, and then type @kbd{M-@key{TAB}}; the command displays a
 completion list window.  (If your window manager intercepts
-@kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}}.)  To choose one of
-the completions listed, click @kbd{Mouse-2} on it, or move the cursor
-there in the completions window and type @key{RET}.  @xref{Text Mode}.
+@kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)  To
+choose one of the completions listed, click @kbd{Mouse-2} or
+@kbd{Mouse-1} fast on it, or move the cursor there in the completions
+window and type @key{RET}.  @xref{Text Mode}.
 
 @ignore
 @findex reload-ispell
--- a/man/glossary.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/glossary.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -65,7 +65,7 @@
 editing session.  Emacs makes backup files automatically to help you
 track down or cancel changes you later regret making.  @xref{Backup}.
 
-@item Balance Parentheses
+@item Balancing Parentheses
 Emacs can balance parentheses (or other matching delimiters) either
 manually or automatically.  You do manual balancing with the commands
 to move over parenthetical groupings (@pxref{Moving by Parens}).
@@ -139,6 +139,9 @@
 @item By Default
 See `default.'
 
+@item Byte Compilation
+See `compilation.'
+
 @item @kbd{C-}
 @kbd{C-} in the name of a character is an abbreviation for Control.
 @xref{User Input,C-}.
@@ -246,15 +249,16 @@
 
 @item Copyleft
 A copyleft is a notice giving the public legal permission to
-redistribute a program or other work of art.  Copyright is normally used
-to keep users divided and helpless; with copyleft we turn that around
-to empower users and encourage them to cooperate.
+redistribute and modify a program or other work of art, but requiring
+modified versions to carry similar permission.  Copyright is normally
+used to keep users divided and helpless; with copyleft we turn that
+around to empower users and encourage them to cooperate.
 
 The particular form of copyleft used by the GNU project is called the
 GNU General Public License.  @xref{Copying}.
 
 @item @key{CTRL}
-The @key{CTLR} or ``control'' key is what you hold down
+The @key{CTRL} or ``control'' key is what you hold down
 in order to enter a control character (q.v.).
 
 @item Current Buffer
@@ -263,7 +267,7 @@
 @xref{Buffers}.
 
 @item Current Line
-The current line is a line point is on (@pxref{Point}).
+The current line is the line that point is on (@pxref{Point}).
 
 @item Current Paragraph
 The current paragraph is the paragraph that point is in.  If point is
@@ -284,8 +288,9 @@
 
 @item Customization
 Customization is making minor changes in the way Emacs works.  It is
-often done by setting variables (@pxref{Variables}) or by rebinding
-key sequences (@pxref{Keymaps}).
+often done by setting variables (@pxref{Variables}) or faces
+(@pxref{Face Customization}), or by rebinding key sequences
+(@pxref{Keymaps}).
 
 @cindex cut and paste
 @item Cut and Paste
@@ -372,9 +377,10 @@
 @samp{*Messages*} so you can review them later.  @xref{Echo Area}.
 
 @item Echoing
-Echoing is acknowledging the receipt of commands by displaying them (in
-the echo area).  Emacs never echoes single-character key sequences;
-longer key sequences echo only if you pause while typing them.
+Echoing is acknowledging the receipt of input events by displaying
+them (in the echo area).  Emacs never echoes single-character key
+sequences; longer key sequences echo only if you pause while typing
+them.
 
 @item Electric
 We say that a character is electric if it is normally self-inserting
@@ -493,16 +499,16 @@
 @item Frame
 A frame is a rectangular cluster of Emacs windows.  Emacs starts out
 with one frame, but you can create more.  You can subdivide each frame
-into Emacs windows (q.v.@:).  When you are using a windowing system, all
-the frames can be visible at the same time.  @xref{Frames}.  Some
-other editors use the term ``window'' for this, but in Emacs a window
-means something else.
+into Emacs windows (q.v.@:).  When you are using a window system
+(q.v.@:), all the frames can be visible at the same time.
+@xref{Frames}.  Some other editors use the term ``window'' for this,
+but in Emacs a window means something else.
 
 @item Fringe
-On windowed displays, there's a narrow portion of the frame (q.v.@:)
-between the text area and the window's border.  Emacs displays the
-fringe using a special face (q.v.@:) called @code{fringe}.
-@xref{Faces,fringe}.
+On a graphical terminal (q.v.@:), there's a narrow portion of the
+frame (q.v.@:) between the text area and the window's border.  Emacs
+displays the fringe using a special face (q.v.@:) called
+@code{fringe}.  @xref{Faces,fringe}.
 
 @item FTP
 FTP is an acronym for File Transfer Protocol.  Emacs uses an FTP client
@@ -550,6 +556,10 @@
 @key{RET} or @key{ESC}.  In Emacs, typing a graphic character inserts
 that character (in ordinary editing modes).  @xref{Inserting Text}.
 
+@item Graphical Terminal
+A graphical terminal is one that can display images and multiple fonts.
+Usually it also has a window system (q.v.@:).
+
 @item Highlighting
 Highlighting text means displaying it with a different foreground and/or
 background color to make it stand out from the rest of the text in the
@@ -642,6 +652,9 @@
 them extend exactly to a specified width.
 @xref{Format Justification}.
 
+@item Keybinding
+See `binding.'
+
 @item Keyboard Macro
 Keyboard macros are a way of defining new Emacs commands from
 sequences of existing ones, with no need to write a Lisp program.
@@ -761,6 +774,10 @@
 which configures Emacs for editing a certain sort of text.  Ideally,
 each programming language has its own major mode.  @xref{Major Modes}.
 
+@item Margin
+The space between the usable part of a window (including the
+fringe) and the window edge.
+
 @item Mark
 The mark points to a position in the text.  It specifies one end of the
 region (q.v.@:), point being the other end.  Many commands operate on
@@ -981,7 +998,7 @@
 The region is the text between point (q.v.@:) and the mark (q.v.@:).
 Many commands operate on the text of the region.  @xref{Mark,Region}.
 
-@item Registers
+@item Register
 Registers are named slots in which text or buffer positions or
 rectangles can be saved for later use.  @xref{Registers}.  A related
 Emacs feature is `bookmarks' (q.v.@:).
@@ -1054,7 +1071,15 @@
 applications.  Emacs has special mouse commands for transferring text
 using the secondary selection.  @xref{Secondary Selection}.
 
-@item Selecting
+@item Selected Frame
+The selected frame is the one your input currently operates on.
+@xref{Frames}.
+
+@item Selected Window
+The selected frame is the one your input currently operates on.
+@xref{Basic Windows}.
+
+@item Selecting a Buffer
 Selecting a buffer means making it the current (q.v.@:) buffer.
 @xref{Select Buffer}.
 
@@ -1100,7 +1125,7 @@
 space bar.
 
 @item Speedbar
-Speedbar is a special tall frame that provides fast access to Emacs
+The speedbar is a special tall frame that provides fast access to Emacs
 buffers, functions within those buffers, Info nodes, and other
 interesting parts of text within Emacs.  @xref{Speedbar}.
 
@@ -1262,6 +1287,10 @@
 other editors use the term ``window'' for what we call a `frame'
 (q.v.@:) in Emacs.
 
+@item Window System
+A window system is a graphical terminal (q.v.@:) that can display multiple
+windows for different programs at the same time.
+
 @item Word Abbrev
 See `abbrev.'
 
--- a/man/help.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/help.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -249,15 +249,15 @@
   @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but describes
 Lisp variables instead of Lisp functions.  Its default is the Lisp symbol
 around or before point, but only if that is the name of a known Lisp
-variable.  @xref{Variables}.@refill
+variable.  @xref{Variables}.
 
-  Help buffers describing variables or functions defined in Lisp
-normally have hyperlinks to the Lisp definition, if you have the Lisp
-source files installed.  If you know Lisp, this provides the ultimate
-documentation.  If you don't know Lisp, you should learn it.  If you
-are just @emph{using} Emacs, treating Emacs as an object (file), then
-you don't really love it.  For true intimacy with your editor, you
-need to read the source code.
+  Help buffers describing Emacs variables and functions normally have
+hyperlinks to the definition, if you have the source files installed.
+(@xref{Hyperlinking}.)  If you know Lisp (or C), this provides the
+ultimate documentation.  If you don't know Lisp, you should learn it.
+If you are just @emph{using} Emacs, treating Emacs as an object
+(file), then you don't really love it.  For true intimacy with your
+editor, you need to read the source code.
 
 @node Apropos
 @section Apropos
--- a/man/mh-e.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/mh-e.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -99,7 +99,7 @@
 @cindex history
 
 The mh-e package is distributed with GNU Emacs, @footnote{Note that
-mh-e is supported with MH 6 and @w{Emacs 18} through @w{Emacs 21}.
+mh-e is supported with MH 6 and @w{Emacs 18} and up.
 Reportedly, large parts of it work with @w{MH 5} and also with
 Lucid/XEmacs and Epoch, but there are no guarantees. It is also
 distributed with Lucid/XEmacs, as well as with MH itself.} so you
--- a/man/mini.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/mini.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -400,8 +400,8 @@
 partial-completion-mode}, or customize the variable
 @code{partial-completion-mode}.  This binds the partial completion
 commands to @key{TAB}, @key{SPC}, @key{RET}, and @kbd{?}.  The usual
-completion commands are available on @kbd{M-@key{TAB}},
-@kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
+completion commands are available on @kbd{M-@key{TAB}} (or
+@mbd{C-M-i}), @kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
 
 @vindex PC-include-file-path
 @vindex PC-disable-includes
--- a/man/misc.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/misc.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -389,12 +389,11 @@
 first and the output replaces it as the contents of the region.  It
 returns the command's exit status when it is called from a Lisp program.
 
-  One use for @kbd{M-|} is to run @code{uudecode}.  For instance, if
-the buffer contains uuencoded text, type @kbd{C-x h M-| uudecode
-@key{RET}} to feed the entire buffer contents to the @code{uudecode}
-program.  That program will ignore everything except the encoded text,
-and will store the decoded output into the file whose name is
-specified in the encoded text.
+  One use for @kbd{M-|} is to run @code{gpg} to see what keys are in
+the buffer.  For instance, if the buffer contains a GPG key, type
+@kbd{C-x h M-| uudecode @key{RET}} to feed the entire buffer contents
+to the @code{gpg} program.  That program will ignore everything except
+the encoded keys, and will output a list of the keys it contains.
 
 @vindex shell-file-name
   Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
@@ -405,13 +404,18 @@
 @env{PATH} when Emacs is started.  Your @file{.emacs} file can override
 either or both of these default initializations.@refill
 
-  Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete.
-To stop waiting, type @kbd{C-g} to quit; that terminates the shell
+  Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete,
+unless you end the command with @samp{&} to make it asyncronous.  To
+stop waiting, type @kbd{C-g} to quit; that terminates the shell
 command with the signal @code{SIGINT}---the same signal that @kbd{C-c}
-normally generates in the shell.  Emacs waits until the command actually
-terminates.  If the shell command doesn't stop (because it ignores the
-@code{SIGINT} signal), type @kbd{C-g} again; this sends the command a
-@code{SIGKILL} signal which is impossible to ignore.
+normally generates in the shell.  Emacs waits until the command
+actually terminates.  If the shell command doesn't stop (because it
+ignores the @code{SIGINT} signal), type @kbd{C-g} again; this sends
+the command a @code{SIGKILL} signal which is impossible to ignore.
+
+  Asynchronous commands ending in @samp{&} feed their output into
+the buffer @samp{*Async Shell Command*}.  Output arrives in that
+buffer regardless of whether it is visible in a window.
 
   To specify a coding system for @kbd{M-!} or @kbd{M-|}, use the command
 @kbd{C-x @key{RET} c} immediately beforehand.  @xref{Specify Coding}.
@@ -704,12 +708,12 @@
 @subsection Shell Command History
 
   Shell buffers support three ways of repeating earlier commands.  You
-can use the same keys used in the minibuffer; these work much as they do
-in the minibuffer, inserting text from prior commands while point
-remains always at the end of the buffer.  You can move through the
-buffer to previous inputs in their original place, then resubmit them or
-copy them to the end.  Or you can use a @samp{!}-style history
-reference.
+can use keys like those used for the minibuffer history; these work
+much as they do in the minibuffer, inserting text from prior commands
+while point remains always at the end of the buffer.  You can move
+through the buffer to previous inputs in their original place, then
+resubmit them or copy them to the end.  Or you can use a
+@samp{!}-style history reference.
 
 @menu
 * Ring: Shell Ring.             Fetching commands from the history list.
@@ -724,11 +728,13 @@
 @findex comint-previous-input
 @kindex M-p @r{(Shell mode)}
 @item M-p
+@itemx C-@key{UP}
 Fetch the next earlier old shell command.
 
 @kindex M-n @r{(Shell mode)}
 @findex comint-next-input
 @item M-n
+@itemx C-@key{DOWN}
 Fetch the next later old shell command.
 
 @kindex M-r @r{(Shell mode)}
@@ -762,11 +768,13 @@
 history commands except that they operate on the text at the end of the
 shell buffer, where you would normally insert text to send to the shell.
 
-  @kbd{M-p} fetches an earlier shell command to the end of the shell buffer.
-Successive use of @kbd{M-p} fetches successively earlier shell commands,
-each replacing any text that was already present as potential shell input.
-@kbd{M-n} does likewise except that it finds successively more recent shell
-commands from the buffer.
+  @kbd{M-p} fetches an earlier shell command to the end of the shell
+buffer.  Successive use of @kbd{M-p} fetches successively earlier
+shell commands, each replacing any text that was already present as
+potential shell input.  @kbd{M-n} does likewise except that it finds
+successively more recent shell commands from the buffer.
+@kbd{C-@key{UP}} works like @kbd{M-p}, and @kbd{C-@key{DOWN}} like
+@kbd{M-n}.
 
   The history search commands @kbd{M-r} and @kbd{M-s} read a regular
 expression and search through the history for a matching command.  Aside
@@ -948,6 +956,10 @@
 show the current buffer.  The default value is @code{nil}, which means
 point does not jump to the end.
 
+@vindex comint-prompt-read-only
+  If you set @code{comint-prompt-read-only}, the prompts in the Comint
+buffer a read-only.
+
 @vindex comint-input-ignoredups
   The variable @code{comint-input-ignoredups} controls whether successive
 identical inputs are stored in the input history.  A non-@code{nil}
@@ -1297,10 +1309,10 @@
 running @code{emacsclient} in a script.  It specifies a command to run
 if @code{emacsclient} fails to contact Emacs.  For example, the
 following setting for the @var{EDITOR} environment variable will
-always give an editor, even if Emacs is not running:
+always give you an editor, even if no Emacs server is running:
 
 @example
-EDITOR="emacsclient --alternate-editor vi +%d %s"
+EDITOR="emacsclient --alternate-editor emacs +%d %s"
 @end example
 
 @noindent
@@ -1537,8 +1549,8 @@
 @cindex sorting
 
   Emacs provides several commands for sorting text in the buffer.  All
-operate on the contents of the region (the text between point and the
-mark).  They divide the text of the region into many @dfn{sort records},
+operate on the contents of the region.
+They divide the text of the region into many @dfn{sort records},
 identify a @dfn{sort key} for each record, and then reorder the records
 into the order determined by the sort keys.  The records are ordered so
 that their keys are in alphabetical order, or, for numeric sorting, in
@@ -1895,7 +1907,7 @@
 @findex desktop-save
 @vindex desktop-save-mode
   You can save the desktop manually with the command @kbd{M-x
-desktop-save}.  You can also enable automatical desktop saving when
+desktop-save}.  You can also enable automatic desktop saving when
 you exit Emacs: use the Customization buffer (@pxref{Easy
 Customization}) to set @code{desktop-save-mode} to @code{t} for future
 sessions, or add this line in your @file{~/.emacs} file:
@@ -1962,7 +1974,7 @@
 Mode lines display a pair of square brackets for each recursive editing
 level currently in progress.
 
-  Exiting the inner recursive edit (such as, with the debugger @kbd{c}
+  Exiting the inner recursive edit (such as with the debugger @kbd{c}
 command) resumes the command running in the next level up.  When that
 command finishes, you can then use @kbd{C-M-c} to exit another recursive
 editing level, and so on.  Exiting applies to the innermost level only.
@@ -2041,11 +2053,7 @@
 @cindex ``PC'' key bindings
 The command @kbd{M-x pc-bindings-mode} sets up certain key bindings
 for ``PC compatibility''---what people are often used to on PCs---as
-follows: @kbd{Delete} and its variants delete forward instead of
-backward, @kbd{C-Backspace} kills backward a word (as @kbd{C-Delete}
-normally would), @kbd{M-Backspace} does undo, @kbd{Home} and @kbd{End}
-move to beginning and end of line, @kbd{C-Home} and @kbd{C-End} move
-to beginning and end of buffer and @kbd{C-Escape} does
+follows: @kbd{M-Backspace} does undo, and @kbd{C-Escape} does
 @code{list-buffers}.
 
 @item PC Selection mode
@@ -2132,9 +2140,13 @@
 @cindex navigation
   Various modes documented elsewhere have hypertext features so that
 you can follow links, usually by clicking @kbd{Mouse-2} on the link or
-typing @key{RET} while point is on the link.  Info mode, Help mode and
-the Dired-like modes are examples.  The Tags facility links between
-uses and definitions in source files, see @ref{Tags}.  Imenu provides
+typing @key{RET} while point is on the link.  Clicking @kbd{Mouse-1}
+quickly on the link also follows it.  (Hold @kbd{Mouse-1} for longer
+if you want to set point instead.)
+
+  Info mode, Help mode and the Dired-like modes are examples of modes
+that have links in the buffer.  The Tags facility links between uses
+and definitions in source files, see @ref{Tags}.  Imenu provides
 navigation amongst items indexed in the current buffer, see
 @ref{Imenu}.  Info-lookup provides mode-specific lookup of definitions
 in Info indexes, see @ref{Documentation}.  Speedbar maintains a frame
@@ -2149,7 +2161,6 @@
 * Browse-URL::                  Following URLs.
 * Goto-address::                Activating URLs.
 * FFAP::                        Finding files etc. at point.
-* Find-func::                   Finding function and variable definitions.
 @end menu
 
 @node Browse-URL
@@ -2288,41 +2299,6 @@
 find the one you select (@code{ffap-menu}).
 @end table
 
-@node Find-func
-@subsection Finding Function and Variable Definitions
-@cindex definitions, finding in Lisp sources
-@cindex Lisp definitions, finding in sources
-
-@table @kbd
-@item M-x find-function @key{RET} @var{function} @key{RET}
-Find the definition of @var{function} in its source file.
-@item M-x find-variable @key{RET} @var{variable} @key{RET}
-Find the definition of @var{variable} in its source file.
-@item M-x find-function-on-key @key{RET} @var{key}
-Find the definition of the function that @var{key} invokes.
-@end table
-
-  These commands provide an easy way to find the definitions of Emacs
-Lisp functions and variables.  They are similar in purpose to the Tags
-facility (@pxref{Tags}), but don't require a tags table; on the other
-hand, they only work for function and variable definitions that are
-already loaded in the Emacs session.
-
-@findex find-function
-@findex find-function-on-key
-@findex find-variable
-  To find the definition of a function, use @kbd{M-x find-function}.
-@kbd{M-x find-variable} finds the definition of a specified variable.
-@kbd{M-x find-function-on-key} finds the definition of the function
-bound to a specified key.
-
-  To use these commands, you must have the Lisp source (@samp{.el})
-files available along with the compiled (@samp{.elc}) files, in
-directories in @code{load-path}.  You can use compressed source files
-if you enable Auto Compression mode.  These commands only handle
-definitions written in Lisp, not primitive functions or variables
-defined in the C code of Emacs.
-
 @node Dissociated Press, Amusements, Hyperlinking, Top
 @section Dissociated Press
 
--- a/man/pcl-cvs.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/pcl-cvs.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -77,7 +77,7 @@
 @end ifnottex
 
 @menu
-* About PCL-CVS::               Installation, credits, history, @dots{}
+* About PCL-CVS::               Credits, history, @dots{}
 
 * Getting started::             An introduction with a walk-through example.
 * Buffer contents::             An explanation of the buffer contents.
@@ -100,7 +100,6 @@
 About PCL-CVS
 
 * Contributors::                Contributors to PCL-CVS.
-* Installation::
 
 Commands
 
@@ -152,14 +151,11 @@
 Stefan Monnier picked up development again, adding some major new
 functionality and taking over the maintenance.
 
-As of Emacs 21, PCL-CVS is part of the standard Emacs distribution.
-
 @menu
 * Contributors::                Contributors to PCL-CVS.
-* Installation::
 @end menu
 
-@node     Contributors, Installation, About PCL-CVS, About PCL-CVS
+@node     Contributors,, About PCL-CVS, About PCL-CVS
 @section Contributors to PCL-CVS
 @cindex Contributors
 @cindex Authors
@@ -236,39 +232,6 @@
 there would be no new releases of PCL-CVS.
 
 
-@node   Installation,  , Contributors, About PCL-CVS
-@section Installation
-@cindex Installation
-
-As mentioned above, PCL-CVS comes bundled with Emacs version 21.1 and
-later.  If you're using Emacs 20, you can download an older version of
-PCL-CVS from @uref{ftp://flint.cs.yale.edu/pub/monnier/pcl-cvs}.  That
-version also works on XEmacs.
-
-If you are running XEmacs 21.0 or later, PCL-CVS is available in
-pre-compiled package form.  Please refer to the XEmacs manual for
-instructions regarding package selection and installation.  Currently,
-that PCL-CVS package also requires you to have installed the
-@file{xemacs-base}, @file{elib}, and @file{dired} packages.
-
-If you have @TeX{} installed at your site, you can make a typeset manual
-from @file{pcl-cvs.texi}.
-
-@enumerate
-@item
-If PCL-CVS came with the Emacs distribution, type @kbd{make pcl-cvs.dvi}
-in the @file{man} subdirectory of the Emacs source tree.
-@item
-Alternatively, run @TeX{} by typing @kbd{texi2dvi pcl-cvs.texi}.
-@item
-Convert the resulting device independent file @file{pcl-cvs.dvi} to a
-form which your printer can output and print it.  If you have a
-PostScript printer, there is a program, @code{dvi2ps}, which does.  There
-is also a program which comes together with @TeX{}, @code{dvips}, which
-you can use.
-@end enumerate
-
-
 @node Getting started, Buffer contents, About PCL-CVS, Top
 @chapter Getting started
 @cindex Introduction
--- a/man/programs.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/programs.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -1326,8 +1326,8 @@
 partial symbol before point against the set of meaningful symbol
 names.  This command inserts at point any additional characters that
 it can determine from the partial name.  (If your window manager
-defines @kbd{M-@key{TAB}} to switch windows, you can type this Emacs
-command as @kbd{@key{ESC} @key{TAB}}.)
+defines @kbd{M-@key{TAB}} to switch windows, you can type
+@kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
 
   If the partial name in the buffer has multiple possible completions
 that differ in the very next character, so that it is impossible to
--- a/man/rmail.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/rmail.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -297,13 +297,14 @@
 @section Rmail Files and Inboxes
 @cindex inbox file
 
-  The operating system places incoming mail for you in a file that we
-call your @dfn{inbox}.  When you start up Rmail, it runs a C program
-called @code{movemail} to copy the new messages from your inbox into
-your primary Rmail file, which also contains other messages saved from
-previous Rmail sessions.  It is in this file that you actually read the
-mail with Rmail.  This operation is called @dfn{getting new mail}.  You
-can get new mail at any time in Rmail by typing @kbd{g}.
+  When you receive mail locally, the operating system places incoming
+mail for you in a file that we call your @dfn{inbox}.  When you start
+up Rmail, it runs a C program called @code{movemail} to copy the new
+messages from your local inbox into your primary Rmail file, which
+also contains other messages saved from previous Rmail sessions.  It
+is in this file that you actually read the mail with Rmail.  This
+operation is called @dfn{getting new mail}.  You can get new mail at
+any time in Rmail by typing @kbd{g}.
 
 @vindex rmail-primary-inbox-list
 @cindex @env{MAIL} environment variable
@@ -344,6 +345,35 @@
 as its internal format.  However, the Rmail file will still be separate
 from the inbox file, even on systems where their format is the same.
 
+@vindex rmail-preserve-inbox
+  When getting new mail, Rmail first copies the new mail from the inbox
+file to the Rmail file; then it saves the Rmail file; then it truncates
+the inbox file.  This way, a system crash may cause duplication of mail
+between the inbox and the Rmail file, but cannot lose mail.  If
+@code{rmail-preserve-inbox} is non-@code{nil}, then Rmail will copy new
+mail from the inbox file to the Rmail file without truncating the inbox
+file.  You may wish to set this, for example, on a portable computer you
+use to check your mail via POP while traveling, so that your mail will
+remain on the server and you can save it later on your workstation.
+
+  In some cases, Rmail copies the new mail from the inbox file
+indirectly.  First it runs the @code{movemail} program to move the mail
+from the inbox to an intermediate file called
+@file{~/.newmail-@var{inboxname}}.  Then Rmail merges the new mail from
+that file, saves the Rmail file, and only then deletes the intermediate
+file.  If there is a crash at the wrong time, this file continues to
+exist, and Rmail will use it again the next time it gets new mail from
+that inbox.
+
+  If Rmail is unable to convert the data in
+@file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file
+to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the
+name unique) so that Rmail will not have trouble with the data again.
+You should look at the file, find whatever message confuses Rmail
+(probably one that includes the control-underscore character, octal code
+037), and delete it.  Then you can use @kbd{1 g} to get new mail from
+the corrected file.
+
 @node Rmail Files
 @section Multiple Rmail Files
 
@@ -1003,8 +1033,9 @@
   You can highlight and activate URLs in incoming messages by adding
 the function @code{goto-address} to the hook
 @code{rmail-show-message-hook}.  Then you can browse these URLs by
-clicking on them with @kbd{Mouse-2} or by moving to one and typing
-@kbd{C-c @key{RET}}.  @xref{Goto-address, Activating URLs, Activating URLs}.
+clicking on them with @kbd{Mouse-2} (or @kbd{Mouse-1} quickly) or by
+moving to one and typing @kbd{C-c @key{RET}}.  @xref{Goto-address,
+Activating URLs, Activating URLs}.
 
 @node Rmail Coding
 @section Rmail and Coding Systems
@@ -1158,30 +1189,27 @@
 @section @code{movemail} program
 @cindex @code{movemail} program
 
-  When invoked for the first time, Rmail attempts to locate
-@code{movemail} program and determine its version.  There are
-two versions of @code{movemail} program: the native one, shipped with
-GNU Emacs (we will refer to it as @samp{emacs version}) and the one
-coming from GNU mailutils (@xref{movemail,,,mailutils,GNU mailutils},
-we will refer to it as @samp{mailutils version}).  Both versions are
-compatible with each other in the sense that they support the same
-command line syntax and the same basic subset of options.  However,
-the @samp{mailutils} version offers a much richer set of
-features.
+  When invoked for the first time, Rmail attempts to locate the
+@code{movemail} program and determine its version.  There are two
+versions of @code{movemail} program: the native one, shipped with GNU
+Emacs (the ``emacs version'') and the one included in GNU mailutils
+(the ``mailutils version'', @[xref{movemail,,,mailutils,GNU
+mailutils}).  They support the same command line syntax and the same
+basic subset of options.  However, the @samp{mailutils} version offers
+additional features.
 
-The @samp{Emacs version} of @code{movemail} is able to retrieve mail from usual
-UNIX mailbox formats and from remote mailboxes using the POP3 protocol.
+  The Emacs version of @code{movemail} is able to retrieve mail from
+usual UNIX mailbox formats and from remote mailboxes using the POP3
+protocol.
 
-The @samp{Mailutils version} is able to handle a wide set of mailbox
+  The Mailutils version is able to handle a wide set of mailbox
 formats, such as plain UNIX mailboxes, @code{maildir} and @code{MH}
-mailboxes, etc.  It is able to retrieve remote mail using POP3 or IMAP4
-protocol.  In the latter case, @code{mailutils movemail} can be
-instructed to retrieve mail using a TLS encrypted channel.
-
-The @samp{Mailutils movemail} accepts mailbox argument in the @acronym{URL}
-form.  The detailed description of mailbox @acronym{URL}s can be found
-in @ref{URL,,,mailutils,Mailbox URL Formats}.  In short, a
-@acronym{URL} is:
+mailboxes, etc.  It is able to retrieve remote mail using POP3 or
+IMAP4 protocol, and can retrieve mail from them using a TLS encrypted
+channel.  It also accepts mailbox argument in the @acronym{URL} form.
+The detailed description of mailbox @acronym{URL}s can be found in
+@ref{URL,,,mailutils,Mailbox URL Formats}.  In short, a @acronym{URL}
+is:
 
 @smallexample
 @var{proto}://[@var{user}[:@var{password}]@@]@var{host-or-file-name}
@@ -1244,55 +1272,26 @@
 e.g., @code{imap://smith:guessme@@remote.server.net}.
 @end table
 
-Alternatively, the mailbox may be specified as a file name of the
-mailbox to use.  This is equivalent to specifying the @samp{file} protocol:
+  Alternatively, you can specify the file name of the mailbox to use.
+This is equivalent to specifying the @samp{file} protocol:
 
 @smallexample
-/var/spool/mail/user @equiv{} file://var/spool/mail/user
+/var/spool/mail/@var{user} @equiv{} file://var/spool/mail/@var{user}
 @end smallexample
 
 @vindex rmail-movemail-program
 @vindex rmail-movemail-search-path
- To determine which version of @code{movemail} is being used, Rmail
-examines the value of @code{rmail-movemail-program} variable.  If it
-is set, its value is used as a full path to the @code{movemail} binary.
-Otherwise, Rmail searches for @code{movemail} in the list of directories
-constructed by appending the values of @code{rmail-movemail-search-path} and
-@code{exec-path} to @code{exec-directory}.  
+  The variable @code{rmail-movemail-program} controls which version of
+@code{movemail} to use.  If that is a string, it specifies the
+absolute file name of the @code{movemail} executable.  If it is
+@code{nil}, Rmail searches for @code{movemail} in the directories
+listed in @code{rmail-movemail-search-path} and @code{exec-path}, then
+in @code{exec-directory}.
   
 @node Remote Mailboxes
 @section Retrieving Mail from Remote Mailboxes
 @pindex movemail
 
-@vindex rmail-preserve-inbox
-  When getting new mail, Rmail first copies the new mail from the inbox
-file to the Rmail file; then it saves the Rmail file; then it truncates
-the inbox file.  This way, a system crash may cause duplication of mail
-between the inbox and the Rmail file, but cannot lose mail.  If
-@code{rmail-preserve-inbox} is non-@code{nil}, then Rmail will copy new
-mail from the inbox file to the Rmail file without truncating the inbox
-file.  You may wish to set this, for example, on a portable computer you
-use to check your mail via POP while traveling, so that your mail will
-remain on the server and you can save it later on your workstation.
-
-  In some cases, Rmail copies the new mail from the inbox file
-indirectly.  First it runs the @code{movemail} program to move the mail
-from the inbox to an intermediate file called
-@file{~/.newmail-@var{inboxname}}.  Then Rmail merges the new mail from
-that file, saves the Rmail file, and only then deletes the intermediate
-file.  If there is a crash at the wrong time, this file continues to
-exist, and Rmail will use it again the next time it gets new mail from
-that inbox.
-
-  If Rmail is unable to convert the data in
-@file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file
-to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the
-name unique) so that Rmail will not have trouble with the data again.
-You should look at the file, find whatever message confuses Rmail
-(probably one that includes the control-underscore character, octal code
-037), and delete it.  Then you can use @kbd{1 g} to get new mail from
-the corrected file.
-
   Some sites use a method called POP for accessing users' inbox data
 instead of storing the data in inbox files.  The @code{Emacs
 movemail} can work with POP if you compile it with the macro
--- a/man/sending.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/sending.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -45,7 +45,7 @@
 back later (or never).  If you use the @kbd{C-x m} command again when you
 have been composing another message but have not sent it, you are asked to
 confirm before the old message is erased.  If you answer @kbd{n}, the
-@samp{*mail*} buffer is left selected with its old contents, so you can
+@samp{*mail*} buffer remains selected with its old contents, so you can
 finish the old message and send it.  @kbd{C-u C-x m} is another way to do
 this.  Sending the message marks the @samp{*mail*} buffer ``unmodified,''
 which avoids the need for confirmation when @kbd{C-x m} is next used.
@@ -289,7 +289,21 @@
 alias maingnu gnu@@gnu.org local-gnu
 @end example
 
-  Emacs also recognizes include commands in @samp{.mailrc} files.
+@noindent
+Addresses specified in this way should use doublequotes around an
+entire address when the address contains spaces.  But you need not
+include doublequotes around parts of the address, such as the person's
+full name.  Emacs puts them in if they are needed.  For example,
+
+@example
+alias chief-torturer "George W. Bush <bush@whitehouse.gov>"
+@end example
+
+@noindent
+is correct.  Emacs will insert the address as @samp{"George W. Bush"
+<bush@whitehouse.gov>}.
+
+  Emacs also recognizes ``include'' commands in @samp{.mailrc} files.
 They look like this:
 
 @example
@@ -363,12 +377,10 @@
 @smallexample
 (add-hook 'mail-mode-hook
           (lambda ()
-            (substitute-key-definition
-              'next-line 'mail-abbrev-next-line
-              mail-mode-map global-map)
-            (substitute-key-definition
-              'end-of-buffer 'mail-abbrev-end-of-buffer
-              mail-mode-map global-map)))
+            (define-key
+              mail-mode-map [remap next-line] 'mail-abbrev-next-line)
+            (define-key
+              mail-mode-map [remap end-of-buffer] 'mail-abbrev-end-of-buffer)))
 @end smallexample
 
 @node Mail Mode
@@ -503,8 +515,8 @@
 determine the full name.  The variable @code{mail-complete-style}
 controls whether to insert the full name, and what style to use, as in
 @code{mail-from-style} (@pxref{Mail Headers}).  (If your window
-manager defines @kbd{M-@key{TAB}} to switch windows, you can type this
-Emacs command as @kbd{@key{ESC} @key{TAB}}.)
+manager defines @kbd{M-@key{TAB}} to switch windows, you can type
+@kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
 
   For completion purposes, the valid mailing addresses are taken to be
 the local users' names plus your personal mail aliases.  You can
@@ -626,7 +638,8 @@
 often more convenient to use a special command, @kbd{C-c C-i}
 (@code{mail-attach-file}).  This command inserts the file contents at
 the end of the buffer, after your signature if any, with a delimiter
-line that includes the file name.
+line that includes the file name.  Note that this is not a MIME
+attachment.
 
 @vindex mail-mode-hook
 @vindex mail-setup-hook
--- a/man/text.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/text.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -857,7 +857,7 @@
 of the partial word in the buffer before point, using the spelling
 dictionary as the space of possible words.  @xref{Spelling}.  If your
 window manager defines @kbd{M-@key{TAB}} to switch windows, you can
-type this Emacs command as @kbd{@key{ESC} @key{TAB}}.
+type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.
 
 @vindex text-mode-hook
   Entering Text mode runs the hook @code{text-mode-hook}.  Other major
--- a/man/url.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/url.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -327,10 +327,10 @@
 
 HTTP allows specifying a list of MIME charsets which indicate your
 preferred character set encodings, e.g.@: Latin-9 or Big5, and these
-can be weighted.  In Emacs 21 this list is generated automatically
-from the list of defined coding systems which have associated MIME
-types.  These are sorted by coding priority.  @xref{Recognize Coding,
-, Recognizing Coding Systems, emacs, The GNU Emacs Manual}.
+can be weighted.  This list is generated automatically from the list
+of defined coding systems which have associated MIME types.  These are
+sorted by coding priority.  @xref{Recognize Coding, , Recognizing
+Coding Systems, emacs, The GNU Emacs Manual}.
 @end defopt
 
 @defopt url-mime-language-string
--- a/man/woman.texi	Tue Mar 08 02:17:02 2005 +0000
+++ b/man/woman.texi	Wed Mar 16 15:59:10 2005 +0000
@@ -117,9 +117,10 @@
 Microsoft Windows, but has also been tested on MS-DOS, and various
 versions of UNIX and GNU/Linux.
 
-WoMan is distributed with GNU Emacs 21, and the current source code and
-documentation files are available from
-@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, my web server}.
+WoMan is distributed with GNU Emacs.  In addition, the current source
+code and documentation files are available from
+@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, the WoMan web
+server}.
 
 WoMan implements a subset of the formatting performed by the Emacs
 @code{man} (or @code{manual-entry}) command to format a Unix-style
--- a/src/ChangeLog	Tue Mar 08 02:17:02 2005 +0000
+++ b/src/ChangeLog	Wed Mar 16 15:59:10 2005 +0000
@@ -1,3 +1,15 @@
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT.
+
+	* eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO.
+	(Feval, Ffuncall): Use CHECK_CONS_LIST.
+
+	* lisp.h (CHECK_CONS_LIST): New macro (two definitions).
+
+	* blockinput.h (UNBLOCK_INPUT_TO): New macro.
+	(TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.
+
 2005-03-05  Juri Linkov  <juri@jurta.org>
 
 	* emacs.c (USAGE1): Replace Info node name "command arguments"
@@ -107,6 +119,11 @@
 
 	* keyboard.c (Fposn_at_x_y): Check integerness of X and Y.
 
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+	* xdisp.c (fast_find_position): Rename END to BEG.
+	(syms_of_xdisp) <menu-bar-update-hook>: Doc fix.
+
 2005-02-27  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* gtkutil.c (xg_resize_outer_widget): Remove unneeded call to
--- a/src/blockinput.h	Tue Mar 08 02:17:02 2005 +0000
+++ b/src/blockinput.h	Wed Mar 16 15:59:10 2005 +0000
@@ -94,7 +94,30 @@
     }						\
   while (0)
 
-#define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
+/* Undo any number of BLOCK_INPUT calls,
+   and also reinvoke any pending signal.  */
+
+#define TOTALLY_UNBLOCK_INPUT			\
+  if (interrupt_input_blocked != 0)		\
+    {						\
+      interrupt_input_blocked = 1;		\
+      UNBLOCK_INPUT;				\
+    }						\
+  else
+
+/* Undo any number of BLOCK_INPUT calls down to level LEVEL,
+   and also (if the level is now 0) reinvoke any pending signal.  */
+
+#define UNBLOCK_INPUT_TO(LEVEL)				\
+  do							\
+    {							\
+      int oldlevel = interrupt_input_blocked;		\
+      interrupt_input_blocked = (LEVEL) + 1;		\
+      if (interrupt_input_blocked != oldlevel + 1)	\
+        UNBLOCK_INPUT;					\
+    }							\
+  while (0)
+
 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
 
 /* In critical section ? */
--- a/src/eval.c	Tue Mar 08 02:17:02 2005 +0000
+++ b/src/eval.c	Wed Mar 16 15:59:10 2005 +0000
@@ -1176,7 +1176,7 @@
 
   /* Restore certain special C variables.  */
   set_poll_suppress_count (catch->poll_suppress_count);
-  interrupt_input_blocked = catch->interrupt_input_blocked;
+  UNBLOCK_INPUT_TO (catch->interrupt_input_blocked);
   handling_signal = 0;
   immediate_quit = 0;
 
@@ -2067,6 +2067,8 @@
       args_left = original_args;
       numargs = Flength (args_left);
 
+      CHECK_CONS_LIST ();
+
       if (XINT (numargs) < XSUBR (fun)->min_args ||
 	  (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < XINT (numargs)))
 	return Fsignal (Qwrong_number_of_arguments, Fcons (fun, Fcons (numargs, Qnil)));
@@ -2190,6 +2192,8 @@
 	return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
     }
  done:
+  CHECK_CONS_LIST ();
+
   lisp_eval_depth--;
   if (backtrace.debug_on_exit)
     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
@@ -2746,6 +2750,8 @@
 
   if (SUBRP (fun))
     {
+      CHECK_CONS_LIST ();
+
       if (numargs < XSUBR (fun)->min_args
 	  || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs))
 	{
@@ -2844,6 +2850,7 @@
 	return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
     }
  done:
+  CHECK_CONS_LIST ();
   lisp_eval_depth--;
   if (backtrace.debug_on_exit)
     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
--- a/src/keyboard.c	Tue Mar 08 02:17:02 2005 +0000
+++ b/src/keyboard.c	Wed Mar 16 15:59:10 2005 +0000
@@ -1335,11 +1335,6 @@
     cancel_hourglass ();
 #endif
 
-  /* Unblock input if we enter with input blocked.  This may happen if
-     redisplay traps e.g. during tool-bar update with input blocked.  */
-  while (INPUT_BLOCKED_P)
-    UNBLOCK_INPUT;
-
   return Fthrow (Qtop_level, Qnil);
 }
 
--- a/src/lisp.h	Tue Mar 08 02:17:02 2005 +0000
+++ b/src/lisp.h	Wed Mar 16 15:59:10 2005 +0000
@@ -53,6 +53,11 @@
 
 #endif /* 0 */
 
+#ifdef GC_CHECK_CONS_LIST
+#define CHECK_CONS_LIST() check_cons_list()
+#else
+#define CHECK_CONS_LIST() 0
+#endif
 
 /* These are default choices for the types to use.  */
 #ifdef _LP64