+Fri May 17 16:27:42 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-article-hide-headers): Would make headers
+ iinvisible under XEmacs.
+
+Fri May 17 11:38:52 1996 Lars Magne Ingebrigtsen <larsi@ylfing.ifi.uio.no>
+
+ * gnus.el (gnus-summary-edit-article-done): Remove article from
+ backlog.
+ (gnus-group-update-group-line): Would indent oddly.
+
+ * gnus-uu.el (gnus-uu-post-encoded): Use message.
+ (gnus-uu-post-encoded): Don't double-prompt.
+
+ * message.el (message-mode): Do mailabbrev things here.
+
+ * nntp.el (nntp-default-sentinel): Reset nntp-current-group when
+ losing connection.
+
+ * gnus-score.el (gnus-score-load-file): Dumb downcasing.
+
+Fri May 17 06:16:00 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-delete-article): Better prompt.
+
+ * gnus-score.el (gnus-score-load-file): Downcase all header
+ names.
+
+Thu May 16 14:04:30 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-make-date-line): Separated into own function
+ and don't reply "Now" to bogus dates.
+ (gnus-summary-search-article): Bind `gnus-article-display-hook' to
+ nil.
+
Thu May 16 07:40:24 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+ * gnus.el: September Gnus v0.86 is released.
+
* gnus-xmas.el (gnus-xmas-topic-remove-excess-properties): Remove
more excess props.
(defvar gnus-score-cache nil)
(defvar gnus-scores-articles nil)
-(defvar gnus-header-index nil)
(defvar gnus-score-index nil)
+
+(defconst gnus-header-index
+ ;; Name to index alist.
+ '(("number" 0 gnus-score-integer)
+ ("subject" 1 gnus-score-string)
+ ("from" 2 gnus-score-string)
+ ("date" 3 gnus-score-date)
+ ("message-id" 4 gnus-score-string)
+ ("references" 5 gnus-score-string)
+ ("chars" 6 gnus-score-integer)
+ ("lines" 7 gnus-score-integer)
+ ("xref" 8 gnus-score-string)
+ ("head" -1 gnus-score-body)
+ ("body" -1 gnus-score-body)
+ ("all" -1 gnus-score-body)
+ ("followup" 2 gnus-score-followup)
+ ("thread" 5 gnus-score-thread)))
+
(eval-and-compile
(autoload 'gnus-uu-ctl-map "gnus-uu" nil nil 'keymap))
(setq alist (cons (list 'read-only t) alist)))
(setq gnus-score-cache
(cons (cons file alist) gnus-score-cache)))
- ;; If there are actual scores in the alist, we add it to the
- ;; return value of this function.
- (if (memq t (mapcar (lambda (e) (stringp (car e))) alist))
- (setq lists (list alist)))
+ (let ((a alist)
+ found)
+ (while a
+ ;; Downcase all header names.
+ (when (stringp (caar a))
+ (setcar (car a) (downcase (caar a)))
+ (setq found t))
+ (pop a))
+ ;; If there are actual scores in the alist, we add it to the
+ ;; return value of this function.
+ (when found
+ (setq lists (list alist))))
;; Treat the other possible atoms in the score alist.
(let ((mark (car (gnus-score-get 'mark alist)))
(expunge (car (gnus-score-get 'expunge alist)))
(gnus-score-orphans gnus-orphan-score))
;; Run each header through the score process.
(while entries
- (setq entry (car entries)
- header (downcase (nth 0 entry))
- entries (cdr entries))
- (setq gnus-score-index (nth 1 (assoc header gnus-header-index)))
+ (setq entry (pop entries)
+ header (nth 0 entry)
+ gnus-score-index (nth 1 (assoc header gnus-header-index)))
(when (< 0 (apply 'max (mapcar
(lambda (score)
(length (gnus-score-get header score)))
(let* ((buffer-read-only nil)
(articles gnus-scores-articles)
(all-scores scores)
- (request-func (cond ((string= "head" (downcase header))
+ (request-func (cond ((string= "head" header)
'gnus-request-head)
- ((string= "body" (downcase header))
+ ((string= "body" header)
'gnus-request-body)
(t 'gnus-request-article)))
entries alist ofunc article last)
;; Build a `gnus-newsgroup-scored' type cons from ARTICLE.
(cons (mail-header-number (car article)) (cdr article)))
-(defconst gnus-header-index
- ;; Name to index alist.
- '(("number" 0 gnus-score-integer)
- ("subject" 1 gnus-score-string)
- ("from" 2 gnus-score-string)
- ("date" 3 gnus-score-date)
- ("message-id" 4 gnus-score-string)
- ("references" 5 gnus-score-string)
- ("chars" 6 gnus-score-integer)
- ("lines" 7 gnus-score-integer)
- ("xref" 8 gnus-score-string)
- ("head" -1 gnus-score-body)
- ("body" -1 gnus-score-body)
- ("all" -1 gnus-score-body)
- ("followup" 2 gnus-score-followup)
- ("thread" 5 gnus-score-thread)))
-
(defun gnus-current-score-file-nondirectory (&optional score-file)
(let ((score-file (or score-file gnus-current-score-file)))
(if score-file
(progn
(end-of-line)
(insert (format " (0/%d)" parts))))
- (gnus-inews-news))
+ (message-send))
(save-excursion
(setq i 1)
(forward-line 1)))
(insert beg-line)
(insert "\n")
- (gnus-inews-news)))
+ (let (message-sent-message-via)
+ (message-send))))
(and (setq buf (get-buffer send-buffer-name))
(kill-buffer buf))
(remove-text-properties
beg end
'(gnus-topic nil gnus-topic-level nil gnus-topic-visible nil))
- (goto-char end)))
+ (goto-char end)
+ (map-extents
+ (lambda (e ma)
+ (set-extent-property e 'start-closed t))
+ (current-buffer) beg end)))
(defun gnus-xmas-topic-remove-excess-properties ()
(let ((end (point))
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "September Gnus v0.86"
+(defconst gnus-version "September Gnus v0.87"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
"Update the current line in the group buffer."
(let* ((buffer-read-only nil)
(group (gnus-group-group-name))
- (gnus-group-indentation (gnus-group-group-indentation))
(entry (and group (gnus-gethash group gnus-newsrc-hashtb))))
(and entry
(not (gnus-ephemeral-group-p group))
"Insert GROUP on the current line."
(let ((entry (gnus-gethash group gnus-newsrc-hashtb))
active info)
- (setq gnus-group-indentation (gnus-group-group-indentation))
(if entry
(progn
;; (Un)subscribed group.
Optional argument BACKWARD means do search for backward.
gnus-select-article-hook is not called during the search."
(let ((gnus-select-article-hook nil) ;Disable hook.
+ (gnus-article-display-hook nil)
(gnus-mark-article-hook nil) ;Inhibit marking as read.
(re-search
(if backward
(if (and gnus-novice-user
(not (gnus-y-or-n-p
(format "Do you really want to delete %s forever? "
- (if (> (length articles) 1) "these articles"
+ (if (> (length articles) 1)
+ (format "these %s articles" (length articles))
"this article")))))
()
;; Delete the articles.
(gnus-summary-update-article (cdr gnus-article-current))
(when gnus-use-cache
(gnus-cache-update-article
- (cdr gnus-article-current) (car gnus-article-current))))
+ (cdr gnus-article-current) (car gnus-article-current)))
+ (when gnus-keep-backlog
+ (gnus-backlog-remove-article
+ (car gnus-article-current) (cdr gnus-article-current))))
(save-excursion
(when (get-buffer gnus-original-article-buffer)
(set-buffer gnus-original-article-buffer)
(if delete
(delete-region beg (point-max))
;; Suggested by Sudish Joseph <joseph@cis.ohio-state.edu>.
- (gnus-hide-text-type beg (point-max) 'headers)))))))))
+ (gnus-hide-text-type beg (point-max) 'headers))
+ ;; Work around XEmacs lossage.
+ (put-text-property (point-min) beg 'invisible nil))))))))
(defun gnus-article-hide-boring-headers (&optional arg)
"Toggle hiding of headers that aren't very interesting.
(message-remove-header date-regexp t)
(beginning-of-line))
(goto-char (point-max)))
- (insert
- (cond
- ;; Convert to the local timezone. We have to slap a
- ;; `condition-case' round the calls to the timezone
- ;; functions since they aren't particularly resistant to
- ;; buggy dates.
- ((eq type 'local)
- (concat "Date: " (condition-case ()
- (timezone-make-date-arpa-standard date)
- (error date))
- "\n"))
- ;; Convert to Universal Time.
- ((eq type 'ut)
- (concat "Date: "
- (condition-case ()
- (timezone-make-date-arpa-standard date nil "UT")
- (error date))
- "\n"))
- ;; Get the original date from the article.
- ((eq type 'original)
- (concat "Date: " date "\n"))
- ;; Do an X-Sent lapsed format.
- ((eq type 'lapsed)
- ;; If the date is seriously mangled, the timezone
- ;; functions are liable to bug out, so we condition-case
- ;; the entire thing.
- (let* ((real-time
- (condition-case ()
- (gnus-time-minus
- (gnus-encode-date
- (timezone-make-date-arpa-standard
- (current-time-string now)
- (current-time-zone now) "UT"))
- (gnus-encode-date
- (timezone-make-date-arpa-standard
- date nil "UT")))
- (error '(0 0))))
- (real-sec (+ (* (float (car real-time)) 65536)
- (cadr real-time)))
- (sec (abs real-sec))
- num prev)
- (if (zerop sec)
- "X-Sent: Now\n"
- (concat
- "X-Sent: "
- ;; This is a bit convoluted, but basically we go
- ;; through the time units for years, weeks, etc,
- ;; and divide things to see whether that results
- ;; in positive answers.
- (mapconcat
- (lambda (unit)
- (if (zerop (setq num (ffloor (/ sec (cdr unit)))))
- ;; The (remaining) seconds are too few to
- ;; be divided into this time unit.
- ""
- ;; It's big enough, so we output it.
- (setq sec (- sec (* num (cdr unit))))
- (prog1
- (concat (if prev ", " "") (int-to-string
- (floor num))
- " " (symbol-name (car unit))
- (if (> num 1) "s" ""))
- (setq prev t))))
- gnus-article-time-units "")
- ;; If dates are odd, then it might appear like the
- ;; article was sent in the future.
- (if (> real-sec 0)
- " ago\n"
- " in the future\n")))))
- (t
- (error "Unknown conversion type: %s" type))))
+ (insert (gnus-make-date-line date type))
;; Do highlighting.
(forward-line -1)
(when (and (gnus-visual-p 'article-highlight 'highlight)
(put-text-property (match-beginning 2) (match-end 2)
'face eface))))))))
+(defun gnus-make-date-line (date type)
+ "Return a DATE line of TYPE."
+ (cond
+ ;; Convert to the local timezone. We have to slap a
+ ;; `condition-case' round the calls to the timezone
+ ;; functions since they aren't particularly resistant to
+ ;; buggy dates.
+ ((eq type 'local)
+ (concat "Date: " (condition-case ()
+ (timezone-make-date-arpa-standard date)
+ (error date))
+ "\n"))
+ ;; Convert to Universal Time.
+ ((eq type 'ut)
+ (concat "Date: "
+ (condition-case ()
+ (timezone-make-date-arpa-standard date nil "UT")
+ (error date))
+ "\n"))
+ ;; Get the original date from the article.
+ ((eq type 'original)
+ (concat "Date: " date "\n"))
+ ;; Do an X-Sent lapsed format.
+ ((eq type 'lapsed)
+ ;; If the date is seriously mangled, the timezone
+ ;; functions are liable to bug out, so we condition-case
+ ;; the entire thing.
+ (let* ((now (current-time))
+ (real-time
+ (condition-case ()
+ (gnus-time-minus
+ (gnus-encode-date
+ (timezone-make-date-arpa-standard
+ (current-time-string now)
+ (current-time-zone now) "UT"))
+ (gnus-encode-date
+ (timezone-make-date-arpa-standard
+ date nil "UT")))
+ (error '(0 0))))
+ (real-sec (+ (* (float (car real-time)) 65536)
+ (cadr real-time)))
+ (sec (abs real-sec))
+ num prev)
+ (cond
+ ((equal real-time '(0 0))
+ "X-Sent: Unknown\n")
+ ((zerop sec)
+ "X-Sent: Now\n")
+ (t
+ (concat
+ "X-Sent: "
+ ;; This is a bit convoluted, but basically we go
+ ;; through the time units for years, weeks, etc,
+ ;; and divide things to see whether that results
+ ;; in positive answers.
+ (mapconcat
+ (lambda (unit)
+ (if (zerop (setq num (ffloor (/ sec (cdr unit)))))
+ ;; The (remaining) seconds are too few to
+ ;; be divided into this time unit.
+ ""
+ ;; It's big enough, so we output it.
+ (setq sec (- sec (* num (cdr unit))))
+ (prog1
+ (concat (if prev ", " "") (int-to-string
+ (floor num))
+ " " (symbol-name (car unit))
+ (if (> num 1) "s" ""))
+ (setq prev t))))
+ gnus-article-time-units "")
+ ;; If dates are odd, then it might appear like the
+ ;; article was sent in the future.
+ (if (> real-sec 0)
+ " ago\n"
+ " in the future\n"))))))
+ (t
+ (error "Unknown conversion type: %s" type))))
+
(defun gnus-article-date-local (&optional highlight)
"Convert the current article date to the local timezone."
(interactive (list t))
(point) (next-single-property-change
(1+ (point)) 'gnus-backlog nil (point-max)))))))
+(defun gnus-backlog-remove-article (group number)
+ "Remove article NUMBER in GROUP from the backlog."
+ (when (numberp number)
+ (gnus-backlog-setup)
+ (let ((ident (intern (concat group ":" (int-to-string number))
+ gnus-backlog-hashtb))
+ beg end)
+ (when (memq ident gnus-backlog-articles)
+ ;; It was in the backlog.
+ (save-excursion
+ (set-buffer (gnus-backlog-buffer))
+ (when (setq beg (text-property-any
+ (point-min) (point-max) 'gnus-backlog
+ ident))
+ ;; Find the end (i. e., the beginning of the next article).
+ (setq end
+ (next-single-property-change
+ (1+ beg) 'gnus-backlog (current-buffer) (point-max)))
+ (delete-region beg end)
+ ;; Return success.
+ t))))))
+
(defun gnus-backlog-request-article (group number buffer)
(when (numberp number)
(gnus-backlog-setup)
(when (string-match "XEmacs\\|Lucid" emacs-version)
(message-setup-toolbar))
(easy-menu-add message-mode-menu message-mode-map)
+ ;; Allow mail alias things.
+ (if (fboundp 'mail-abbrevs-setup)
+ (mail-abbrevs-setup)
+ (funcall (intern "mail-aliases-setup")))
(run-hooks 'text-mode-hook 'message-mode-hook))
\f
(save-restriction
(message-narrow-to-headers)
(run-hooks 'message-header-setup-hook))
- ;; Allow mail alias things.
- (if (fboundp 'mail-abbrevs-setup)
- (mail-abbrevs-setup)
- (funcall (intern "mail-aliases-setup")))
(set-buffer-modified-p nil)
(run-hooks 'message-setup-hook)
(message-position-point)
(lambda (newsgroup)
(cond ((string-match \"private\" newsgroup) 31)
((string-match \"junk\" newsgroup) 1)
- ((string-match \"important\" 'never))
+ ((string-match \"important\" newsgroup) 'never)
(t 7))))")
(defvar nnmail-spool-file
(when (and server
nntp-warn-about-losing-connection)
(message "nntp: Connection closed to server %s" server)
+ (setq nntp-current-group "")
(ding))))
(defun nntp-kill-connection (server)
(defun nntp-possibly-change-server (newsgroup server &optional connectionless)
"Check whether the virtual server needs changing."
- (if (and server
- (not (nntp-server-opened server)))
- ;; This virtual server isn't open, so we (re)open it here.
- (nntp-open-server server nil t))
- (if (and newsgroup
- (not (equal newsgroup nntp-current-group)))
- ;; Set the proper current group.
- (nntp-request-group newsgroup server)))
+ (when (and server
+ (not (nntp-server-opened server)))
+ ;; This virtual server isn't open, so we (re)open it here.
+ (nntp-open-server server nil t))
+ (when (and newsgroup
+ (not (equal newsgroup nntp-current-group)))
+ ;; Set the proper current group.
+ (nntp-request-group newsgroup server)))
(defun nntp-try-list-active (group)
(nntp-list-active-group group)
@item T n
@kindex T n (Group)
@findex gnus-topic-create-topic
-Create a new topic (@code{gnus-topic-create-topic}). You will be
-prompted for a topic name and the name of the parent topic.
+Prompt for a new topic name and create it
+(@code{gnus-topic-create-topic}).
@item T m
@kindex T m (Group)
* Mail and Post:: Mailing and posting at the same time.
* Archived Messages:: Where Gnus stores the messages you've sent.
* Posting Styles:: An easier way to configure some key elements.
-* Drafts:: Postponing messages and rejected messages.
+@c * Drafts:: Postponing messages and rejected messages.
* Rejected Articles:: What happens if the server doesn't like your article?
@end menu
(setq gnus-message-archive-method
'(nnfolder "archive"
(nnfolder-inhibit-expiry t)
- (nnfolder-active-file "~/Mail/sent-mail/active")
+ (nnfolder-active-file "~/News/sent-mail/active")
(nnfolder-directory "~/News/sent-mail/")))
@end lisp
@end lisp
-@node Drafts
-@section Drafts
-@cindex drafts
-
-If you are writing a message (mail or news) and suddenly remember that
-you have a steak in the oven (or some pesto in the food processor, you
-craazy vegetarians), you'll probably wish there was a method to save the
-message you are writing so that you can continue editing it some other
-day, and send it when you feel its finished.
-
-Well, don't worry about it. Whenever you start composing a message of
-some sort using the Gnus mail and post commands, the buffer you get will
-automatically associate to an article in a special @dfn{draft} group.
-If you save the buffer the normal way (@kbd{C-x C-s}, for instance), the
-article will be saved there. (Auto-save files also go to the draft
-group.)
-
-@cindex nndraft
-@vindex gnus-draft-group-directory
-The draft group is a special group (which is implemented as an
-@code{nndraft} group, if you absolutely have to know) called
-@samp{nndraft:drafts}. The variable @code{gnus-draft-group-directory}
-controls both the name of the group and the location---the leaf element
-in the path will be used as the name of the group. What makes this
-group special is that you can't tick any articles in it or mark any
-articles as read---all articles in the group are permanently unread.
-
-If the group doesn't exist, it will be created and you'll be subscribed
-to it.
-
-@findex gnus-dissociate-buffer-from-draft
-@kindex C-c M-d (Mail)
-@kindex C-c M-d (Post)
-@findex gnus-associate-buffer-with-draft
-@kindex C-c C-d (Mail)
-@kindex C-c C-d (Post)
-If you're writing some super-secret message that you later want to
-encode with PGP before sending, you may wish to turn the auto-saving
-(and association with the draft group) off. You never know who might be
-interested in reading all your extremely valuable and terribly horrible
-and interesting secrets. The @kbd{C-c M-d}
-(@code{gnus-dissociate-buffer-from-draft}) command does that for you.
-If you change your mind and want to turn the auto-saving back on again,
-@kbd{C-c C-d} (@code{gnus-associate-buffer-with-draft} does that.
-
-@vindex gnus-use-draft
-To leave association with the draft group off by default, set
-@code{gnus-use-draft} to @code{nil}. It is @code{t} by default.
-
-@findex gnus-summary-send-draft
-@kindex S D c (Summary)
-When you want to continue editing the article, you simply enter the
-draft group and push @kbd{S D c} (@code{gnus-summary-send-draft}) to do
-that. You will be placed in a buffer where you left off.
-
-Rejected articles will also be put in this draft group (@pxref{Rejected
-Articles}).
-
-@findex gnus-summary-send-all-drafts
-If you have lots of rejected messages you want to post (or mail) without
-doing further editing, you can use the @kbd{S D a} command
-(@code{gnus-summary-send-all-drafts}). This command understands the
-process/prefix convention (@pxref{Process/Prefix}).
-
-
-@node Rejected Articles
-@section Rejected Articles
-@cindex rejected articles
-
-Sometimes a news server will reject an article. Perhaps the server
-doesn't like your face. Perhaps it just feels miserable. Perhaps
-@emph{there be demons}. Perhaps you have included too much cited text.
-Perhaps the disk is full. Perhaps the server is down.
-
-These situations are, of course, totally beyond the control of Gnus.
-(Gnus, of course, loves the way you look, always feels great, has angels
-fluttering around inside of it, doesn't care about how much cited text
-you include, never runs full and never goes down.) So Gnus saves these
-articles until some later time when the server feels better.
-
-The rejected articles will automatically be put in a special draft group
-(@pxref{Drafts}). When the server comes back up again, you'd then
-typically enter that group and send all the articles off.
-
+@c @node Drafts
+@c @section Drafts
+@c @cindex drafts
+@c
+@c If you are writing a message (mail or news) and suddenly remember that
+@c you have a steak in the oven (or some pesto in the food processor, you
+@c craazy vegetarians), you'll probably wish there was a method to save the
+@c message you are writing so that you can continue editing it some other
+@c day, and send it when you feel its finished.
+@c
+@c Well, don't worry about it. Whenever you start composing a message of
+@c some sort using the Gnus mail and post commands, the buffer you get will
+@c automatically associate to an article in a special @dfn{draft} group.
+@c If you save the buffer the normal way (@kbd{C-x C-s}, for instance), the
+@c article will be saved there. (Auto-save files also go to the draft
+@c group.)
+@c
+@c @cindex nndraft
+@c @vindex gnus-draft-group-directory
+@c The draft group is a special group (which is implemented as an
+@c @code{nndraft} group, if you absolutely have to know) called
+@c @samp{nndraft:drafts}. The variable @code{gnus-draft-group-directory}
+@c controls both the name of the group and the location---the leaf element
+@c in the path will be used as the name of the group. What makes this
+@c group special is that you can't tick any articles in it or mark any
+@c articles as read---all articles in the group are permanently unread.
+@c
+@c If the group doesn't exist, it will be created and you'll be subscribed
+@c to it.
+@c
+@c @findex gnus-dissociate-buffer-from-draft
+@c @kindex C-c M-d (Mail)
+@c @kindex C-c M-d (Post)
+@c @findex gnus-associate-buffer-with-draft
+@c @kindex C-c C-d (Mail)
+@c @kindex C-c C-d (Post)
+@c If you're writing some super-secret message that you later want to
+@c encode with PGP before sending, you may wish to turn the auto-saving
+@c (and association with the draft group) off. You never know who might be
+@c interested in reading all your extremely valuable and terribly horrible
+@c and interesting secrets. The @kbd{C-c M-d}
+@c (@code{gnus-dissociate-buffer-from-draft}) command does that for you.
+@c If you change your mind and want to turn the auto-saving back on again,
+@c @kbd{C-c C-d} (@code{gnus-associate-buffer-with-draft} does that.
+@c
+@c @vindex gnus-use-draft
+@c To leave association with the draft group off by default, set
+@c @code{gnus-use-draft} to @code{nil}. It is @code{t} by default.
+@c
+@c @findex gnus-summary-send-draft
+@c @kindex S D c (Summary)
+@c When you want to continue editing the article, you simply enter the
+@c draft group and push @kbd{S D c} (@code{gnus-summary-send-draft}) to do
+@c that. You will be placed in a buffer where you left off.
+@c
+@c Rejected articles will also be put in this draft group (@pxref{Rejected
+@c Articles}).
+@c
+@c @findex gnus-summary-send-all-drafts
+@c If you have lots of rejected messages you want to post (or mail) without
+@c doing further editing, you can use the @kbd{S D a} command
+@c (@code{gnus-summary-send-all-drafts}). This command understands the
+@c process/prefix convention (@pxref{Process/Prefix}).
+@c
+@c
+@c @node Rejected Articles
+@c @section Rejected Articles
+@c @cindex rejected articles
+@c
+@c Sometimes a news server will reject an article. Perhaps the server
+@c doesn't like your face. Perhaps it just feels miserable. Perhaps
+@c @emph{there be demons}. Perhaps you have included too much cited text.
+@c Perhaps the disk is full. Perhaps the server is down.
+@c
+@c These situations are, of course, totally beyond the control of Gnus.
+@c (Gnus, of course, loves the way you look, always feels great, has angels
+@c fluttering around inside of it, doesn't care about how much cited text
+@c you include, never runs full and never goes down.) So Gnus saves these
+@c articles until some later time when the server feels better.
+@c
+@c The rejected articles will automatically be put in a special draft group
+@c (@pxref{Drafts}). When the server comes back up again, you'd then
+@c typically enter that group and send all the articles off.
+@c
@node Select Methods
@chapter Select Methods