Mercurial > emacs
changeset 205:d3e764a552a5
Initial revision
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 05 Mar 1991 18:44:14 +0000 |
parents | 00dde7fa9e98 |
children | 011f87971acb |
files | lisp/=gnusmail.el |
diffstat | 1 files changed, 148 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/=gnusmail.el Tue Mar 05 18:44:14 1991 +0000 @@ -0,0 +1,148 @@ +;;; Mail reply commands for GNUS newsreader +;; Copyright (C) 1990 Masanobu UMEDA +;; $Header: gnusmail.el,v 1.1 90/03/23 13:24:39 umerin Locked $ + +;; This file is part of GNU Emacs. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY. No author or distributor +;; accepts responsibility to anyone for the consequences of using it +;; or for whether it serves any particular purpose or works at all, +;; unless he says so in writing. Refer to the GNU Emacs General Public +;; License for full details. + +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +(provide 'gnusmail) +(require 'gnus) + +;; Provides mail reply and mail other window command using usual mail +;; interface and mh-e interface. +;; +;; To use MAIL: set the variables gnus-mail-reply-method and +;; gnus-mail-other-window-method to gnus-mail-reply-using-mail and +;; gnus-mail-other-window-using-mail, respectively. +;; +;; To use MH-E: set the variables gnus-mail-reply-method and +;; gnus-mail-other-window-method to gnus-mail-reply-using-mhe and +;; gnus-mail-other-window-using-mhe, respectively. + +(autoload 'news-mail-reply "rnewspost") +(autoload 'news-mail-other-window "rnewspost") + +(autoload 'mh-send "mh-e") +(autoload 'mh-send-other-window "mh-e") +(autoload 'mh-find-path "mh-e") +(autoload 'mh-yank-cur-msg "mh-e") + +;;; Mail reply commands of GNUS Subject Mode + +(defun gnus-Subject-mail-reply (yank) + "Reply mail to news author. +If prefix arg YANK is non-nil, original article is yanked automatically. +Customize the variable `gnus-mail-reply-method' to use another mailer." + (interactive "P") + (gnus-Subject-select-article) + (switch-to-buffer gnus-Article-buffer) + (widen) + (delete-other-windows) + (bury-buffer gnus-Article-buffer) + (funcall gnus-mail-reply-method yank)) + +(defun gnus-Subject-mail-reply-with-original () + "Reply mail to news author with original article." + (interactive) + (gnus-Subject-mail-reply t)) + +(defun gnus-Subject-mail-other-window () + "Compose mail in other window. +Customize the variable `gnus-mail-other-window-method' to use another mailer." + (interactive) + (gnus-Subject-select-article) + (switch-to-buffer gnus-Article-buffer) + (widen) + (delete-other-windows) + (bury-buffer gnus-Article-buffer) + (funcall gnus-mail-other-window-method)) + + +;;; Send mail using sendmail mail mode. + +(defun gnus-mail-reply-using-mail (&optional yank) + "Compose reply mail using mail. +Optional argument YANK means yank original article." + (news-mail-reply) + (gnus-overload-functions) + (if yank + (let ((last (point))) + (goto-char (point-max)) + (mail-yank-original nil) + (goto-char last) + ))) + +(defun gnus-mail-other-window-using-mail () + "Compose mail other window using mail." + (news-mail-other-window) + (gnus-overload-functions)) + + +;;; Send mail using mh-e. + +;; The following mh-e interface is all cooperative works of +;; tanaka@flab.fujitsu.CO.JP (TANAKA Hiroshi), kawabe@sra.CO.JP +;; (Yoshikatsu Kawabe), and shingu@casund.cpr.canon.co.jp (Toshiaki +;; SHINGU). + +(defun gnus-mail-reply-using-mhe (&optional yank) + "Compose reply mail using mh-e. +Optional argument YANK means yank original article. +The command \\[mh-yank-cur-msg] yanks the original message into current buffer." + ;; First of all, prepare mhe mail buffer. + (let (from cc subject date to reply-to (buffer (current-buffer))) + (save-restriction + (gnus-Article-show-all-headers) ;I don't think this is really needed. + (setq from (gnus-fetch-field "from") + subject (let ((subject (gnus-fetch-field "subject"))) + (if (and subject + (not (string-match "^[Rr][Ee]:.+$" subject))) + (concat "Re: " subject) subject)) + reply-to (gnus-fetch-field "reply-to") + cc (gnus-fetch-field "cc") + date (gnus-fetch-field "date")) + (setq mh-show-buffer buffer) + (setq to (or reply-to from)) + (mh-find-path) + (mh-send to (or cc "") subject) + (save-excursion + (mh-insert-fields + "In-reply-to:" + (concat + (substring from 0 (string-match " *at \\| *@ \\| *(\\| *<" from)) + "'s message of " date))) + (setq mh-sent-from-folder buffer) + (setq mh-sent-from-msg 1) + )) + ;; Then, yank original article if requested. + (if yank + (let ((last (point))) + (mh-yank-cur-msg) + (goto-char last) + ))) + +(defun gnus-mail-other-window-using-mhe () + "Compose mail other window using MH-E Mail." + (let ((to (read-string "To: ")) + (cc (read-string "Cc: ")) + (subject (read-string "Subject: " (gnus-fetch-field "subject")))) + (gnus-Article-show-all-headers) ;I don't think this is really needed. + (setq mh-show-buffer (current-buffer)) + (mh-find-path) + (mh-send-other-window to cc subject) + (setq mh-sent-from-folder (current-buffer)) + (setq mh-sent-from-msg 1)))