emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r101717: Merge changes made in Gnus t


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r101717: Merge changes made in Gnus trunk.
Date: Fri, 01 Oct 2010 23:08:25 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 101717
author: Gnus developers
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Fri 2010-10-01 23:08:25 +0000
message:
  Merge changes made in Gnus trunk.
  
  gnus-registry.el: Fix and extend header docs.  Move the nnregistry feature 
check.
  nnimap.el (nnimap-update-info): Ignore groups that have no UIDNEXT values.
  nnimap.el: Implement nnimap-request-newgroups.
  gnus-group.el (gnus-group-completing-read): Return the symbol name, not the 
value from the collection.
  nnimap.el: Don't error out on empty non-UIDNEXT groups.
  nnmail.el (nnmail-article-group): Allow using the fancy split method directly.
  gnus.el (gnus-continuum-version): Make inactive, since it doesn't really 
message anything to the user.
  gnus-msg.el (gnus-summary-resend-message): When resending, don't externalize 
attachments.
  gnus.el (gnus-large-newsgroup): Mention gnus-large-ephemeral-newsgroup.
  gnus-sum.el (gnus-summary-scroll-up): Add more documentation.
  message.el (message-shorten-references): Comment on the number "21".
  mm-encode.el (mm-content-transfer-encoding-defaults): Try to make the 
