X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-msg.el;h=a2a2652b0829c01dd2e24f69930f60c906c51169;hb=0f63151c0cfcb3498678c203edb84e6a1d2b57e0;hp=001823b40218b97024ff72cf4b8b78a1029d8752;hpb=063c5b9963c05b4f69ef98c1d10930e03c5127ce;p=gnus diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 001823b40..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 3, 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? @@ -264,7 +263,7 @@ This can also be a function receiving the group name as the only 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) @@ -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) @@ -587,8 +584,7 @@ If ARG is 1, prompt for a group name to find the posting style." "")) ;; #### 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) @@ -619,8 +615,7 @@ network. The corresponding back end must have a 'request-post method." ;; #### 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) @@ -666,8 +661,7 @@ posting style." 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) @@ -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) @@ -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