Mercurial > emacs
changeset 65544:78d74ef1436b
2005-09-15 Chong Yidong <cyd@stupidchicken.com>
* image.el (image-load-path): New variable.
(image-search-load-path): New function.
(find-image): Search for images in `image-load-path'.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 15 Sep 2005 14:00:09 +0000 |
parents | 27612d890a6c |
children | 82ce0d75e8ed |
files | lisp/ChangeLog lisp/image.el |
diffstat | 2 files changed, 34 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Sep 15 13:17:55 2005 +0000 +++ b/lisp/ChangeLog Thu Sep 15 14:00:09 2005 +0000 @@ -1,3 +1,9 @@ +2005-09-15 Chong Yidong <cyd@stupidchicken.com> + + * image.el (image-load-path): New variable. + (image-search-load-path): New function. + (find-image): Search for images in `image-load-path'. + 2005-09-15 David Ponce <david@dponce.com> * recentf.el (recentf-save-file-modes): New option.
--- a/lisp/image.el Thu Sep 15 13:17:55 2005 +0000 +++ b/lisp/image.el Thu Sep 15 14:00:09 2005 +0000 @@ -49,6 +49,14 @@ with one argument, a string containing the image data. If PREDICATE returns 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) + "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.") + (defun image-jpeg-p (data) "Value is non-nil if DATA, a string, consists of JFIF image data. We accept the tag Exif because that is the same format." @@ -269,6 +277,20 @@ (delete-overlay overlay))) (setq overlays (cdr overlays))))) +(defun image-search-load-path (file path) + (let (found pathname) + (while (and (not found) (consp path)) + (cond + ((stringp (car path)) + (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 path (cdr path))) + (if found pathname))) ;;;###autoload (defun find-image (specs) @@ -286,7 +308,7 @@ specification to be returned. Return nil if no specification is satisfied. -The image is looked for first on `load-path' and then in `data-directory'." +The image is looked for in `image-load-path'." (let (image) (while (and specs (null image)) (let* ((spec (car specs)) @@ -296,20 +318,11 @@ found) (when (image-type-available-p type) (cond ((stringp file) - (let ((path load-path)) - (while (and (not found) path) - (let ((try-file (expand-file-name file (car path)))) - (when (file-readable-p try-file) - (setq found try-file))) - (setq path (cdr path))) - (unless found - (let ((try-file (expand-file-name file data-directory))) - (if (file-readable-p try-file) - (setq found try-file)))) - (if found - (setq image - (cons 'image (plist-put (copy-sequence spec) - :file found)))))) + (if (setq found (image-search-load-path + file image-load-path)) + (setq image + (cons 'image (plist-put (copy-sequence spec) + :file found))))) ((not (null data)) (setq image (cons 'image spec))))) (setq specs (cdr specs))))