emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 7bd6dd0: Make Gnus cache work with nnselect


From: Andrew G Cohen
Subject: master 7bd6dd0: Make Gnus cache work with nnselect
Date: Wed, 9 Sep 2020 05:13:40 -0400 (EDT)

branch: master
commit 7bd6dd065b7a63ed800fab1993ecb8052f3924b4
Author: Andrew G Cohen <cohen@andy.bu.edu>
Commit: Andrew G Cohen <cohen@andy.bu.edu>

    Make Gnus cache work with nnselect
    
    * lisp/gnus/gnus-cache.el (gnus-cache-possibly-enter-article)
    (gnus-cache-possibly-remove-articles)
    (gnus-cache-possibly-remove-article): Use originating article info for
    nnselect groups.
---
 lisp/gnus/gnus-cache.el | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 7ca3bf1..c31d97d 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -93,6 +93,8 @@ it's not cached."
 
 (autoload 'nnml-generate-nov-databases-directory "nnml")
 (autoload 'nnvirtual-find-group-art "nnvirtual")
+(autoload 'nnselect-article-group "nnselect")
+(autoload 'nnselect-article-number  "nnselect")
 
 
 
@@ -158,8 +160,12 @@ it's not cached."
          (file-name-coding-system nnmail-pathname-coding-system))
       ;; If this is a virtual group, we find the real group.
       (when (gnus-virtual-group-p group)
-       (let ((result (nnvirtual-find-group-art
-                      (gnus-group-real-name group) article)))
+       (let ((result (if (gnus-nnselect-group-p group)
+                         (with-current-buffer gnus-summary-buffer
+                           (cons (nnselect-article-group article)
+                                 (nnselect-article-number article)))
+                       (nnvirtual-find-group-art
+                        (gnus-group-real-name group) article))))
          (setq group (car result)
                number (cdr result))))
       (when (and number
@@ -232,8 +238,14 @@ it's not cached."
     (let ((arts gnus-cache-removable-articles)
          ga)
       (while arts
-       (when (setq ga (nnvirtual-find-group-art
-                       (gnus-group-real-name gnus-newsgroup-name) (pop arts)))
+       (when (setq ga
+                   (if (gnus-nnselect-group-p gnus-newsgroup-name)
+                       (with-current-buffer gnus-summary-buffer
+                         (let ((article (pop arts)))
+                           (cons (nnselect-article-group article)
+                                 (nnselect-article-number article))))
+                     (nnvirtual-find-group-art
+                      (gnus-group-real-name gnus-newsgroup-name) (pop arts))))
          (let ((gnus-cache-removable-articles (list (cdr ga)))
                (gnus-newsgroup-name (car ga)))
            (gnus-cache-possibly-remove-articles-1)))))
@@ -467,8 +479,12 @@ Returns the list of articles removed."
        (file-name-coding-system nnmail-pathname-coding-system))
     ;; If this is a virtual group, we find the real group.
     (when (gnus-virtual-group-p group)
-      (let ((result (nnvirtual-find-group-art
-                    (gnus-group-real-name group) article)))
+      (let ((result (if (gnus-nnselect-group-p group)
+                       (with-current-buffer gnus-summary-buffer
+                         (cons (nnselect-article-group article)
+                               (nnselect-article-number article)))
+                     (nnvirtual-find-group-art
+                      (gnus-group-real-name group) article))))
        (setq group (car result)
              number (cdr result))))
     (setq file (gnus-cache-file-name group number))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]