Function: org-element--cache-put

org-element--cache-put is a byte-compiled function defined in org-element.el.gz.

Signature

(org-element--cache-put ELEMENT)

Documentation

Store ELEMENT in current buffer's cache, if allowed.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
(defun org-element--cache-put (element)
  "Store ELEMENT in current buffer's cache, if allowed."
  (org-with-base-buffer nil
    (when (org-element--cache-active-p)
      (when org-element--cache-sync-requests
        ;; During synchronization, first build an appropriate key for
        ;; the new element so `avl-tree-enter' can insert it at the
        ;; right spot in the cache.
        (let* ((keys (org-element--cache-find
		      (org-element-begin element) 'both))
               (new-key (org-element--cache-generate-key
                         (and (car keys) (org-element--cache-key (car keys)))
                         (cond ((cdr keys) (org-element--cache-key (cdr keys)))
			       (org-element--cache-sync-requests
                                (org-element--request-key (car org-element--cache-sync-requests)))))))
          (org-element-put-property
           element
           :org-element--cache-sync-key
           (cons org-element--cache-sync-keys-value new-key))))
      (when (>= org-element--cache-diagnostics-level 2)
        (org-element--cache-log-message
         "Added new element with %S key: %S"
         (org-element-property :org-element--cache-sync-key element)
         (org-element--format-element element)))
      (org-element-put-property element :cached t)
      (when (org-element-type-p element '(headline inlinetask))
        (cl-incf org-element--headline-cache-size)
        (avl-tree-enter org-element--headline-cache element))
      (cl-incf org-element--cache-size)
      (avl-tree-enter org-element--cache element))))