diff --git a/site-lisp/db-org.el b/site-lisp/db-org.el index 1379a97..9bda400 100644 --- a/site-lisp/db-org.el +++ b/site-lisp/db-org.el @@ -1004,6 +1004,26 @@ Current Task: %`org-clock-current-task; " (format "hy %s" tempfile)) (delete-file tempfile)))) + +;;; Hacks + +;; The default implementation is too slow, because it is parsing all properties +;; of an entry by default. Let’s simplify this to only parse what we are +;; looking for. This makes tag search *much* faster! + +(with-eval-after-load 'org + (defun org-cached-entry-get (pom property) + (if (or (eq t org-use-property-inheritance) + (and (stringp org-use-property-inheritance) + (let ((case-fold-search t)) + (string-match-p org-use-property-inheritance property))) + (and (listp org-use-property-inheritance) + (member-ignore-case property org-use-property-inheritance))) + ;; Caching is not possible, check it directly. + (org-entry-get pom property 'inherit) + ;; This is different in the original implementation + (org-entry-properties pom property)))) + ;;; End