I have just fixed this issue, in the spirit of Nicks proposal. Thanks!
- Carsten On 15.12.2011, at 02:18, bala subramaniyam wrote: > Hi, > The variable "org-map-continue-from" is not reset to nil after > the funcall to action in function "org-scan-tags". > > Heres the patch which works > > diff --git a/lisp/org.el b/lisp/org.el > index 8a1fbd3..54ab5fb 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -12848,7 +12848,8 @@ only lines with a TODO keyword are included in the > output." > (setq org-map-continue-from nil) > (save-excursion > (setq rtn1 (funcall action)) > - (push rtn1 rtn))) > + (push rtn1 rtn)) > + (setq org-map-continue-from nil)) > (t (error "Invalid action"))) > > ;; if we are to skip sublevels, jump to end of subtree > > To see the error in action assume that we want to archive all the "DONE" > states in the file > /tmp/test.org which contains the following lines. > * s1 > ** DONE ss1 > ** NEXT ss2 > > > (defun my-org-archive-subtree () > (setq org-map-continue-from (point-at-bol)) > (org-archive-subtree)) > > (org-map-entries 'my-org-archive-subtree "/DONE" (list "/tmp/test.org")) > > While the org-scan-tags funciton parses the first subheading(**DONE ss1) the > match is > successful and the function "my-org-archive-subtree" is called which sets the > variable > "org-map-continue-from" value to *beginning of line* and this variable is not > set back to nil after the function call ends, which leads to infinite loop > while parsing the subsequent headlines which does not match the "DONE" > state(**NEXT ss2). > > Regards, > Balamayam