documentation clearer.
  ChangeLog: jidanni -> Dan Jacobson.
  nnmbox.el (nnmbox-read-mbox): Mark buffer for deletion on Gnus exit.
  gnus-sum.el, gnus-win.el: Change the `h' command to only show the article 
buffer.
  gnus-art.el (gnus-summary-save-in-file, gnus-summary-save-in-rmail): Use 
with-current-buffer instead of gnus-eval-in-buffer-window to avoid popping up 
frames.
  gnus-sum.el (gnus-summary-clear-local-variables): Removed.
  gnus-async.el (gnus-async-delete-prefetched-entry): Remove from hash table, 
too.
  gnus-async.el: Try to keep the async hash table size reasonable.
  nndoc.el (nndoc-type-alist): Do babyl before mime-parts.
  gnus-start.el (gnus-check-bogus-newsgroups): Say how many groups we're being 
queried about.
modified:
  doc/misc/gnus.texi
  lisp/gnus/ChangeLog
  lisp/gnus/gnus-art.el
  lisp/gnus/gnus-async.el
  lisp/gnus/gnus-group.el
  lisp/gnus/gnus-msg.el
  lisp/gnus/gnus-registry.el
  lisp/gnus/gnus-start.el
  lisp/gnus/gnus-sum.el
  lisp/gnus/gnus-win.el
  lisp/gnus/gnus.el
  lisp/gnus/mailcap.el
  lisp/gnus/message.el
  lisp/gnus/mm-encode.el
  lisp/gnus/nndoc.el
  lisp/gnus/nnimap.el
  lisp/gnus/nnmail.el
  lisp/gnus/nnmbox.el
=== modified file 'doc/misc/gnus.texi'
--- a/doc/misc/gnus.texi        2010-10-01 00:25:50 +0000
+++ b/doc/misc/gnus.texi        2010-10-01 23:08:25 +0000
@@ -9477,6 +9477,14 @@
 corresponding regular expression in @code{gnus-article-banner-alist} is
 used.
 
+For instance:
+
address@hidden
+(setq gnus-article-banner-alist
+      ((googleGroups .
+       "^\n*--~--~---------\\(.+\n\\)+")))
address@hidden lisp
+
 Regardless of a group, you can hide things like advertisements only when
 the sender of an article has a certain mail address specified in
 @code{gnus-article-address-banner-alist}.
@@ -15102,6 +15110,9 @@
 message.  The function should return a list of group names that it
 thinks should carry this mail message.
 
+This variable can also be a fancy split method.  See @xref{Fancy Mail
+Splitting} for the syntax.
+
 Note that the mail back ends are free to maul the poor, innocent,
 incoming headers all they want to.  They all add @code{Lines} headers;
 some add @code{X-Gnus-Group} headers; most rename the Unix mbox

=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2010-10-01 13:33:03 +0000
+++ b/lisp/gnus/ChangeLog       2010-10-01 23:08:25 +0000
@@ -1,5 +1,83 @@
 2010-10-01  Lars Magne Ingebrigtsen  <address@hidden>
 
+       * gnus-start.el (gnus-check-bogus-newsgroups): Say how many groups
+       we're being queried about.  Suggested by Dan Jacobson.
+
+       * nndoc.el (nndoc-type-alist): Do babyl before mime-parts.  Suggested
+       by Jason Eisner.
+
+       * gnus-async.el (gnus-async-delete-prefetched-entry): Remove from hash
+       table, too.  Suggested by Stefan Wiens.
+       (gnus-async-prefetched-article-entry): Use intern-soft to avoid growing
+       the table unnecessary.  Suggested by Stefan Wiens.
+
+       * gnus-sum.el (gnus-summary-clear-local-variables): This is probably no
+       longer needed, and probably doesn't work either, as pointed out by
+       Stefan Wiens.
+       (gnus-summary-exit): Remove call to the clearing function.
+       (gnus-summary-exit-no-update): Ditto.
+
+       * gnus-art.el (gnus-summary-save-in-file): Use with-current-buffer
+       instead of gnus-eval-in-buffer-window to avoid popping up frames.
+       Reported by Stefan Monnier.
+       (gnus-summary-save-in-rmail): Ditto.
+
+       * gnus-sum.el (gnus-summary-select-article-buffer): Show only the
+       article buffer, instead of both the article buffer and the summary
+       buffer.  Sort of suggested by Dan Jacobson.
+
+       * gnus-win.el (gnus-buffer-configuration): Add an only-article spec.
+
+       * nnmbox.el (nnmbox-read-mbox): Mark buffer for deletion on Gnus exit.
+       Suggested by Dan Jacobson.
+
+       * mm-encode.el (mm-content-transfer-encoding-defaults): Try to make the
+       documentation clearer.
+
+       * message.el (message-shorten-references): Comment on the number "21".
+       Suggested by Stefan Monnier.
+
+       * gnus-sum.el (gnus-summary-scroll-up): Add more documentation.
+       Suggested by Dan Jacobson.
+
+       * gnus.el (gnus-large-newsgroup): Mention
+       gnus-large-ephemeral-newsgroup.  Suggested by Dan Jacobson.
+
+       * gnus-msg.el (gnus-summary-resend-message): When resending, don't
+       externalize attachments.  Bug reported by Steve Wen.
+
+       * gnus.el (gnus-continuum-version): Make inactive, since it doesn't
+       really message anything to the user.
+
+       * nnmail.el (nnmail-article-group): Allow using the fancy split method
+       directly.
+
+       * nnimap.el (nnimap-request-group): Low higher than high to signal no
+       messages in empty groups.
+
+2010-10-01  Ted Zlatanov  <address@hidden>
+
+       * nnimap.el (nnimap-request-group): Don't bug out when there's an empty
+       non-UIDNEXT group.
+
+2010-10-01  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * gnus-group.el (gnus-group-completing-read): Return the symbol name,
+       not the value from the collection.
+
+       * nnimap.el (nnimap-update-info): Ignore groups that have no UIDNEXT
+       values.  This sometimes happens on some groups that have no info.
+       (nnimap-request-newgroups): New function.
+
+2010-10-01  Teodor Zlatanov  <address@hidden>
+
+       * gnus-registry.el (gnus-registry-install-nnregistry): Move the feature
+       check into `gnus-registry-initialize'.
+       (gnus-registry-initialize): Ditto.
+       Fix and extend header docs.
+
+2010-10-01  Lars Magne Ingebrigtsen  <address@hidden>
+
        * gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid
        regexp backtrace overflows.
 

=== modified file 'lisp/gnus/gnus-art.el'
--- a/lisp/gnus/gnus-art.el     2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/gnus-art.el     2010-10-01 23:08:25 +0000
@@ -3958,7 +3958,7 @@
                  "Save %s in rmail file" filename
                  gnus-rmail-save-name gnus-newsgroup-name
                  gnus-current-headers 'gnus-newsgroup-last-rmail))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
