From 93a75651ff56f5064762ca5565f5baef9a8f6a7b Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 18 Sep 2005 14:04:46 +0000 Subject: [PATCH] (image-load-path): Use symbol `data-directory' instead of its value, for backward compatibility with packages that bind it during `find-image'. Suggested by Katsumi Yamaoka. (image-search-load-path): Handle symbols whose values are strings. --- lisp/ChangeLog | 7 +++++++ lisp/image.el | 31 ++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 452cbb2971d..7251572ee96 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2005-09-18 Chong Yidong + + * image.el (image-load-path): Use symbol `data-directory' instead + of its value, for backward compatibility with packages that bind + it during `find-image'. Suggested by Katsumi Yamaoka. + (image-search-load-path): Handle symbols whose values are strings. + 2005-09-18 Romain Francoise * calendar/diary-lib.el (mark-diary-entries): Rearrange to wrap diff --git a/lisp/image.el b/lisp/image.el index 154a49e61b1..ee188677517 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -51,11 +51,13 @@ a non-nil value, TYPE is the image's type.") (defvar image-load-path (list (file-name-as-directory (expand-file-name "images" data-directory)) - data-directory 'load-path) + 'data-directory 'load-path) "List of locations in which to search for image files. -If an element is a string, it defines a directory to search in. -If an element is a variable symbol, the value of that variable is -used as a list of directories to search.") +If an element is a string, it defines a directory to search. +If an element is a variable symbol whose value is a string, that +value defines a directory to search. +If an element is a variable symbol whose value is a list, the +value is used as a list of directories to search.") (defun image-jpeg-p (data) "Value is non-nil if DATA, a string, consists of JFIF image data. @@ -278,17 +280,24 @@ BUFFER nil or omitted means use the current buffer." (setq overlays (cdr overlays))))) (defun image-search-load-path (file path) - (let (found pathname) + (let (element found pathname) (while (and (not found) (consp path)) + (setq element (car path)) (cond - ((stringp (car path)) + ((stringp element) (setq found (file-readable-p - (setq pathname (expand-file-name file (car path)))))) - ((and (symbolp (car path)) (boundp (car path))) - (if (setq pathname (image-search-load-path - file (symbol-value (car path)))) - (setq found t)))) + (setq pathname (expand-file-name file element))))) + ((and (symbolp element) (boundp element)) + (setq element (symbol-value element)) + (cond + ((stringp element) + (setq found + (file-readable-p + (setq pathname (expand-file-name file element))))) + ((consp element) + (if (setq pathname (image-search-load-path file element)) + (setq found t)))))) (setq path (cdr path))) (if found pathname))) -- 2.39.5