+Sat Jul 25 02:43:35 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.25 is released.
+
+1998-07-25 00:03:24 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-group.el (gnus-group-read-ephemeral-group): Ditto.
+
+ * gnus-sum.el (gnus-summary-read-group-1): Ditto.
+
+ * gnus-group.el (gnus-group-read-group): Accept article list.
+
+1998-07-24 14:35:02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-configure-posting-styles): Quote some.
+
+ * message.el (message-ignored-supersedes-headers): Added X-Trace
+ and X-Complaints-To.
+
+ * nnmail.el (gnus-util): Required.
+
+1998-07-21 23:03:13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-news-group-p): Bogosity in params.
+
+1998-07-21 16:14:32 Robert Bihlmeyer <robbe@orcus.priv.at>
+
+ * gnus-util.el (gnus-globalify-regexp): New function.
+
+1998-07-18 21:49:01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-list-of-unread-articles): Peel off articles
+ outside active range.
+
+1998-07-15 10:47:39 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnvirtual.el (nnvirtual-request-type): Handle non-numerical
+ articles.
+
+ * gnus.el (gnus-news-group-p): Do something sensible with negative
+ articlies.
+
+Wed Jul 15 10:27:05 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-salt.el (gnus-tree-minimize-window): Allow numbers.
+
+Wed Jul 15 10:25:29 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-agent.el (gnus-agent-expire): Ignored ticks.
+
+Wed Jul 15 10:15:28 1998 Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>
+
+ * nntp.el (nntp-send-authinfo): Message better and stuff.
+
+Wed Jul 15 10:10:07 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-message-archive-group): Allow sexp.
+
+Wed Jul 15 09:56:47 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-select-newsgroup): Accept select-articles
+ para,
+
+1998-07-13 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-sum.el (gnus-select-newsgroup): Don't call the Agent to
+ mark articles as read until *all* headers have been retrieved.
+
+Wed Jul 15 09:06:18 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nndir.el (nndir): Use nnml to request article.
+
+1998-07-11 SL Baur <steve@altair.xemacs.org>
+
+ * gnus-topic.el (gnus-topic-mode-map): Use modern key syntax.
+
+Sun Jul 12 04:01:22 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-score.el (gnus-current-home-score-file): New function.
+
+1998-07-11 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-agent.el (gnus-agent-fetch-headers): Note last fetched
+ headers per sesion to aid expiry in `headers only' groups.
+
+ * gnus-agent.el (gnus-agent-expire): Update group info to add
+ expired articles to list of read articles and prevent
+ re-fetching.
+
+1998-07-12 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnmail.el (nnmail-active-file-coding-system): Changed to
+ binary.
+
+Sun Jul 12 03:16:18 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-score.el (gnus-score-load-file): Specify which alist to
+ decay.
+
+1998-07-12 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-start.el (gnus-startup-file-coding-system): New variable.
+ (gnus-read-newsrc-el-file): Use it.
+
Sat Jul 11 03:03:53 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.6.24 is released.
(gnus-make-directory (nnheader-translate-file-chars
(file-name-directory file)))
(write-region (point-min) (point-max) file nil 'silent)
- (gnus-agent-save-alist group articles nil))
- t))))
+ (gnus-agent-save-alist group articles nil)
+ (gnus-agent-enter-history "last-header-fetched-for-session"
+ (list (cons group (nth (- (length articles) 1) articles)))
+ (gnus-time-to-day (current-time)))
+ t)))))
(defsubst gnus-agent-copy-nov-line (article)
(let (b e)
info (gnus-get-info group)
unreads (ignore-errors (gnus-list-of-unread-articles group))
marked (nconc (gnus-uncompress-range
- (cdr (assq 'ticked (gnus-info-marks info))))
+ (cdr (assq 'tick (gnus-info-marks info))))
(gnus-uncompress-range
(cdr (assq 'dormant
(gnus-info-marks info)))))
(setcdr prev (setq alist (cdr alist)))
(setq prev alist
alist (cdr alist))))
- (setq gnus-agent-article-alist (cdr first)))
- (gnus-agent-save-alist group))
+ (setq gnus-agent-article-alist (cdr first))
+ ;;; Mark all articles up to the first article
+ ;;; in `gnus-article-alist' as read.
+ (setcar (nthcdr 2 info)
+ (gnus-range-add
+ (nth 2 info) (cons 1 (- (caar gnus-agent-article-alist) 1))))
+ (gnus-dribble-enter
+ (concat "(gnus-group-set-info '"
+ (gnus-prin1-to-string info)
+ ")"))
+ (gnus-agent-save-alist group)))
expiry-hashtb)
(set-buffer history)
(setq histories (nreverse (sort histories '<)))
;; Selecting groups.
-(defun gnus-group-read-group (&optional all no-article group)
+(defun gnus-group-read-group (&optional all no-article group select-articles)
"Read news in this newsgroup.
If the prefix argument ALL is non-nil, already read articles become
readable. IF ALL is a number, fetch this number of articles. If the
(cdr (assq 'tick marked)))
(gnus-range-length
(cdr (assq 'dormant marked)))))))
- no-article nil no-display)))
+ no-article nil no-display nil select-articles)))
(defun gnus-group-select-group (&optional all)
"Select this newsgroup.
;; Enter a group that is not in the group buffer. Non-nil is returned
;; if selection was successful.
(defun gnus-group-read-ephemeral-group (group method &optional activate
- quit-config request-only)
+ quit-config request-only
+ select-articles)
"Read GROUP from METHOD as an ephemeral group.
If ACTIVATE, request the group first.
If QUIT-CONFIG, use that window configuration when exiting from the
ephemeral group.
If REQUEST-ONLY, don't actually read the group; just request it.
+If SELECT-ARTICLES, only select those articles.
Return the name of the group is selection was successful."
;; Transform the select method into a unique server.
(when (stringp method)
(setq method (gnus-server-to-method method)))
-;;; (let ((saddr (intern (format "%s-address" (car method)))))
-;;; (setq method (gnus-copy-sequence method))
-;;; (require (car method))
-;;; (when (boundp saddr)
-;;; (unless (assq saddr method)
-;;; (nconc method `((,saddr ,(cadr method))))
-;;; (setf (cadr method) (format "%s-%d" (cadr method)
-;;; (incf gnus-ephemeral-group-server))))))
(let ((group (if (gnus-group-foreign-p group) group
(gnus-group-prefixed-name group method))))
(gnus-sethash
(if request-only
group
(condition-case ()
- (when (gnus-group-read-group t t group)
+ (when (gnus-group-read-group t t group select-articles)
group)
;;(error nil)
(quit nil)))))
;; This is a header to be added to the headers when
;; posting.
(when value-value
- (make-local-variable message-required-mail-headers)
- (make-local-variable message-required-news-headers)
+ (make-local-variable 'message-required-mail-headers)
+ (make-local-variable 'message-required-news-headers)
(push (cons (car attribute) value-value)
message-required-mail-headers)
(push (cons (car attribute) value-value)
"If non-nil, minimize the tree buffer window.
If a number, never let the tree buffer grow taller than that number of
lines."
- :type 'boolean
+ :type '(choice boolean
+ integer)
:group 'gnus-summary-tree)
(defcustom gnus-selected-tree-face 'modeline
(or (not decay)
(gnus-decay-scores alist decay)))
(gnus-score-set 'touched '(t) alist)
- (gnus-score-set 'decay (list (gnus-time-to-day (current-time)))))
+ (gnus-score-set 'decay (list (gnus-time-to-day (current-time))) alist))
;; We do not respect eval and files atoms from global score
;; files.
(when (and files (not global))
(funcall elem group))
;; Regexp-file cons
((consp elem)
- (when (string-match (car elem) group)
- (cadr elem))))))
+ (when (string-match (gnus-globalify-regexp (car elem)) group)
+ (replace-match (cadr elem) t nil group ))))))
(when found
(nnheader-concat gnus-kill-files-directory found))))
(concat group (if (gnus-use-long-file-name 'not-score) "." "/")
gnus-adaptive-file-suffix)))
+(defun gnus-current-home-score-file (group)
+ "Return the \"current\" regular score file."
+ (car (nreverse (gnus-score-find-alist group))))
+
;;;
;;; Score decays
;;;
:group 'gnus-newsrc
:type 'boolean)
+(defvar gnus-startup-file-coding-system 'binary
+ "*Coding system for startup file.")
+
;;; Internal variables
(defvar gnus-newsrc-file-version nil)
(file-exists-p (concat file ".el"))
(file-exists-p (concat file ".elc")))
(condition-case var
- (load file nil t)
+ (let ((coding-system-for-read 'binary))
+ (load file nil t))
(error
(error "Error in %s: %s" file var)))))))))
(gnus-message 5 "Reading %s..." ding-file)
(let (gnus-newsrc-assoc)
(condition-case nil
- (load ding-file t t t)
+ (let ((coding-system-for-read gnus-startup-file-coding-system))
+ (load ding-file t t t))
(error
(ding)
(unless (gnus-yes-or-no-p
(set (car elem) (eval (nth 1 elem))))))))
(defun gnus-summary-read-group (group &optional show-all no-article
- kill-buffer no-display backward)
+ kill-buffer no-display backward
+ select-article)
"Start reading news in newsgroup GROUP.
If SHOW-ALL is non-nil, already read articles are also listed.
If NO-ARTICLE is non-nil, no article is selected initially.
(or (gnus-summary-read-group-1
group show-all no-article
kill-buffer no-display)
- (setq show-all nil)))))
+ (setq show-all nil)
+ select-article))))
(eq gnus-auto-select-next 'quietly))
(set-buffer gnus-group-buffer)
;; The entry function called above goes to the next
result))
(defun gnus-summary-read-group-1 (group show-all no-article
- kill-buffer no-display)
+ kill-buffer no-display
+ &optional select-articles)
;; Killed foreign groups can't be entered.
(when (and (not (gnus-group-native-p group))
(not (gnus-gethash group gnus-newsrc-hashtb)))
(gnus-message 5 "Retrieving newsgroup: %s..." group)
(let* ((new-group (gnus-summary-setup-buffer group))
(quit-config (gnus-group-quit-config group))
- (did-select (and new-group (gnus-select-newsgroup group show-all))))
+ (did-select (and new-group (gnus-select-newsgroup
+ group show-all select-articles))))
(cond
;; This summary buffer exists already, so we just select it.
((not new-group)
(cdr (assq number gnus-newsgroup-scored))
(memq number gnus-newsgroup-processable))))))
-(defun gnus-select-newsgroup (group &optional read-all)
+(defun gnus-select-newsgroup (group &optional read-all select-articles)
"Select newsgroup GROUP.
-If READ-ALL is non-nil, all articles in the group are selected."
+If READ-ALL is non-nil, all articles in the group are selected.
+If SELECT-ARTICLES, only select those articles from GROUP."
(let* ((entry (gnus-gethash group gnus-newsrc-hashtb))
;;!!! Dirty hack; should be removed.
(gnus-summary-ignore-duplicates
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
(gnus-group-update-group group))
- (setq articles (gnus-articles-to-read group read-all))
+ (setq articles (or select-articles (gnus-articles-to-read group read-all)))
(cond
((null articles)
;; Removed marked articles that do not exist.
(gnus-update-missing-marks
(gnus-sorted-complement fetched-articles articles))
- ;; Let the Gnus agent mark articles as read.
- (when gnus-agent
- (gnus-agent-get-undownloaded-list))
;; We might want to build some more threads first.
(when (and gnus-fetch-old-headers
(eq gnus-headers-retrieved-by 'nov))
(if (eq gnus-fetch-old-headers 'invisible)
(gnus-build-all-threads)
(gnus-build-old-threads)))
+ ;; Let the Gnus agent mark articles as read.
+ (when gnus-agent
+ (gnus-agent-get-undownloaded-list))
;; Check whether auto-expire is to be done in this group.
(setq gnus-newsgroup-auto-expire
(gnus-group-auto-expirable-p group))
;; first unread article is the article after the last read
;; article. Sounds logical, doesn't it?
(if (not (listp (cdr read)))
- (setq first (1+ (cdr read)))
+ (setq first (max (car active) (1+ (cdr read))))
;; `read' is a list of ranges.
(when (/= (setq nlast (or (and (numberp (car read)) (car read))
(caar read)))
1)
- (setq first 1))
+ (setq first (car active)))
(while read
(when first
(while (< first nlast)
"#" gnus-topic-mark-topic
"\M-#" gnus-topic-unmark-topic
[tab] gnus-topic-indent
- [M-tab] gnus-topic-unindent
+ [(meta tab)] gnus-topic-unindent
gnus-mouse-2 gnus-mouse-pick-topic)
;; Define a new submap.
(error "Not a symbol: %s" alist))
`(setq ,alist (delq (assq ,key ,alist) ,alist)))
+(defun gnus-globalify-regexp (re)
+ "Returns a regexp that matches a whole line, iff RE matches a part of it."
+ (concat (unless (string-match "^\\^" re) "^.*")
+ re
+ (unless (string-match "\\$$" re) ".*$")))
+
(provide 'gnus-util)
;;; gnus-util.el ends here
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.6.24"
+(defconst gnus-version-number "5.6.25"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
\"nnml+private:mail.misc\", for instance."
:group 'gnus-message
:type '(choice (const :tag "none" nil)
+ sexp
string))
(defcustom gnus-secondary-servers nil
"Return non-nil if GROUP (and ARTICLE) come from a news server."
(or (gnus-member-of-valid 'post group) ; Ordinary news group.
(and (gnus-member-of-valid 'post-mail group) ; Combined group.
- (eq (gnus-request-type group article) 'news))))
+ (if (or (null article)
+ (not (< article 0)))
+ (eq (gnus-request-type group article) 'news)
+ (if (not (vectorp article))
+ nil
+ ;; It's a real article.
+ (eq (gnus-request-type group (mail-header-id article))
+ 'news))))))
;; Returns a list of writable groups.
(defun gnus-writable-groups ()
:group 'message-headers
:type 'regexp)
-(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:\\|^X-Trace:\\|^X-Complaints-To:"
"*Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
any confusion."
(setq header (car elem)))
(setq header elem))
(when (or (not (re-search-forward
- (concat "^" (downcase (symbol-name header)) ":")
+ (concat "^"
+ (regexp-quote
+ (downcase
+ (if (stringp header)
+ header
+ (symbol-name header))))
+ ":")
nil t))
(progn
;; The header was found. We insert a space after the
(progn
;; This header didn't exist, so we insert it.
(goto-char (point-max))
- (insert (symbol-name header) ": " value "\n")
+ (insert (if (stringp header) header (symbol-name header))
+ ": " value "\n")
(forward-line -1))
;; The value of this header was empty, so we clear
;; totally and insert the new value.
(t nil))))
(defun nnagent-request-type (group article)
- (let ((gnus-plugged t))
- (if (not (gnus-check-backend-function
- 'request-type (car gnus-command-method)))
- 'unknown
- (funcall (gnus-get-function gnus-command-method 'request-type)
- (gnus-group-real-name group) article))))
+ (unless (stringp article)
+ (let ((gnus-plugged t))
+ (if (not (gnus-check-backend-function
+ 'request-type (car gnus-command-method)))
+ 'unknown
+ (funcall (gnus-get-function gnus-command-method 'request-type)
+ (gnus-group-real-name group) article)))))
(deffoo nnagent-request-newgroups (date server)
nil)
(nnoo-map-functions nndir
(nnml-retrieve-headers 0 nndir-current-group 0 0)
- (nnmh-request-article 0 nndir-current-group 0 0)
+ (nnml-request-article 0 nndir-current-group 0 0)
(nnmh-request-group nndir-current-group 0 0)
(nnml-close-group nndir-current-group 0)
(nnmh-request-list (nnoo-current-server 'nndir) nndir-directory)
(require 'timezone)
(require 'message)
(require 'custom)
+(require 'gnus-util)
(eval-and-compile
(autoload 'gnus-error "gnus-util")
group-assoc)))
group-assoc))
-(defvar nnmail-active-file-coding-system
- 'iso-8859-1
+(defvar nnmail-active-file-coding-system 'binary
"*Coding system for active file.")
(defun nnmail-save-active (group-assoc file-name)
(let* ((list (gnus-parse-netrc nntp-authinfo-file))
(alist (gnus-netrc-machine list nntp-address))
(force (gnus-netrc-get alist "force"))
- (user (gnus-netrc-get alist "login"))
+ (user (or (gnus-netrc-get alist "login") nntp-authinfo-user))
(passwd (gnus-netrc-get alist "password")))
(when (or (not send-if-force)
force)
- (nntp-send-command
- "^3.*\r?\n" "AUTHINFO USER"
- (or user
- nntp-authinfo-user
- (setq nntp-authinfo-user
- (read-string (format "NNTP (%s) user name: " nntp-address)))))
+ (unless user
+ (setq user (read-string (format "NNTP (%s) user name: " nntp-address))
+ nntp-authinfo-user user))
+ (unless (member user '(nil ""))
+ (nntp-send-command "^3.*\r?\n" "AUTHINFO USER" user)
+ (when t ;???Should check if AUTHINFO succeeded
(nntp-send-command
"^2.*\r?\n" "AUTHINFO PASS"
(or passwd
nntp-authinfo-password
(setq nntp-authinfo-password
- (nnmail-read-passwd (format "NNTP (%s) password: "
- nntp-address))))))))
+ (nnmail-read-passwd (format "NNTP (%s@%s) password: "
+ user nntp-address))))))))))
(defun nntp-send-nosy-authinfo ()
"Send the AUTHINFO to the nntp server."
- (nntp-send-command
- "^3.*\r?\n" "AUTHINFO USER"
- (read-string (format "NNTP (%s) user name: " nntp-address)))
- (nntp-send-command
- "^2.*\r?\n" "AUTHINFO PASS"
- (nnmail-read-passwd "NNTP (%s) password: " nntp-address)))
+ (let ((user (read-string (format "NNTP (%s) user name: " nntp-address))))
+ (unless (member user '(nil ""))
+ (nntp-send-command "^3.*\r?\n" "AUTHINFO USER" user)
+ (when t ;???Should check if AUTHINFO succeeded
+ (nntp-send-command "^2.*\r?\n" "AUTHINFO PASS"
+ (nnmail-read-passwd "NNTP (%s@%s) password: "
+ user nntp-address))))))
(defun nntp-send-authinfo-from-file ()
"Send the AUTHINFO to the nntp server.
(deffoo nnvirtual-request-type (group &optional article)
(if (not article)
'unknown
- (let ((mart (nnvirtual-map-article article)))
- (when mart
- (gnus-request-type (car mart) (cdr mart))))))
+ (if (numberp article)
+ (let ((mart (nnvirtual-map-article article)))
+ (if mart
+ (gnus-request-type (car mart) (cdr mart))))
+ (let ((method (gnus-find-method-for-group
+ nnvirtual-last-accessed-component-group)))
+ (gnus-request-type
+ nnvirtual-last-accessed-component-group nil)))))
(deffoo nnvirtual-request-update-mark (group article mark)
(let* ((nart (nnvirtual-map-article article))
:info
cd ..\texi
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -fsave-buffer
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -fsave-buffer
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
if not "%2" == "copy" goto done
copy gnus %1\info
copy gnus-?? %1\info
goto end
:usage
-echo Usage: install ^<emacs-dir^> [copy]
+echo Usage: make ^<emacs-dir^> [copy]
echo.
echo where: ^<emacs-dir^> is the directory you installed emacs in
echo eg. d:\emacs\19.34
+Sun Jul 12 04:03:27 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Home Score File): Addition.
+
Fri Jul 10 04:26:23 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (NNTP): Addition.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Gnus 5.6.24 Manual
+@settitle Gnus 5.6.25 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Gnus 5.6.24 Manual
+@title Gnus 5.6.25 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Gnus 5.6.24.
+This manual corresponds to Gnus 5.6.25.
@end ifinfo
@subsection Virtual Groups
@cindex nnvirtual
@cindex virtual groups
+@cindex merging groups
An @dfn{nnvirtual group} is really nothing more than a collection of
other groups.
If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and
@file{rec.SCORE} for all @samp{rec} groups (and so on), you can say:
+@findex gnus-hierarchial-home-score-file
@lisp
(setq gnus-home-score-file
'gnus-hierarchial-home-score-file)
@end lisp
This is a ready-made function provided for your convenience.
+Other functions include
+
+@table @code
+@item gnus-current-home-score-file
+@findex gnus-current-home-score-file
+Return the ``current'' regular score file. This will make scoring
+commands add entry to the ``innermost'' matching score file.
+
+@end table
If you want to have one score file for the @samp{emacs} groups and
another for the @samp{comp} groups, while letting all other groups use
January 25th 1997 (after 84 releases) as ``Gnus 5.4'' (67 releases).
On September 13th 1997, Quassia Gnus was started and lasted 37
-releases. If was released as ``Gnus 5.6.24' on March 8th 1998.
+releases. If was released as ``Gnus 5.6.25' on March 8th 1998.
If you happen upon a version of Gnus that has a prefixed name --
``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
* September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
* Red Gnus:: Third time best---Gnus 5.4/5.5.
-* Quassia Gnus:: Two times two is four, or Gnus 5.6.24.
+* Quassia Gnus:: Two times two is four, or Gnus 5.6.25.
@end menu
These lists are, of course, just @emph{short} overviews of the
@node Quassia Gnus
@subsubsection Quassia Gnus
-New features in Gnus 5.6.24:
+New features in Gnus 5.6.25:
@itemize @bullet
gnus-posting-styles doesn't work in drafts.
@item
+gnus-summary-limit-include-cached is slow when there are
+many articles in the cache, since it regenerates big parts of the
+summary buffer for each article.
+
+@item
Solve the halting problem.
@c TODO
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 5.6.24 Manual
+@settitle Message 5.6.25 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 5.6.24 Manual
+@title Message 5.6.25 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 5.6.24. Message is distributed with
+This manual corresponds to Message 5.6.25. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.