Registry extra tracking bug fix: map references to group names.
[gnus] / lisp / gnus-registry.el
index 504e39a..3ab8400 100644 (file)
@@ -424,18 +424,21 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
            (gnus-grep-in-list
             sender
             gnus-registry-unfollowed-addresses))
-      (setq found
-            (loop for group
-                  in (registry-lookup-secondary-value db 'sender sender)
-
-                  when (gnus-registry-follow-group-p group)
-
+      (let ((groups (apply
+                     'append
+                     (mapcar
+                      (lambda (reference)
+                        (gnus-registry-get-id-key reference 'group))
+                      (registry-lookup-secondary-value db 'sender sender)))))
+        (setq found
+              (loop for group in groups
+                    when (gnus-registry-follow-group-p group)
                   do (gnus-message
                       ;; raise level of messaging if gnus-registry-track-extra
                       (if gnus-registry-track-extra 7 9)
                       "%s (extra tracking) traced sender '%s' to groups %s"
                       log-agent sender found)
-                  collect group))
+                  collect group)))
 
       ;; filter the found groups and return them
       ;; the found groups are NOT the full groups
@@ -446,22 +449,25 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
      ((and (memq 'subject gnus-registry-track-extra)
            subject
            (< gnus-registry-minimum-subject-length (length subject)))
-      (setq found
-            (loop for group
-                  in (registry-lookup-secondary-value db 'subject subject)
-
-                  when (gnus-registry-follow-group-p group)
-
-                  do (gnus-message
-                      ;; raise level of messaging if gnus-registry-track-extra
-                      (if gnus-registry-track-extra 7 9)
-                      "%s (extra tracking) traced subject '%s' to groups %s"
-                      log-agent subject found)
-                  collect group))
+      (let ((groups (apply
+                     'append
+                     (mapcar
+                      (lambda (reference)
+                        (gnus-registry-get-id-key reference 'group))
+                      (registry-lookup-secondary-value db 'subject subject)))))
+        (setq found
+              (loop for group in groups
+                    when (gnus-registry-follow-group-p group)
+                    do (gnus-message
+                        ;; raise level of messaging if gnus-registry-track-extra
+                        (if gnus-registry-track-extra 7 9)
+                        "%s (extra tracking) traced subject '%s' to groups %s"
+                        log-agent subject found)
+                    collect group))
       ;; filter the found groups and return them
       ;; the found groups are NOT the full groups
       (setq found (gnus-registry-post-process-groups
-                   "subject" subject found))))
+                   "subject" subject found)))))
     ;; after the (cond) we extract the actual value safely
     (car-safe found)))