org.el/org--property-local-values: Support cache and passing element arg
This commit is contained in:
parent
78abbcd052
commit
7b83168295
16
lisp/org.el
16
lisp/org.el
|
@ -13038,12 +13038,22 @@ strings."
|
|||
;; Return value.
|
||||
props)))))
|
||||
|
||||
(defun org--property-local-values (property literal-nil)
|
||||
"Return value for PROPERTY in current entry.
|
||||
(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."
|
||||
(if-let ((element (or element
|
||||
(and (org-element--cache-active-p)
|
||||
(org-element-at-point nil 'cached)))))
|
||||
(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))
|
||||
|
@ -13061,7 +13071,7 @@ unless LITERAL-NIL is non-nil."
|
|||
(while (re-search-forward property+ end t)
|
||||
(push (match-string-no-properties 3) value)))
|
||||
;; Return final values.
|
||||
(and (not (equal value '(nil))) (nreverse value))))))
|
||||
(and (not (equal value '(nil))) (nreverse value)))))))
|
||||
|
||||
(defun org--property-global-or-keyword-value (property literal-nil)
|
||||
"Return value for PROPERTY as defined by global properties or by keyword.
|
||||
|
|
Loading…
Reference in New Issue