changeset 69471:6f07bf99b6f8

(image-load-path-for-library): Pass value of path rather than symbol. Always return list of directories. Guarantee that image directory comes first.
author Bill Wohler <wohler@newt.com>
date Tue, 14 Mar 2006 19:16:24 +0000
parents 25b55872f891
children 5259cc742763
files lisp/ChangeLog lisp/image.el
diffstat 2 files changed, 28 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Mar 14 18:32:13 2006 +0000
+++ b/lisp/ChangeLog	Tue Mar 14 19:16:24 2006 +0000
@@ -1,3 +1,9 @@
+2006-03-14  Bill Wohler  <wohler@newt.com>
+
+	* image.el (image-load-path-for-library): Pass value of path
+	rather than symbol. Always return list of directories. Guarantee
+	that image directory comes first.
+
 2006-03-14  Alan Mackenzie  <acm@muc.de>
 
 	* font-core.el: New function/variable
--- a/lisp/image.el	Tue Mar 14 18:32:13 2006 +0000
+++ b/lisp/image.el	Tue Mar 14 19:16:24 2006 +0000
@@ -77,30 +77,34 @@
        (list (file-name-as-directory (expand-file-name "images" data-directory))
 	     'data-directory 'load-path)))
 
+
 (defun image-load-path-for-library (library image &optional path no-error)
   "Return a suitable search path for images relative to LIBRARY.
 
-Images for LIBRARY are searched for in \"../../etc/images\" and
-\"../etc/images\" relative to the files in \"lisp/LIBRARY\" as
-well as in `image-load-path' and `load-path'.
+First it searches for IMAGE in a path suitable for LIBRARY, which
+includes \"../../etc/images\" and \"../etc/images\" relative to
+the library file itself, followed by `image-load-path' and
+`load-path'.
 
-This function returns the value of `load-path' augmented with the
-directory containing IMAGE. If PATH is given, it is used instead
-of `load-path'. If PATH is t, just return the directory that
-contains IMAGE.
+Then this function returns a list of directories which contains
+first the directory in which IMAGE was found, followed by the
+value of `load-path'. If PATH is given, it is used instead of
+`load-path'.
 
-If NO-ERROR is non-nil, return nil if a suitable path can't be
-found rather than signaling an error.
+If NO-ERROR is non-nil and a suitable path can't be found, don't
+signal an error. Instead, return a list of directories as before,
+except that nil appears in place of the image directory.
 
 Here is an example that uses a common idiom to provide
 compatibility with versions of Emacs that lack the variable
 `image-load-path':
 
-  (let ((load-path
-         (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
-        (image-load-path
-         (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\" 'image-load-path)))
-    (mh-tool-bar-folder-buttons-init))"
+    ;; Avoid errors on Emacsen without `image-load-path'.
+    (if (not (boundp 'image-load-path)) (defvar image-load-path nil))
+
+    (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
+           (image-load-path (cons (car load-path) image-load-path)))
+      (mh-tool-bar-folder-buttons-init))"
   (unless library (error "No library specified"))
   (unless image   (error "No image specified"))
   (let ((image-directory))
@@ -142,26 +146,14 @@
                        dir (expand-file-name "../" dir)))
                (setq image-directory dir)))))
      (no-error
-      ;; In this case we will return nil.
       (message "Could not find image %s for library %s" image library))
      (t
       (error "Could not find image %s for library %s" image library)))
 
-    ;; Return the directory, nil if no-error was non-nil and a
-    ;; suitable path could not be found, or an augmented
-    ;; `image-load-path' or `load-path'.
-    (cond ((or (null image-directory)
-               (eq path t))
-           image-directory)
-          ((and path (symbolp path))
-           (nconc (list image-directory)
-                  (delete image-directory
-                          (if (boundp path)
-                              (copy-sequence (symbol-value path))
-                            nil))))
-          (t
-           (nconc (list image-directory)
-                  (delete image-directory (copy-sequence load-path)))))))
+    ;; Return an augmented `path' or `load-path'.
+    (nconc (list image-directory)
+           (delete image-directory (copy-sequence (or path load-path))))))
+
 
 (defun image-jpeg-p (data)
   "Value is non-nil if DATA, a string, consists of JFIF image data.