X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-msg.el;h=286e8f1a89722e249fe182d9394bb1997cbe2e26;hp=3af3beec267aef7149d63b734f10341e86e83121;hb=8748b10ded98ea62aa979449d59d1dbb36f98af5;hpb=dc5f28288604704f9312c03e50a46226e7053a78 diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 3af3beec2..286e8f1a8 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -256,7 +256,23 @@ See also the `mml-default-encrypt-method' variable." (defcustom gnus-confirm-mail-reply-to-news nil "If non-nil, Gnus requests confirmation when replying to news. This is done because new users often reply by mistake when reading -news." +news. +This can also be a function receiving the group name as the only +parameter which should return non-nil iff a confirmation is needed, or +a regexp, in which case a confirmation is asked for iff the group name +matches the regexp." + :group 'gnus-message + :type '(choice (const :tag "No" nil) + (const :tag "Yes" t) + (regexp :tag "Iff group matches regexp") + (function :tag "Iff function evaluates to non-nil"))) + +(defcustom gnus-confirm-treat-mail-like-news + nil + "If non-nil, Gnus will treat mail like news with regard to confirmation +when replying by mail. See the `gnus-confirm-mail-reply-to-news' variable +for fine-tuning this. +If nil, Gnus will never ask for confirmation if replying to mail." :group 'gnus-message :type 'boolean) @@ -500,15 +516,19 @@ Gcc: header for archiving purposes." (setq message-newsreader (setq message-mailer (gnus-extended-version))) (message-add-action `(set-window-configuration ,winconf) 'exit 'postpone 'kill) - (message-add-action - `(when (gnus-buffer-exists-p ,buffer) - (save-excursion - (set-buffer ,buffer) - ,(when article - (if (eq config 'forward) - `(gnus-summary-mark-article-as-forwarded ',yanked) - `(gnus-summary-mark-article-as-replied ',yanked))))) - 'send)) + (let ((to-be-marked (cond + (yanked yanked) + (article (if (listp article) article (list article))) + (t nil)))) + (message-add-action + `(when (gnus-buffer-exists-p ,buffer) + (save-excursion + (set-buffer ,buffer) + ,(when to-be-marked + (if (eq config 'forward) + `(gnus-summary-mark-article-as-forwarded ',to-be-marked) + `(gnus-summary-mark-article-as-replied ',to-be-marked))))) + 'send))) (put 'gnus-setup-message 'lisp-indent-function 1) (put 'gnus-setup-message 'edebug-form-spec '(form body)) @@ -1038,9 +1058,16 @@ If VERY-WIDE, make a very wide reply." (list (and current-prefix-arg (gnus-summary-work-articles 1)))) ;; Allow user to require confirmation before replying by mail to the - ;; author of a news article. - (when (or (not (gnus-news-group-p gnus-newsgroup-name)) - (not gnus-confirm-mail-reply-to-news) + ;; author of a news article (or mail message). + (when (or + (not (or (gnus-news-group-p gnus-newsgroup-name) + gnus-confirm-treat-mail-like-news)) + (not (cond ((stringp gnus-confirm-mail-reply-to-news) + (string-match gnus-confirm-mail-reply-to-news + gnus-newsgroup-name)) + ((functionp gnus-confirm-mail-reply-to-news) + (funcall gnus-confirm-mail-reply-to-news gnus-newsgroup-name)) + (t gnus-confirm-mail-reply-to-news))) (y-or-n-p "Really reply by mail to article author? ")) (let* ((article (if (listp (car yank)) @@ -1612,6 +1639,9 @@ this is a reply." group (gnus-status-message method)) (sit-for 2)) (when (and group-art + ;; FIXME: Should gcc-mark-as-read work when + ;; Gnus is not running? + (gnus-alive-p) (or gnus-gcc-mark-as-read gnus-inews-mark-gcc-as-read)) (gnus-group-mark-article-read group (cdr group-art)))