From 253f7d1bc55aec58986aa36f8a6e4725d311ed24 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 30 Jan 2011 19:59:58 +0100 Subject: [PATCH] Implement C-c m in report-emacs-bug (insert to mailer) for OSX. * mail/emacsbug.el (report-emacs-bug-insert-to-mailer): Check report-emacs-bug-can-use-osx-open and use that if t. (report-emacs-bug-can-use-osx-open): New function. (report-emacs-bug): Rename can-xdg-email to can-insert-mail. Check report-emacs-bug-can-use-osx-open also for can-insert-mail. --- lisp/ChangeLog | 8 ++++++++ lisp/mail/emacsbug.el | 28 +++++++++++++++++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c9bdafebe8a..f69b32a4878 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2011-01-30 Jan Djärv + + * mail/emacsbug.el (report-emacs-bug-insert-to-mailer): Check + report-emacs-bug-can-use-osx-open and use that if t. + (report-emacs-bug-can-use-osx-open): New function. + (report-emacs-bug): Rename can-xdg-email to can-insert-mail. + Check report-emacs-bug-can-use-osx-open also for can-insert-mail. + 2011-01-29 Chong Yidong * vc/vc-dispatcher.el (vc-set-async-update): New function for 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) -- 2.39.5