Commit c7f836c7 authored by Dave Love's avatar Dave Love
Browse files

(browse-url): Fix case of browse-url-browser-function being an alist.

parent a2cc2b28
;;; browse-url.el --- Pass a URL to a WWW browser
;; Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
;; Copyright (C) 1995, 96-99, 2000 Free Software Foundation, Inc.
;; Author: Denis Howe <>
;; Maintainer: Dave Love <>
......@@ -85,9 +85,8 @@
;; Python see <url:>. Grail support in
;; browse-url.el written by Barry Warsaw <>.
;; MMM is the freely available WWW browser implemented in Objective
;; Caml, a cool impure functional programming language, by Francois
;; Rouaix. See the MMM home page
;; MMM is a semi-free WWW browser implemented in Objective Caml, an
;; interesting impure functional programming language. See
;; <URL:>.
;; Lynx is now distributed by the FSF. See also
......@@ -98,7 +97,8 @@
;; <URL:>, Arena
;; <URL:> and Amaya
;; <URL:>. mMosaic
;; <URL:> (with development
;; <URL:>,
;; <URL:> (with development
;; support for Java applets and multicast) can be used like Mosaic by
;; setting `browse-url-mosaic-program' appropriately.
......@@ -223,6 +223,7 @@
(eval-when-compile (require 'thingatpt)
(require 'term)
(require 'dired)
(require 'w3-auto nil t))
(defgroup browse-url nil
......@@ -598,16 +599,19 @@ narrowed."
Prompts for a URL, defaulting to the URL at or before point. Variable
`browse-url-browser-function' says which browser to use."
(interactive (browse-url-interactive-arg "URL: "))
(let ((bf browse-url-browser-function) re)
(unless (functionp bf)
(while (consp bf)
(setq re (car (car bf))
bf (if (string-match re url)
(cdr (car bf)) ; The function
(cdr bf))))) ; More pairs
(or bf (error "No browser in browse-url-browser-function matching URL %s"
(apply bf url args)))
(if (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
(lambda (bf)
(when (string-match (car bf) url)
(apply (cdr bf) url args)
(throw 'done t)))
(error "No browser in browse-url-browser-function matching URL %s"
(defun browse-url-at-point ()
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