Function: mh-populate-sub-folders-cache

mh-populate-sub-folders-cache is a byte-compiled function defined in mh-utils.el.gz.

Signature

(mh-populate-sub-folders-cache FOLDER)

Documentation

Tell mh-sub-folders-cache about FOLDER.

Source Code

;; Defined in /usr/src/emacs/lisp/mh-e/mh-utils.el.gz
(defun mh-populate-sub-folders-cache (folder)
  "Tell `mh-sub-folders-cache' about FOLDER."
  (let* ((last-slash (mh-search-from-end ?/ folder))
         (child1 (substring folder (1+ (or last-slash 0))))
         (parent (and last-slash (substring folder 0 last-slash)))
         (parent-slash (and parent (mh-search-from-end ?/ parent)))
         (child2 (and parent (substring parent (1+ (or parent-slash 0)))))
         (grand-parent (and parent-slash (substring parent 0 parent-slash)))
         (cache-entry (gethash parent mh-sub-folders-cache)))
    (unless (cl-loop for x in cache-entry when (equal (car x) child1) return t
                     finally return nil)
      (push (list child1) cache-entry)
      (setf (gethash parent mh-sub-folders-cache)
            (sort cache-entry (lambda (x y) (string< (car x) (car y)))))
      (when parent
        (cl-loop for x in (gethash grand-parent mh-sub-folders-cache)
                 when (equal (car x) child2)
                 do (progn (setf (cdr x) t) (cl-return)))))))