]> git.eshelyaron.com Git - emacs.git/commitdiff
Add the new `sendmail-query-once' function to sendmail.el.
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 29 Jun 2011 20:21:29 +0000 (22:21 +0200)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 29 Jun 2011 20:21:29 +0000 (22:21 +0200)
lisp/ChangeLog
lisp/mail/sendmail.el

index 7ed6073339d0bb209eea77761a8778d6c98d045f..62fbf813ce2052f8b78a6a7238dcdbde49bbf8d6 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mail/sendmail.el (sendmail-query-once): New function.
+       (sendmail-query-once-function): New variable.
+
 2011-06-29  Glenn Morris  <rgm@gnu.org>
 
        * files.el (auto-mode-alist): Add .f03, .f08 for f90-mode.
index c1405ec5ff3adfee99c6d8e90869e031d28d66ce..13da0627fff11e89b8f962e89b903260c05e48e0 100644 (file)
@@ -164,6 +164,7 @@ that matches the variable `mail-header-separator'.
 This is used by the default mail-sending commands.  See also
 `message-send-mail-function' for use with the Message package."
   :type '(radio (function-item sendmail-send-it :tag "Use Sendmail package")
+               (function-item sendmail-query-once :tag "Query the user")
                (function-item smtpmail-send-it :tag "Use SMTPmail package")
                (function-item feedmail-send-it :tag "Use Feedmail package")
                (function-item mailclient-send-it :tag "Use Mailclient package")
@@ -171,6 +172,48 @@ This is used by the default mail-sending commands.  See also
   :initialize 'custom-initialize-delay
   :group 'sendmail)
 
+(defvar sendmail-query-once-function 'query
+  "Either a function to send email, or the symbol `query'.")
+
+(defun sendmail-query-once ()
+  "Send an email via `sendmail-query-once-function'.
+If `sendmail-query-once-function' is `query', ask the user what
+function to use, and then save that choice."
+  (when (equal sendmail-query-once-function 'query)
+    (let ((default
+           (cond
+            ((or (and window-system (eq system-type 'darwin))
+                 (eq system-type 'windows-nt))
+             'mailclient-send-it)
+            ((and sendmail-program
+                  (executable-find sendmail-program))
+             'sendmail-send-it))))
+      (customize-save-variable
+       'sendmail-query-once-function
+       (if (or (not default)
+              ;; We have detected no OS-level mail senders, or we
+              ;; have already configured smtpmail, so we use the
+              ;; internal SMTP service.
+              (and (boundp 'smtpmail-smtp-server)
+                   smtpmail-smtp-server))
+          'smtpmail-send-it
+        ;; Query the user.
+        (unwind-protect
+            (progn
+              (pop-to-buffer "*Mail Help*")
+              (erase-buffer)
+              (insert "Sending mail from Emacs hasn't been set up yet.\n\n"
+                      "Type `y' to configure outgoing SMTP, or `n' to use\n"
+                      "the default mail sender on your system.\n\n"
+                      "To change this again at a later date, customize the\n"
+                      "`send-mail-function' variable.\n")
+              (goto-char (point-min))
+              (if (y-or-n-p "Configure outgoing SMTP in Emacs? ")
+                  'smtpmail-send-it
+                default))
+          (kill-buffer (current-buffer)))))))
+  (funcall sendmail-query-once-function))
+
 ;;;###autoload(custom-initialize-delay 'send-mail-function nil)
 
 ;;;###autoload