Fix bug when hiding archived subtrees
Emilio Arias writes:
> egallego@babel.ls.fi.upm.es (Emilio Jess 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.
>