From: stardiviner <numbchild@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [PATCH] Show hidden drawers when org-cycle on headlines
Date: Sat, 11 Apr 2020 16:43:11 +0800 [thread overview]
Message-ID: <87ftdact0g.fsf@gmail.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 392 bytes --]
I think the hidden drawers info is useful for users, this should be
shown when org-cycle on headlines.
Here is the patch.
--
[ stardiviner ]
I try to make every word tell the meaning what I want to express.
Blog: https://stardiviner.github.io/
IRC(freenode): stardiviner, Matrix: stardiviner
GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-org.el-Rename-org-cycle-hide-drawers-to-org-cycle-to.patch --]
[-- Type: text/x-patch, Size: 5059 bytes --]
From 98e3ece4d2bd6f7c7ccd0ecf70dc327a01bff8bd Mon Sep 17 00:00:00 2001
From: stardiviner <numbchild@gmail.com>
Date: Sat, 11 Apr 2020 13:16:02 +0800
Subject: [PATCH] org.el: Rename org-cycle-hide-drawers to
org-cycle-toggle-drawers
* lisp/org.el (org-cycle-toggle-drawers): Make function toggle
show/hide drawers.
* lisp/org-agenda.el (org-cycle-toggle-drawers): updated renamed
functions.
* etc/ORG-NEWS: mention incompatible changes.
---
etc/ORG-NEWS | 9 +++++++++
lisp/org-agenda.el | 4 ++--
lisp/org.el | 26 +++++++++++++++++++++-----
3 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index e90ac60e3..244c30be4 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -80,6 +80,11 @@ resulting <div> will be ~<div id="outline-container-my-headline">~.
You may want to check whether your HTML files are rendered differently
after this change.
+*** Renamed ~org-cycle-hide-drawers~ to ~org-cycle-toggle-drawers~
+
+Rename function after added a third optional argument changed function
+meaning. Now drawers will be expanded when ~org-cycle~ on headlines.
+
** New default settings for some options
These options now defaults to =t=:
@@ -294,6 +299,10 @@ HTML.
Functions in this hook are run after ~org-agenda-filter~ is called.
+*** New option ~org-show-drawer-on-cycle~
+
+Option to control whether expand hidden drawer when ~org-cycle~ on headlines.
+
** Removed or renamed functions and variables
*** Removed ~org-maybe-keyword-time-regexp~
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index ffb892b0c..e3dca49af 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -9104,7 +9104,7 @@ (defun org-agenda-show-and-scroll-up (&optional arg)
(ignore-errors (scroll-up)))
(org-agenda-goto t)
(org-show-entry)
- (if arg (org-cycle-hide-drawers 'children)
+ (if arg (org-cycle-toggle-drawers 'children nil t)
(org-with-wide-buffer
(narrow-to-region (org-entry-beginning-position)
(org-entry-end-position))
@@ -9164,7 +9164,7 @@ (defun org-agenda-show-1 (&optional more)
(outline-show-subtree)
(save-excursion
(org-back-to-heading)
- (org-cycle-hide-drawers 'subtree '("LOGBOOK")))
+ (org-cycle-toggle-drawers 'subtree '("LOGBOOK") t))
(message "Remote: SUBTREE AND LOGBOOK"))
((> more 4)
(outline-show-subtree)
diff --git a/lisp/org.el b/lisp/org.el
index 57682fd16..5d5e54574 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -6012,7 +6012,23 @@ (defun org-hide-block-all ()
;;;; Drawers visibility
-(defun org-cycle-hide-drawers (state &optional exceptions)
+(defcustom org-show-drawer-on-cycle nil
+ "Whether auto expand hidden drawers when `org-cycle' headlines."
+ :type 'boolean
+ :safe #'booleanp
+ :group 'org)
+
+(defun org-cycle-expand-drawer (state)
+ "Show hidden drawer of headline."
+ (org-cycle-toggle-drawers 'children))
+
+(defun org-enable-cycle-expand-drawer ()
+ (when org-show-drawer-on-cycle
+ (add-hook 'org-cycle-hook #'org-cycle-expand-drawer)))
+
+(add-hook 'org-mode-hook #'org-enable-cycle-expand-drawer)
+
+(defun org-cycle-toggle-drawers (state &optional exceptions flag)
"Re-hide all drawers after a visibility state change.
STATE should be one of the symbols listed in the docstring of
`org-cycle-hook'. When non-nil, optional argument EXCEPTIONS is
@@ -6031,7 +6047,7 @@ (defun org-cycle-hide-drawers (state &optional exceptions)
(unless (member-ignore-case (match-string 1) exceptions)
(let ((drawer (org-element-at-point)))
(when (memq (org-element-type drawer) '(drawer property-drawer))
- (org-flag-drawer t drawer)
+ (org-flag-drawer flag drawer)
;; Make sure to skip drawer entirely or we might flag
;; it another time when matching its ending line with
;; `org-drawer-regexp'.
@@ -6427,7 +6443,7 @@ (defun org-set-startup-visibility ()
(when org-hide-block-startup (org-hide-block-all))
(org-set-visibility-according-to-property)
(org-cycle-hide-archived-subtrees 'all)
- (org-cycle-hide-drawers 'all)
+ (org-cycle-toggle-drawers 'all nil t)
(org-cycle-show-empty-lines t)))
(defun org-set-visibility-according-to-property ()
@@ -6532,7 +6548,7 @@ (defun org-clean-visibility-after-subtree-move ()
(when (and (not (org-invisible-p))
(org-invisible-p (line-end-position)))
(outline-hide-entry))))
- (org-cycle-hide-drawers 'all)
+ (org-cycle-toggle-drawers 'all nil t)
(org-cycle-show-empty-lines 'overview)))))
(defun org-cycle-show-empty-lines (state)
@@ -8076,7 +8092,7 @@ (defun org-sort-entries
"(empty for default `sort-subr' predicate): ")
'allow-empty))))
((member dcst '(?p ?t ?s ?d ?c ?k)) '<))))
- (org-cycle-hide-drawers 'all)
+ (org-cycle-toggle-drawers 'all nil t)
(when restore-clock?
(move-marker org-clock-marker
(1+ (next-single-property-change
--
2.26.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 515 bytes --]
next reply other threads:[~2020-04-11 8:44 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-11 8:43 stardiviner [this message]
2020-04-11 16:05 ` [PATCH] Show hidden drawers when org-cycle on headlines Nicolas Goaziou
2020-04-13 3:29 ` stardiviner
2020-04-13 8:06 ` Nicolas Goaziou
2020-04-13 16:28 ` stardiviner
2020-04-13 9:12 ` Ihor Radchenko
2020-04-13 16:31 ` [SOLVED] " stardiviner
2020-04-13 16:58 ` Ihor Radchenko
2020-04-13 20:00 ` Nicolas Goaziou
2020-04-13 23:19 ` Tim Cross
2020-04-14 3:18 ` Ihor Radchenko
2020-04-14 12:58 ` Nicolas Goaziou
2020-04-14 13:57 ` Ihor Radchenko
2020-04-14 5:21 ` stardiviner
2020-04-14 12:55 ` Nicolas Goaziou
2020-04-15 1:13 ` stardiviner
2020-04-18 17:48 ` Nicolas Goaziou
2020-04-19 9:10 ` stardiviner
2020-04-19 10:31 ` Nicolas Goaziou
2020-04-19 11:31 ` stardiviner
2020-04-13 20:52 ` Samuel Wales
2020-04-15 1:26 ` [SOLUTION] " stardiviner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ftdact0g.fsf@gmail.com \
--to=numbchild@gmail.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).