summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorShengHuo ZHU <zsh@cs.rochester.edu>2000-12-21 19:58:34 +0000
committerShengHuo ZHU <zsh@cs.rochester.edu>2000-12-21 19:58:34 +0000
commit88818fbedfeb7c882ac246cdd7369ed3568bf21c (patch)
tree2c1596d14603f9cde712b0d517cbc651560eeea7 /lisp
parentc6ae41f3c9e3a4fcd804a2839d8d3ef315306e9a (diff)
downloademacs-88818fbedfeb7c882ac246cdd7369ed3568bf21c.tar.gz
emacs-88818fbedfeb7c882ac246cdd7369ed3568bf21c.tar.bz2
emacs-88818fbedfeb7c882ac246cdd7369ed3568bf21c.zip
* mml.el (gnus-add-minor-mode): Autoload.
* message.el (message-forward): Save-restriction. * message.el (message-mail-user-agent): Add :version. * message.el (message-mail-user-agent): New variable. (message-setup): Renamed to message-setup-1. Support mail-user-agent. (message-mail-user-agent): New function. (message-mail): Use it. (message-reply): Use it. (message-resend): Use it. (message-mail-other-window): Use it. (message-mail-other-frame): Use it. * gnus-msg.el (gnus-bug): Support mail-user-agent.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gnus/ChangeLog20
-rw-r--r--lisp/gnus/gnus-msg.el20
-rw-r--r--lisp/gnus/message.el128
-rw-r--r--lisp/gnus/mml.el2
4 files changed, 128 insertions, 42 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index d1ac795a1be..94a05ae2c20 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,23 @@
+2000-12-21 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * mml.el (gnus-add-minor-mode): Autoload.
+
+ * message.el (message-forward): Save-restriction.
+
+ * message.el (message-mail-user-agent): Add :version.
+
+ * message.el (message-mail-user-agent): New variable.
+ (message-setup): Renamed to message-setup-1. Support
+ mail-user-agent.
+ (message-mail-user-agent): New function.
+ (message-mail): Use it.
+ (message-reply): Use it.
+ (message-resend): Use it.
+ (message-mail-other-window): Use it.
+ (message-mail-other-frame): Use it.
+
+ * gnus-msg.el (gnus-bug): Support mail-user-agent.
+
2000-12-21 Miles Bader <miles@gnu.org>
* message.el (message-mode): Set `comment-start' to the yank prefix.
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 91baed2029c..ef5875b36c2 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -893,15 +893,17 @@ If YANK is non-nil, include the original article."
(interactive)
(unless (gnus-alive-p)
(error "Gnus has been shut down"))
- (gnus-setup-message 'bug
- (delete-other-windows)
- (when gnus-bug-create-help-buffer
- (switch-to-buffer "*Gnus Help Bug*")
- (erase-buffer)
- (insert gnus-bug-message)
- (goto-char (point-min)))
- (message-pop-to-buffer "*Gnus Bug*")
- (message-setup `((To . ,gnus-maintainer) (Subject . "")))
+ (gnus-setup-message (if (message-mail-user-agent) 'message 'bug)
+ (unless (message-mail-user-agent)
+ (delete-other-windows)
+ (when gnus-bug-create-help-buffer
+ (switch-to-buffer "*Gnus Help Bug*")
+ (erase-buffer)
+ (insert gnus-bug-message)
+ (goto-char (point-min)))
+ (message-pop-to-buffer "*Gnus Bug*"))
+ (let ((message-this-is-mail t))
+ (message-setup `((To . ,gnus-maintainer) (Subject . ""))))
(when gnus-bug-create-help-buffer
(push `(gnus-bug-kill-buffer) message-send-actions))
(goto-char (point-min))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 98e8b8b86ea..3044bdc196b 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -303,6 +303,7 @@ The provided functions are:
(defcustom message-forward-show-mml t
"*If non-nil, forward messages are shown as mml. Otherwise, forward messages are unchanged."
+ :version "21.1"
:group 'message-forwarding
:type 'boolean)
@@ -917,6 +918,26 @@ The first matched address (not primary one) is used in the From field."
:type '(choice (const :tag "Always use primary" nil)
regexp))
+(defcustom message-mail-user-agent nil
+ "Like `mail-user-agent'.
+Except if it is `nil', use Gnus native MUA; if it is t, use
+`mail-user-agent'."
+ :type '(radio (const :tag "Gnus native"
+ :format "%t\n"
+ nil)
+ (const :tag "`mail-user-agent'"
+ :format "%t\n"
+ t)
+ (function-item :tag "Default Emacs mail"
+ :format "%t\n"
+ sendmail-user-agent)
+ (function-item :tag "Emacs interface to MH"
+ :format "%t\n"
+ mh-e-user-agent)
+ (function :tag "Other"))
+ :version "21.1"
+ :group 'message)
+
;;; Internal variables.
(defvar message-sending-message "Sending...")
@@ -2986,7 +3007,6 @@ If NOW, use that time instead."
(mail-header-references message-reply-headers)
(mail-header-subject message-reply-headers)
psubject
- (mail-header-subject message-reply-headers)
(not (string=
(message-strip-subject-re
(mail-header-subject message-reply-headers))
@@ -3560,8 +3580,42 @@ than 988 characters long, and if they are not, trim them until they are."
(setq message-buffer-list
(nconc message-buffer-list (list (current-buffer))))))
+(defun message-mail-user-agent ()
+ (let ((mua (cond
+ ((not message-mail-user-agent) nil)
+ ((eq message-mail-user-agent t) mail-user-agent)
+ (t message-mail-user-agent))))
+ (if (memq mua '(message-user-agent gnus-user-agent))
+ nil
+ mua)))
+
+(defun message-setup (headers &optional replybuffer actions switch-function)
+ (let ((mua (message-mail-user-agent))
+ subject to field yank-action)
+ (if (not (and message-this-is-mail mua))
+ (message-setup-1 headers replybuffer actions)
+ (if replybuffer
+ (setq yank-action (list 'insert-buffer replybuffer)))
+ (setq headers (copy-sequence headers))
+ (setq field (assq 'Subject headers))
+ (when field
+ (setq subject (cdr field))
+ (setq headers (delq field headers)))
+ (setq field (assq 'To headers))
+ (when field
+ (setq to (cdr field))
+ (setq headers (delq field headers)))
+ (let ((mail-user-agent mua))
+ (compose-mail to subject
+ (mapcar (lambda (item)
+ (cons
+ (format "%s" (car item))
+ (cdr item)))
+ headers)
+ nil switch-function yank-action actions)))))
+
(eval-when-compile (defvar mc-modes-alist))
-(defun message-setup (headers &optional replybuffer actions)
+(defun message-setup-1 (headers &optional replybuffer actions)
(when (and (boundp 'mc-modes-alist)
(not (assq 'message-mode mc-modes-alist)))
(push '(message-mode (encrypt . mc-encrypt-message)
@@ -3675,7 +3729,8 @@ than 988 characters long, and if they are not, trim them until they are."
OTHER-HEADERS is an alist of header/value pairs."
(interactive)
(let ((message-this-is-mail t))
- (message-pop-to-buffer (message-buffer-name "mail" to))
+ (unless (message-mail-user-agent)
+ (message-pop-to-buffer (message-buffer-name "mail" to)))
(message-setup
(nconc
`((To . ,(or to "")) (Subject . ,(or subject "")))
@@ -3791,10 +3846,11 @@ OTHER-HEADERS is an alist of header/value pairs."
(unless follow-to
(setq follow-to (message-get-reply-headers wide to-address))))
- (message-pop-to-buffer
- (message-buffer-name
- (if wide "wide reply" "reply") from
- (if wide to-address nil)))
+ (unless (message-mail-user-agent)
+ (message-pop-to-buffer
+ (message-buffer-name
+ (if wide "wide reply" "reply") from
+ (if wide to-address nil))))
(setq message-reply-headers
(vector 0 subject from date message-id references 0 0 ""))
@@ -4146,7 +4202,8 @@ Optional DIGEST will use digest to forward."
(set-buffer cur)
(mm-with-unibyte-current-buffer
(set-buffer tmp)
- (insert-buffer-substring cur))
+ (insert-buffer-substring cur)
+ (set-buffer cur))
(set-buffer tmp)
(mm-enable-multibyte)
(mime-to-mml)
@@ -4155,13 +4212,14 @@ Optional DIGEST will use digest to forward."
(replace-match "X-From-Line: "))
(set-buffer target)
(insert-buffer-substring tmp)
- (set-buffer tmp))
- (goto-char (point-max)))
- (mml-insert-buffer cur)
- (goto-char (point-min))
- (when (looking-at "From ")
- (replace-match "X-From-Line: "))
- (goto-char (point-max))))
+ (set-buffer tmp)))
+ (save-restriction
+ (narrow-to-region (point) (point))
+ (mml-insert-buffer cur)
+ (goto-char (point-min))
+ (when (looking-at "From ")
+ (replace-match "X-From-Line: "))
+ (goto-char (point-max)))))
(setq e (point))
(if message-forward-as-mime
(if digest
@@ -4197,9 +4255,11 @@ Optional DIGEST will use digest to forward."
(let ((cur (current-buffer))
beg)
;; We first set up a normal mail buffer.
- (set-buffer (get-buffer-create " *message resend*"))
- (erase-buffer)
- (message-setup `((To . ,address)))
+ (unless (message-mail-user-agent)
+ (set-buffer (get-buffer-create " *message resend*"))
+ (erase-buffer))
+ (let ((message-this-is-mail t))
+ (message-setup `((To . ,address))))
;; Insert our usual headers.
(message-generate-headers '(From Date To))
(message-narrow-to-headers)
@@ -4281,27 +4341,31 @@ you."
(defun message-mail-other-window (&optional to subject)
"Like `message-mail' command, but display mail buffer in another window."
(interactive)
- (let ((pop-up-windows t)
- (special-display-buffer-names nil)
- (special-display-regexps nil)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (message-pop-to-buffer (message-buffer-name "mail" to)))
+ (unless (message-mail-user-agent)
+ (let ((pop-up-windows t)
+ (special-display-buffer-names nil)
+ (special-display-regexps nil)
+ (same-window-buffer-names nil)
+ (same-window-regexps nil))
+ (message-pop-to-buffer (message-buffer-name "mail" to))))
(let ((message-this-is-mail t))
- (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
+ (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
+ nil nil 'switch-to-buffer-other-window)))
;;;###autoload
(defun message-mail-other-frame (&optional to subject)
"Like `message-mail' command, but display mail buffer in another frame."
(interactive)
- (let ((pop-up-frames t)
- (special-display-buffer-names nil)
- (special-display-regexps nil)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (message-pop-to-buffer (message-buffer-name "mail" to)))
+ (unless (message-mail-user-agent)
+ (let ((pop-up-frames t)
+ (special-display-buffer-names nil)
+ (special-display-regexps nil)
+ (same-window-buffer-names nil)
+ (same-window-regexps nil))
+ (message-pop-to-buffer (message-buffer-name "mail" to))))
(let ((message-this-is-mail t))
- (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
+ (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
+ nil nil 'switch-to-buffer-other-frame)))
;;;###autoload
(defun message-news-other-window (&optional newsgroups subject)
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index b11a2d8bb14..8bdbe289bd9 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -27,12 +27,12 @@
(require 'mm-bodies)
(require 'mm-encode)
(require 'mm-decode)
-(require 'gnus-ems)
(eval-when-compile (require 'cl))
(eval-and-compile
(autoload 'message-make-message-id "message")
(autoload 'gnus-setup-posting-charset "gnus-msg")
+ (autoload 'gnus-add-minor-mode "gnus-ems")
(autoload 'message-fetch-field "message")
(autoload 'message-posting-charset "message"))