* registry.el (registry-db): Don't oset-default an instance slot.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 11 Mar 2015 22:09:25 +0000 (22:09 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Wed, 11 Mar 2015 22:09:25 +0000 (22:09 +0000)
* gnus-registry.el (gnus-registry-handle-action)
(gnus-registry-post-process-groups): Don't add-to-list on a local var.
(gnus-registry-keywords): Make it do something.
(gnus-registry-import-eld): Remove unused var `new-entry'.
(gnus-registry-action): Remove unused var `to-name'.
(gnus-registry-make-db): Prefer `make-instance' to avoid
compiler warnings.
(gnus-registry-load, gnus-registry-fixup-registry): Avoid `oset'.

lisp/ChangeLog
lisp/gnus-registry.el
lisp/registry.el

index 8d3b450..62baeb5 100644 (file)
@@ -1,3 +1,17 @@
+2015-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * gnus-registry.el (gnus-registry-handle-action)
+       (gnus-registry-post-process-groups): Don't add-to-list on a local var.
+       (gnus-registry-keywords): Make it do something.
+       (gnus-registry-import-eld): Remove unused var `new-entry'.
+       (gnus-registry-action): Remove unused var `to-name'.
+       (gnus-registry-make-db): Prefer `make-instance' to avoid
+       compiler warnings.
+       (gnus-registry-load, gnus-registry-fixup-registry): Avoid `oset'.
+
+       * registry.el (registry-db): Don't oset-default an instance-allocated
+       slot.
+
 2015-03-10  Glenn Morris  <rgm@gnu.org>
 
        * message.el (message-valid-fqdn-regexp): Bump :version for
 2015-03-10  Glenn Morris  <rgm@gnu.org>
 
        * message.el (message-valid-fqdn-regexp): Bump :version for
