changeset 101951:22a84dde5ca4

(rmail-read-label): Don't scan for labels if the summary exists, since it's already done.
author Glenn Morris <rgm@gnu.org>
date Thu, 12 Feb 2009 03:28:53 +0000
parents 01bb1ca54bd5
children 3fadcabd5931
files lisp/mail/rmailkwd.el
diffstat 1 files changed, 18 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmailkwd.el	Thu Feb 12 03:28:37 2009 +0000
+++ b/lisp/mail/rmailkwd.el	Thu Feb 12 03:28:53 2009 +0000
@@ -64,20 +64,24 @@
 Completions are chosen from `rmail-label-obarray'.  The default
 is `rmail-last-label', if that is non-nil.  Updates `rmail-last-label'
 according to the choice made, and returns a symbol."
-  (let* ((old (rmail-get-keywords))
-	(result
-	 (progn
-	   ;; Offer any existing labels as choices.
-	   (if old (mapc 'rmail-make-label (split-string old ", ")))
-	   (completing-read (concat prompt
-				    (if rmail-last-label
-					(concat " (default "
-						(symbol-name rmail-last-label)
-						"): ")
-				      ": "))
-			    rmail-label-obarray
-			    nil
-			    nil))))
+  (let* ((old nil)
+	 (result
+	  (progn
+	    ;; If the summary exists, we've already read all the
+	    ;; existing labels.  If not, read the ones in this message.
+	    (or (eq major-mode 'rmail-summary-mode)
+		(rmail-summary-exists)
+		(and (setq old (rmail-get-keywords))
+		     (mapc 'rmail-make-label (split-string old ", "))))
+	    (completing-read (concat prompt
+				     (if rmail-last-label
+					 (concat " (default "
+						 (symbol-name rmail-last-label)
+						 "): ")
+				       ": "))
+			     rmail-label-obarray
+			     nil
+			     nil))))
     (if (string= result "")
 	rmail-last-label
       (setq rmail-last-label (rmail-make-label result)))))