From: Bill Wohler <wohler@newt.com>
Subject: Re: image-load-path/load-path function
Date: Thu, 02 Mar 2006 16:49:52 -0800 [thread overview]
Message-ID: <18269.1141346992@olgas.newt.com> (raw)
In-Reply-To: <v98xrs4i5t.fsf@marauder.physik.uni-ulm.de>
Rainer,
I copied your *-image-load-path function, changed gmm to mh, made a
couple of changes (listed below), and updated our software to use scoped
copies of image-load-path/load-path.
- Delete mh-image-directory variable per previous email.
- Remove periods from (error) strings per Emacs conventions. See Info
node `(elisp)Programming Tips'.
- Remove quotes around %s. There isn't an explicit Emacs convention
about this, but it's used in less than 10% of the cases so I made it
an MH-E convention.
- Add comment before a bit that took me a minute to grok.
I think we're ready to move it to image.el. Let me know if you think I
should proceed.
I think the name image-load-path would be fine: If you ask for the
variable image-load-path, you get the image load path, if you ask for
the function image-load-path, you get the image load path. Seems
consistent. What do you think?
(defun mh-image-load-path (library image &optional path)
"Return a suitable search path for images of LIBRARY.
Images for LIBRARY are searched for in \"../../etc/images\" and
\"../etc/images\" relative to the files in \"lisp/LIBRARY\", in
`image-load-path', or in `load-path'.
This function returns value of `load-path' augmented with the
path to IMAGE. If PATH is given, it is used instead of
`load-path'."
(unless library (error "No library specified"))
(unless image (error "No image specified"))
(let ((mh-image-directory))
(cond
;; Try relative setting.
((let (mh-library-name d1ei d2ei)
;; First, find library in the load-path.
(setq mh-library-name (locate-library library))
(if (not mh-library-name)
(error "Cannot find library %s in load-path" library))
;; And then set mh-image-directory relative to that.
(setq
;; Go down 2 levels.
d2ei (expand-file-name
(concat (file-name-directory mh-library-name)
"../../etc/images"))
;; Go down 1 level.
d1ei (expand-file-name
(concat (file-name-directory mh-library-name)
"../etc/images")))
(setq mh-image-directory
;; Set it to nil if image is not found.
(cond ((file-exists-p (expand-file-name image d2ei)) d2ei)
((file-exists-p (expand-file-name image d1ei)) d1ei)))))
;; Check for images in image-load-path or load-path.
((let ((img image)
(dir (or
;; Images in image-load-path.
(mh-image-search-load-path image)
;; Images in load-path.
(locate-library image)))
parent)
;; Since the image might be in a nested directory
;; (for example, mail/attach.pbm), adjust `mh-image-directory'
;; accordingly.
(and dir
(setq dir (file-name-directory dir))
(progn
(while (setq parent (file-name-directory img))
(setq img (directory-file-name parent)
dir (expand-file-name "../" dir)))
(setq mh-image-directory dir))))))
;;
(unless (file-exists-p mh-image-directory)
(error "Directory %s in mh-image-directory does not exist"
mh-image-directory))
(unless (file-exists-p (expand-file-name image mh-image-directory))
(error "Directory %s in mh-image-directory does not contain image %s"
mh-image-directory image))
;; Return augmented `image-load-path' or `load-path'.
(cond ((and path (symbolp path))
(nconc (list mh-image-directory)
(delete mh-image-directory
(if (boundp path)
(copy-sequence (symbol-value path))
nil))))
(t
(nconc (list mh-image-directory)
(delete mh-image-directory
(copy-sequence load-path)))))))
--
Bill Wohler <wohler@newt.com> http://www.newt.com/wohler/ GnuPG ID:610BD9AD
Maintainer of comp.mail.mh FAQ and MH-E. Vote Libertarian!
If you're passed on the right, you're in the wrong lane.
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
next prev parent reply other threads:[~2006-03-03 0:49 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-20 22:22 Customizable tool bars Reiner Steib
2006-01-25 16:40 ` Reiner Steib
2006-01-26 0:53 ` Katsumi Yamaoka
2006-01-26 1:39 ` Steve Youngs
2006-01-26 2:35 ` Katsumi Yamaoka
2006-01-26 4:28 ` Steve Youngs
2006-01-26 5:14 ` Katsumi Yamaoka
2006-01-26 9:19 ` Reiner Steib
2006-01-26 11:31 ` Katsumi Yamaoka
2006-01-26 9:24 ` Reiner Steib
2006-01-26 10:52 ` Katsumi Yamaoka
2006-01-26 15:04 ` Reiner Steib
2006-01-30 23:45 ` Katsumi Yamaoka
2006-02-21 22:23 ` Reiner Steib
2006-02-22 5:04 ` Katsumi Yamaoka
2006-02-22 12:19 ` image-load-path/load-path function (was: Customizable tool bars) Reiner Steib
2006-02-22 14:53 ` image-load-path/load-path function Reiner Steib
2006-02-23 8:23 ` Katsumi Yamaoka
2006-02-23 11:50 ` Reiner Steib
2006-02-23 13:19 ` Katsumi Yamaoka
2006-02-23 15:17 ` Reiner Steib
2006-02-24 8:03 ` Katsumi Yamaoka
2006-02-24 8:40 ` Katsumi Yamaoka
2006-02-23 18:13 ` Bill Wohler
2006-03-01 23:33 ` Bill Wohler
2006-03-02 1:07 ` Bill Wohler
2006-03-02 4:31 ` Peter S Galbraith
2006-03-02 17:13 ` Reiner Steib
2006-03-02 20:30 ` Bill Wohler
2006-03-02 22:05 ` Reiner Steib
2006-03-03 0:49 ` Bill Wohler [this message]
2006-03-03 0:52 ` Bill Wohler
2006-03-03 16:38 ` Reiner Steib
2006-03-03 22:46 ` Bill Wohler
2006-03-03 22:47 ` Bill Wohler
2006-03-04 16:27 ` Reiner Steib
2006-03-04 17:55 ` Bill Wohler
2006-03-06 16:11 ` Bill Wohler
2006-03-11 2:16 ` Bill Wohler
[not found] ` <8096.1141420620@olgas.newt.com>
2006-03-04 23:33 ` Bill Wohler
2006-03-02 16:59 ` Reiner Steib
2006-03-02 17:22 ` Bill Wohler
2006-02-22 12:23 ` Customizable tool bars Reiner Steib
2006-03-01 17:41 ` Reiner Steib
2006-03-01 18:26 ` Romain Francoise
2006-03-02 16:30 ` Reiner Steib
2006-03-01 19:35 ` Michael Piotrowski
2006-03-01 22:51 ` Reiner Steib
2006-03-02 0:00 ` Katsumi Yamaoka
2006-03-02 11:16 ` Michael Piotrowski
2006-03-02 16:31 ` Reiner Steib
2006-03-02 18:00 ` Michael Piotrowski
2006-03-01 22:49 ` Katsumi Yamaoka
2006-03-02 10:49 ` Reiner Steib
2006-03-02 23:34 ` Katsumi Yamaoka
2006-03-03 10:35 ` Reiner Steib
2006-03-06 4:00 ` Katsumi Yamaoka
2006-03-06 10:32 ` Reiner Steib
2006-03-06 12:16 ` Katsumi Yamaoka
2006-03-03 16:47 ` low-color variants of the Gnome icons (was: Customizable tool bars) Reiner Steib
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18269.1141346992@olgas.newt.com \
--to=wohler@newt.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).