Fix `org-hide-archived-subtrees'

* lisp/org.el (org-hide-archived-subtrees): Prevent an error when END
  argument doesn't match the end of a subtree.  Prevent false
  positives.  Also, archive tag is case-sensitive.
This commit is contained in:
Nicolas Goaziou 2014-12-16 10:28:34 +01:00
parent eac147621e
commit 389274c1c4
1 changed files with 8 additions and 7 deletions

View File

@ -4750,13 +4750,14 @@ Otherwise, these types are allowed:
(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)
(when (org-at-heading-p)
(org-flag-subtree t)
(org-end-of-subtree t))))))
(org-with-wide-buffer
(let ((case-fold-search nil)
(re (concat org-outline-regexp-bol ".*:" org-archive-tag ":")))
(goto-char beg)
(while (and (< (point) end) (re-search-forward re end t))
(when (member org-archive-tag (org-get-tags))
(org-flag-subtree t)
(org-end-of-subtree t))))))
(declare-function outline-end-of-heading "outline" ())
(declare-function outline-flag-region "outline" (from to flag))