From 2f8e688516e6eeb464a29dff4f51a32f117b8342 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Sun, 12 Jun 2022 13:03:30 +0800 Subject: [PATCH] org-back-to-heading-or-point-min: Rely less on cache * lisp/org.el (org-before-first-heading-p): Do not try to parse the whole section when there is no cached element at point. --- lisp/org.el | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 080962cdb..94eafb393 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -19797,14 +19797,15 @@ instead of back to heading." (defun org-before-first-heading-p () "Before first heading? Respect narrowing." - (if (org-element--cache-active-p) - (let ((cached-headline (org-element-lineage (org-element-at-point) '(headline) t))) - (or (not cached-headline) - (< (org-element-property :begin cached-headline) (point-min)))) - (org-with-limited-levels - (save-excursion - (end-of-line) - (null (re-search-backward org-outline-regexp-bol nil t)))))) + (let ((cached (org-element-at-point nil 'cached))) + (if cached + (let ((cached-headline (org-element-lineage cached '(headline) t))) + (or (not cached-headline) + (< (org-element-property :begin cached-headline) (point-min)))) + (org-with-limited-levels + (save-excursion + (end-of-line) + (null (re-search-backward org-outline-regexp-bol nil t))))))) (defun org-at-heading-p (&optional invisible-not-ok) "Return t if point is on a (possibly invisible) heading line.