Function: org-attach-dir-from-id

org-attach-dir-from-id is a byte-compiled function defined in org-attach.el.gz.

Signature

(org-attach-dir-from-id ID &optional EXISTING)

Documentation

Return a folder path based on org-attach-id-dir and ID.

Try id-to-path functions in org-attach-id-to-path-function-list ignoring nils. If EXISTING is non-nil, then return the first path found in the filesystem. Otherwise return the first non-nil value.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-attach.el.gz
(defun org-attach-dir-from-id (id  &optional existing)
  "Return a folder path based on `org-attach-id-dir' and ID.
Try id-to-path functions in `org-attach-id-to-path-function-list'
ignoring nils.  If EXISTING is non-nil, then return the first path
found in the filesystem.  Otherwise return the first non-nil value."
  (let ((fun-list org-attach-id-to-path-function-list)
        (base-dir (expand-file-name org-attach-id-dir))
        (default-base-dir (expand-file-name "data/"))
        preferred first)
    (while (and fun-list
                (not preferred))
      (let* ((name (funcall (car fun-list) id))
             (candidate (and name (expand-file-name name base-dir)))
             ;; Try the default value `org-attach-id-dir' as a fallback.
             (candidate2 (and name (not (equal base-dir default-base-dir))
                              (expand-file-name name default-base-dir))))
        (setq fun-list (cdr fun-list))
        (when candidate
          (if (or (not existing) (file-directory-p candidate))
              (setq preferred candidate)
            (unless first
              (setq first candidate)))
          (when (and existing
                     candidate2
                     (not (file-directory-p candidate))
                     (file-directory-p candidate2))
            (setq preferred candidate2)))))
    (or preferred first)))