]> git.eshelyaron.com Git - emacs.git/commitdiff
(rmail-label-obarray): Deleted.
authorAlex Schroeder <alex@gnu.org>
Tue, 28 Feb 2006 09:27:33 +0000 (09:27 +0000)
committerAlex Schroeder <alex@gnu.org>
Tue, 28 Feb 2006 09:27:33 +0000 (09:27 +0000)
(rmail-attributes): Use an ordinary list of symbols.
(rmail-deleted-label): Use an ordinary symbol.
(rmail-keywords): Doc, initial value nil.
(rmail-keywords, rmail-keyword-init): Deleted defuns.
(rmail-attribute-p, rmail-keyword-p, rmail-make-label): Simplify.
(rmail-keyword-register-keywords, rmail-install-keyword):
Replaced.
(rmail-register-keywords, rmail-register-keyword): Replacements.
(rmail-add-label, rmail-kill-label): Call set-label with a symbol.
(rmail-read-label): Return a string.
(rmail-set-label): Rewrote. Call rmail-display-labels always.

lisp/mail/ChangeLog
lisp/mail/rmailkwd.el

index 808b892b6e6f6c1edadbb57ef934ce1be0b38b85..27c423d47b1a6523e3fc62eb554455ac68552d1e 100644 (file)
@@ -1,3 +1,30 @@
+2006-02-28  Alex Schroeder  <alex@gnu.org>
+
+       * rmailkwd.el (rmail-label-obarray): Deleted.
+       (rmail-attributes): Use an ordinary list of symbols.
+       (rmail-deleted-label): Use an ordinary symbol.
+       (rmail-keywords): Doc, initial value nil.
+       (rmail-keywords, rmail-keyword-init): Deleted defuns.
+       (rmail-attribute-p, rmail-keyword-p, rmail-make-label): Simplify.
+       (rmail-keyword-register-keywords, rmail-install-keyword):
+       Replaced.
+       (rmail-register-keywords, rmail-register-keyword): Replacements.
+       (rmail-add-label, rmail-kill-label): Call set-label with a symbol.
+       (rmail-read-label): Return a string.
+       (rmail-set-label): Rewrote. Call rmail-display-labels always.
+
+       * rmail.el (qp): No longer required.
+       (rmail-convert-file): Don't rmail-enable-multibyte.
+       (rmail-decode-mbox-format): Deleted.
+       (rmail-convert-mbox-format): No converting of qp headings, no
+       decoding of the message body.
+
+       (rmail-maybe-set-message-counters): Deleted.
+       (rmail-next-undeleted-message): Store original message until the
+       end instead of relying on rmail-current-message.
+
+       (rmail-process-new-messages): Use rmail-register-keywords.
+
 2006-02-17  Alex Schroeder  <alex@gnu.org>
 
        * rmailmm.el (rmail-mime-text-handler): Only downcase if charset
