changeset 106473:dfb27937da01

* simple.el (compose-mail): Check for incompatibilities and warn. (compose-mail-user-agent-warnings): New option.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 07 Dec 2009 16:09:05 +0000
parents 6e0f1038bc44
children 40531d6992e6
files lisp/ChangeLog lisp/simple.el
diffstat 2 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Dec 07 09:02:11 2009 +0000
+++ b/lisp/ChangeLog	Mon Dec 07 16:09:05 2009 +0000
@@ -1,3 +1,8 @@
+2009-12-07  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (compose-mail): Check for incompatibilities and warn.
+	(compose-mail-user-agent-warnings): New option.
+
 2009-12-07  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	Support showing a single log entry from vc-annotate.
--- a/lisp/simple.el	Mon Dec 07 09:02:11 2009 +0000
+++ b/lisp/simple.el	Mon Dec 07 16:09:05 2009 +0000
@@ -5558,6 +5558,15 @@
   :version "23.2"                       ; sendmail->message
   :group 'mail)
 
+(defcustom compose-mail-user-agent-warnings t
+  "If non-nil, `compose-mail' warns about changes in `mail-user-agent'.
+If the value of `mail-user-agent' is the default, and the user
+appears to have customizations applying to the old default,
+`compose-mail' issues a warning."
+  :type 'boolean
+  :version "23.2"
+  :group 'mail)
+
 (define-mail-user-agent 'sendmail-user-agent
   'sendmail-user-agent-compose
   'mail-send-and-exit)
@@ -5627,6 +5636,32 @@
 Each action has the form (FUNCTION . ARGS)."
   (interactive
    (list nil nil nil current-prefix-arg))
+
+  ;; In Emacs 23.2, the default value of `mail-user-agent' changed
+  ;; from sendmail-user-agent to message-user-agent.  Some users may
+  ;; encounter incompatibilities.  This hack tries to detect problems
+  ;; and warn about them.
+  (and compose-mail-user-agent-warnings
+       (eq mail-user-agent 'message-user-agent)
+       (let (warn-vars)
+	 (dolist (var '(mail-mode-hook mail-send-hook mail-setup-hook
+			mail-yank-hooks mail-archive-file-name
+			mail-default-reply-to mail-mailing-lists
+			mail-self-blind mail-setup-with-from))
+	   (and (boundp var)
+		(symbol-value var)
+		(push var warn-vars)))
+	 (when warn-vars
+	   (display-warning 'mail
+			    (format "\
+The default mail mode is now Message mode.
+You have the following Mail mode variable%s customized:
+\n  %s\n\nTo use Mail mode, set `mail-user-agent' to sendmail-user-agent.
+To disable this warning, set `compose-mail-check-user-agent' to nil."
+				    (if (> (length warn-vars) 1) "s" "")
+				    (mapconcat 'symbol-name
+					       warn-vars " "))))))
+
   (let ((function (get mail-user-agent 'composefunc)))
     (funcall function to subject other-headers continue
 	     switch-function yank-action send-actions)))