Function: org-fold-core--isearch-filter-predicate-text-properties
org-fold-core--isearch-filter-predicate-text-properties is a
byte-compiled function defined in org-fold-core.el.gz.
Signature
(org-fold-core--isearch-filter-predicate-text-properties BEG END)
Documentation
Make sure that folded text is searchable when user want so.
This function is intended to be used as isearch-filter-predicate.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-fold-core.el.gz
(defun org-fold-core--isearch-filter-predicate-text-properties (beg end)
"Make sure that folded text is searchable when user want so.
This function is intended to be used as `isearch-filter-predicate'."
(and
;; Check folding specs that cannot be searched
(not (memq nil (mapcar (lambda (spec) (not (org-fold-core-get-folding-spec-property spec :isearch-ignore)))
(org-fold-core-get-folding-specs-in-region beg end))))
;; Check 'invisible properties that are not folding specs.
(or (eq search-invisible t) ; User wants to search anyway, allow it.
(let ((pos beg)
unknown-invisible-property)
(while (and (< pos end)
(not unknown-invisible-property))
(when (and (get-text-property pos 'invisible)
(not (org-fold-core-folding-spec-p (get-text-property pos 'invisible))))
(setq unknown-invisible-property t))
(setq pos (next-single-char-property-change pos 'invisible)))
(not unknown-invisible-property)))
(or (and (eq search-invisible t)
;; FIXME: this opens regions permanenly for now.
;; I also tried to force search-invisible 'open-all around
;; `isearch-range-invisible', but that somehow causes
;; infinite loop in `isearch-lazy-highlight'.
(prog1 t
;; We still need to reveal the folded location
(org-fold-core--isearch-show-temporary (cons beg end) nil)))
(not (isearch-range-invisible beg end)))))