# HG changeset patch # User Richard M. Stallman # Date 851806613 0 # Node ID ce29455256996a7add256d566f28fbb7f73a403c # Parent 16e25f6a3725831e0da5203f9390169dd9725962 (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. diff -r 16e25f6a3725 -r ce2945525699 lisp/mail/rmail.el --- 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 ***