From 2416ec641247bc8d59cca8cac038cd00eba646f9 Mon Sep 17 00:00:00 2001 From: Satyaki Das Date: Sun, 16 Oct 2005 03:24:54 +0000 Subject: [PATCH] * 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. --- lisp/mh-e/ChangeLog | 12 +++++++++ lisp/mh-e/mh-customize.el | 1 - lisp/mh-e/mh-e.el | 1 + lisp/mh-e/mh-init.el | 57 +++++++++++++++++++-------------------- 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 + + * 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 --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) -- 2.39.5