org-cycle.el: New custom setting `org-cycle-hide-drawer-startup'

* 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
This commit is contained in:
Ihor Radchenko 2022-05-27 15:09:16 +08:00
parent 2b1b428918
commit bcfed0f341
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
3 changed files with 35 additions and 1 deletions

View File

@ -291,6 +291,28 @@ The new variable name is =org-plantuml-args=. It now applies to both
jar PlantUML file and executable.
** Miscellaneous
*** A new custom setting =org-hide-drawer-startup= to control initial folding state of drawers
Previously, all the drawers were always folded when opening an Org
file. This only had an effect on the drawers outside folded
headlines. The drawers inside folded headlines were re-folded because
=org-cycle-hide-drawers= was present inside =org-cycle-hook=.
With the new folding backend, running =org-cycle-hide-drawers= is no
longer needed if all the drawers are truly folded on startup: [[*Folding
state of the drawers is now preserved when cycling headline
visibility]]. However, this has an unwanted effect when a user does
not want the drawers to be folded (see [[https://orgmode.org/list/m2r14f407q.fsf@ntnu.no][this bug report]]).
The new custom setting gives more control over initial folding state
of the drawers. When set to =nil= (default is =t=), the drawers are
not folded on startup.
The folding state can also be controlled on per-file basis using
=STARTUP= keyword:
: #+startup: hidedrawers
: #+startup: nohidedrawers
*** Styles are customizable in ~biblatex~ citation processor

View File

@ -119,6 +119,16 @@ This can also be set in on a per-file basis with
:group 'org-cycle
:type 'boolean)
(defcustom org-cycle-hide-drawer-startup t
"Non-nil means entering Org mode will fold all drawers.
This can also be set in on a per-file basis with
#+STARTUP: hidedrawers
#+STARTUP: nohidedrawers"
:group 'org-startup
:group 'org-cycle
:type 'boolean)
(defcustom org-cycle-global-at-bob nil
"Cycle globally if cursor is at beginning of buffer and not at a headline.
@ -603,7 +613,7 @@ With a numeric prefix, show all headlines up to that level."
(when org-cycle-hide-block-startup (org-fold-hide-block-all))
(org-cycle-set-visibility-according-to-property)
(org-cycle-hide-archived-subtrees 'all)
(org-cycle-hide-drawers 'all)
(when org-cycle-hide-drawer-startup (org-cycle-hide-drawers 'all))
(org-cycle-show-empty-lines t)))
(defun org-cycle-set-visibility-according-to-property ()

View File

@ -3990,6 +3990,8 @@ After a match, the following groups carry important information:
("noptag" org-tag-persistent-alist nil)
("hideblocks" org-hide-block-startup t)
("nohideblocks" org-hide-block-startup nil)
("hidedrawers" org-hide-drawer-startup t)
("nohidedrawers" org-hide-drawer-startup nil)
("beamer" org-startup-with-beamer-mode t)
("entitiespretty" org-pretty-entities t)
("entitiesplain" org-pretty-entities nil))