From 7159ec0be0a88b19a955256405ee56b4828b4f7d Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Sat, 16 Oct 2021 23:30:13 +0800 Subject: [PATCH] org.el/org-at-planning-p: Add cache support --- lisp/org.el | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index ba3ca1c5e..8cedfcb00 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -10770,15 +10770,18 @@ nil." "Non-nil when point is on a planning info line." ;; This is as accurate and faster than `org-element-at-point' since ;; planning info location is fixed in the section. - (org-with-wide-buffer - (beginning-of-line) - (and (looking-at-p org-planning-line-re) - (eq (point) - (ignore-errors - (if (and (featurep 'org-inlinetask) (org-inlinetask-in-task-p)) - (org-back-to-heading t) - (org-with-limited-levels (org-back-to-heading t))) - (line-beginning-position 2)))))) + (or (let ((cached (org-element-at-point nil 'cached))) + (and cached + (eq 'planning (org-element-type cached)))) + (org-with-wide-buffer + (beginning-of-line) + (and (looking-at-p org-planning-line-re) + (eq (point) + (ignore-errors + (if (and (featurep 'org-inlinetask) (org-inlinetask-in-task-p)) + (org-back-to-heading t) + (org-with-limited-levels (org-back-to-heading t))) + (line-beginning-position 2))))))) (defun org-add-planning-info (what &optional time &rest remove) "Insert new timestamp with keyword in the planning line.