summaryrefslogtreecommitdiff
path: root/lisp/gnus
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/gnus')
-rw-r--r--lisp/gnus/ChangeLog78
-rw-r--r--lisp/gnus/gnus-art.el10
-rw-r--r--lisp/gnus/gnus-async.el7
-rw-r--r--lisp/gnus/gnus-group.el12
-rw-r--r--lisp/gnus/gnus-msg.el3
-rw-r--r--lisp/gnus/gnus-registry.el20
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el32
-rw-r--r--lisp/gnus/gnus-win.el3
-rw-r--r--lisp/gnus/gnus.el5
-rw-r--r--lisp/gnus/mailcap.el7
-rw-r--r--lisp/gnus/message.el1
-rw-r--r--lisp/gnus/mm-encode.el11
-rw-r--r--lisp/gnus/nndoc.el6
-rw-r--r--lisp/gnus/nnimap.el23
-rw-r--r--lisp/gnus/nnmail.el46
-rw-r--r--lisp/gnus/nnmbox.el1
17 files changed, 181 insertions, 86 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 3cc5be14af5..75651936bb0 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,83 @@
2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * 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 <tzz@lifelogs.com>
+
+ * nnimap.el (nnimap-request-group): Don't bug out when there's an empty
+ non-UIDNEXT group.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * 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 <tzz@lifelogs.com>
+
+ * 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 <larsi@gnus.org>
+
* gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid
regexp backtrace overflows.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 91ff355b6d2..8a0193b26d7 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -3958,7 +3958,7 @@ Directory to save to is default to `gnus-article-save-directory'."
"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 @@ Directory to save to is default to `gnus-article-save-directory'."
"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 @@ Directory to save to is default to `gnus-article-save-directory'."
"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 @@ The directory to save in defaults to `gnus-article-save-directory'."
"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 @@ and the raw article including all headers will be piped."
(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)))
diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el
index a2ab54bea8b..9bb28f3a05d 100644
--- a/lisp/gnus/gnus-async.el
+++ b/lisp/gnus/gnus-async.el
@@ -316,7 +316,8 @@ that was fetched."
(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 @@ that was fetched."
"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
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index eb594f3e71f..2ea5cce7846 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -2170,21 +2170,21 @@ be permanent."
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)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index a3794f28a93..891718e65b8 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -1265,7 +1265,8 @@ For the `inline' alternatives, also see the variable
(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 <Matthieu.Moy@imag.fr>
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 4e6dca536a9..cbea1e17ed8 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -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 @@ Returns the first place where the trail finds a group name."
(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 @@ Returns the first place where the trail finds a group name."
(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."
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 68f26ea143b..e5a3ec7737d 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1465,7 +1465,7 @@ newsgroup."
(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.
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index cc1c3823c9f..d9a7621baa2 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -3109,16 +3109,6 @@ The following commands are available:
;; 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 @@ displayed, no centering will be performed."
;; 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 @@ If FORCE (the prefix), also save the .newsrc file(s)."
(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 FORCE (the prefix), also save the .newsrc file(s)."
(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 @@ If at the beginning of the article, go to the next article."
(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 @@ Argument LINES specifies lines to be scrolled up (or down if negative)."
(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)))
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index 4956be9fd87..df883769b77 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -107,6 +107,9 @@ used to display Gnus windows."
(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)))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 9f2ea1e3471..4a5f0f79d64 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1491,7 +1491,9 @@ newsgroups."
"*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 @@ If ARG, insert string at point."
(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)
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 524928586fc..36a710d58c9 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -812,7 +812,10 @@ If NO-DECODE is non-nil, don't decode STRING."
;;;
(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 @@ If NO-DECODE is non-nil, don't decode STRING."
(".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 @@ If NO-DECODE is non-nil, don't decode STRING."
(".pict" . "image/pict")
(".png" . "image/png")
(".pnm" . "image/x-portable-anymap")
+ (".pod" . "text/plain")
(".ppm" . "image/portable-pixmap")
(".ps" . "application/postscript")
(".qt" . "video/quicktime")
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 59d3485f7d7..d5a620b3b74 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6049,6 +6049,7 @@ If the current line has `message-yank-prefix', insert it on the new line."
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)
diff --git a/lisp/gnus/mm-encode.el b/lisp/gnus/mm-encode.el
index c6ca4c40d04..296a24351bb 100644
--- a/lisp/gnus/mm-encode.el
+++ b/lisp/gnus/mm-encode.el
@@ -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)
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el
index 588eeb11680..46d775a345f 100644
--- a/lisp/gnus/nndoc.el
+++ b/lisp/gnus/nndoc.el
@@ -74,14 +74,14 @@ from the document.")
(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))
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 70aa573525f..0aaa797b835 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -623,10 +623,11 @@ textual parts.")
(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 @@ textual parts.")
(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 @@ textual parts.")
(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))
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 23cb604d552..463f87e44fc 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -104,7 +104,9 @@ mail belongs in that group.
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 @@ FUNC will be called with the group name to determine the article number."
(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
diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el
index bc5c01e51ad..003c424f58d 100644
--- a/lisp/gnus/nnmbox.el
+++ b/lisp/gnus/nnmbox.el
@@ -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