Index: lisp/gnus-agent.el =================================================================== RCS file: /usr/local/cvsroot/gnus/lisp/gnus-agent.el,v retrieving revision 6.186 diff -u -r6.186 gnus-agent.el --- lisp/gnus-agent.el 3 Jan 2004 18:52:57 -0000 6.186 +++ lisp/gnus-agent.el 4 Jan 2004 07:07:39 -0000 @@ -181,6 +181,21 @@ :type 'boolean :group 'gnus-agent) +(defcustom gnus-agent-queue-mail t + "Whether and when outgoing mail should be queued by the agent. When +`always', always queue outgoing mail. When `nil', never queue. +Otherwise, queue if and only if unplugged." + :group 'gnus-agent + :type '(radio (const :format "Always" always) + (const :format "Never" nil) + (const :format "When plugged" t))) + +(defcustom gnus-agent-prompt-send-queue nil + "If non-nil, `gnus-group-send-queue' will prompt if called when +unplugged." + :group 'gnus-agent + :type 'boolean) + (defcustom gnus-agent-auto-agentize-methods '(nntp nnimap) "Initially, all servers from these methods are agentized. The user may remove or add servers using the Server buffer. @@ -642,7 +657,8 @@ 'gnus-dummy '((gnus-draft-mode))))) (defun gnus-agent-send-mail () - (if gnus-plugged + (if (or (not gnus-agent-queue-mail) + (and gnus-plugged (not (eq gnus-agent-queue-mail 'always)))) (funcall gnus-agent-send-mail-function) (goto-char (point-min)) (re-search-forward Index: lisp/gnus-draft.el =================================================================== RCS file: /usr/local/cvsroot/gnus/lisp/gnus-draft.el,v retrieving revision 6.24 diff -u -r6.24 gnus-draft.el --- lisp/gnus-draft.el 12 Dec 2003 16:31:46 -0000 6.24 +++ lisp/gnus-draft.el 4 Jan 2004 07:07:40 -0000 @@ -142,6 +142,9 @@ message-send-hook)) (message-setup-hook (and group (not (equal group "nndraft:queue")) message-setup-hook)) + (gnus-agent-queue-mail (if (equal group "nndraft:queue") + nil + gnus-agent-queue-mail)) type method move-to) (gnus-draft-setup article (or group "nndraft:queue")) ;; We read the meta-information that says how and where @@ -196,22 +199,25 @@ (defun gnus-group-send-queue () "Send all sendable articles from the queue group." (interactive) - (gnus-activate-group "nndraft:queue") - (save-excursion - (let* ((articles (nndraft-articles)) - (unsendable (gnus-uncompress-range - (cdr (assq 'unsend - (gnus-info-marks - (gnus-get-info "nndraft:queue")))))) - (gnus-posting-styles nil) - (total (length articles)) - article) - (while (setq article (pop articles)) - (unless (memq article unsendable) - (let ((message-sending-message - (format "Sending message %d of %d..." - (- total (length articles)) total))) - (gnus-draft-send article))))))) + (when (or gnus-plugged + (not gnus-agent-prompt-send-queue) + (gnus-y-or-n-p "Gnus is unplugged; really send queue? ")) + (gnus-activate-group "nndraft:queue") + (save-excursion + (let* ((articles (nndraft-articles)) + (unsendable (gnus-uncompress-range + (cdr (assq 'unsend + (gnus-info-marks + (gnus-get-info "nndraft:queue")))))) + (gnus-posting-styles nil) + (total (length articles)) + article) + (while (setq article (pop articles)) + (unless (memq article unsendable) + (let ((message-sending-message + (format "Sending message %d of %d..." + (- total (length articles)) total))) + (gnus-draft-send article "nndraft:queue")))))))) ;;;###autoload (defun gnus-draft-reminder () Index: texi/gnus.texi =================================================================== RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v retrieving revision 6.601 diff -u -r6.601 gnus.texi --- texi/gnus.texi 4 Jan 2004 03:20:18 -0000 6.601 +++ texi/gnus.texi 4 Jan 2004 07:08:03 -0000 @@ -18388,16 +18388,24 @@ @node Outgoing Messages @subsection Outgoing Messages -When Gnus is unplugged, all outgoing messages (both mail and news) are -stored in the draft group ``queue'' (@pxref{Drafts}). You can view -them there after posting, and edit them at will. - -When Gnus is plugged again, you can send the messages either from the -draft group with the special commands available there, or you can use -the @kbd{J S} command in the group buffer to send all the sendable -messages in the draft group. - - +By default, when Gnus is unplugged, all outgoing messages (both mail +and news) are stored in the draft group ``queue'' (@pxref{Drafts}). +You can view them there after posting, and edit them at will. + +You can control the circumstances under which outgoing mail is queued +(see @code{gnus-agent-queue-mail}, @pxref{Agent Variables}). Outgoing +news is always queued when Gnus is unplugged, and never otherwise. + +You can send the messages either from the draft group with the special +commands available there, or you can use the @kbd{J S} command in the +group buffer to send all the sendable messages in the draft group. +Posting news will only work when Gnus is plugged, but you can send +mail at any time. + +If sending mail while unplugged does not work for you and you worry +about hitting @kbd{J S} by accident when unplugged, you can have Gnus +ask you to confirm your action (see +@code{gnus-agent-prompt-send-queue}, @pxref{Agent Variables}). @node Agent Variables @subsection Agent Variables @@ -18496,6 +18504,19 @@ have not been fetched), @code{always-undownloaded} (maneuvering always ignores articles that have not been fetched), @code{unfetched} (maneuvering ignores articles whose headers have not been fetched). + +@item gnus-agent-queue-mail +@vindex gnus-agent-queue-mail +When @code{gnus-agent-queue-mail} is @code{always}, Gnus will always +queue mail rather than sending it straight away. When @code{t}, Gnus +will queue mail when unplugged only. When @code{nil}, never queue +mail. The default is @code{t}. + +@item gnus-agent-prompt-send-queue +@vindex gnus-agent-prompt-send-queue +When @code{gnus-agent-prompt-send-queue} is non-@code{nil} Gnus will +prompt you to confirm that you really wish to proceed if you hit +@kbd{J S} while unplugged. The default is @code{nil}. @item gnus-agent-auto-agentize-methods @vindex gnus-agent-auto-agentize-methods