|
@@ -13038,30 +13038,40 @@ 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."
|
|
|
- (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))))))
|
|
|
+ (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))
|
|
|
+ (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)))))))
|
|
|
|
|
|
(defun org--property-global-or-keyword-value (property literal-nil)
|
|
|
"Return value for PROPERTY as defined by global properties or by keyword.
|