changeset 88280:1549b185d6c6

(rmail-get-new-mail): Simplify.
author Henrik Enberg <henrik.enberg@telia.com>
date Mon, 23 Jan 2006 03:45:31 +0000
parents 8ca01eaf0be8
children 3c661fd46ca7
files lisp/mail/rmail.el
diffstat 1 files changed, 42 insertions(+), 53 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmail.el	Sun Jan 22 20:39:48 2006 +0000
+++ b/lisp/mail/rmail.el	Mon Jan 23 03:45:31 2006 +0000
@@ -1440,42 +1440,39 @@
 This function runs `rmail-get-new-mail-hook' before saving the
 updated file.  It returns t if it got any new messages."
   (interactive
-   (list (if current-prefix-arg
-	     (read-file-name "Get new mail from file: "))))
+   (list (when current-prefix-arg
+	   (read-file-name "Get new mail from file: "))))
   (run-hooks 'rmail-before-get-new-mail-hook)
-  ;; If the disk file has been changed from under us,
-  ;; revert to it before we get new mail.
+  ;; If the disk file has been changed from under us, revert to it
+  ;; before we get new mail.
   (unless (verify-visited-file-modtime (current-buffer))
     (find-file (buffer-file-name)))
-  (set-buffer rmail-buffer)
-  (widen)
-  ;; Get rid of all undo records for this buffer.
-  (unless (eq buffer-undo-list t)
-    (setq buffer-undo-list nil))
-  (let ((files (if file-name (list file-name) (rmail-get-inbox-files)))
-	(rmail-enable-multibyte (default-value 'enable-multibyte-characters))
-	found current-message)
-    (condition-case nil
-	(progn
-	  (let ((opoint (point))
-		(new-messages 0)
-		(delete-files ())
-		;; If buffer has not changed yet, and has not been saved yet,
-		;; don't replace the old backup file now.
-		(make-backup-files (and make-backup-files (buffer-modified-p)))
-		(buffer-read-only nil)
-		;; Don't make undo records for what we do in getting mail.
-		(buffer-undo-list t))
+  (with-current-buffer rmail-buffer
+    (widen)
+    ;; Get rid of all undo records for this buffer.
+    (unless (eq buffer-undo-list t)
+      (setq buffer-undo-list nil))
+    (let ((rmail-enable-multibyte (default-value 'enable-multibyte-characters))
+	  ;; If buffer has not changed yet, and has not been saved yet,
+	  ;; don't replace the old backup file now.
+	  (make-backup-files (and make-backup-files (buffer-modified-p)))
+	  current-message found)
+      (condition-case nil
+	  (let ((buffer-read-only nil)
+		(buffer-undo-list t)
+		(delete-files nil)
+		(new-messages 0))
 	    (save-excursion
 	      (save-restriction
 		(goto-char (point-max))
 		(narrow-to-region (point) (point))
 		;; Read in the contents of the inbox files, renaming
-		;; them as necessary, and adding to the list of files
-		;; to delete eventually.
+		;; them as necessary, and adding to the list of files to
+		;; delete eventually.
 		(if file-name
-		    (rmail-insert-inbox-text files nil)
-		  (setq delete-files (rmail-insert-inbox-text files t)))
+		    (rmail-insert-inbox-text (list file-name) nil)
+		  (setq delete-files (rmail-insert-inbox-text
+				      (rmail-get-inbox-files) t)))
 		;; Process newly found messages and save them into the
 		;; RMAIL file.
 		(unless (equal (point-min) (point-max))
@@ -1489,43 +1486,35 @@
 		  (save-buffer))
 		;; Delete the old files, now that the RMAIL file is
 		;; saved.
-		(rmail-delete-inbox-files delete-files)))
+		(when delete-files
+		  (rmail-delete-inbox-files delete-files))))
 	    (if (= new-messages 0)
-		(progn (goto-char opoint)
-		       (when (or file-name rmail-inbox-list)
-			 (message "(No new mail has arrived)")))
-	      ;; Make the first unseen message the current message
-	      ;; and update the summary buffer, if one exists.
+		(when (or file-name rmail-inbox-list)
+		  (message "(No new mail has arrived)"))
+	      ;; Process the new messages for spam using the integrated
+	      ;; spam filter.  The spam filter can mark messages for
+	      ;; deletion and can output a message.
 	      (setq current-message (rmail-first-unseen-message))
-	      (if (rmail-summary-exists)
-		  (with-current-buffer rmail-summary-buffer
-		    (rmail-update-summary)))
-	      ;; Process the new messages for spam using the
-	      ;; integrated spam filter.  The spam filter can mark
-	      ;; messages for deletion and can output a message.
-	      (if rmail-use-spam-filter
-		  ;; Loop through the new messages processing each
-		  ;; message for spam.
-		  (while (<= current-message rmail-total-messages)
-		    (rmail-spam-filter current-message)
-		    (setq current-message (1+ current-message))))
-
-	      ;; Position the mail cursor again.
+	      (when rmail-use-spam-filter
+		(while (<= current-message rmail-total-messages)
+		  (rmail-spam-filter current-message)
+		  (setq current-message (1+ current-message))))
+	      ;; Make the first unseen message the current message and
+	      ;; update the summary buffer, if one exists.
 	      (setq current-message (rmail-first-unseen-message))
 	      (if (rmail-summary-exists)
 		  (with-current-buffer rmail-summary-buffer
 		    (rmail-update-summary)
 		    (rmail-summary-goto-msg current-message))
 		(rmail-show-message current-message))
-
 	      ;; Run the after get new mail hook.
 	      (run-hooks 'rmail-after-get-new-mail-hook)
 	      (message "%d new message%s read"
 		       new-messages (if (= 1 new-messages) "" "s"))
-	      (setq found t)))
-	  found)
-      ;; Don't leave the buffer screwed up if we get a disk-full error.
-      (file-error (or found (rmail-show-message))))))
+	      (setq found t))
+	    found)
+	;; Don't leave the buffer screwed up if we get a disk-full error.
+	(file-error (or found (rmail-show-message)))))))
 
 (defun rmail-parse-url (file)
   "Parse the supplied URL. Return (list MAILBOX-NAME REMOTE PASSWORD GOT-PASSWORD)
@@ -1817,7 +1806,7 @@
 	      (let ((value (rmail-header-get-header header)))
 		(rmail-header-add-header
 		 header (mail-decode-encoded-word-string value))))))))))
-  
+
 ;;;; *** Rmail Message Formatting and Header Manipulation ***
 
 (defun rmail-clear-headers (&optional ignored-headers)