Commit 876d1684 authored by Lars Magne Ingebrigtsen's avatar Lars Magne Ingebrigtsen
Browse files

Introduce a new `browse-url-mailto-function' variable for mailto: URLs.

parent 4b8b6f60
......@@ -317,6 +317,9 @@ Just set shell-dir-cookie-re to an appropriate regexp.
** Archive Mode has basic support to browse 7z archives.
** browse-url has gotten a new variable that is used for mailto: URLs,
`browse-url-mailto-function', which defaults to `browse-url-mail'.
** ERC changes
*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'.
2010-11-24 Lars Magne Ingebrigtsen <>
* net/browse-url.el (browse-url-browser-function): Revert the
default back to the previous value, since the new value broke
(browse-url-mailto-function): New variable for mailto: URLs.
(browse-url): Use the new variable for mailto: URLs.
2010-11-23 Stefan Monnier <>
* eshell/esh-cmd.el (eshell-parse-command):
......@@ -216,13 +216,13 @@
(defcustom browse-url-browser-function
`(("\\`mailto:" . browse-url-mail)
("." .
((memq system-type '(windows-nt ms-dos cygwin))
((memq system-type '(darwin)) 'browse-url-default-macosx-browser)
(t 'browse-url-default-browser))))
((memq system-type '(windows-nt ms-dos cygwin))
((memq system-type '(darwin))
"Function to display the current buffer in a WWW browser.
This is used by the `browse-url-at-point', `browse-url-at-mouse', and
`browse-url-of-file' commands.
......@@ -265,6 +265,18 @@ regexp should probably be \".\" to specify a default browser."
:version "24.1"
:group 'browse-url)
(defcustom browse-url-mailto-function 'browse-url-mail
"Function to display mailto: links.
This variable uses the same syntax as the
`browse-url-browser-function' variable. If the
`browse-url-mailto-function' variable is nil, that variable will
be used instead."
:type '(choice
(function-item :tag "Emacs Mail" :value browse-url-mail)
(function-item :tag "None" nil))
:version "24.1"
:group 'browse-url)
(defcustom browse-url-netscape-program "netscape"
;; Info about netscape-remote from Karl Berry.
"The name by which to invoke Netscape.
......@@ -780,22 +792,27 @@ narrowed."
(defun browse-url (url &rest args)
"Ask a WWW browser to load URL.
Prompts for a URL, defaulting to the URL at or before point. Variable
`browse-url-browser-function' says which browser to use."
`browse-url-browser-function' says which browser to use.
If the URL is a mailto: URL, consult `browse-url-mailto-function'
first, if that exists."
(interactive (browse-url-interactive-arg "URL: "))
(unless (called-interactively-p 'interactive)
(setq args (or args (list browse-url-new-window-flag))))
(let ((process-environment (copy-sequence process-environment)))
(let ((process-environment (copy-sequence process-environment))
(function (or (and (string-match "\\`mailto:" url)
;; When connected to various displays, be careful to use the display of
;; the currently selected frame, rather than the original start display,
;; which may not even exist any more.
(if (stringp (frame-parameter (selected-frame) 'display))
(setenv "DISPLAY" (frame-parameter (selected-frame) 'display)))
(if (and (consp browse-url-browser-function)
(not (functionp browse-url-browser-function)))
(if (and (consp function)
(not (functionp function)))
;; The `function' can be an alist; look down it for first match
;; and apply the function (which might be a lambda).
(catch 'done
(dolist (bf browse-url-browser-function)
(dolist (bf function)
(when (string-match (car bf) url)
(apply (cdr bf) url args)
(throw 'done t)))
......@@ -803,7 +820,7 @@ Prompts for a URL, defaulting to the URL at or before point. Variable
;; Unbound symbols go down this leg, since void-function from
;; apply is clearer than wrong-type-argument from dolist.
(apply browse-url-browser-function url args))))
(apply function url args))))
(defun browse-url-at-point (&optional arg)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment