Skip to content

Commit

Permalink
org-cycle.el: New custom setting `org-cycle-hide-drawer-startup'
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
yantar92 committed Jun 25, 2022
1 parent 2b1b428 commit bcfed0f
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
22 changes: 22 additions & 0 deletions etc/ORG-NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
12 changes: 11 additions & 1 deletion lisp/org-cycle.el
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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 ()
Expand Down
2 changes: 2 additions & 0 deletions lisp/org.el
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit bcfed0f

Please sign in to comment.