Function: mh-speed-goto-folder
mh-speed-goto-folder is a byte-compiled function defined in
mh-speed.el.gz.
Signature
(mh-speed-goto-folder FOLDER)
Documentation
Move point to line containing FOLDER.
The function will expand out parent folders of FOLDER if needed.
Source Code
;; Defined in /usr/src/emacs/lisp/mh-e/mh-speed.el.gz
(defun mh-speed-goto-folder (folder)
"Move point to line containing FOLDER.
The function will expand out parent folders of FOLDER if needed."
(let ((prefix folder)
(suffix-list ())
(last-slash t))
(while (and (not (gethash prefix mh-speed-folder-map)) last-slash)
(setq last-slash (mh-search-from-end ?/ prefix))
(when (integerp last-slash)
(push (substring prefix (1+ last-slash)) suffix-list)
(setq prefix (substring prefix 0 last-slash))))
(let ((prefix-position (gethash prefix mh-speed-folder-map)))
(if prefix-position
(goto-char prefix-position)
(goto-char (point-min))
(mh-speed-toggle)
(unless (get-text-property (point) 'mh-expanded)
(mh-speed-toggle))
(goto-char (gethash prefix mh-speed-folder-map))))
(while suffix-list
;; We always need at least one toggle. We need two if the directory list
;; is stale since a folder was added.
(when (equal prefix (get-text-property (mh-line-beginning-position)
'mh-folder))
(mh-speed-toggle)
(unless (get-text-property (point) 'mh-expanded)
(mh-speed-toggle)))
(setq prefix (format "%s/%s" prefix (pop suffix-list)))
(goto-char (gethash prefix mh-speed-folder-map (point))))
(beginning-of-line)
(equal folder (get-text-property (point) 'mh-folder))))