Fix bug when hiding archived subtrees
commit449e6b4560a5aec1152624ec0a0e7e2d73a51276
authorCarsten Dominik <carsten.dominik@gmail.com>
Tue, 16 Feb 2010 04:30:49 +0000 (16 05:30 +0100)
committerCarsten Dominik <carsten.dominik@gmail.com>
Tue, 16 Feb 2010 04:30:49 +0000 (16 05:30 +0100)
tree006fd1264b13ada3db5ace808b9575c9ef7061ce
parentc9d7c2e9664d13d4fb20c7787d7bfa1da290725d
Fix bug when hiding archived subtrees

Emilio Arias writes:

> egallego@babel.ls.fi.upm.es (Emilio Jesús Gallego Arias) writes:
>
> To reproduce save this minimal org file:
>
> #+STARTUP: even
> * A
>  :PROPERTIES:
>  :ARCHIVE: a
>  :END:
> ** B  :ARCHIVE:
>   Some text
>
> and hit TAB when in the * A headline; then the ** B headline contents
> will be incorrectly shown.
>
> I've found the culprit in org-hide-archived-subtrees:
>
> ,----
> | (defun org-hide-archived-subtrees (beg end)
> |   "Re-hide all archived subtrees after a visibility state change."
> |   (save-excursion
> |     (let* ((re (concat ":" org-archive-tag ":")))
> |       (goto-char beg)
> |       (while (re-search-forward re end t)
> |  (and (org-on-heading-p) (org-flag-subtree t))
> |  (org-end-of-subtree t)))))
> `----
>
> The problem is that the RE matches the first archive "property" and
> then does an org-end-of-subtree which skips all the subtrees of the
> parent tree where the ARCHIVE property is located.
>
> I've replaced this part
>
> |  (and (org-on-heading-p) (org-flag-subtree t))
> |  (org-end-of-subtree t)))))
>
> by
>
> |       (when (org-on-heading-p)
> |             (org-flag-subtree t)
> |             (org-end-of-subtree t)))))))
>
> so org-end-of-subtree is only called if we are really in a headline. I
> think that makes sense.
>
lisp/ChangeLog
lisp/org.el