index da96390f7f305b98d3659c9650ec3c44dd9ab7d3..8c294a4b36dda610bef08b628c6c40aa0df2020a 100644 (file)
 (eval-when-compile
   (require 'mail-utils))
 
-(defvar rmail-label-obarray (make-vector 47 0))
-
 ;; Named list of symbols representing valid message attributes in RMAIL.
 
 (defconst rmail-attributes
-  (cons 'rmail-keywords
-       (mapcar (function (lambda (s) (intern s rmail-label-obarray)))
-               '("deleted" "answered" "filed" "forwarded" "unseen" "edited"
-                 "resent"))))
+  '(deleted answered filed forwarded unseen edited resent)
+  "Keywords with defined semantics used to label messages.
+These have a well-defined meaning to the RMAIL system.")
 
-(defconst rmail-deleted-label (intern "deleted" rmail-label-obarray))
+(defconst rmail-deleted-label 'deleted)
 
 ;; Named list of symbols representing valid message keywords in RMAIL.
 
-(defvar rmail-keywords)
+(defvar rmail-keywords nil
+  "Keywords used to label messages.
+These are all user-defined, unlike `rmail-attributes'.")
 \f
 ;;;; Low-level functions.
 
-;; Return a list of symbols for all the keywords (labels) recorded in
-;; this file's Labels.
-(defun rmail-keywords ()
-  "Return a list of all known keywords."
-  (or rmail-keywords (rmail-keyword-init)))
-
-(defun rmail-keyword-init ()
-  "Initialize the variable `rmail-keywords' to hold no keywords.
-The value is actually (nil), since (cdr rmail-keywords) is the
-actual list of keywords."
-  (setq rmail-keywords (cons 'rmail-keywords nil)))
-
 (defun rmail-attribute-p (s)
+  "Non-nil if S is a known attribute.
+See `rmail-attributes'."
   (let ((symbol (rmail-make-label s)))
-    (if (memq symbol (cdr rmail-attributes)) symbol)))
+    (memq symbol rmail-attributes)))
 
 (defun rmail-keyword-p (s)
-  "Non-nil if S is a known keyword for this Rmail file."
+  "Non-nil if S is a known keyword for this Rmail file.
+See `rmail-keywords'."
   (let ((symbol (rmail-make-label s)))
-    (if (memq symbol (cdr (rmail-keywords))) symbol)))
+    (memq symbol rmail-keywords)))
 
 (defun rmail-make-label (s &optional forcep)
   (cond ((symbolp s) s)
-       (forcep (intern (downcase s) rmail-label-obarray))
-       (t  (intern-soft (downcase s) rmail-label-obarray))))
-
-;;; (defun rmail-force-make-label (s)
-;;;   (intern (downcase s) rmail-label-obarray))
+       (forcep (intern (downcase s)))
+       (t  (intern-soft (downcase s)))))
 
 (defun rmail-quote-label-name (label)
   (regexp-quote (symbol-name (rmail-make-label label t))))
 
 ;;;###autoload
-(defun rmail-keyword-register-keywords (keyword-list)
-  "Add the strings in KEYWORD-LIST to `rmail-keywords'.
-Return a list of the keywords newly added (those that were
-not already known)."
-  (delq nil (mapcar 'rmail-install-keyword keyword-list)))
-
-;;; mbox: ready
-;; Add WORD to the list in the file's Labels option.
-;; Any keyword used for the first time needs this done.
-(defun rmail-install-keyword (word)
-  "Append WORD to the global list of keywords.  Ignore duplicates.
-Return WORD if it is a new entry, nil otherwise."
-  (let ((keyword (rmail-make-label word t))
-       (keywords (rmail-keywords)))
-    (if (not (or (rmail-attribute-p keyword)
-                (rmail-keyword-p keyword)))
-        (progn
-          (setcdr keywords (cons keyword (cdr keywords)))
-          keyword))))
+(defun rmail-register-keywords (words)
+  "Add the strings in WORDS to `rmail-keywords'."
+  (dolist (word words)
+    (rmail-register-keyword word)))
+
+(defun rmail-register-keyword (word)
+  "Append the string WORD to `rmail-keywords',
+unless it already is a keyword or an attribute."
+  (let ((keyword (rmail-make-label word t)))
+    (unless (or (rmail-attribute-p keyword)
+               (rmail-keyword-p keyword))
+      (setq rmail-keywords (cons keyword rmail-keywords)))))
 \f
 ;;;; Adding and removing message keywords.
 
@@ -123,14 +103,14 @@ Return WORD if it is a new entry, nil otherwise."
 (defun rmail-add-label (string)
   "Add LABEL to labels associated with current RMAIL message."
   (interactive (list (rmail-read-label "Add label")))
-  (rmail-set-label string t)
+  (rmail-set-label (rmail-make-label string) t)
   (rmail-display-labels))
 
 ;;;###autoload
 (defun rmail-kill-label (string)
   "Remove LABEL from labels associated with current RMAIL message."
   (interactive (list (rmail-read-label "Remove label" t)))
-  (rmail-set-label string nil))
+  (rmail-set-label (rmail-make-label string) nil))
 
 ;;;###autoload
 (defun rmail-read-label (prompt &optional existing)
@@ -157,13 +137,16 @@ message."
                       (concat prompt (if rmail-last-label
                                          (concat " (default " default "): ")
                                        ": "))
-                      rmail-label-obarray nil nil nil nil default)))))
-      (setq rmail-last-label (rmail-make-label result t)))))
+                      rmail-keywords nil nil nil nil default)))))
+      (setq rmail-last-label (rmail-make-label result t))
+      ;; return the string, not the symbol
+      result)))
 
 (defun rmail-set-label (l state &optional n)
-  "Add (STATE is non-nil) or remove (STATE is nil) label L in message N.
-If N is nil then use the current Rmail message.  The current buffer,
-possibly narrowed, displays a message."
+  "Add or remove label L in message N.
+The label L is added when STATE is non-nil, otherwise it is
+removed.  If N is nil then use the current Rmail message.  The
+current buffer, possibly narrowed, displays a message."
   (if (= rmail-total-messages 0)
       (error "No messages in this file"))
   (with-current-buffer rmail-buffer
@@ -171,16 +154,16 @@ possibly narrowed, displays a message."
     (save-restriction
       (widen)
       (narrow-to-region (rmail-desc-get-start n) (rmail-desc-get-end n))
-      (if (rmail-attribute-p l)
-          (rmail-set-attribute l state n)
-        ;; Make sure the keyword is registered.
-        (or (rmail-keyword-p l) (rmail-install-keyword l))
-        (let ((keyword (symbol-name l)))
-          (if state
-              (rmail-desc-add-keyword keyword n)
-            (rmail-desc-remove-keyword keyword n)))
-       ;; FIXME: handle redisplay in the summary buffer
-       (rmail-display-labels))))
+      ;; FIXME: we should move all string-using functions to symbols!
+      (let ((str (symbol-name l)))
+       (if (rmail-attribute-p l)
+           (rmail-set-attribute str state n)
+         ;; Make sure the keyword is registered.
+         (rmail-register-keyword l)
+         (if state
+             (rmail-desc-add-keyword str n)
+           (rmail-desc-remove-keyword str n))))))
+  (rmail-display-labels)
   ;; Deal with the summary buffer.
   (when rmail-summary-buffer
     (rmail-summary-update n)))