address@hidden (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.
Git patch attached.
Regards,
Emilio
diff --git a/lisp/org.el b/lisp/org.el
index f237367..d2db359 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -3597,8 +3597,9 @@ collapsed state."
(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)))))
+ (when (org-on-heading-p)
+ (org-flag-subtree t)
+ (org-end-of-subtree t))))))
(defun org-flag-subtree (flag)
(save-excursion
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode