branch: externals-release/org
commit ac1d58477ae6ce48fb6288137297f0d7b306e1dd
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    org-element-cache: Fix indirect buffer tracking
    
    * lisp/org-element.el (org-element--cache-setup-change-functions):
    Make sure that indirect buffers are registered to be traversed in
    `org-fold-core-cycle-over-indirect-buffers' in
    `org-element--cache-active-p'.
    `org-fold-core-decouple-indirect-buffer-folds' may not be called in
    some scenarios when Org mode is active.
    
    The reproducer that revealed the problem is in
    
https://orgmode.org/list/cad6d+luj7st5_muvwqze80efhsoimmzd+qdtaojen0l7v+z...@mail.gmail.com
---
 lisp/org-element.el | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 7ce12352c5..9f8e8df599 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -7247,6 +7247,11 @@ that range.  See `after-change-functions' for more 
information."
     (when (buffer-base-buffer)
       (setq-local org-element--cache nil)
       (setq-local org-element--headline-cache nil))
+    ;; Register current buffer in `org-fold-core--indirect-buffers' to
+    ;; be used within `org-fold-core-cycle-over-indirect-buffers'.
+    ;; FIXME: We should eventually factor out indirect buffer tracking
+    ;; from org-fold-core.
+    (org-fold-core-decouple-indirect-buffer-folds)
     (add-hook 'before-change-functions
              #'org-element--cache-before-change nil t)
     ;; Run `org-element--cache-after-change' early to handle cases

Reply via email to