1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-05-03 19:52:16 -07:00

(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.)
This commit is contained in:
Kevin Ryde 2009-10-18 23:55:16 +00:00
parent b0b0ef98fb
commit 9c16fc9540

View file

@ -778,20 +778,20 @@ Prompts for a URL, defaulting to the URL at or before point. Variable
;; 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)