summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSatyaki Das <satyaki@theforce.stanford.edu>2005-10-16 03:24:54 +0000
committerSatyaki Das <satyaki@theforce.stanford.edu>2005-10-16 03:24:54 +0000
commit2416ec641247bc8d59cca8cac038cd00eba646f9 (patch)
tree0cce79d178a5ff030de21d10680e1761b03db1ac
parent2ef1363ecdecf66c6007eb4c0918713b13448923 (diff)
downloademacs-2416ec641247bc8d59cca8cac038cd00eba646f9.tar.gz
* mh-init.el (mh-image-load-path-called-flag): New variable which
is used by mh-image-load-path so that it runs only once. (mh-image-load-path): Modified so that it gets run only once. Also flatten out heavily nested if statements to make it clearer. * mh-e.el (mh-folder-mode): Call mh-image-load-path to allow Emacs to find images used in the toolbar. * mh-customize.el (:folder): Remove call to mh-image-load-path.
-rw-r--r--lisp/mh-e/ChangeLog12
-rw-r--r--lisp/mh-e/mh-customize.el1
-rw-r--r--lisp/mh-e/mh-e.el1
-rw-r--r--lisp/mh-e/mh-init.el57
4 files changed, 40 insertions, 31 deletions
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 93522331045..d69d36c10af 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,15 @@
+2005-10-15 Satyaki Das <satyaki@theforce.stanford.edu>
+
+ * mh-init.el (mh-image-load-path-called-flag): New variable which
+ is used by mh-image-load-path so that it runs only once.
+ (mh-image-load-path): Modified so that it gets run only once. Also
+ flatten out heavily nested if statements to make it clearer.
+
+ * mh-e.el (mh-folder-mode): Call mh-image-load-path to allow Emacs
+ to find images used in the toolbar.
+
+ * mh-customize.el (:folder): Remove call to mh-image-load-path.
+
2005-10-14 Bill Wohler <wohler@newt.com>
* mh-e.el (Version, mh-version): Added +cvs to version.
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index 4dcf0ad1be8..c1d81615f1e 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -1897,7 +1897,6 @@ where,
for y in letter-docs
collect `(const :tag ,y ,x)))))))
-(mh-image-load-path)
(mh-tool-bar-define
((:folder mh-inc-folder mh-mime-save-parts mh-previous-undeleted-msg
mh-page-msg mh-next-undeleted-msg mh-delete-msg mh-refile-msg
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 30ae10ef5e7..c0b57ee56ca 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -1561,6 +1561,7 @@ messages in that region.
\\{mh-folder-mode-map}"
+ (mh-image-load-path)
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(mh-folder-font-lock-keywords t))
(make-local-variable 'desktop-save-buffer)
diff --git a/lisp/mh-e/mh-init.el b/lisp/mh-e/mh-init.el
index 7efbfd003d5..a0408172ed7 100644
--- a/lisp/mh-e/mh-init.el
+++ b/lisp/mh-e/mh-init.el
@@ -307,6 +307,9 @@ by the variable `mh-variants'."
;;; to error have been changed to calls to message, and code following was
;;; inserted as an else clause. This is not robust, so if you can fix this,
;;; please do!
+
+(defvar mh-image-load-path-called-flag nil)
+
;;;###mh-autoload
(defun mh-image-load-path ()
"Ensure that the MH-E images are accessible by `find-image'.
@@ -314,36 +317,30 @@ Images for MH-E are found in ../../etc/images relative to the files in
`lisp/mh-e'. If `image-load-path' exists (since Emacs 22), then the images
directory is added to it if isn't already there. Otherwise, the images
directory is added to the `load-path' if it isn't already there."
- (let (mh-load-path mh-image-load-path)
- ;; First, find mh-e in the load-path.
- (let ((path load-path))
- (while path
- (let* ((directory (directory-file-name (car path))))
- (setq mh-load-path
- (if (and (equal (file-name-nondirectory directory) "mh-e")
- (file-exists-p directory))
- directory
- nil))
- (setq path (if mh-load-path nil (cdr path)))))
- (if (not mh-load-path)
- ;; This message be error; there shouldn't be an else. Blame compiler.
- (message "Can not find mh-e in load-path (OK when compiling)")
- ;; Create the image path associated with this mh-e directory.
- (setq mh-image-load-path (expand-file-name
- (concat (file-name-directory mh-load-path)
- "../etc/images")))))
- (if (or (not mh-image-load-path)
- (not (file-exists-p mh-image-load-path)))
- ;; This message be error; there shouldn't be an else. Blame compiler.
- (message "Can not find image directory %s (OK when compiling)"
- mh-image-load-path)
- ;; If image-load-path exists, and the image path isn't there add it.
- (if (boundp 'image-load-path)
- (if (not (member mh-image-load-path image-load-path))
- (push mh-image-load-path image-load-path))
- ;; Otherwise, if the image path isn't in the load-path, add it there.
- (if (not (member mh-image-load-path load-path))
- (push mh-image-load-path load-path))))))
+ (message "mh-image-load-path called") ;XXX: for debugging
+ (unless mh-image-load-path-called-flag
+ (let (mh-load-path mh-image-load-path)
+ ;; First, find mh-e in the load-path.
+ (setq mh-load-path
+ (loop for dir in load-path
+ for dir-name = (directory-file-name dir)
+ when (and (equal (file-name-nondirectory dir-name) "mh-e")
+ (file-exists-p dir-name))
+ return dir-name))
+ (if mh-load-path
+ (setq mh-image-load-path
+ (expand-file-name (concat (file-name-directory mh-load-path)
+ "../etc/images")))
+ (error "Can not find mh-e in load-path"))
+ (cond ((or (not mh-image-load-path)
+ (not (file-exists-p mh-image-load-path)))
+ (error "Can not find image directory %s"
+ mh-image-load-path))
+ ((boundp 'image-load-path)
+ (pushnew mh-image-load-path image-load-path))
+ ((not (member mh-image-load-path load-path))
+ (push mh-image-load-path load-path))))
+ (setq mh-image-load-path-called-flag t)))
(provide 'mh-init)