Function: org--collect-keywords-1
org--collect-keywords-1 is a byte-compiled function defined in
org.el.gz.
Signature
(org--collect-keywords-1 KEYWORDS UNIQUE DIRECTORY FILES ALIST)
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org--collect-keywords-1 (keywords unique directory files alist)
(org-with-point-at 1
(let ((case-fold-search t)
(regexp (org-make-options-regexp keywords)))
(while (and keywords (re-search-forward regexp nil t))
(let ((element (org-element-at-point)))
(when (eq 'keyword (org-element-type element))
(let ((value (org-element-property :value element)))
(pcase (org-element-property :key element)
("SETUPFILE"
(when (and (org-string-nw-p value)
(not buffer-read-only)) ;FIXME: bug in Gnus?
(let* ((uri (org-strip-quotes value))
(uri-is-url (org-url-p uri))
(uri (if uri-is-url
uri
(expand-file-name uri))))
(unless (member uri files)
(with-temp-buffer
(unless uri-is-url
(setq default-directory (file-name-directory uri)))
(let ((contents (org-file-contents uri :noerror)))
(when contents
(insert contents)
;; Fake Org mode: `org-element-at-point'
;; doesn't need full set-up.
(let ((major-mode 'org-mode))
(setq alist
(org--collect-keywords-1
keywords unique directory
(cons uri files)
alist))))))))))
(keyword
(let ((entry (assoc keyword alist))
(final
(cond ((not (member keyword directory)) value)
(buffer-file-name
(cons value
(file-name-directory buffer-file-name)))
(t (cons value default-directory)))))
(cond ((member keyword unique)
(push (cons keyword final) alist)
(setq keywords (remove keyword keywords))
(setq regexp (org-make-options-regexp keywords)))
((null entry) (push (list keyword final) alist))
(t (push final (cdr entry)))))))))))
alist)))