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 (org-element-type-p element 'keyword)
(let ((value (org-element-property :value element)))
(pcase (org-element-property :key element)
("SETUPFILE"
(when (org-string-nw-p value)
(let* ((uri (org-strip-quotes value))
(uri-is-url (org-url-p uri))
(uri (if uri-is-url
uri
;; In case of error, be safe.
;; See bug#68976.
(ignore-errors ; return nil when expansion fails.
(expand-file-name uri)))))
(unless (or (not uri) (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-local tab-width 8)
(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)))