From 0e702ecb484673f8f8d85884f038fc0e84cb9bd3 Mon Sep 17 00:00:00 2001 From: Adam Porter Date: Mon, 4 Sep 2023 14:49:10 -0500 Subject: [PATCH] Change: Resolve Org element properties on 9.7+ See #364. --- org-ql-view.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/org-ql-view.el b/org-ql-view.el index d771d129..bbdada90 100644 --- a/org-ql-view.el +++ b/org-ql-view.el @@ -818,6 +818,20 @@ When opened, the link searches the buffer it's opened from." ;;;; Faces/properties +(defalias 'org-ql-view--resolve-element-properties + ;; It would be preferable to define this as an inline function, but + ;; that would mean that users would have to recompile org-ql when + ;; upgrading to Org 9.7 or else get weird errors. + ;; TODO(someday): Define `org-ql-view--resolve-element-properties' as inline. + (if (version<= "9.7" org-version) + (lambda (node) + "Resolve NODE's properties using `org-element-properties-resolve'." + ;; Silence warnings about `org-element-properties-resolve' + ;; being unresolved on earlier Org versions. + (with-no-warnings + (org-element-properties-resolve node 'force-undefer))) + #'identity)) + (defun org-ql-view--format-element (element) ;; This essentially needs to do what `org-agenda-format-item' does, ;; which is a lot. We are a long way from that, but it's a start. @@ -827,6 +841,7 @@ returned by `org-element-parse-buffer'. If ELEMENT is nil, return an empty string." (if (not element) "" + (setf element (org-ql-view--resolve-element-properties element)) (let* ((properties (cadr element)) ;; Remove the :parent property, which so bloats the size of ;; the properties list that it makes it essentially