# HG changeset patch # User Satyaki Das # Date 1129433094 0 # Node ID bfb1c3364c2342efc59590cfb136f98c63ac9cde # Parent 9bb08ad57594556c53deefacc69a9d567e40a72a * 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. diff -r 9bb08ad57594 -r bfb1c3364c23 lisp/mh-e/ChangeLog --- a/lisp/mh-e/ChangeLog Sun Oct 16 02:23:23 2005 +0000 +++ b/lisp/mh-e/ChangeLog Sun Oct 16 03:24:54 2005 +0000 @@ -1,3 +1,15 @@ +2005-10-15 Satyaki Das + + * 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 * mh-e.el (Version, mh-version): Added +cvs to version. diff -r 9bb08ad57594 -r bfb1c3364c23 lisp/mh-e/mh-customize.el --- a/lisp/mh-e/mh-customize.el Sun Oct 16 02:23:23 2005 +0000 +++ b/lisp/mh-e/mh-customize.el Sun Oct 16 03:24:54 2005 +0000 @@ -1897,7 +1897,6 @@ 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 -r 9bb08ad57594 -r bfb1c3364c23 lisp/mh-e/mh-e.el --- a/lisp/mh-e/mh-e.el Sun Oct 16 02:23:23 2005 +0000 +++ b/lisp/mh-e/mh-e.el Sun Oct 16 03:24:54 2005 +0000 @@ -1561,6 +1561,7 @@ \\{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 -r 9bb08ad57594 -r bfb1c3364c23 lisp/mh-e/mh-init.el --- a/lisp/mh-e/mh-init.el Sun Oct 16 02:23:23 2005 +0000 +++ b/lisp/mh-e/mh-init.el Sun Oct 16 03:24:54 2005 +0000 @@ -307,6 +307,9 @@ ;;; 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 @@ `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)