* lisp/org-cycle.el (org-cycle-hide-drawer-startup):
* lisp/org-cycle.el (org-cycle-set-startup-visibility): Add new
customization to control initial folding state of the drawers.
* lisp/org.el (org-startup-options): Provide #+STARTUP option for the
new setting.
Fixes https://list.orgmode.org/m235gww8wg.fsf@ntnu.no/T/#u
* lisp/org-cycle.el (org-cycle-hide-block-startup): #+STARTUP:
showblocks does not work, according to `org-startup-options'. Users
need to use nohideblocks instead.
* lisp/org-fold-core.el (org-fold-core-first-unfold-functions):
Remove. This is very too tricky to implement. In particular, when we
use jit-lock, there can be a race between calls to
`org-fold-core-region' and fontification. For example, consider that
one of the functions in the hook folds drawers and everything is
folded initially. Then, if the user requests unfolding headlines,
drawers, and blocks, it happens before jit-lock is ran in invisible
parts of buffer (out of the display). Those parts will be folded
despite user explicitly requested full unfold, which is wrong. Fixing
this behaviour would involve implementing a full-fledged tracker on
top of jit-lock, which is very too complex and will likely introduce
hard-to-debug errors.
* lisp/org-fold-core.el (org-fold-core-initialize):
(org-fold-core-region):
(org-fold-core-remove-optimisation):
* lisp/org-cycle.el (org-cycle-hide-drawers):
(org-cycle-hide-archived-subtrees): Do not use
`org-fold-core-first-unfold-functions'.
Fixes https://list.orgmode.org/80k0ar1lml.fsf@felesatra.moe/T/#u