From: Lars Magne Ingebrigtsen Date: Fri, 8 Jul 2011 07:42:21 +0000 (+0200) Subject: Allow sending mail in "emacs -Q" by not calling customize-save-variable X-Git-Url: https://git.hcoop.net/bpt/emacs.git/commitdiff_plain/d760b73104d0533a222adb058f48da3e4ca61f3f Allow sending mail in "emacs -Q" by not calling customize-save-variable * mail/smtpmail.el (smtpmail-query-smtp-server): Ditto. * mail/sendmail.el (sendmail-query-once): If we aren't allowed to save customizations (with "emacs -Q"), just set the variable instead of erroring out. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 74b36f4ab0..35337de3fa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2011-07-08 Lars Magne Ingebrigtsen + + * mail/sendmail.el (sendmail-query-once): If we aren't allowed to + save customizations (with "emacs -Q"), just set the variable + instead of erroring out. + + * mail/smtpmail.el (smtpmail-query-smtp-server): Ditto. + 2011-07-08 Juri Linkov * arc-mode.el (archive-zip-expunge, archive-zip-update) diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 6480d6a393..b14c7e5013 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -168,44 +168,48 @@ This is used by the default mail-sending commands. See also (defvar sendmail-query-once-function 'query "Either a function to send email, or the symbol `query'.") +(autoload 'custom-file "cus-edit") + ;;;###autoload (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))))))) + (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))) + (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)))))) + (if (ignore-errors (custom-file)) + (customize-save-variable 'sendmail-query-once-function function) + (setq sendmail-query-once-function function)))) (funcall sendmail-query-once-function)) ;;;###autoload(custom-initialize-delay 'send-mail-function nil) diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 073e2fa4a3..57356f3315 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -587,6 +587,8 @@ The list is in preference order.") (defun smtpmail-response-text (response) (mapconcat 'identity (cdr response) "\n")) +(autoload 'custom-file "cus-edit") + (defun smtpmail-query-smtp-server () (let ((server (read-string "Outgoing SMTP mail server: ")) (ports '(587 "smtp")) @@ -598,8 +600,12 @@ The list is in preference order.") (setq port (pop ports))) (when (setq stream (ignore-errors (open-network-stream "smtp" nil server port))) - (customize-save-variable 'smtpmail-smtp-server server) - (customize-save-variable 'smtpmail-smtp-service port) + (if (ignore-errors (custom-file)) + (progn + (customize-save-variable 'smtpmail-smtp-server server) + (customize-save-variable 'smtpmail-smtp-service port)) + (setq smtpmail-smtp-server server + smtpmail-smtp-service port)) (delete-process stream))) (unless smtpmail-smtp-server (error "Couldn't contact an SMTP server"))))