diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2013-11-22 22:11:44 +0100 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2013-11-23 09:34:48 +0100 |
commit | e8bafdd04f21784e189a4da647795f660a4ef1ce (patch) | |
tree | b30c447bcc3e1ed8f18c6ccfd4b0e48ee9d51be1 | |
parent | 402c310f004218322cfd0287a125837508920dcc (diff) | |
download | org-mode-e8bafdd04f21784e189a4da647795f660a4ef1ce.tar.gz |
Optimize hiding all drawers in a buffer
* lisp/org.el (org-cycle-hide-drawers): Make sure each drawer is only
flagged once.
-rw-r--r-- | lisp/org.el | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lisp/org.el b/lisp/org.el index f9785ae..bb47808 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7101,7 +7101,13 @@ specifying which drawers should not be hidden." (goto-char beg) (while (re-search-forward org-drawer-regexp end t) (unless (member-ignore-case (match-string 1) exceptions) - (org-flag-drawer t))))))) + (let ((drawer (org-element-at-point))) + (when (memq (org-element-type drawer) '(drawer property-drawer)) + (org-flag-drawer t drawer) + ;; Make sure to skip drawer entirely or we might flag + ;; it another time when matching its ending line with + ;; `org-drawer-regexp'. + (goto-char (org-element-property :end drawer)))))))))) (defun org-cycle-hide-inline-tasks (state) "Re-hide inline tasks when switching to 'contents or 'children |