aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGnus developers2010-10-01 23:08:25 +0000
committerKatsumi Yamaoka2010-10-01 23:08:25 +0000
commita3f57c41e2c6e84264e13c893e7e0f9b85d6ca1f (patch)
tree3bafa1c838714641cae96dd9d44e83e22b2c389b
parent0ebf79dee20548de437ddd1080f027e571d528f9 (diff)
downloademacs-a3f57c41e2c6e84264e13c893e7e0f9b85d6ca1f.tar.gz
emacs-a3f57c41e2c6e84264e13c893e7e0f9b85d6ca1f.zip
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.
-rw-r--r--doc/misc/gnus.texi11
-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
18 files changed, 192 insertions, 86 deletions
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 61a2171baac..3365e05943a 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -9477,6 +9477,14 @@ signature should be removed, or other symbol, meaning that the
9477corresponding regular expression in @code{gnus-article-banner-alist} is 9477corresponding regular expression in @code{gnus-article-banner-alist} is
9478used. 9478used.
9479 9479
9480For instance:
9481
9482@lisp
9483(setq gnus-article-banner-alist
9484 ((googleGroups .
9485 "^\n*--~--~---------\\(.+\n\\)+")))
9486@end lisp
9487
9480Regardless of a group, you can hide things like advertisements only when 9488Regardless of a group, you can hide things like advertisements only when
9481the sender of an article has a certain mail address specified in 9489the sender of an article has a certain mail address specified in
9482@code{gnus-article-address-banner-alist}. 9490@code{gnus-article-address-banner-alist}.
@@ -15102,6 +15110,9 @@ arguments in a buffer narrowed to the headers of an incoming mail
15102message. The function should return a list of group names that it 15110message. The function should return a list of group names that it
15103thinks should carry this mail message. 15111thinks should carry this mail message.
15104 15112
15113This variable can also be a fancy split method. See @xref{Fancy Mail
15114Splitting} for the syntax.
15115
15105Note that the mail back ends are free to maul the poor, innocent, 15116Note that the mail back ends are free to maul the poor, innocent,
15106incoming headers all they want to. They all add @code{Lines} headers; 15117incoming headers all they want to. They all add @code{Lines} headers;
15107some add @code{X-Gnus-Group} headers; most rename the Unix mbox 15118some add @code{X-Gnus-Group} headers; most rename the Unix mbox
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 @@
12010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org> 12010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 2
3 * gnus-start.el (gnus-check-bogus-newsgroups): Say how many groups
4 we're being queried about. Suggested by Dan Jacobson.
5
6 * nndoc.el (nndoc-type-alist): Do babyl before mime-parts. Suggested
7 by Jason Eisner.
8
9 * gnus-async.el (gnus-async-delete-prefetched-entry): Remove from hash
10 table, too. Suggested by Stefan Wiens.
11 (gnus-async-prefetched-article-entry): Use intern-soft to avoid growing
12 the table unnecessary. Suggested by Stefan Wiens.
13
14 * gnus-sum.el (gnus-summary-clear-local-variables): This is probably no
15 longer needed, and probably doesn't work either, as pointed out by
16 Stefan Wiens.
17 (gnus-summary-exit): Remove call to the clearing function.
18 (gnus-summary-exit-no-update): Ditto.
19
20 * gnus-art.el (gnus-summary-save-in-file): Use with-current-buffer
21 instead of gnus-eval-in-buffer-window to avoid popping up frames.
22 Reported by Stefan Monnier.
23 (gnus-summary-save-in-rmail): Ditto.
24
25 * gnus-sum.el (gnus-summary-select-article-buffer): Show only the
26 article buffer, instead of both the article buffer and the summary
27 buffer. Sort of suggested by Dan Jacobson.
28
29 * gnus-win.el (gnus-buffer-configuration): Add an only-article spec.
30
31 * nnmbox.el (nnmbox-read-mbox): Mark buffer for deletion on Gnus exit.
32 Suggested by Dan Jacobson.
33
34 * mm-encode.el (mm-content-transfer-encoding-defaults): Try to make the
35 documentation clearer.
36
37 * message.el (message-shorten-references): Comment on the number "21".
38 Suggested by Stefan Monnier.
39
40 * gnus-sum.el (gnus-summary-scroll-up): Add more documentation.
41 Suggested by Dan Jacobson.
42
43 * gnus.el (gnus-large-newsgroup): Mention
44 gnus-large-ephemeral-newsgroup. Suggested by Dan Jacobson.
45
46 * gnus-msg.el (gnus-summary-resend-message): When resending, don't
47 externalize attachments. Bug reported by Steve Wen.
48
49 * gnus.el (gnus-continuum-version): Make inactive, since it doesn't
50 really message anything to the user.
51
52 * nnmail.el (nnmail-article-group): Allow using the fancy split method
53 directly.
54
55 * nnimap.el (nnimap-request-group): Low higher than high to signal no
56 messages in empty groups.
57
582010-10-01 Ted Zlatanov <tzz@lifelogs.com>
59
60 * nnimap.el (nnimap-request-group): Don't bug out when there's an empty
61 non-UIDNEXT group.
62
632010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
64
65 * gnus-group.el (gnus-group-completing-read): Return the symbol name,
66 not the value from the collection.
67
68 * nnimap.el (nnimap-update-info): Ignore groups that have no UIDNEXT
69 values. This sometimes happens on some groups that have no info.
70 (nnimap-request-newgroups): New function.
71
722010-10-01 Teodor Zlatanov <tzz@lifelogs.com>
73
74 * gnus-registry.el (gnus-registry-install-nnregistry): Move the feature
75 check into `gnus-registry-initialize'.
76 (gnus-registry-initialize): Ditto.
77 Fix and extend header docs.
78
792010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
80
3 * gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid 81 * gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid
4 regexp backtrace overflows. 82 regexp backtrace overflows.
5 83
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'."
3958 "Save %s in rmail file" filename 3958 "Save %s in rmail file" filename
3959 gnus-rmail-save-name gnus-newsgroup-name 3959 gnus-rmail-save-name gnus-newsgroup-name
3960 gnus-current-headers 'gnus-newsgroup-last-rmail)) 3960 gnus-current-headers 'gnus-newsgroup-last-rmail))
3961 (gnus-eval-in-buffer-window gnus-save-article-buffer 3961 (with-current-buffer gnus-save-article-buffer
3962 (save-excursion 3962 (save-excursion
3963 (save-restriction 3963 (save-restriction
3964 (widen) 3964 (widen)
@@ -3976,7 +3976,7 @@ Directory to save to is default to `gnus-article-save-directory'."
3976 "Save %s in Unix mail file" filename 3976 "Save %s in Unix mail file" filename
3977 gnus-mail-save-name gnus-newsgroup-name 3977 gnus-mail-save-name gnus-newsgroup-name
3978 gnus-current-headers 'gnus-newsgroup-last-mail)) 3978 gnus-current-headers 'gnus-newsgroup-last-mail))
3979 (gnus-eval-in-buffer-window gnus-save-article-buffer 3979 (with-current-buffer gnus-save-article-buffer
3980 (save-excursion 3980 (save-excursion
3981 (save-restriction 3981 (save-restriction
3982 (widen) 3982 (widen)
@@ -3997,7 +3997,7 @@ Directory to save to is default to `gnus-article-save-directory'."
3997 "Save %s in file" filename 3997 "Save %s in file" filename
3998 gnus-file-save-name gnus-newsgroup-name 3998 gnus-file-save-name gnus-newsgroup-name
3999 gnus-current-headers 'gnus-newsgroup-last-file)) 3999 gnus-current-headers 'gnus-newsgroup-last-file))
4000 (gnus-eval-in-buffer-window gnus-save-article-buffer 4000 (with-current-buffer gnus-save-article-buffer
4001 (save-excursion 4001 (save-excursion
4002 (save-restriction 4002 (save-restriction
4003 (widen) 4003 (widen)
@@ -4029,7 +4029,7 @@ The directory to save in defaults to `gnus-article-save-directory'."
4029 "Save %s body in file" filename 4029 "Save %s body in file" filename
4030 gnus-file-save-name gnus-newsgroup-name 4030 gnus-file-save-name gnus-newsgroup-name
4031 gnus-current-headers 'gnus-newsgroup-last-file)) 4031 gnus-current-headers 'gnus-newsgroup-last-file))
4032 (gnus-eval-in-buffer-window gnus-save-article-buffer 4032 (with-current-buffer gnus-save-article-buffer
4033 (save-excursion 4033 (save-excursion
4034 (save-restriction 4034 (save-restriction
4035 (widen) 4035 (widen)
@@ -4108,7 +4108,7 @@ and the raw article including all headers will be piped."
4108 (if default 4108 (if default
4109 (setq command default) 4109 (setq command default)
4110 (error "A command is required"))) 4110 (error "A command is required")))
4111 (gnus-eval-in-buffer-window save-buffer 4111 (with-current-buffer save-buffer
4112 (save-restriction 4112 (save-restriction
4113 (widen) 4113 (widen)
4114 (shell-command-on-region (point-min) (point-max) command nil))) 4114 (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."
316 (set-marker (caddr entry) nil)) 316 (set-marker (caddr entry) nil))
317 (gnus-async-with-semaphore 317 (gnus-async-with-semaphore
318 (setq gnus-async-article-alist 318 (setq gnus-async-article-alist
319 (delq entry gnus-async-article-alist)))) 319 (delq entry gnus-async-article-alist))
320 (unintern (car entry) gnus-async-hashtb)))
320 321
321(defun gnus-async-prefetch-remove-group (group) 322(defun gnus-async-prefetch-remove-group (group)
322 "Remove all articles belonging to GROUP from the prefetch buffer." 323 "Remove all articles belonging to GROUP from the prefetch buffer."
@@ -332,8 +333,8 @@ that was fetched."
332 "Return the entry for ARTICLE in GROUP if it has been prefetched." 333 "Return the entry for ARTICLE in GROUP if it has been prefetched."
333 (let ((entry (save-excursion 334 (let ((entry (save-excursion
334 (gnus-async-set-buffer) 335 (gnus-async-set-buffer)
335 (assq (intern (format "%s-%d" group article) 336 (assq (intern-soft (format "%s-%d" group article)
336 gnus-async-hashtb) 337 gnus-async-hashtb)
337 gnus-async-article-alist)))) 338 gnus-async-article-alist))))
338 ;; Perhaps something has emptied the buffer? 339 ;; Perhaps something has emptied the buffer?
339 (if (and entry 340 (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."
2170The arguments are the same as `completing-read' except that COLLECTION 2170The arguments are the same as `completing-read' except that COLLECTION
2171and HIST default to `gnus-active-hashtb' and `gnus-group-history' 2171and HIST default to `gnus-active-hashtb' and `gnus-group-history'
2172respectively if they are omitted." 2172respectively if they are omitted."
2173 (let* ((choices (mapcar (lambda (symbol) 2173 (let* ((collection (or collection (or gnus-active-hashtb [0])))
2174 (choices (mapcar (lambda (symbol)
2174 (let ((group (symbol-name symbol))) 2175 (let ((group (symbol-name symbol)))
2175 (if (string-match "[^\000-\177]" group) 2176 (if (string-match "[^\000-\177]" group)
2176 (gnus-group-decoded-name group) 2177 (gnus-group-decoded-name group)
2177 group))) 2178 group)))
2178 (remove-if-not 2179 (remove-if-not 'symbolp collection)))
2179 'symbolp
2180 (or collection (or gnus-active-hashtb [0])))))
2181 (group 2180 (group
2182 (gnus-completing-read (or prompt "Group") choices 2181 (gnus-completing-read (or prompt "Group") choices
2183 require-match initial-input 2182 require-match initial-input
2184 (or hist 'gnus-group-history) 2183 (or hist 'gnus-group-history)
2185 def))) 2184 def)))
2186 (or (symbol-value (intern-soft group collection)) 2185 (if (symbol-value (intern-soft group collection))
2187 (mm-encode-coding-string group (gnus-group-name-charset nil group))))) 2186 group
2187 (mm-encode-coding-string group (gnus-group-name-charset nil group)))))
2188 2188
2189;;;###autoload 2189;;;###autoload
2190(defun gnus-fetch-group (group &optional articles) 2190(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
1265 (dolist (article (gnus-summary-work-articles n)) 1265 (dolist (article (gnus-summary-work-articles n))
1266 (gnus-summary-select-article nil nil nil article) 1266 (gnus-summary-select-article nil nil nil article)
1267 (with-current-buffer gnus-original-article-buffer 1267 (with-current-buffer gnus-original-article-buffer
1268 (message-resend address)) 1268 (let ((gnus-gcc-externalize-attachments nil))
1269 (message-resend address)))
1269 (gnus-summary-mark-article-as-forwarded article))) 1270 (gnus-summary-mark-article-as-forwarded article)))
1270 1271
1271;; From: Matthieu Moy <Matthieu.Moy@imag.fr> 1272;; 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 @@
36 36
37;; Put this in your startup file (~/.gnus.el for instance) 37;; Put this in your startup file (~/.gnus.el for instance)
38 38
39;; (require 'nnregistry) ;; optional, or see below (automatically calls `gnus-registry-install-nnregistry' when `gnus-registry-initialize' is called)
39;; (setq gnus-registry-max-entries 2500 40;; (setq gnus-registry-max-entries 2500
40;; gnus-registry-use-long-group-names t) 41;; gnus-registry-use-long-group-names t)
41 42
42;; (gnus-registry-initialize) 43;; (gnus-registry-initialize)
44;; (gnus-registry-install-nnregistry) ;; optional, or see above (loading nnregistry makes it unnecessary)
43 45
44;; Then use this in your fancy-split: 46;; Then use this in your fancy-split:
45 47
@@ -1129,7 +1131,8 @@ Returns the first place where the trail finds a group name."
1129 (setq gnus-registry-install t) ; in case it was 'ask or nil 1131 (setq gnus-registry-install t) ; in case it was 'ask or nil
1130 (gnus-registry-install-hooks) 1132 (gnus-registry-install-hooks)
1131 (gnus-registry-install-shortcuts) 1133 (gnus-registry-install-shortcuts)
1132 (gnus-registry-install-nnregistry) 1134 (when (featurep 'nnregistry)
1135 (gnus-registry-install-nnregistry))
1133 (gnus-registry-read)) 1136 (gnus-registry-read))
1134 1137
1135;;;###autoload 1138;;;###autoload
@@ -1150,14 +1153,13 @@ Returns the first place where the trail finds a group name."
1150(defun gnus-registry-install-nnregistry () 1153(defun gnus-registry-install-nnregistry ()
1151 "Install the nnregistry refer method in `gnus-refer-article-method'." 1154 "Install the nnregistry refer method in `gnus-refer-article-method'."
1152 (interactive) 1155 (interactive)
1153 (when (featurep 'nnregistry) 1156 (setq gnus-refer-article-method
1154 (setq gnus-refer-article-method 1157 (delete-dups
1155 (delete-dups 1158 (append
1156 (append 1159 (if (listp gnus-refer-article-method)
1157 (if (listp gnus-refer-article-method) 1160 gnus-refer-article-method
1158 gnus-refer-article-method 1161 (list gnus-refer-article-method))
1159 (list gnus-refer-article-method)) 1162 (list 'nnregistry)))))
1160 (list 'nnregistry))))))
1161 1163
1162(defun gnus-registry-unload-hook () 1164(defun gnus-registry-unload-hook ()
1163 "Uninstall the registry hooks." 1165 "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."
1465 (push group bogus))) 1465 (push group bogus)))
1466 (if confirm 1466 (if confirm
1467 (map-y-or-n-p 1467 (map-y-or-n-p
1468 "Remove bogus group %s? " 1468 (format "Remove bogus group %%s (of %d groups)? " (length bogus))
1469 (lambda (group) 1469 (lambda (group)
1470 ;; Remove all bogus subscribed groups by first killing them, and 1470 ;; Remove all bogus subscribed groups by first killing them, and
1471 ;; then removing them from the list of killed groups. 1471 ;; 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:
3109 ;; Simple nil-valued local variable. 3109 ;; Simple nil-valued local variable.
3110 (set (make-local-variable local) nil))))) 3110 (set (make-local-variable local) nil)))))
3111 3111
3112(defun gnus-summary-clear-local-variables ()
3113 (let ((locals gnus-summary-local-variables))
3114 (while locals
3115 (if (consp (car locals))
3116 (and (symbolp (caar locals))
3117 (set (caar locals) nil))
3118 (and (symbolp (car locals))
3119 (set (car locals) nil)))
3120 (setq locals (cdr locals)))))
3121
3122;; Summary data functions. 3112;; Summary data functions.
3123 3113
3124(defmacro gnus-data-number (data) 3114(defmacro gnus-data-number (data)
@@ -6939,12 +6929,12 @@ displayed, no centering will be performed."
6939;; Various summary commands 6929;; Various summary commands
6940 6930
6941(defun gnus-summary-select-article-buffer () 6931(defun gnus-summary-select-article-buffer ()
6942 "Reconfigure windows to show article buffer." 6932 "Reconfigure windows to show the article buffer."
6943 (interactive) 6933 (interactive)
6944 (if (not (gnus-buffer-live-p gnus-article-buffer)) 6934 (if (not (gnus-buffer-live-p gnus-article-buffer))
6945 (error "There is no article buffer for this summary buffer") 6935 (error "There is no article buffer for this summary buffer")
6946 (gnus-configure-windows 'article) 6936 (select-window (get-buffer-window gnus-article-buffer))
6947 (select-window (get-buffer-window gnus-article-buffer)))) 6937 (gnus-configure-windows 'only-article t)))
6948 6938
6949(defun gnus-summary-universal-argument (arg) 6939(defun gnus-summary-universal-argument (arg)
6950 "Perform any operation on all articles that are process/prefixed." 6940 "Perform any operation on all articles that are process/prefixed."
@@ -7129,13 +7119,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
7129 (progn 7119 (progn
7130 (gnus-deaden-summary) 7120 (gnus-deaden-summary)
7131 (setq mode nil)) 7121 (setq mode nil))
7132 ;; We set all buffer-local variables to nil. It is unclear why
7133 ;; this is needed, but if we don't, buffer-local variables are
7134 ;; not garbage-collected, it seems. This would the lead to en
7135 ;; ever-growing Emacs.
7136 (gnus-summary-clear-local-variables)
7137 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
7138 (gnus-summary-clear-local-variables))
7139 (when (get-buffer gnus-article-buffer) 7122 (when (get-buffer gnus-article-buffer)
7140 (bury-buffer gnus-article-buffer)) 7123 (bury-buffer gnus-article-buffer))
7141 ;; Return to group mode buffer. 7124 ;; Return to group mode buffer.
@@ -7194,9 +7177,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
7194 (if (not gnus-kill-summary-on-exit) 7177 (if (not gnus-kill-summary-on-exit)
7195 (gnus-deaden-summary) 7178 (gnus-deaden-summary)
7196 (gnus-close-group group) 7179 (gnus-close-group group)
7197 (gnus-summary-clear-local-variables)
7198 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
7199 (gnus-summary-clear-local-variables))
7200 (gnus-kill-buffer gnus-summary-buffer)) 7180 (gnus-kill-buffer gnus-summary-buffer))
7201 (unless gnus-single-article-buffer 7181 (unless gnus-single-article-buffer
7202 (setq gnus-article-current nil)) 7182 (setq gnus-article-current nil))
@@ -7844,7 +7824,8 @@ If at the beginning of the article, go to the next article."
7844 7824
7845(defun gnus-summary-scroll-up (lines) 7825(defun gnus-summary-scroll-up (lines)
7846 "Scroll up (or down) one line current article. 7826 "Scroll up (or down) one line current article.
7847Argument LINES specifies lines to be scrolled up (or down if negative)." 7827Argument LINES specifies lines to be scrolled up (or down if negative).
7828If no article is selected, then the current article will be selected first."
7848 (interactive "p") 7829 (interactive "p")
7849 (gnus-configure-windows 'article) 7830 (gnus-configure-windows 'article)
7850 (gnus-summary-show-thread) 7831 (gnus-summary-show-thread)
@@ -7860,7 +7841,8 @@ Argument LINES specifies lines to be scrolled up (or down if negative)."
7860 7841
7861(defun gnus-summary-scroll-down (lines) 7842(defun gnus-summary-scroll-down (lines)
7862 "Scroll down (or up) one line current article. 7843 "Scroll down (or up) one line current article.
7863Argument LINES specifies lines to be scrolled down (or up if negative)." 7844Argument LINES specifies lines to be scrolled down (or up if negative).
7845If no article is selected, then the current article will be selected first."
7864 (interactive "p") 7846 (interactive "p")
7865 (gnus-summary-scroll-up (- lines))) 7847 (gnus-summary-scroll-up (- lines)))
7866 7848
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."
107 (vertical 1.0 107 (vertical 1.0
108 (summary 0.25) 108 (summary 0.25)
109 (faq 1.0 point))) 109 (faq 1.0 point)))
110 (only-article
111 (vertical 1.0
112 (article 1.0 point)))
110 (edit-article 113 (edit-article
111 (vertical 1.0 114 (vertical 1.0
112 (article 1.0 point))) 115 (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."
1491 "*The number of articles which indicates a large newsgroup. 1491 "*The number of articles which indicates a large newsgroup.
1492If the number of articles in a newsgroup is greater than this value, 1492If the number of articles in a newsgroup is greater than this value,
1493confirmation is required for selecting the newsgroup. 1493confirmation is required for selecting the newsgroup.
1494If it is nil, no confirmation is required." 1494If it is nil, no confirmation is required.
1495
1496Also see `gnus-large-ephemeral-newsgroup'."
1495 :group 'gnus-group-select 1497 :group 'gnus-group-select
1496 :type '(choice (const :tag "No limit" nil) 1498 :type '(choice (const :tag "No limit" nil)
1497 integer)) 1499 integer))
@@ -3206,7 +3208,6 @@ If ARG, insert string at point."
3206 3208
3207(defun gnus-continuum-version (&optional version) 3209(defun gnus-continuum-version (&optional version)
3208 "Return VERSION as a floating point number." 3210 "Return VERSION as a floating point number."
3209 (interactive)
3210 (unless version 3211 (unless version
3211 (setq version gnus-version)) 3212 (setq version gnus-version))
3212 (when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version) 3213 (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."
812;;; 812;;;
813 813
814(defvar mailcap-mime-extensions 814(defvar mailcap-mime-extensions
815 '(("" . "text/plain") 815 '(("" . "text/plain")
816 (".1" . "text/plain") ;; Manual pages
817 (".3" . "text/plain")
818 (".8" . "text/plain")
816 (".abs" . "audio/x-mpeg") 819 (".abs" . "audio/x-mpeg")
817 (".aif" . "audio/aiff") 820 (".aif" . "audio/aiff")
818 (".aifc" . "audio/aiff") 821 (".aifc" . "audio/aiff")
@@ -828,6 +831,7 @@ If NO-DECODE is non-nil, don't decode STRING."
828 (".css" . "text/css") 831 (".css" . "text/css")
829 (".dvi" . "application/x-dvi") 832 (".dvi" . "application/x-dvi")
830 (".diff" . "text/x-patch") 833 (".diff" . "text/x-patch")
834 (".dpatch". "test/x-patch")
831 (".el" . "application/emacs-lisp") 835 (".el" . "application/emacs-lisp")
832 (".eps" . "application/postscript") 836 (".eps" . "application/postscript")
833 (".etx" . "text/x-setext") 837 (".etx" . "text/x-setext")
@@ -869,6 +873,7 @@ If NO-DECODE is non-nil, don't decode STRING."
869 (".pict" . "image/pict") 873 (".pict" . "image/pict")
870 (".png" . "image/png") 874 (".png" . "image/png")
871 (".pnm" . "image/x-portable-anymap") 875 (".pnm" . "image/x-portable-anymap")
876 (".pod" . "text/plain")
872 (".ppm" . "image/portable-pixmap") 877 (".ppm" . "image/portable-pixmap")
873 (".ps" . "application/postscript") 878 (".ps" . "application/postscript")
874 (".qt" . "video/quicktime") 879 (".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."
6049When sending via news, also check that the REFERENCES are less 6049When sending via news, also check that the REFERENCES are less
6050than 988 characters long, and if they are not, trim them until 6050than 988 characters long, and if they are not, trim them until
6051they are." 6051they are."
6052 ;; 21 is the number suggested by USEAGE.
6052 (let ((maxcount 21) 6053 (let ((maxcount 21)
6053 (count 0) 6054 (count 0)
6054 (cut 2) 6055 (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 @@
42If the encoding is `qp-or-base64', then either quoted-printable 42If the encoding is `qp-or-base64', then either quoted-printable
43or base64 will be used, depending on what is more efficient. 43or base64 will be used, depending on what is more efficient.
44 44
45`qp-or-base64' has another effect. It will fold long lines so that 45This list is only consulted when encoding MIME parts in the
46MIME parts may not be broken by MTA. So do `quoted-printable' and 46bodies -- not for the regular non-MIME-ish messages."
47`base64'.
48
49Note: It affects body encoding only when a part is a raw forwarded
50message (which will be made by `gnus-summary-mail-forward' with the
51arg 2 for example) or is neither the text/* type nor the message/*
52type. Even though in those cases, you can use the `encoding' MML tag
53to specify encoding of non-ASCII MIME parts."
54 :type '(repeat (list (regexp :tag "MIME type") 47 :type '(repeat (list (regexp :tag "MIME type")
55 (choice :tag "encoding" 48 (choice :tag "encoding"
56 (const 7bit) 49 (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.")
74 (mbox 74 (mbox
75 (article-begin-function . nndoc-mbox-article-begin) 75 (article-begin-function . nndoc-mbox-article-begin)
76 (body-end-function . nndoc-mbox-body-end)) 76 (body-end-function . nndoc-mbox-body-end))
77 (mime-parts
78 (generate-head-function . nndoc-generate-mime-parts-head)
79 (article-transform-function . nndoc-transform-mime-parts))
80 (babyl 77 (babyl
81 (article-begin . "\^_\^L *\n") 78 (article-begin . "\^_\^L *\n")
82 (body-end . "\^_") 79 (body-end . "\^_")
83 (body-begin-function . nndoc-babyl-body-begin) 80 (body-begin-function . nndoc-babyl-body-begin)
84 (head-begin-function . nndoc-babyl-head-begin)) 81 (head-begin-function . nndoc-babyl-head-begin))
82 (mime-parts
83 (generate-head-function . nndoc-generate-mime-parts-head)
84 (article-transform-function . nndoc-transform-mime-parts))
85 (exim-bounce 85 (exim-bounce
86 (article-begin . "^------ This is a copy of the message, including all the headers. ------\n\n") 86 (article-begin . "^------ This is a copy of the message, including all the headers. ------\n\n")
87 (body-end-function . nndoc-exim-bounce-body-end-function)) 87 (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.")
623 (nnimap-update-infos marks (list info))) 623 (nnimap-update-infos marks (list info)))
624 (goto-char (point-max)) 624 (goto-char (point-max))
625 (let ((uidnext (nth 5 (car marks)))) 625 (let ((uidnext (nth 5 (car marks))))
626 (setq high (if uidnext 626 (setq high (or (if uidnext
627 (1- uidnext) 627 (1- uidnext)
628 (nth 3 (car marks))) 628 (nth 3 (car marks)))
629 low (or (nth 4 (car marks)) uidnext))))) 629 0)
630 low (or (nth 4 (car marks)) uidnext 1)))))
630 (erase-buffer) 631 (erase-buffer)
631 (insert 632 (insert
632 (format 633 (format
@@ -912,6 +913,16 @@ textual parts.")
912 (or highest exists))))))))) 913 (or highest exists)))))))))
913 t)))) 914 t))))
914 915
916(deffoo nnimap-request-newgroups (date &optional server)
917 (nnimap-possibly-change-group nil server)
918 (with-current-buffer nntp-server-buffer
919 (erase-buffer)
920 (dolist (group (with-current-buffer (nnimap-buffer)
921 (nnimap-get-groups)))
922 (unless (assoc group nnimap-current-infos)
923 ;; Insert dummy numbers here -- they don't matter.
924 (insert (format "%S 0 1 y\n" group))))))
925
915(deffoo nnimap-retrieve-group-data-early (server infos) 926(deffoo nnimap-retrieve-group-data-early (server infos)
916 (when (nnimap-possibly-change-group nil server) 927 (when (nnimap-possibly-change-group nil server)
917 (with-current-buffer (nnimap-buffer) 928 (with-current-buffer (nnimap-buffer)
@@ -990,7 +1001,9 @@ textual parts.")
990 (nnimap-update-info info (cdr (assoc group flags)))))) 1001 (nnimap-update-info info (cdr (assoc group flags))))))
991 1002
992(defun nnimap-update-info (info marks) 1003(defun nnimap-update-info (info marks)
993 (when marks 1004 (when (and marks
1005 ;; Ignore groups with no UIDNEXT values.
1006 (nth 4 marks))
994 (destructuring-bind (existing flags high low uidnext start-article 1007 (destructuring-bind (existing flags high low uidnext start-article
995 permanent-flags) marks 1008 permanent-flags) marks
996 (let ((group (gnus-info-group info)) 1009 (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.
104 104
105The last element should always have \"\" as the regexp. 105The last element should always have \"\" as the regexp.
106 106
107This variable can also have a function as its value." 107This variable can also have a function as its value, and it can
108also have a fancy split method as its value. See
109`nnmail-split-fancy' for an explanation of that syntax."
108 :group 'nnmail-split 110 :group 'nnmail-split
109 :type '(choice (repeat :tag "Alist" (group (string :tag "Name") 111 :type '(choice (repeat :tag "Alist" (group (string :tag "Name")
110 (choice regexp function))) 112 (choice regexp function)))
@@ -1145,21 +1147,33 @@ FUNC will be called with the group name to determine the article number."
1145 (run-hooks 'nnmail-split-hook) 1147 (run-hooks 'nnmail-split-hook)
1146 (when (setq nnmail-split-tracing trace) 1148 (when (setq nnmail-split-tracing trace)
1147 (setq nnmail-split-trace nil)) 1149 (setq nnmail-split-trace nil))
1148 (if (and (symbolp nnmail-split-methods) 1150 (if (or (and (symbolp nnmail-split-methods)
1149 (fboundp nnmail-split-methods)) 1151 (fboundp nnmail-split-methods))
1150 (let ((split 1152 (and (listp nnmail-split-methods)
1151 (condition-case error-info 1153 ;; Not a regular split method, so it has to be a
1152 ;; `nnmail-split-methods' is a function, so we 1154 ;; fancy one.
1153 ;; just call this function here and use the 1155 (not (let ((top-element (car-safe nnmail-split-methods)))
1154 ;; result. 1156 (and (= 2 (length top-element))
1155 (or (funcall nnmail-split-methods) 1157 (stringp (nth 0 top-element))
1156 (and (not nnmail-inhibit-default-split-group) 1158 (stringp (nth 1 top-element)))))))
1157 '("bogus"))) 1159 (let* ((method-function
1158 (error 1160 (if (and (symbolp nnmail-split-methods)
1159 (nnheader-message 1161 (fboundp nnmail-split-methods))
1160 5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info) 1162 nnmail-split-methods
1161 (sit-for 1) 1163 'nnmail-split-fancy))
1162 '("bogus"))))) 1164 (split
1165 (condition-case error-info
1166 ;; `nnmail-split-methods' is a function, so we
1167 ;; just call this function here and use the
1168 ;; result.
1169 (or (funcall method-function)
1170 (and (not nnmail-inhibit-default-split-group)
1171 '("bogus")))
1172 (error
1173 (nnheader-message
1174 5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info)
1175 (sit-for 1)
1176 '("bogus")))))
1163 (setq split (mm-delete-duplicates split)) 1177 (setq split (mm-delete-duplicates split))
1164 ;; The article may be "cross-posted" to `junk'. What 1178 ;; The article may be "cross-posted" to `junk'. What
1165 ;; to do? Just remove the `junk' spec. Don't really 1179 ;; 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 @@
640 nnmbox-mbox-file t t)))) 640 nnmbox-mbox-file t t))))
641 (mm-enable-multibyte) 641 (mm-enable-multibyte)
642 (buffer-disable-undo) 642 (buffer-disable-undo)
643 (gnus-add-buffer)
643 644
644 ;; Go through the group alist and compare against the mbox file. 645 ;; Go through the group alist and compare against the mbox file.
645 (while alist 646 (while alist