Function: org-fold-core-next-folding-state-change
org-fold-core-next-folding-state-change is a byte-compiled function
defined in org-fold-core.el.gz.
Signature
(org-fold-core-next-folding-state-change &optional SPEC-OR-ALIAS POS LIMIT PREVIOUS-P)
Documentation
Return point after POS where folding state changes up to LIMIT.
If SPEC-OR-ALIAS is nil, return next point where _any_ single folding spec changes. For example, (org-fold-core-next-folding-state-change nil) with point somewhere in the below structure will return the nearest <...> point.
* Headline <begin outline fold>
:PROPERTIES:<begin drawer fold>
:ID: test
:END:<end drawer fold>
Fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo, quis tempor ligula erat quis odio.
** Another headline
:DRAWER:<begin drawer fold>
:END:<end drawer fold>
** Yet another headline
<end of outline fold>
If SPEC-OR-ALIAS is a folding spec symbol, only consider that folding spec.
If SPEC-OR-ALIAS is a list, only consider changes of folding specs from the list.
Search backwards when PREVIOUS-P is non-nil.
Aliases
org-fold-next-folding-state-change
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-fold-core.el.gz
(defun org-fold-core-next-folding-state-change (&optional spec-or-alias pos limit previous-p)
"Return point after POS where folding state changes up to LIMIT.
If SPEC-OR-ALIAS is nil, return next point where _any_ single folding
spec changes.
For example, (org-fold-core-next-folding-state-change nil) with point
somewhere in the below structure will return the nearest <...> point.
* Headline <begin outline fold>
:PROPERTIES:<begin drawer fold>
:ID: test
:END:<end drawer fold>
Fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo,
quis tempor ligula erat quis odio.
** Another headline
:DRAWER:<begin drawer fold>
:END:<end drawer fold>
** Yet another headline
<end of outline fold>
If SPEC-OR-ALIAS is a folding spec symbol, only consider that folding
spec.
If SPEC-OR-ALIAS is a list, only consider changes of folding specs
from the list.
Search backwards when PREVIOUS-P is non-nil."
(when (and spec-or-alias (symbolp spec-or-alias))
(setq spec-or-alias (list spec-or-alias)))
(when spec-or-alias
(setq spec-or-alias
(mapcar (lambda (spec-or-alias)
(or (org-fold-core-get-folding-spec-from-alias spec-or-alias)
spec-or-alias))
spec-or-alias))
(mapc #'org-fold-core--check-spec spec-or-alias))
(unless spec-or-alias
(setq spec-or-alias (org-fold-core-folding-spec-list)))
(setq pos (or pos (point)))
(let ((limit (or limit (if previous-p (point-min) (point-max)))))
(catch :limit
(dolist (prop (mapcar
(lambda (el)
(org-fold-core--property-symbol-get-create el nil t))
spec-or-alias))
(when (= limit pos) (throw :limit limit))
(setq
limit
(if previous-p
(previous-single-char-property-change pos prop nil limit)
(next-single-char-property-change pos prop nil limit))))
limit)))