[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#4531: 23.1; browse-url with unknown func in browse-url-browser-funct

From: Kevin Ryde
Subject: bug#4531: 23.1; browse-url with unknown func in browse-url-browser-function
Date: Wed, 23 Sep 2009 11:22:37 +1000
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)

If browse-url-browser-function is an unknown symbol the error from
browse-url isn't very helpful.  Eg.

    M-: (setq browse-url-browser-function 'FOOBAR-browse-url)
    M-x browse-url http://www.gnu.org

    => Wrong type argument: listp, FOOBAR-browse-url

I hoped it would say the problem is the symbol is unbound, not that it's
supposed to be a list.  (The value can be a list of course, but if the
value is a symbol then it's surely meant to be the name of a function.)
Sending symbols down the `apply' leg of `browse-url' would give

    => Symbol's function definition is void: FOOBAR-browse-url

which I think is a much better.

2009-09-23  Kevin Ryde  <address@hidden>

        * net/browse-url.el (browse-url): Pass any symbol in
        browse-url-browser-function to `apply', since if you've mistakenly
        put an unbound symbol then the error from apply is much clearer
        that the function you wanted is not available.

--- browse-url.el.~1.80.~       2009-09-23 11:08:37.000000000 +1000
+++ browse-url.el       2009-09-23 11:16:22.000000000 +1000
@@ -778,7 +778,11 @@
     ;; which may not even exist any more.
     (if (stringp (frame-parameter (selected-frame) 'display))
         (setenv "DISPLAY" (frame-parameter (selected-frame) 'display)))
-    (if (functionp browse-url-browser-function)
+    ;; 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).

In GNU Emacs 23.1.1 (i486-pc-linux-gnu, GTK+ Version 2.16.5)
 of 2009-08-03 on raven, modified by Debian
configured using `configure  '--build=i486-linux-gnu' '--host=i486-linux-gnu' 
'--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' 
'--localstatedir=/var/lib' '--infodir=/usr/share/info' 
'--mandir=/usr/share/man' '--with-pop=yes' 
 '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 
'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g 

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default-enable-multibyte-characters: t

reply via email to

[Prev in Thread] Current Thread [Next in Thread]