Function: file-cache-directory-name
file-cache-directory-name is a byte-compiled function defined in
filecache.el.gz.
Signature
(file-cache-directory-name FILE)
Source Code
;; Defined in /usr/src/emacs/lisp/filecache.el.gz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Utility functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Returns the name of a directory for a file in the cache
(defun file-cache-directory-name (file)
(let* ((directory-list (cdr (assoc-string
file file-cache-alist
file-cache-ignore-case)))
(len (length directory-list))
(directory)
(num))
(if (not (listp directory-list))
(error "Filecache: unknown type in file-cache-alist for key %s" file))
(cond
;; Single element
((eq 1 len)
(setq directory (elt directory-list 0)))
;; No elements
((eq 0 len)
(error "Filecache: no directory found for key %s" file))
;; Multiple elements
(t
(let* ((minibuffer-dir (file-name-directory (minibuffer-contents)))
(dir-list (member minibuffer-dir directory-list)))
(setq directory
;; If the directory is in the list, return the next element
;; Otherwise, return the first element
(if dir-list
(or (elt directory-list
(setq num (1+ (- len (length dir-list)))))
(elt directory-list (setq num 0)))
(elt directory-list (setq num 0)))))))
;; If there were multiple directories, set up a minibuffer message
(setq file-cache-multiple-directory-message
(and num (format " [%d of %d]" (1+ num) len)))
directory))