summaryrefslogtreecommitdiff
path: root/lisp/mail/emacsbug.el
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2011-01-30 19:59:58 +0100
committerJan Djärv <jan.h.d@swipnet.se>2011-01-30 19:59:58 +0100
commit253f7d1bc55aec58986aa36f8a6e4725d311ed24 (patch)
tree22abf993be7270f524167c69a4df217a8d617852 /lisp/mail/emacsbug.el
parent2787bba35d57d7963857536d35a7d5adc215a0d9 (diff)
downloademacs-253f7d1bc55aec58986aa36f8a6e4725d311ed24.tar.gz
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.
Diffstat (limited to 'lisp/mail/emacsbug.el')
-rw-r--r--lisp/mail/emacsbug.el28
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)