changeset 27196:64fe9058e235

(browse-url): Fix case of browse-url-browser-function being an alist.
author Dave Love <fx@gnu.org>
date Wed, 05 Jan 2000 15:41:44 +0000
parents d7311a9cb223
children 3e34f4e0b1c2
files lisp/browse-url.el
diffstat 1 files changed, 19 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/browse-url.el	Wed Jan 05 15:25:18 2000 +0000
+++ b/lisp/browse-url.el	Wed Jan 05 15:41:44 2000 +0000
@@ -1,6 +1,6 @@
 ;;; 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 <dbh@doc.ic.ac.uk>
 ;; Maintainer: Dave Love <fx@gnu.org>
@@ -85,9 +85,8 @@
 ;; Python see <url:http://www.python.org/>.  Grail support in
 ;; browse-url.el written by Barry Warsaw <bwarsaw@python.org>.
 
-;; 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:http://pauillac.inria.fr/%7Erouaix/mmm/>.
 
 ;; Lynx is now distributed by the FSF.  See also
@@ -98,7 +97,8 @@
 ;; <URL:http://www.unlv.edu/chimera/>, Arena
 ;; <URL:ftp://ftp.yggdrasil.com/pub/dist/web/arena> and Amaya
 ;; <URL:ftp://ftp.w3.org/pub/amaya>.  mMosaic
-;; <URL:ftp://sig.enst.fr/pub/multicast/mMosaic/> (with development
+;; <URL:ftp://sig.enst.fr/pub/multicast/mMosaic/>,
+;; <URL:http://sig.enst.fr/~dauphin/mMosaic/> (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 @@
 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"
-                  url))
-    (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
+      (mapcar
+       (lambda (bf)
+	 (when (string-match (car bf) url)
+	   (apply (cdr bf) url args)
+	   (throw 'done t)))
+       browse-url-browser-function)
+      (error "No browser in browse-url-browser-function matching URL %s"
+	     url))))
 
 ;;;###autoload
 (defun browse-url-at-point ()