Function: org--property-local-values

org--property-local-values is a byte-compiled function defined in org.el.gz.

Signature

(org--property-local-values PROPERTY LITERAL-NIL &optional ELEMENT)

Documentation

Return value for PROPERTY in current entry or ELEMENT.

Value is a list whose car is the base value for PROPERTY and cdr a list of accumulated values. Return nil if neither is found in the entry. Also return nil when PROPERTY is set to "nil", unless LITERAL-NIL is non-nil.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org--property-local-values (property literal-nil &optional element)
  "Return value for PROPERTY in current entry or ELEMENT.
Value is a list whose car is the base value for PROPERTY and cdr
a list of accumulated values.  Return nil if neither is found in
the entry.  Also return nil when PROPERTY is set to \"nil\",
unless LITERAL-NIL is non-nil."
  (let ((element (or element
                     (and (org-element--cache-active-p)
                          (org-element-at-point nil 'cached)))))
    (if element
        (let* ((element (org-element-lineage element '(headline org-data inlinetask) 'with-self))
               (base-value (org-element-property (intern (concat ":" (upcase property))) element))
               (base-value (if literal-nil base-value (org-not-nil base-value)))
               (extra-value (org-element-property (intern (concat ":" (upcase property) "+")) element))
               (extra-value (if (listp extra-value) extra-value (list extra-value)))
               (value (cons base-value extra-value)))
          (and (not (equal value '(nil))) value))
      (let ((range (org-get-property-block)))
        (when range
          (goto-char (car range))
          (let* ((case-fold-search t)
                 (end (cdr range))
                 (value
                  ;; Base value.
                  (save-excursion
		    (let ((v (and (re-search-forward
                                   (org-re-property property nil t) end t)
                                  (match-string-no-properties 3))))
		      (list (if literal-nil v (org-not-nil v)))))))
	    ;; Find additional values.
	    (let* ((property+ (org-re-property (concat property "+") nil t)))
	      (while (re-search-forward property+ end t)
                (push (match-string-no-properties 3) value)))
	    ;; Return final values.
	    (and (not (equal value '(nil))) (nreverse value))))))))