changeset 16772:ce2945525699

(rmail-msg-is-pruned): New function. (rmail-toggle-header): Add an optional argument to specify explicitly whether the header should be pruned or displayed in full.
author Richard M. Stallman <rms@gnu.org>
date Sat, 28 Dec 1996 20:56:53 +0000
parents 16e25f6a3725
children 7064fa2cb0d7
files lisp/mail/rmail.el
diffstat 1 files changed, 40 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmail.el	Sat Dec 28 20:29:42 1996 +0000
+++ b/lisp/mail/rmail.el	Sat Dec 28 20:56:53 1996 +0000
@@ -1397,33 +1397,50 @@
 			     (progn (re-search-forward "\n[^ \t]")
 				    (1- (point))))))))))
 
-(defun rmail-toggle-header ()
-  "Show original message header if pruned header currently shown, or vice versa."
-  (interactive)
+(defun rmail-msg-is-pruned ()
   (rmail-maybe-set-message-counters)
+  (save-restriction
+    (save-excursion
   (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max))
-  (let ((buffer-read-only nil))
     (goto-char (point-min))
     (forward-line 1)
-    (if (= (following-char) ?1)
-	(progn (delete-char 1)
-	       (insert ?0)
-	       (forward-line 1)
-	       (let ((case-fold-search t))
- 		 (while (looking-at "Summary-Line:\\|Mail-From:")
- 		   (forward-line 1)))
-	       (insert "*** EOOH ***\n")
-	       (forward-char -1)
-	       (search-forward "\n*** EOOH ***\n")
-	       (forward-line -1)
-	       (let ((temp (point)))
-		 (and (search-forward "\n\n" nil t)
-		      (delete-region temp (point))))
-	       (goto-char (point-min))
-	       (search-forward "\n*** EOOH ***\n")
-	       (narrow-to-region (point) (point-max)))
-      (rmail-reformat-message (point-min) (point-max))))
-  (rmail-highlight-headers))
+      (= (following-char) ?1))))
+
+(defun rmail-toggle-header (&optional arg)
+  "Show original message header if pruned header currently shown, or vice versa.
+With argument ARG, show the message header pruned if ARG is greater than zero;
+otherwise, show it in full."
+  (interactive "P")
+  (let* ((buffer-read-only nil)
+	 (pruned (rmail-msg-is-pruned))
+	 (prune (if arg
+		    (> (prefix-numeric-value arg) 0)
+		  (not pruned))))
+    (if (eq pruned prune)
+	t
+      (rmail-maybe-set-message-counters)
+      (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max))
+      (if pruned
+	  (progn (goto-char (point-min))
+		 (forward-line 1)
+		 (delete-char 1)
+		 (insert ?0)
+		 (forward-line 1)
+		 (let ((case-fold-search t))
+		   (while (looking-at "Summary-Line:\\|Mail-From:")
+		     (forward-line 1)))
+		 (insert "*** EOOH ***\n")
+		 (forward-char -1)
+		 (search-forward "\n*** EOOH ***\n")
+		 (forward-line -1)
+		 (let ((temp (point)))
+		   (and (search-forward "\n\n" nil t)
+			(delete-region temp (point))))
+		 (goto-char (point-min))
+		 (search-forward "\n*** EOOH ***\n")
+		 (narrow-to-region (point) (point-max)))
+	(rmail-reformat-message (point-min) (point-max)))
+      (rmail-highlight-headers))))
 
 ;;;; *** Rmail Attributes and Keywords ***