Mercurial > emacs
changeset 105667:f14d7d76a8f2
(browse-url): Identify alist with "consp and
not functionp" and let all other things go down the `apply' leg,
as suggested by Stefan. (Further to bug#4531.)
author | Kevin Ryde <user42@zip.com.au> |
---|---|
date | Sun, 18 Oct 2009 23:55:16 +0000 |
parents | 933cd581fbcf |
children | d15f2b6136f5 |
files | lisp/net/browse-url.el |
diffstat | 1 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/net/browse-url.el Sun Oct 18 23:12:02 2009 +0000 +++ b/lisp/net/browse-url.el Sun Oct 18 23:55:16 2009 +0000 @@ -778,20 +778,20 @@ ;; which may not even exist any more. (if (stringp (frame-parameter (selected-frame) 'display)) (setenv "DISPLAY" (frame-parameter (selected-frame) 'display))) - ;; Send any symbol to `apply', not just fboundp ones, since void-function - ;; from apply is clearer than wrong-type-argument from dolist. - (if (or (symbolp browse-url-browser-function) - (functionp browse-url-browser-function)) - (apply browse-url-browser-function url args) - ;; 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) - (when (string-match (car bf) url) - (apply (cdr bf) url args) - (throw 'done t))) - (error "No browse-url-browser-function matching URL %s" - url))))) + (if (and (consp browse-url-browser-function) + (not (functionp browse-url-browser-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) + (when (string-match (car bf) url) + (apply (cdr bf) url args) + (throw 'done t))) + (error "No browse-url-browser-function matching URL %s" + url)) + ;; 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)))) ;;;###autoload (defun browse-url-at-point (&optional arg)