changeset 101937:e6f035f6e27e

(rmail-make-label): Doc fix. (rmail-read-label): Add current labels to completion list. (Bug#2222) (rmail-set-label): Use `or'.
author Glenn Morris <rgm@gnu.org>
date Wed, 11 Feb 2009 04:01:35 +0000
parents 696b3e7c297b
children 0c901689da73
files lisp/mail/rmailkwd.el
diffstat 1 files changed, 17 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmailkwd.el	Wed Feb 11 03:59:52 2009 +0000
+++ b/lisp/mail/rmailkwd.el	Wed Feb 11 04:01:35 2009 +0000
@@ -39,7 +39,7 @@
       rmail-attr-array)
 
 (defun rmail-make-label (s)
-  "Convert string S to a downcased symbol in `rmail-label-obarray'."
+  "Intern string S as a downcased symbol in `rmail-label-obarray'."
   (intern (downcase s) rmail-label-obarray))
 
 ;;;###autoload
@@ -64,16 +64,20 @@
 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 ((result
-	 (completing-read (concat prompt
-				  (if rmail-last-label
-				      (concat " (default "
-					      (symbol-name rmail-last-label)
-					      "): ")
-				    ": "))
-			  rmail-label-obarray
-			  nil
-			  nil)))
+  (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))))
     (if (string= result "")
 	rmail-last-label
       (setq rmail-last-label (rmail-make-label result)))))
@@ -86,7 +90,7 @@
   (or (stringp label) (setq label (symbol-name label)))
   (with-current-buffer rmail-buffer
     (rmail-maybe-set-message-counters)
-    (if (not msg) (setq msg rmail-current-message))
+    (or msg (setq msg rmail-current-message))
     ;; Force recalculation of summary for this message.
     (aset rmail-summary-vector (1- msg) nil)
     (let (attr-index)
@@ -123,8 +127,7 @@
 			before)
 		       (t (concat before ", " after))))))))))
     (if (rmail-summary-exists)
-	(rmail-select-summary
-	 (rmail-summary-update-line msg)))
+	(rmail-select-summary (rmail-summary-update-line msg)))
     (if (= msg rmail-current-message)
 	(rmail-display-labels))))