emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Mail mode and message mode hooks


From: Chong Yidong
Subject: Re: Mail mode and message mode hooks
Date: Sun, 06 Dec 2009 18:52:22 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

Chong Yidong <address@hidden> writes:

> Another idea I had is to change compose-mail to check for hook
> duplication, and pop up a warning window telling the user that the
> default mail-user-agent has changed.

To flesh out this idea a bit more, here is a patch that implements it.
Opinions?

*** emacs/lisp/simple.el.~1.1035.~      2009-12-06 13:48:05.000000000 -0500
--- emacs/lisp/simple.el        2009-12-06 18:48:37.000000000 -0500
***************
*** 5558,5563 ****
--- 5558,5572 ----
    :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,5632 ****
--- 5636,5667 ----
  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-send-hook mail-setup-hook mail-yank-hooks
+                       mail-citation-hook mail-mode-hook
+                       mail-default-reply-to mail-archive-file-name
+                       mail-self-blind mail-mailing-lists))
+          (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)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]