* lisp/org-fold-core.el (org-fold-core-fontify-region): Collect all
the return values of `font-lock-default-fontify-region' on visible
regions and extend jit-lock-bounds accordingly.
* lisp/org-fold-core.el (org-fold-core-fontify-region): Run
`org-fold-core-first-unfold-functions' on all the regions unmarked by
'org-fold-core-fontified property instead of using incorrect
heuristics with `point' position. Make sure that fontified region is
registered as fontified according to the return value of
`font-lock-default-fontify-region'
Fixes https://orgmode.org/list/8735i5gd8n.fsf@gmail.com
* lisp/org-fold-core.el (org-fold-core-fontify-region): Handle FORCE
argument better. Skip unnecessary code parts when FORCE is non-nil.
Assign `fontified' text property manually in the actually fontified
regions. We cannot just supply correct return value since jit-lock
does not allow piecewise fontification.
* lisp/org-fold-core.el (org-fold-core-initialize): Declare
`org-fold-core-fontified' text property for font-lock.
(org-fold-core--force-fontification): New variable controlling forced
fontification inside folded regions.
(org-fold-core-fontify-region): Fix cases when BEG is inside folded
region. Respect `org-fold-core--force-fontification'.
* lisp/org-macs.el (org-with-forced-fontification): New macro.
(org-buffer-substring-fontified):
(org-looking-at-fontified): Do not rely on jit-lock. Use
`org-fold-core-fontified' text property to determine whether text is
already fontified.