index ac903a2..1d5887d 100644 (file)
@@ -277,16 +277,16 @@ This can slow pruning down.  Set to nil to perform no sorting."
 (defun gnus-registry-fixup-registry (db)
   (when db
     (let ((old (oref db tracked)))
 (defun gnus-registry-fixup-registry (db)
   (when db
     (let ((old (oref db tracked)))
-      (oset db precious
+      (setf (oref db precious)
             (append gnus-registry-extra-entries-precious
                     '()))
             (append gnus-registry-extra-entries-precious
                     '()))
-      (oset db max-size
+      (setf (oref db max-size)
             (or gnus-registry-max-entries
                 most-positive-fixnum))
             (or gnus-registry-max-entries
                 most-positive-fixnum))
-      (oset db prune-factor
+      (setf (oref db prune-factor)
             (or gnus-registry-prune-factor
                0.1))
             (or gnus-registry-prune-factor
                0.1))
-      (oset db tracked
+      (setf (oref db tracked)
             (append gnus-registry-track-extra
                     '(mark group keyword)))
       (when (not (equal old (oref db tracked)))
             (append gnus-registry-track-extra
                     '(mark group keyword)))
       (when (not (equal old (oref db tracked)))
@@ -297,14 +297,13 @@ This can slow pruning down.  Set to nil to perform no sorting."
 (defun gnus-registry-make-db (&optional file)
   (interactive "fGnus registry persistence file: \n")
   (gnus-registry-fixup-registry
 (defun gnus-registry-make-db (&optional file)
   (interactive "fGnus registry persistence file: \n")
   (gnus-registry-fixup-registry
-   (registry-db
-    "Gnus Registry"
-    :file (or file gnus-registry-cache-file)
-    ;; these parameters are set in `gnus-registry-fixup-registry'
-    :max-size most-positive-fixnum
-    :version registry-db-version
-    :precious nil
-    :tracked nil)))
+   (make-instance 'registry-db
+                  :file (or file gnus-registry-cache-file)
+                  ;; these parameters are set in `gnus-registry-fixup-registry'
+                  :max-size most-positive-fixnum
+                  :version registry-db-version
+                  :precious nil
+                  :tracked nil)))
 
 (defvar gnus-registry-db (gnus-registry-make-db)
   "The article registry by Message ID.  See `registry-db'.")
 
 (defvar gnus-registry-db (gnus-registry-make-db)
   "The article registry by Message ID.  See `registry-db'.")
@@ -336,7 +335,7 @@ This is not required after changing `gnus-registry-cache-file'."
                           old-file-name file)))
             (progn
               (gnus-registry-read old-file-name)
                           old-file-name file)))
             (progn
               (gnus-registry-read old-file-name)
-              (oset gnus-registry-db :file file)
+              (setf (oref gnus-registry-db :file) file)
               (gnus-message 1 "Registry filename changed to %s" file))
           (gnus-registry-remake-db t))))
       (error
               (gnus-message 1 "Registry filename changed to %s" file))
           (gnus-registry-remake-db t))))
       (error
@@ -398,8 +397,7 @@ This is not required after changing `gnus-registry-cache-file'."
          (sender (nth 0 (gnus-registry-extract-addresses
                          (mail-header-from data-header))))
          (from (gnus-group-guess-full-name-from-command-method from))
          (sender (nth 0 (gnus-registry-extract-addresses
                          (mail-header-from data-header))))
          (from (gnus-group-guess-full-name-from-command-method from))
-         (to (if to (gnus-group-guess-full-name-from-command-method to) nil))
-         (to-name (if to to "the Bit Bucket")))
+         (to (if to (gnus-group-guess-full-name-from-command-method to) nil)))
     (gnus-message 7 "Gnus registry: article %s %s from %s to %s"
                   id (if method "respooling" "going") from to)
 
     (gnus-message 7 "Gnus registry: article %s %s from %s to %s"
                   id (if method "respooling" "going") from to)
 
@@ -455,7 +453,8 @@ This is not required after changing `gnus-registry-cache-file'."
         (let ((new (or (assq (first kv) entry)
                        (list (first kv)))))
           (dolist (toadd (cdr kv))
         (let ((new (or (assq (first kv) entry)
                        (list (first kv)))))
           (dolist (toadd (cdr kv))
-            (add-to-list 'new toadd t))
+            (unless (member toadd new)
+              (setq new (append new (list toadd)))))
           (setq entry (cons new
                             (assq-delete-all (first kv) entry))))))
     (gnus-message 10 "Gnus registry: new entry for %s is %S"
           (setq entry (cons new
                             (assq-delete-all (first kv) entry))))))
     (gnus-message 10 "Gnus registry: new entry for %s is %S"
@@ -699,7 +698,7 @@ possible.  Uses `gnus-registry-split-strategy'."
                  10
                  "%s: stripped group %s to %s"
                  log-agent group short-name))
                  10
                  "%s: stripped group %s to %s"
                  log-agent group short-name))
-              (add-to-list 'out short-name))
+              (pushnew short-name out :test #'equal))
           ;; else...
           (gnus-message
            7
           ;; else...
           (gnus-message
            7
@@ -785,8 +784,9 @@ Overrides existing keywords with FORCE set non-nil."
           (gnus-registry-set-id-key id 'keyword words)))))
 
 (defun gnus-registry-keywords ()
           (gnus-registry-set-id-key id 'keyword words)))))
 
 (defun gnus-registry-keywords ()
-  (let ((table (registry-lookup-secondary gnus-registry-db 'keyword)))
-    (when table (maphash (lambda (k v) k) table))))
+  (let ((table (registry-lookup-secondary gnus-registry-db 'keyword))
+        (ks ()))
+    (when table (maphash (lambda (k _v) (push k ks)) table) ks)))
 
 (defun gnus-registry-find-keywords (keyword)
   (interactive (list
 
 (defun gnus-registry-find-keywords (keyword)
   (interactive (list
@@ -1104,7 +1104,6 @@ only the last one's marks are returned."
         (setq entry (car-safe old)
               old (cdr-safe old))
         (let* ((id (car-safe entry))
         (setq entry (car-safe old)
               old (cdr-safe old))
         (let* ((id (car-safe entry))
-               (new-entry (gnus-registry-get-or-make-entry id))
                (rest (cdr-safe entry))
                (groups (loop for p in rest
                              when (stringp p)
                (rest (cdr-safe entry))
                (groups (loop for p in rest
                              when (stringp p)
index 27133db..f26101f 100644 (file)
             :type (or null float)
             :documentation "The registry version.")
    (max-size :initarg :max-size
             :type (or null float)
             :documentation "The registry version.")
    (max-size :initarg :max-size
-             ;; :initform most-positive-fixnum ;; see below
+            ;; EIEIO's :initform is not 100% compatible with CLOS in
+            ;; that if the form is an atom, it assumes it's constant
+            ;; value rather than an expression, so in order to get the value
+            ;; of `most-positive-fixnum', we need to use an
+            ;; expression that's not just a symbol.
+             :initform (symbol-value 'most-positive-fixnum)
              :type integer
              :custom integer
              :documentation "The maximum number of registry entries.")
              :type integer
              :custom integer
              :documentation "The maximum number of registry entries.")
    (data :initarg :data
          :type hash-table
          :documentation "The data hashtable.")))
    (data :initarg :data
          :type hash-table
          :documentation "The data hashtable.")))
-;; Do this separately, since defclass doesn't allow expressions in :initform.
-(oset-default 'registry-db max-size most-positive-fixnum)
 
 (defmethod initialize-instance :BEFORE ((this registry-db) slots)
   "Check whether a registry object needs to be upgraded."
 
 (defmethod initialize-instance :BEFORE ((this registry-db) slots)
   "Check whether a registry object needs to be upgraded."