;;;###autoload
(defun rmail (&optional file-name-arg)
"Read and edit incoming mail.
-Moves messages into file named by rmail-file-name (a babyl format file)
+Moves messages into file named by `rmail-file-name' (a babyl format file)
and edits that file in RMAIL Mode.
Type \\[describe-mode] once editing that file, for a list of RMAIL commands.
(rmail-set-message-counters)
(rmail-show-message))))
(let ((existing-unseen (rmail-first-unseen-message)))
- (rmail-get-new-mail)
+ (or file-name-arg
+ (rmail-get-new-mail))
;; Show the first unseen message, which might be from a previous session
;; or might have been just read in by rmail-get-new-mail. Must
;; determine already unseen messages first, as rmail-get-new-mail
;; Delete the "From ..." line, creating various other headers with
;; information from it if they don't already exist. Now puts the
-;; original line into a mail-from: header line for debugging.
+;; original line into a mail-from: header line for debugging and for
+;; use by the rmail-output function.
(defun rmail-nuke-pinhead-header ()
(save-excursion
(save-restriction
(insert ?1)
(forward-line 1)
(let ((case-fold-search t))
- (if (looking-at "Summary-line: ")
- (forward-line 1)))
+ (while (looking-at "Summary-line:\\|Mail-From:")
+ (forward-line 1)))
(if (looking-at "\\*\\*\\* EOOH \\*\\*\\*\n")
(delete-region (point)
(progn (forward-line 1) (point))))
(insert ?0)
(forward-line 1)
(let ((case-fold-search t))
- (if (looking-at "Summary-Line:")
- (forward-line 1)))
+ (while (looking-at "Summary-Line:\\|Mail-From:")
+ (forward-line 1)))
(insert "*** EOOH ***\n")
(forward-char -1)
(search-forward "\n*** EOOH ***\n")
(defun rmail-next-undeleted-message (n)
"Show following non-deleted message.
With prefix arg N, moves forward N non-deleted messages,
-or backward if N is negative."
+or backward if N is negative.
+
+Returns t if a new message is being shown, nil otherwise."
(interactive "p")
(rmail-maybe-set-message-counters)
(let ((lastwin rmail-current-message)
(if (not (rmail-message-deleted-p current))
(setq lastwin current n (1+ n))))
(if (/= lastwin rmail-current-message)
- (rmail-show-message lastwin))
- (if (< n 0)
- (message "No previous nondeleted message"))
- (if (> n 0)
- (message "No following nondeleted message"))))
+ (progn (rmail-show-message lastwin)
+ t)
+ (if (< n 0)
+ (message "No previous nondeleted message"))
+ (if (> n 0)
+ (message "No following nondeleted message"))
+ nil)))
(defun rmail-previous-undeleted-message (n)
"Show previous non-deleted message.
(defun rmail-delete-forward (&optional backward)
"Delete this message and move to next nondeleted one.
Deleted messages stay in the file until the \\[rmail-expunge] command is given.
-With prefix argument, delete and move backward."
+With prefix argument, delete and move backward.
+
+Returns t if a new message is displayed after the delete, or nil otherwise."
(interactive "P")
(rmail-set-attribute "deleted" t)
(let ((del-msg rmail-current-message))
(save-excursion
(set-buffer rmail-summary-buffer)
(rmail-summary-mark-deleted del-msg)))
- (rmail-next-undeleted-message (if backward -1 1))
- (rmail-maybe-display-summary)))
+ (prog1 (rmail-next-undeleted-message (if backward -1 1))
+ (rmail-maybe-display-summary))))
(defun rmail-delete-backward ()
"Delete this message and move to previous nondeleted one.
(insert "Resent-Date: " (mail-rfc822-date) "\n")
;;>> Insert resent-to: and bcc if need be.
(let ((before (point)))
+ (if mail-self-blind
+ (insert "Resent-Bcc: " (user-login-name) "\n"))
(insert "Resent-To: " (if (stringp address)
address
(mapconcat 'identity address ",\n\t"))
"^ *---+ +Returned message +---+ *$\\|"
"^ *---+ +Original message +---+ *$\\|"
"^ *--+ +begin message +--+ *$\\|"
+ "^ *---+ +Original message follows +---+ *$\\|"
"^|? *---+ +Message text follows: +---+ *|?$"))
(defun rmail-retry-failure ()