X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-msg.el;h=a2a2652b0829c01dd2e24f69930f60c906c51169;hb=74a489ff1213794152d6e13f7a11e16c89f62602;hp=7f20cf73ff85687042633b9640a27030dab11286;hpb=a9a9b06ed0b9c8a32feead9191ea729d411a3a49;p=gnus diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 7f20cf73f..a2a2652b0 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -1,7 +1,7 @@ ;;; gnus-msg.el --- mail and post interface for Gnus ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen @@ -9,10 +9,10 @@ ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,9 +20,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -109,6 +107,7 @@ the second with the current group name." (defcustom gnus-message-setup-hook nil "Hook run after setting up a message buffer." :group 'gnus-message + :options '(message-remove-blank-cited-lines) :type 'hook) (defcustom gnus-bug-create-help-buffer t @@ -150,7 +149,7 @@ See Info node `(gnus)Posting Styles'." :type 'boolean) (make-obsolete-variable 'gnus-inews-mark-gcc-as-read - 'gnus-gcc-mark-as-read) + 'gnus-gcc-mark-as-read "Emacs 22.1") (defcustom gnus-gcc-externalize-attachments nil "Should local-file attachments be included as external parts in Gcc copies? @@ -261,15 +260,15 @@ See also the `mml-default-encrypt-method' variable." This is done because new users often reply by mistake when reading 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 +parameter, which should return non-nil if a confirmation is needed; or +a regexp, in which case a confirmation is asked for if the group name matches the regexp." - :version "22.1" + :version "23.1" ;; No Gnus (default changed) :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"))) + (regexp :tag "If group matches regexp") + (function :tag "If function evaluates to non-nil"))) (defcustom gnus-confirm-treat-mail-like-news nil @@ -292,7 +291,7 @@ If nil, the address field will always be empty after invoking (defcustom gnus-message-highlight-citation t ;; gnus-treat-highlight-citation ;; gnus-cite dependency "Enable highlighting of different citation levels in message-mode." - :version "23.0" ;; No Gnus + :version "23.1" ;; No Gnus :group 'gnus-cite :group 'gnus-message :type 'boolean) @@ -334,8 +333,7 @@ Please describe the bug in annoying, painstaking detail. Thank you for your help in stamping out bugs. ") -(eval-and-compile - (autoload 'gnus-uu-post-news "gnus-uu" nil t)) +(autoload 'gnus-uu-post-news "gnus-uu" nil t) ;;; @@ -551,8 +549,7 @@ Gcc: header for archiving purposes." (t nil)))) (message-add-action `(when (gnus-buffer-exists-p ,buffer) - (save-excursion - (set-buffer ,buffer) + (with-current-buffer ,buffer ,(when to-be-marked (if (eq config 'forward) `(gnus-summary-mark-article-as-forwarded ',to-be-marked) @@ -580,15 +577,14 @@ If ARG is 1, prompt for a group name to find the posting style." (setq gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Use posting style of group: " - gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read + "Use posting style of group: " + nil nil (gnus-read-active-file-p)) (gnus-group-group-name)) "")) ;; #### see comment in gnus-setup-message -- drv (gnus-setup-message 'message (message-mail))) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq gnus-newsgroup-name group))))) (defun gnus-group-news (&optional arg) @@ -611,16 +607,15 @@ network. The corresponding back end must have a 'request-post method." (setq gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Use group: " - gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read "Use group: " + nil nil + (gnus-read-active-file-p)) (gnus-group-group-name)) "")) ;; #### see comment in gnus-setup-message -- drv (gnus-setup-message 'message (message-news (gnus-group-real-name gnus-newsgroup-name)))) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq gnus-newsgroup-name group))))) (defun gnus-group-post-news (&optional arg) @@ -633,8 +628,8 @@ a news." (let ((gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Newsgroup: " gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read "Newsgroup: " nil nil + (gnus-read-active-file-p)) (gnus-group-group-name)) "")) ;; make sure last viewed article doesn't affect posting styles: @@ -659,15 +654,14 @@ posting style." (setq gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Use group: " - gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read "Use group: " + nil nil + (gnus-read-active-file-p)) "") gnus-newsgroup-name)) ;; #### see comment in gnus-setup-message -- drv (gnus-setup-message 'message (message-mail))) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq gnus-newsgroup-name group))))) (defun gnus-summary-news-other-window (&optional arg) @@ -690,9 +684,9 @@ network. The corresponding back end must have a 'request-post method." (setq gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Use group: " - gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read "Use group: " + nil nil + (gnus-read-active-file-p)) "") gnus-newsgroup-name)) ;; #### see comment in gnus-setup-message -- drv @@ -703,8 +697,7 @@ network. The corresponding back end must have a 'request-post method." (remove (car (gnus-find-method-for-group gnus-newsgroup-name)) gnus-discouraged-post-methods))))) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq gnus-newsgroup-name group))))) (defun gnus-summary-post-news (&optional arg) @@ -717,8 +710,8 @@ a news." (let ((gnus-newsgroup-name (if arg (if (= 1 (prefix-numeric-value arg)) - (completing-read "Newsgroup: " gnus-active-hashtb nil - (gnus-read-active-file-p)) + (gnus-group-completing-read "Newsgroup: " nil nil + (gnus-read-active-file-p)) "") gnus-newsgroup-name)) ;; make sure last viewed article doesn't affect posting styles: @@ -819,7 +812,8 @@ post using the current select method." This is done simply by taking the old article and adding a Supersedes header line with the old Message-ID." (interactive) - (let ((article (gnus-summary-article-number))) + (let ((article (gnus-summary-article-number)) + (mail-parse-charset gnus-newsgroup-charset)) (gnus-setup-message 'reply-yank (gnus-summary-select-article t) (set-buffer gnus-original-article-buffer) @@ -827,8 +821,7 @@ header line with the old Message-ID." (push `((lambda () (when (gnus-buffer-exists-p ,gnus-summary-buffer) - (save-excursion - (set-buffer ,gnus-summary-buffer) + (with-current-buffer ,gnus-summary-buffer (gnus-cache-possibly-remove-article ,article nil nil nil t) (gnus-summary-mark-as-read ,article gnus-canceled-mark))))) message-send-actions) @@ -844,16 +837,14 @@ header line with the old Message-ID." ;; if ARTICLE-BUFFER is nil, gnus-article-buffer is used ;; this buffer should be passed to all mail/news reply/post routines. (setq gnus-article-copy (gnus-get-buffer-create " *gnus article copy*")) - (save-excursion - (set-buffer gnus-article-copy) + (with-current-buffer gnus-article-copy (mm-enable-multibyte)) (let ((article-buffer (or article-buffer gnus-article-buffer)) end beg) (if (not (and (get-buffer article-buffer) (gnus-buffer-exists-p article-buffer))) (error "Can't find any article buffer") - (save-excursion - (set-buffer article-buffer) + (with-current-buffer article-buffer (let ((gnus-newsgroup-charset (or gnus-article-charset gnus-newsgroup-charset)) (gnus-newsgroup-ignored-charsets @@ -1100,7 +1091,10 @@ If VERY-WIDE, make a very wide reply." ((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? ")) + (if (or wide very-wide) + t ;; Ignore gnus-confirm-mail-reply-to-news for wide and very + ;; wide replies. + (y-or-n-p "Really reply by mail to article author? "))) (let* ((article (if (listp (car yank)) (caar yank) @@ -1116,8 +1110,7 @@ If VERY-WIDE, make a very wide reply." (gnus-summary-select-article) (dolist (article very-wide) (gnus-summary-select-article nil nil nil article) - (save-excursion - (set-buffer (gnus-copy-article-buffer)) + (with-current-buffer (gnus-copy-article-buffer) (gnus-msg-treat-broken-reply-to) (save-restriction (message-narrow-to-head) @@ -1140,8 +1133,7 @@ If VERY-WIDE, make a very wide reply." "Check the various replysign variables and take action accordingly." (when (or gnus-message-replysign gnus-message-replyencrypt) (let (signed encrypted) - (save-excursion - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (setq signed (memq 'signed gnus-article-wash-types)) (setq encrypted (memq 'encrypted gnus-article-wash-types))) (cond ((and gnus-message-replyencrypt encrypted) @@ -1272,8 +1264,7 @@ For the `inline' alternatives, also see the variable current-prefix-arg)) (dolist (article (gnus-summary-work-articles n)) (gnus-summary-select-article nil nil nil article) - (save-excursion - (set-buffer gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer (message-resend address)) (gnus-summary-mark-article-as-forwarded article))) @@ -1284,7 +1275,7 @@ A new buffer will be created to allow the user to modify body and contents of the message, and then, everything will happen as when composing a new message." (interactive) - (let ((article (gnus-summary-article-number))) + (let ((mail-parse-charset gnus-newsgroup-charset)) (gnus-setup-message 'reply-yank (gnus-summary-select-article t) (set-buffer gnus-original-article-buffer) @@ -1480,8 +1471,7 @@ If YANK is non-nil, include the original article." (insert nntp-server-type)) (insert "\n\n\n\n\n") (let (text) - (save-excursion - (set-buffer (gnus-get-buffer-create " *gnus environment info*")) + (with-current-buffer (gnus-get-buffer-create " *gnus environment info*") (erase-buffer) (gnus-debug) (setq text (buffer-string))) @@ -1502,8 +1492,7 @@ If YANK is non-nil, include the original article." (gnus-summary-iterate n (let ((gnus-inhibit-treatment t)) (gnus-summary-select-article)) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (message-yank-buffer gnus-article-buffer)))) (defun gnus-debug () @@ -1516,8 +1505,7 @@ The source file has to be in the Emacs load path." (gnus-message 4 "Please wait while we snoop your variables...") (sit-for 0) ;; Go through all the files looking for non-default values for variables. - (save-excursion - (set-buffer (gnus-get-buffer-create " *gnus bug info*")) + (with-current-buffer (gnus-get-buffer-create " *gnus bug info*") (while files (erase-buffer) (when (and (setq file (locate-library (pop files))) @@ -1558,7 +1546,7 @@ The source file has to be in the Emacs load path." ;; Remove any control chars - they seem to cause trouble for some ;; mailers. (Byte-compiled output from the stuff above.) (goto-char point) - (while (re-search-forward (mm-string-as-multibyte + (while (re-search-forward (mm-string-to-multibyte "[\000-\010\013-\037\200-\237]") nil t) (replace-match (format "\\%03o" (string-to-char (match-string 0))) t t)))) @@ -1632,8 +1620,11 @@ this is a reply." (message-tokenize-header gcc " ,"))) ;; Copy the article over to some group(s). (while (setq group (pop groups)) - (unless (gnus-check-server - (setq method (gnus-inews-group-method group))) + (setq method (gnus-inews-group-method group) + group (mm-encode-coding-string + group + (gnus-group-name-charset method group))) + (unless (gnus-check-server method) (error "Can't open server %s" (if (stringp method) method (car method)))) (unless (gnus-request-group group nil method) @@ -1686,6 +1677,11 @@ this is a reply." group method t t)))) (gnus-message 1 "Couldn't store article in group %s: %s" group (gnus-status-message method))) + (when (stringp method) + (setq method (gnus-server-to-method method))) + (when (and (listp method) + (gnus-native-method-p method)) + (setq group (gnus-group-short-name group))) (when (and group-art ;; FIXME: Should gcc-mark-as-read work when ;; Gnus is not running? @@ -1993,5 +1989,4 @@ this is a reply." (provide 'gnus-msg) -;;; arch-tag: 9f22b2f5-1c0a-49de-916e-4c88e984852b ;;; gnus-msg.el ends here