Function: org-fold-core--create-isearch-overlays
org-fold-core--create-isearch-overlays is a byte-compiled function
defined in org-fold-core.el.gz.
Signature
(org-fold-core--create-isearch-overlays BEG END)
Documentation
Replace text property invisibility spec by overlays between BEG and END.
All the searchable folded regions will be changed to use overlays
instead of text properties. The created overlays will be stored in
org-fold-core--isearch-overlays.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-fold-core.el.gz
(defun org-fold-core--create-isearch-overlays (beg end)
"Replace text property invisibility spec by overlays between BEG and END.
All the searchable folded regions will be changed to use overlays
instead of text properties. The created overlays will be stored in
`org-fold-core--isearch-overlays'."
(let ((pos beg))
(while (< pos end)
;; We need loop below to make sure that we clean all invisible
;; properties, which may be nested.
(catch :repeat
(dolist (spec (org-fold-core-get-folding-spec 'all pos))
(unless (org-fold-core-get-folding-spec-property spec :isearch-ignore)
(let* ((region (org-fold-core-get-region-at-point spec pos)))
(when (memq spec org-fold-core--isearch-special-specs)
(setq end (max end (cdr region)))
(when (< (car region) beg)
(setq beg (car region))
(setq pos beg)
(throw :repeat t)))
;; Changing text properties is considered buffer modification.
;; We do not want it here.
(with-silent-modifications
(org-fold-core-region (car region) (cdr region) nil spec)
(let ((org-fold-core-style 'overlays))
(org-fold-core--with-isearch-active
(org-fold-core-region (car region) (cdr region) t spec)))))))
(setq pos (org-fold-core-next-folding-state-change nil pos end))))))