+  (with-current-buffer gnus-save-article-buffer
     (save-excursion
       (save-restriction
        (widen)
@@ -3976,7 +3976,7 @@
                  "Save %s in Unix mail file" filename
                  gnus-mail-save-name gnus-newsgroup-name
                  gnus-current-headers 'gnus-newsgroup-last-mail))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
+  (with-current-buffer gnus-save-article-buffer
     (save-excursion
       (save-restriction
        (widen)
@@ -3997,7 +3997,7 @@
                  "Save %s in file" filename
                  gnus-file-save-name gnus-newsgroup-name
                  gnus-current-headers 'gnus-newsgroup-last-file))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
+  (with-current-buffer gnus-save-article-buffer
     (save-excursion
       (save-restriction
        (widen)
@@ -4029,7 +4029,7 @@
                  "Save %s body in file" filename
                  gnus-file-save-name gnus-newsgroup-name
                  gnus-current-headers 'gnus-newsgroup-last-file))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
+  (with-current-buffer gnus-save-article-buffer
     (save-excursion
       (save-restriction
        (widen)
@@ -4108,7 +4108,7 @@
       (if default
          (setq command default)
        (error "A command is required")))
-    (gnus-eval-in-buffer-window save-buffer
+    (with-current-buffer save-buffer
       (save-restriction
        (widen)
        (shell-command-on-region (point-min) (point-max) command nil)))

=== modified file 'lisp/gnus/gnus-async.el'
--- a/lisp/gnus/gnus-async.el   2010-09-18 10:02:19 +0000
+++ b/lisp/gnus/gnus-async.el   2010-10-01 23:08:25 +0000
@@ -316,7 +316,8 @@
     (set-marker (caddr entry) nil))
   (gnus-async-with-semaphore
     (setq gnus-async-article-alist
-         (delq entry gnus-async-article-alist))))
+         (delq entry gnus-async-article-alist))
+    (unintern (car entry) gnus-async-hashtb)))
 
 (defun gnus-async-prefetch-remove-group (group)
   "Remove all articles belonging to GROUP from the prefetch buffer."
@@ -332,8 +333,8 @@
   "Return the entry for ARTICLE in GROUP if it has been prefetched."
   (let ((entry (save-excursion
                 (gnus-async-set-buffer)
-                (assq (intern (format "%s-%d" group article)
-                              gnus-async-hashtb)
+                (assq (intern-soft (format "%s-%d" group article)
+                                   gnus-async-hashtb)
                       gnus-async-article-alist))))
     ;; Perhaps something has emptied the buffer?
     (if (and entry

=== modified file 'lisp/gnus/gnus-group.el'
--- a/lisp/gnus/gnus-group.el   2010-09-30 08:39:23 +0000
+++ b/lisp/gnus/gnus-group.el   2010-10-01 23:08:25 +0000
@@ -2170,21 +2170,21 @@
 The arguments are the same as `completing-read' except that COLLECTION
 and HIST default to `gnus-active-hashtb' and `gnus-group-history'
 respectively if they are omitted."
-  (let* ((choices (mapcar (lambda (symbol)
+  (let* ((collection (or collection (or gnus-active-hashtb [0])))
+        (choices (mapcar (lambda (symbol)
                             (let ((group (symbol-name symbol)))
                               (if (string-match "[^\000-\177]" group)
                                   (gnus-group-decoded-name group)
                                 group)))
-                          (remove-if-not
-                           'symbolp
-                           (or collection (or gnus-active-hashtb [0])))))
+                          (remove-if-not 'symbolp collection)))
          (group
           (gnus-completing-read (or prompt "Group") choices
                                 require-match initial-input
                                 (or hist 'gnus-group-history)
                                 def)))
-    (or (symbol-value (intern-soft group collection))
-        (mm-encode-coding-string group (gnus-group-name-charset nil group)))))
+    (if (symbol-value (intern-soft group collection))
+       group
+      (mm-encode-coding-string group (gnus-group-name-charset nil group)))))
 
 ;;;###autoload
 (defun gnus-fetch-group (group &optional articles)

=== modified file 'lisp/gnus/gnus-msg.el'
--- a/lisp/gnus/gnus-msg.el     2010-09-30 08:39:23 +0000
+++ b/lisp/gnus/gnus-msg.el     2010-10-01 23:08:25 +0000
@@ -1265,7 +1265,8 @@
   (dolist (article (gnus-summary-work-articles n))
     (gnus-summary-select-article nil nil nil article)
     (with-current-buffer gnus-original-article-buffer
-      (message-resend address))
+      (let ((gnus-gcc-externalize-attachments nil))
+       (message-resend address)))
     (gnus-summary-mark-article-as-forwarded article)))
 
 ;; From: Matthieu Moy <address@hidden>

=== modified file 'lisp/gnus/gnus-registry.el'
--- a/lisp/gnus/gnus-registry.el        2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/gnus-registry.el        2010-10-01 23:08:25 +0000
@@ -36,10 +36,12 @@
 
 ;; Put this in your startup file (~/.gnus.el for instance)
 
+;; (require 'nnregistry) ;; optional, or see below (automatically calls 
`gnus-registry-install-nnregistry' when `gnus-registry-initialize' is called)
 ;; (setq gnus-registry-max-entries 2500
 ;;       gnus-registry-use-long-group-names t)
 
 ;; (gnus-registry-initialize)
+;; (gnus-registry-install-nnregistry) ;; optional, or see above (loading 
nnregistry makes it unnecessary)
 
 ;; Then use this in your fancy-split:
 
@@ -1129,7 +1131,8 @@
   (setq gnus-registry-install t)       ; in case it was 'ask or nil
   (gnus-registry-install-hooks)
   (gnus-registry-install-shortcuts)
-  (gnus-registry-install-nnregistry)
+  (when (featurep 'nnregistry)
+    (gnus-registry-install-nnregistry))
   (gnus-registry-read))
 
 ;;;###autoload
@@ -1150,14 +1153,13 @@
 (defun gnus-registry-install-nnregistry ()
   "Install the nnregistry refer method in `gnus-refer-article-method'."
   (interactive)
-  (when (featurep 'nnregistry)
-    (setq gnus-refer-article-method
-          (delete-dups
-           (append
-            (if (listp gnus-refer-article-method)
-                gnus-refer-article-method
-              (list gnus-refer-article-method))
-            (list 'nnregistry))))))
+  (setq gnus-refer-article-method
+        (delete-dups
+         (append
+          (if (listp gnus-refer-article-method)
+              gnus-refer-article-method
+            (list gnus-refer-article-method))
+          (list 'nnregistry)))))
 
 (defun gnus-registry-unload-hook ()
   "Uninstall the registry hooks."

=== modified file 'lisp/gnus/gnus-start.el'
--- a/lisp/gnus/gnus-start.el   2010-09-26 04:03:19 +0000
+++ b/lisp/gnus/gnus-start.el   2010-10-01 23:08:25 +0000
@@ -1465,7 +1465,7 @@
          (push group bogus)))
       (if confirm
          (map-y-or-n-p
-          "Remove bogus group %s? "
+          (format "Remove bogus group %%s (of %d groups)? " (length bogus))
           (lambda (group)
             ;; Remove all bogus subscribed groups by first killing them, and
             ;; then removing them from the list of killed groups.

=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el     2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/gnus-sum.el     2010-10-01 23:08:25 +0000
@@ -3109,16 +3109,6 @@
        ;; Simple nil-valued local variable.
        (set (make-local-variable local) nil)))))
 
-(defun gnus-summary-clear-local-variables ()
-  (let ((locals gnus-summary-local-variables))
-    (while locals
-      (if (consp (car locals))
-         (and (symbolp (caar locals))
-              (set (caar locals) nil))
-       (and (symbolp (car locals))
-            (set (car locals) nil)))
-      (setq locals (cdr locals)))))
-
 ;; Summary data functions.
 
 (defmacro gnus-data-number (data)
@@ -6939,12 +6929,12 @@
 ;; Various summary commands
 
 (defun gnus-summary-select-article-buffer ()
-  "Reconfigure windows to show article buffer."
+  "Reconfigure windows to show the article buffer."
   (interactive)
   (if (not (gnus-buffer-live-p gnus-article-buffer))
       (error "There is no article buffer for this summary buffer")
-    (gnus-configure-windows 'article)
-    (select-window (get-buffer-window gnus-article-buffer))))
+    (select-window (get-buffer-window gnus-article-buffer))
+    (gnus-configure-windows 'only-article t)))
 
 (defun gnus-summary-universal-argument (arg)
   "Perform any operation on all articles that are process/prefixed."
@@ -7129,13 +7119,6 @@
          (progn
            (gnus-deaden-summary)
            (setq mode nil))
-       ;; We set all buffer-local variables to nil.  It is unclear why
-       ;; this is needed, but if we don't, buffer-local variables are
-       ;; not garbage-collected, it seems.  This would the lead to en
-       ;; ever-growing Emacs.
-       (gnus-summary-clear-local-variables)
-       (let ((gnus-summary-local-variables gnus-newsgroup-variables))
-         (gnus-summary-clear-local-variables))
        (when (get-buffer gnus-article-buffer)
          (bury-buffer gnus-article-buffer))
        ;; Return to group mode buffer.
@@ -7194,9 +7177,6 @@
       (if (not gnus-kill-summary-on-exit)
          (gnus-deaden-summary)
        (gnus-close-group group)
-       (gnus-summary-clear-local-variables)
-       (let ((gnus-summary-local-variables gnus-newsgroup-variables))
-         (gnus-summary-clear-local-variables))
        (gnus-kill-buffer gnus-summary-buffer))
       (unless gnus-single-article-buffer
        (setq gnus-article-current nil))
@@ -7844,7 +7824,8 @@
 
 (defun gnus-summary-scroll-up (lines)
   "Scroll up (or down) one line current article.
-Argument LINES specifies lines to be scrolled up (or down if negative)."
+Argument LINES specifies lines to be scrolled up (or down if negative).
+If no article is selected, then the current article will be selected first."
   (interactive "p")
   (gnus-configure-windows 'article)
   (gnus-summary-show-thread)
@@ -7860,7 +7841,8 @@
 
 (defun gnus-summary-scroll-down (lines)
   "Scroll down (or up) one line current article.
-Argument LINES specifies lines to be scrolled down (or up if negative)."
+Argument LINES specifies lines to be scrolled down (or up if negative).
+If no article is selected, then the current article will be selected first."
   (interactive "p")
   (gnus-summary-scroll-up (- lines)))
 

=== modified file 'lisp/gnus/gnus-win.el'
--- a/lisp/gnus/gnus-win.el     2010-09-02 00:55:51 +0000
+++ b/lisp/gnus/gnus-win.el     2010-10-01 23:08:25 +0000
@@ -107,6 +107,9 @@
      (vertical 1.0
               (summary 0.25)
               (faq 1.0 point)))
+    (only-article
+     (vertical 1.0
+              (article 1.0 point)))
     (edit-article
      (vertical 1.0
               (article 1.0 point)))

=== modified file 'lisp/gnus/gnus.el'
--- a/lisp/gnus/gnus.el 2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/gnus.el 2010-10-01 23:08:25 +0000
@@ -1491,7 +1491,9 @@
   "*The number of articles which indicates a large newsgroup.
 If the number of articles in a newsgroup is greater than this value,
 confirmation is required for selecting the newsgroup.
-If it is nil, no confirmation is required."
+If it is nil, no confirmation is required.
+
+Also see `gnus-large-ephemeral-newsgroup'."
   :group 'gnus-group-select
   :type '(choice (const :tag "No limit" nil)
                 integer))
@@ -3206,7 +3208,6 @@
 
 (defun gnus-continuum-version (&optional version)
   "Return VERSION as a floating point number."
-  (interactive)
   (unless version
     (setq version gnus-version))
   (when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version)

=== modified file 'lisp/gnus/mailcap.el'
--- a/lisp/gnus/mailcap.el      2010-09-22 06:01:22 +0000
+++ b/lisp/gnus/mailcap.el      2010-10-01 23:08:25 +0000
@@ -812,7 +812,10 @@
 ;;;
 
 (defvar mailcap-mime-extensions
-  '((""        . "text/plain")
+  '((""       . "text/plain")
+    (".1"     . "text/plain")  ;; Manual pages
+    (".3"     . "text/plain")
+    (".8"     . "text/plain")
     (".abs"   . "audio/x-mpeg")
     (".aif"   . "audio/aiff")
     (".aifc"  . "audio/aiff")
@@ -828,6 +831,7 @@
     (".css"   . "text/css")
     (".dvi"   . "application/x-dvi")
     (".diff"  . "text/x-patch")
+    (".dpatch". "test/x-patch")
     (".el"    . "application/emacs-lisp")
     (".eps"   . "application/postscript")
     (".etx"   . "text/x-setext")
@@ -869,6 +873,7 @@
     (".pict"  . "image/pict")
     (".png"   . "image/png")
     (".pnm"   . "image/x-portable-anymap")
+    (".pod"   . "text/plain")
     (".ppm"   . "image/portable-pixmap")
     (".ps"    . "application/postscript")
     (".qt"    . "video/quicktime")

=== modified file 'lisp/gnus/message.el'
--- a/lisp/gnus/message.el      2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/message.el      2010-10-01 23:08:25 +0000
@@ -6049,6 +6049,7 @@
 When sending via news, also check that the REFERENCES are less
 than 988 characters long, and if they are not, trim them until
 they are."
+  ;; 21 is the number suggested by USEAGE.
   (let ((maxcount 21)
        (count 0)
        (cut 2)

=== modified file 'lisp/gnus/mm-encode.el'
--- a/lisp/gnus/mm-encode.el    2010-09-02 00:55:51 +0000
+++ b/lisp/gnus/mm-encode.el    2010-10-01 23:08:25 +0000
@@ -42,15 +42,8 @@
 If the encoding is `qp-or-base64', then either quoted-printable
 or base64 will be used, depending on what is more efficient.
 
-`qp-or-base64' has another effect.  It will fold long lines so that
-MIME parts may not be broken by MTA.  So do `quoted-printable' and
-`base64'.
-
-Note: It affects body encoding only when a part is a raw forwarded
-message (which will be made by `gnus-summary-mail-forward' with the
-arg 2 for example) or is neither the text/* type nor the message/*
-type.  Even though in those cases, you can use the `encoding' MML tag
-to specify encoding of non-ASCII MIME parts."
+This list is only consulted when encoding MIME parts in the
+bodies -- not for the regular non-MIME-ish messages."
   :type '(repeat (list (regexp :tag "MIME type")
                       (choice :tag "encoding"
                               (const 7bit)

=== modified file 'lisp/gnus/nndoc.el'
--- a/lisp/gnus/nndoc.el        2010-09-30 08:39:23 +0000
+++ b/lisp/gnus/nndoc.el        2010-10-01 23:08:25 +0000
@@ -74,14 +74,14 @@
     (mbox
      (article-begin-function . nndoc-mbox-article-begin)
      (body-end-function . nndoc-mbox-body-end))
-    (mime-parts
-     (generate-head-function . nndoc-generate-mime-parts-head)
-     (article-transform-function . nndoc-transform-mime-parts))
     (babyl
      (article-begin . "\^_\^L *\n")
      (body-end . "\^_")
      (body-begin-function . nndoc-babyl-body-begin)
      (head-begin-function . nndoc-babyl-head-begin))
+    (mime-parts
+     (generate-head-function . nndoc-generate-mime-parts-head)
+     (article-transform-function . nndoc-transform-mime-parts))
     (exim-bounce
      (article-begin . "^------ This is a copy of the message, including all 
the headers. ------\n\n")
      (body-end-function . nndoc-exim-bounce-body-end-function))

=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el       2010-10-01 12:56:44 +0000
+++ b/lisp/gnus/nnimap.el       2010-10-01 23:08:25 +0000
@@ -623,10 +623,11 @@
                (nnimap-update-infos marks (list info)))
              (goto-char (point-max))
              (let ((uidnext (nth 5 (car marks))))
-               (setq high (if uidnext
-                              (1- uidnext)
-                            (nth 3 (car marks)))
-                     low (or (nth 4 (car marks)) uidnext)))))
+               (setq high (or (if uidnext
+                                   (1- uidnext)
+                                 (nth 3 (car marks)))
+                               0)
+                     low (or (nth 4 (car marks)) uidnext 1)))))
          (erase-buffer)
          (insert
           (format
@@ -912,6 +913,16 @@
                                  (or highest exists)))))))))
        t))))
 
+(deffoo nnimap-request-newgroups (date &optional server)
+  (nnimap-possibly-change-group nil server)
+  (with-current-buffer nntp-server-buffer
+    (erase-buffer)
+    (dolist (group (with-current-buffer (nnimap-buffer)
+                    (nnimap-get-groups)))
+      (unless (assoc group nnimap-current-infos)
+       ;; Insert dummy numbers here -- they don't matter.
+       (insert (format "%S 0 1 y\n" group))))))
+
 (deffoo nnimap-retrieve-group-data-early (server infos)
   (when (nnimap-possibly-change-group nil server)
     (with-current-buffer (nnimap-buffer)
@@ -990,7 +1001,9 @@
       (nnimap-update-info info (cdr (assoc group flags))))))
 
 (defun nnimap-update-info (info marks)
-  (when marks
+  (when (and marks
+            ;; Ignore groups with no UIDNEXT values.
+            (nth 4 marks))
     (destructuring-bind (existing flags high low uidnext start-article
                                  permanent-flags) marks
       (let ((group (gnus-info-group info))

=== modified file 'lisp/gnus/nnmail.el'
--- a/lisp/gnus/nnmail.el       2010-09-29 13:38:27 +0000
+++ b/lisp/gnus/nnmail.el       2010-10-01 23:08:25 +0000
@@ -104,7 +104,9 @@
 
 The last element should always have \"\" as the regexp.
 
-This variable can also have a function as its value."
+This variable can also have a function as its value, and it can
+also have a fancy split method as its value.  See
+`nnmail-split-fancy' for an explanation of that syntax."
   :group 'nnmail-split
   :type '(choice (repeat :tag "Alist" (group (string :tag "Name")
                                             (choice regexp function)))
@@ -1145,21 +1147,33 @@
        (run-hooks 'nnmail-split-hook)
        (when (setq nnmail-split-tracing trace)
          (setq nnmail-split-trace nil))
-       (if (and (symbolp nnmail-split-methods)
-                (fboundp nnmail-split-methods))
-           (let ((split
-                  (condition-case error-info
-                      ;; `nnmail-split-methods' is a function, so we
-                      ;; just call this function here and use the
-                      ;; result.
-                      (or (funcall nnmail-split-methods)
-                          (and (not nnmail-inhibit-default-split-group)
-                               '("bogus")))
-                    (error
-                     (nnheader-message
-                      5 "Error in `nnmail-split-methods'; using `bogus' mail 
group: %S" error-info)
-                     (sit-for 1)
-                     '("bogus")))))
+       (if (or (and (symbolp nnmail-split-methods)
+                    (fboundp nnmail-split-methods))
+               (and (listp nnmail-split-methods)
+                    ;; Not a regular split method, so it has to be a
+                    ;; fancy one.
+                    (not (let ((top-element (car-safe nnmail-split-methods)))
+                           (and (= 2 (length top-element))
+                                (stringp (nth 0 top-element))
+                                (stringp (nth 1 top-element)))))))
+           (let* ((method-function
+                   (if (and (symbolp nnmail-split-methods)
+                            (fboundp nnmail-split-methods))
+                       nnmail-split-methods
+                     'nnmail-split-fancy))
+                  (split
+                   (condition-case error-info
+                       ;; `nnmail-split-methods' is a function, so we
+                       ;; just call this function here and use the
+                       ;; result.
+                       (or (funcall method-function)
+                           (and (not nnmail-inhibit-default-split-group)
+                                '("bogus")))
+                     (error
+                      (nnheader-message
+                       5 "Error in `nnmail-split-methods'; using `bogus' mail 
group: %S" error-info)
+                      (sit-for 1)
+                      '("bogus")))))
              (setq split (mm-delete-duplicates split))
              ;; The article may be "cross-posted" to `junk'.  What
              ;; to do?  Just remove the `junk' spec.  Don't really

=== modified file 'lisp/gnus/nnmbox.el'
--- a/lisp/gnus/nnmbox.el       2010-09-18 23:36:29 +0000
+++ b/lisp/gnus/nnmbox.el       2010-10-01 23:08:25 +0000
@@ -640,6 +640,7 @@
                             nnmbox-mbox-file t t))))
        (mm-enable-multibyte)
        (buffer-disable-undo)
+       (gnus-add-buffer)
 
        ;; Go through the group alist and compare against the mbox file.
        (while alist


reply via email to

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