]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from gnus--rel--5.10
authorMiles Bader <miles@gnu.org>
Tue, 21 Aug 2007 04:52:22 +0000 (04:52 +0000)
committerMiles Bader <miles@gnu.org>
Tue, 21 Aug 2007 04:52:22 +0000 (04:52 +0000)
Patches applied:

 * gnus--rel--5.10  (patch 245)

   - Update from CVS

2007-08-17  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/gnus-art.el (gnus-article-summary-command-nosave)
   (gnus-article-read-summary-keys): Don't use 3rd arg of pop-to-buffer.

2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/gnus.el (gnus-maximum-newsgroup): New variable.

   * lisp/gnus/gnus-agent.el (gnus-agent-fetch-headers): Limit the range of articles
   according to gnus-maximum-newsgroup.

   * lisp/gnus/gnus-sum.el (gnus-articles-to-read, gnus-list-of-unread-articles)
   (gnus-list-of-read-articles, gnus-sequence-of-unread-articles): Limit
   the range of articles according to gnus-maximum-newsgroup.

2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>

   * man/gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.

Revision: emacs@sv.gnu.org/emacs--rel--22--patch-96

lisp/gnus/ChangeLog
lisp/gnus/gnus-agent.el
lisp/gnus/gnus-art.el
lisp/gnus/gnus-sum.el
lisp/gnus/gnus.el
man/ChangeLog
man/gnus.texi

index 7fd187a4aeb7580e88a2146288f4368c1bcdce1d..201b7fefdcb0d56d1fbf85b6b8a898c64f01f380 100644 (file)
@@ -1,3 +1,19 @@
+2007-08-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-art.el (gnus-article-summary-command-nosave)
+       (gnus-article-read-summary-keys): Don't use 3rd arg of pop-to-buffer.
+
+2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.el (gnus-maximum-newsgroup): New variable.
+
+       * gnus-agent.el (gnus-agent-fetch-headers): Limit the range of articles
+       according to gnus-maximum-newsgroup.
+
+       * gnus-sum.el (gnus-articles-to-read, gnus-list-of-unread-articles)
+       (gnus-list-of-read-articles, gnus-sequence-of-unread-articles): Limit
+       the range of articles according to gnus-maximum-newsgroup.
+
 2007-08-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * nntp.el (nntp-xref-number-is-evil): New server variable.
