Function: org-element--cache-persist-before-write
org-element--cache-persist-before-write is a byte-compiled function
defined in org-element.el.gz.
Signature
(org-element--cache-persist-before-write CONTAINER &optional ASSOCIATED)
Documentation
Sync element cache for CONTAINER and ASSOCIATED item before saving.
This function is intended to be used in org-persist-before-write-hook.
Prevent writing to disk cache when cache is disabled in the CONTAINER buffer. Otherwise, cleanup cache sync keys, unreadable :buffer properties, and verify cache consistency.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
;;; Cache persistence
(defun org-element--cache-persist-before-write (container &optional associated)
"Sync element cache for CONTAINER and ASSOCIATED item before saving.
This function is intended to be used in `org-persist-before-write-hook'.
Prevent writing to disk cache when cache is disabled in the CONTAINER
buffer. Otherwise, cleanup cache sync keys, unreadable :buffer
properties, and verify cache consistency."
(when (equal container '(elisp org-element--cache))
(if (and org-element-use-cache
(plist-get associated :file)
(get-file-buffer (plist-get associated :file))
org-element-cache-persistent)
(with-current-buffer (get-file-buffer (plist-get associated :file))
(if (and (derived-mode-p 'org-mode)
org-element--cache)
(org-with-wide-buffer
(org-element--cache-sync (current-buffer) (point-max))
;; Cleanup cache request keys to avoid collisions during next
;; Emacs session. Cleanup known non-printable objects.
(avl-tree-mapc
(lambda (el)
(org-element-put-property el :org-element--cache-sync-key nil)
(org-element-map el t
(lambda (el2)
(unless (org-element-type-p el2 'plain-text)
(org-element-put-property el2 :buffer nil)))
nil nil nil 'with-affiliated 'no-undefer)
(let ((org-element--cache-self-verify-frequency 1.0))
(when (and org-element--cache-self-verify-before-persisting
(org-element--cache-verify-element el))
(error "Cache verification failed: aborting"))))
org-element--cache)
nil)
'forbid))
'forbid)))