Function: org-fold-core-cycle-over-indirect-buffers

org-fold-core-cycle-over-indirect-buffers is a macro defined in org-fold-core.el.gz.

Signature

(org-fold-core-cycle-over-indirect-buffers &rest BODY)

Documentation

Execute BODY in current buffer and all its indirect buffers.

Also, make sure that folding properties from killed buffers are not hanging around.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-fold-core.el.gz
(defmacro org-fold-core-cycle-over-indirect-buffers (&rest body)
  "Execute BODY in current buffer and all its indirect buffers.

Also, make sure that folding properties from killed buffers are not
hanging around."
  (declare (debug (form body)) (indent 0))
  `(let (buffers dead-properties)
     (if (and (not (buffer-base-buffer))
              (not (memq (current-buffer) org-fold-core--indirect-buffers)))
         ;; We are in base buffer with `org-fold-core--indirect-buffers' value from
         ;; different buffer.  This can happen, for example, when
         ;; org-capture copies local variables into *Capture* buffer.
         (setq buffers (list (current-buffer)))
       (let ((all-buffers (buffer-local-value
                           'org-fold-core--indirect-buffers
                           (or (buffer-base-buffer) (current-buffer)))))
         (dolist (buf (cons (or (buffer-base-buffer) (current-buffer))
                            (buffer-local-value 'org-fold-core--indirect-buffers (or (buffer-base-buffer) (current-buffer)))))
           (if (buffer-live-p buf)
               (push buf buffers)
             (dolist (spec (org-fold-core-folding-spec-list))
               (when (and (not (org-fold-core-get-folding-spec-property spec :global))
                          (gethash (cons buf spec) org-fold-core--property-symbol-cache))
                 ;; Make sure that dead-properties variable can be passed
                 ;; as argument to `remove-text-properties'.
                 (push t dead-properties)
                 (push (gethash (cons buf spec) org-fold-core--property-symbol-cache)
                       dead-properties)))))
         (when dead-properties
           (with-current-buffer (or (buffer-base-buffer) (current-buffer))
             (setq-local org-fold-core--indirect-buffers
                         (seq-filter #'buffer-live-p all-buffers))))))
     (dolist (buf buffers)
       (with-current-buffer buf
         (when dead-properties
           (with-silent-modifications
             (save-restriction
               (widen)
               (remove-text-properties
                (point-min) (point-max)
                dead-properties))))
         ,@body))))