Function: org-element--cache-verify-element
org-element--cache-verify-element is a byte-compiled function defined
in org-element.el.gz.
Signature
(org-element--cache-verify-element ELEMENT)
Documentation
Verify correctness of ELEMENT when org-element--cache-self-verify is non-nil.
Return non-nil when verification failed.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
(defun org-element--cache-verify-element (element)
"Verify correctness of ELEMENT when `org-element--cache-self-verify' is non-nil.
Return non-nil when verification failed."
(let ((org-element--cache-self-verify
(or org-element--cache-self-verify
(and (boundp 'org-batch-test) org-batch-test)))
(org-element--cache-self-verify-frequency
(if (and (boundp 'org-batch-test) org-batch-test)
1
org-element--cache-self-verify-frequency)))
;; Verify correct parent for the element.
(unless (or (not org-element--cache-self-verify)
(org-element-property :parent element)
(org-element-type-p element 'org-data))
(org-element--cache-warn "Got element without parent (cache active?: %S). Please report it to Org mode mailing list (M-x org-submit-bug-report).\n%S" (org-element--cache-active-p) element)
(org-element-cache-reset))
(when (and org-element--cache-self-verify
(org-element--cache-active-p)
(org-element-type-p element 'headline)
;; Avoid too much slowdown
(< (random 1000) (* 1000 org-element--cache-self-verify-frequency)))
(org-with-point-at (org-element-begin element)
(org-element-with-disabled-cache (org-up-heading-or-point-min))
(unless (or (= (point)
(org-element-begin
(org-element-property :parent element)))
(eq (point) (point-min)))
(org-element--cache-warn
"Cached element has wrong parent in %s. Resetting.
If this warning appears regularly, please report the warning text to Org mode mailing list (M-x org-submit-bug-report).
The element is: %S\n The parent is: %S\n The real parent is: %S"
(buffer-name (current-buffer))
(org-element--format-element element)
(org-element--format-element (org-element-property :parent element))
(org-element--format-element
(org-element--current-element
(org-element-end (org-element-property :parent element)))))
(org-element-cache-reset))
(org-element--cache-verify-element
(org-element-property :parent element))))
;; Verify the element itself.
(when (and org-element--cache-self-verify
(org-element--cache-active-p)
element
(not (org-element-type-p element '(section org-data)))
;; Avoid too much slowdown
(< (random 1000) (* 1000 org-element--cache-self-verify-frequency)))
(let ((real-element (org-element-with-disabled-cache
(org-element--parse-to
(if (org-element-type-p element '(table-row item))
(1+ (org-element-begin element))
(org-element-begin element))))))
(unless (and (eq (org-element-type real-element) (org-element-type element))
(eq (org-element-begin real-element) (org-element-begin element))
(eq (org-element-end real-element) (org-element-end element))
(eq (org-element-contents-begin real-element) (org-element-contents-begin element))
(eq (org-element-contents-end real-element) (org-element-contents-end element))
(or (not (org-element-property :ID real-element))
(string= (org-element-property :ID real-element) (org-element-property :ID element))))
(org-element--cache-warn "(%S) Cached element is incorrect in %s. (Cache tic up to date: %S) Resetting.
If this warning appears regularly, please report the warning text to Org mode mailing list (M-x org-submit-bug-report).
The element is: %S\n The real element is: %S\n Cache around :begin:\n%S\n%S\n%S"
this-command
(buffer-name (current-buffer))
(if (/= org-element--cache-change-tic
(buffer-chars-modified-tick))
"no" "yes")
(org-element--format-element element)
(org-element--format-element real-element)
(org-element--format-element (org-element--cache-find (1- (org-element-begin real-element))))
(org-element--format-element (car (org-element--cache-find (org-element-begin real-element) 'both)))
(org-element--format-element (cdr (org-element--cache-find (org-element-begin real-element) 'both))))
(org-element-cache-reset))))))