diff options
Diffstat (limited to 'lisp/mail')
| -rw-r--r-- | lisp/mail/emacsbug.el | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index 44cfc76d808..a621647bcf1 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -32,6 +32,8 @@ ;;; Code: +(require 'url-util) + (defgroup emacsbug nil "Sending Emacs bug reports." :group 'maint @@ -77,6 +79,12 @@ Used for querying duplicates and linking to existing bugs.") (declare-function message-sort-headers "message" ()) (defvar message-strip-special-text-properties) +(defun report-emacs-bug-can-use-osx-open () + "Check if OSX open can be used to insert bug report into mailer" + (and (featurep 'ns) + (equal (executable-find "open") "/usr/bin/open") + (memq system-type '(darwin)))) + (defun report-emacs-bug-can-use-xdg-email () "Check if xdg-email can be used, i.e. we are on Gnome, KDE or xfce4." (and (getenv "DISPLAY") @@ -116,10 +124,15 @@ Used for querying duplicates and linking to existing bugs.") (if (> (point-max) (point)) (buffer-substring-no-properties (point) (point-max)))))) (if (and to subject body) - (start-process "xdg-email" nil "xdg-email" - "--subject" subject - "--body" body - (concat "mailto:" to)) + (if (report-emacs-bug-can-use-osx-open) + (start-process "/usr/bin/open" nil "open" + (concat "mailto:" to + "?subject=" (url-hexify-string subject) + "&body=" (url-hexify-string body))) + (start-process "xdg-email" nil "xdg-email" + "--subject" subject + "--body" body + (concat "mailto:" to))) (error "Subject, To or body not found"))))) ;;;###autoload @@ -141,7 +154,8 @@ Prompts for bug subject. Leaves you in a mail buffer." (prompt-properties '(field emacsbug-prompt intangible but-helpful rear-nonsticky t)) - (can-xdg-email (report-emacs-bug-can-use-xdg-email)) + (can-insert-mail (or (report-emacs-bug-can-use-xdg-email) + (report-emacs-bug-can-use-osx-open))) user-point message-end-point) (setq message-end-point (with-current-buffer (get-buffer-create "*Messages*") @@ -275,7 +289,7 @@ usually do not have translators to read other languages for them.\n\n") ;; This is so the user has to type something in order to send easily. (use-local-map (nconc (make-sparse-keymap) (current-local-map))) (define-key (current-local-map) "\C-c\C-i" 'report-emacs-bug-info) - (if can-xdg-email + (if can-insert-mail (define-key (current-local-map) "\C-cm" 'report-emacs-bug-insert-to-mailer)) (setq report-emacs-bug-send-command (get mail-user-agent 'sendfunc) @@ -292,7 +306,7 @@ usually do not have translators to read other languages for them.\n\n") report-emacs-bug-send-command)))) (princ (substitute-command-keys " Type \\[kill-buffer] RET to cancel (don't send it).\n")) - (if can-xdg-email + (if can-insert-mail (princ (substitute-command-keys " Type \\[report-emacs-bug-insert-to-mailer] to insert text to you preferred mail program.\n"))) (terpri) |