index 7b98b1e045ad3461fdc6baa8fb1e38f019cfcdb3..347b57983e65ec3e1190bb7e42aec82a8da52aa2 100644 (file)
@@ -1765,7 +1765,14 @@ article numbers will be returned."
                                (gnus-agent-find-parameter group
                                                           'agent-predicate)))))
          (articles (if fetch-all
-                       (gnus-uncompress-range (gnus-active group))
+                      (if gnus-maximum-newsgroup
+                          (let ((active (gnus-active group)))
+                            (gnus-uncompress-range
+                             (cons (max (car active)
+                                        (- (cdr active)
+                                           gnus-maximum-newsgroup -1))
+                                   (cdr active))))
+                        (gnus-uncompress-range (gnus-active group)))
                      (gnus-list-of-unread-articles group)))
          (gnus-decode-encoded-word-function 'identity)
         (gnus-decode-encoded-address-function 'identity)
index 6ccba3b108f3271f09cc34ca44f22395ee30e08b..696222e0043bf9461127c6fa0ac4fa3a7362d240 100644 (file)
@@ -5607,7 +5607,7 @@ not have a face in `gnus-article-boring-faces'."
   "Execute the last keystroke in the summary buffer."
   (interactive)
   (let (func)
-    (pop-to-buffer gnus-article-current-summary nil (not (featurep 'xemacs)))
+    (pop-to-buffer gnus-article-current-summary)
     (setq func (lookup-key (current-local-map) (this-command-keys)))
     (call-interactively func)))
 
@@ -5646,8 +5646,7 @@ not have a face in `gnus-article-boring-faces'."
            (member keys nosave-in-article))
        (let (func)
          (save-window-excursion
-           (pop-to-buffer gnus-article-current-summary
-                          nil (not (featurep 'xemacs)))
+           (pop-to-buffer gnus-article-current-summary)
            ;; We disable the pick minor mode commands.
            (let (gnus-pick-mode)
              (setq func (lookup-key (current-local-map) keys))))
@@ -5659,16 +5658,14 @@ not have a face in `gnus-article-boring-faces'."
            (call-interactively func)
            (setq new-sum-point (point)))
          (when (member keys nosave-but-article)
-           (pop-to-buffer gnus-article-buffer
-                          nil (not (featurep 'xemacs)))))
+           (pop-to-buffer gnus-article-buffer)))
       ;; These commands should restore window configuration.
       (let ((obuf (current-buffer))
            (owin (current-window-configuration))
            (opoint (point))
            win func in-buffer selected new-sum-start new-sum-hscroll)
        (cond (not-restore-window
-              (pop-to-buffer gnus-article-current-summary
-                             nil (not (featurep 'xemacs))))
+              (pop-to-buffer gnus-article-current-summary))
              ((setq win (get-buffer-window gnus-article-current-summary))
               (select-window win))
              (t
index 708689fef9e9ef875bfe2b72c7af14c3f1f73899..851ec88c96f1f4d191ac5ff1e335d3466250a035 100644 (file)
@@ -5472,7 +5472,13 @@ If SELECT-ARTICLES, only select those articles from GROUP."
              ;; articles in the group, or (if that's nil), the
              ;; articles in the cache.
              (or
-              (gnus-uncompress-range (gnus-active group))
+              (if gnus-maximum-newsgroup
+                  (let ((active (gnus-active group)))
+                    (gnus-uncompress-range
+                     (cons (max (car active)
+                                (- (cdr active) gnus-maximum-newsgroup -1))
+                           (cdr active))))
+                (gnus-uncompress-range (gnus-active group)))
               (gnus-cache-articles-in-group group))
            ;; Select only the "normal" subset of articles.
            (gnus-sorted-nunion
@@ -6534,23 +6540,26 @@ displayed, no centering will be performed."
   (let* ((read (gnus-info-read (gnus-get-info group)))
         (active (or (gnus-active group) (gnus-activate-group group)))
         (last (cdr active))
+        (bottom (if gnus-maximum-newsgroup
+                    (max (car active) (- last gnus-maximum-newsgroup -1))
+                  (car active)))
         first nlast unread)
     ;; If none are read, then all are unread.
     (if (not read)
-       (setq first (car active))
+       (setq first bottom)
       ;; If the range of read articles is a single range, then the
       ;; first unread article is the article after the last read
       ;; article.  Sounds logical, doesn't it?
       (if (and (not (listp (cdr read)))
-              (or (< (car read) (car active))
+              (or (< (car read) bottom)
                   (progn (setq read (list read))
                          nil)))
-         (setq first (max (car active) (1+ (cdr read))))
+         (setq first (max bottom (1+ (cdr read))))
        ;; `read' is a list of ranges.
        (when (/= (setq nlast (or (and (numberp (car read)) (car read))
                                  (caar read)))
                  1)
-         (setq first (car active)))
+         (setq first bottom))
        (while read
          (when first
            (while (< first nlast)
@@ -6575,7 +6584,12 @@ displayed, no centering will be performed."
         (gnus-list-range-difference
          (gnus-list-range-difference
           (gnus-sorted-complement
-           (gnus-uncompress-range active)
+           (gnus-uncompress-range
+            (if gnus-maximum-newsgroup
+                (cons (max (car active)
+                           (- (cdr active) gnus-maximum-newsgroup -1))
+                      (cdr active))
+              active))
            (gnus-list-of-unread-articles group))
           (cdr (assq 'dormant marked)))
          (cdr (assq 'tick marked))))))
@@ -6587,23 +6601,26 @@ displayed, no centering will be performed."
   (let* ((read (gnus-info-read (gnus-get-info group)))
         (active (or (gnus-active group) (gnus-activate-group group)))
         (last (cdr active))
+        (bottom (if gnus-maximum-newsgroup
+                    (max (car active) (- last gnus-maximum-newsgroup -1))
+                  (car active)))
         first nlast unread)
     ;; If none are read, then all are unread.
     (if (not read)
-       (setq first (car active))
+       (setq first bottom)
       ;; If the range of read articles is a single range, then the
       ;; first unread article is the article after the last read
       ;; article.  Sounds logical, doesn't it?
       (if (and (not (listp (cdr read)))
-              (or (< (car read) (car active))
+              (or (< (car read) bottom)
                   (progn (setq read (list read))
                          nil)))
-         (setq first (max (car active) (1+ (cdr read))))
+         (setq first (max bottom (1+ (cdr read))))
        ;; `read' is a list of ranges.
        (when (/= (setq nlast (or (and (numberp (car read)) (car read))
                                  (caar read)))
                  1)
-         (setq first (car active)))
+         (setq first bottom))
        (while read
          (when first
             (push (cons first nlast) unread))
index 0e8e9908cf4f80d2eb31f8d4605fb4f0023ea648..3f75bba6d1ccd610614a0ce36c995cd25af239a4 100644 (file)
@@ -1501,6 +1501,17 @@ If it is nil, no confirmation is required."
   :type '(choice (const :tag "No limit" nil)
                 integer))
 
+(defcustom gnus-maximum-newsgroup nil
+  "The maximum number of articles a newsgroup.
+If this is a number, old articles in a newsgroup exceeding this number
+are silently ignored.  If it is nil, no article is ignored.  Note that
+setting this variable to a number might prevent you from reading very
+old articles."
+  :group 'gnus-group-select
+  :version "22.2"
+  :type '(choice (const :tag "No limit" nil)
+                integer))
+
 (defcustom gnus-use-long-file-name (not (memq system-type '(usg-unix-v xenix)))
   "*Non-nil means that the default name of a file to save articles in is the group name.
 If it's nil, the directory form of the group name is used instead.
index 6c27e3b7bb0a34414639140f77eaec3bcba8760f..47109be64de6fdd8473d51a3a1a01ab711f4b32a 100644 (file)
@@ -1,3 +1,7 @@
+2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.
+
 2007-08-17  Eli Zaretskii  <eliz@gnu.org>
 
        * basic.texi (Position Info): Add index entry for face at point.
index 94144b65e3f75555a6865a9b8d258b5b2e506f09..7cabf6741029119ba607e12fa370be7476318bcb 100644 (file)
@@ -2153,6 +2153,24 @@ most recently will be fetched.
 @code{gnus-large-newsgroup}, but is only used for ephemeral
 newsgroups.
 
+@vindex gnus-maximum-newsgroup
+In groups in some news servers, there might be a big gap between a few
+very old articles that will never be expired and the recent ones.  In
+such a case, the server will return the data like @code{(1 . 30000000)}
+for the @code{LIST ACTIVE group} command, for example.  Even if there
+are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
+know it at first and prepares for getting 30000000 articles.  However,
+it will consume hundreds megabytes of memories and might make Emacs get
+stuck as the case may be.  If you use such news servers, set the
+variable @code{gnus-maximum-newsgroup} to a positive number.  The value
+means that Gnus ignores articles other than this number of the latest
+ones in every group.  For instance, the value 10000 makes Gnus get only
+the articles 29990001-30000000 (if the latest article number is 30000000
+in a group).  Note that setting this variable to a number might prevent
+you from reading very old articles.  The default value of the variable
+@code{gnus-maximum-newsgroup} is @code{nil}, which means Gnus never
+ignores old articles.
+
 @vindex gnus-select-group-hook
 @vindex gnus-auto-select-first
 @vindex gnus-auto-select-subject