From mboxrd@z Thu Jan 1 00:00:00 1970 From: bala mayam Subject: Re: Possibly Bug in function org-scan-tags Date: Fri, 16 Dec 2011 00:56:43 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001636c5b217f491c604b4296597 Return-path: Received: from eggs.gnu.org ([140.186.70.92]:41696) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RbKEK-0003fz-EN for emacs-orgmode@gnu.org; Thu, 15 Dec 2011 17:56:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RbKEI-00038O-N2 for emacs-orgmode@gnu.org; Thu, 15 Dec 2011 17:56:48 -0500 Received: from mail-ww0-f49.google.com ([74.125.82.49]:55576) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RbKEI-00038E-DF for emacs-orgmode@gnu.org; Thu, 15 Dec 2011 17:56:46 -0500 Received: by wgbdt11 with SMTP id dt11so3989430wgb.30 for ; Thu, 15 Dec 2011 14:56:45 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --001636c5b217f491c604b4296597 Content-Type: text/plain; charset=ISO-8859-1 The patch has error, it does not work for the following example file /tmp/example.org * DONE s1 * DONE s2 * DONE s3 The below patch works for all the cases diff --git a/lisp/org.el b/lisp/org.el index 8a1fbd3..93d603f 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -12858,7 +12858,8 @@ only lines with a TODO keyword are included in the outpu ;; Get the correct position from where to continue (if org-map-continue-from (goto-char org-map-continue-from) - (and (= (point) lspos) (end-of-line 1))))) + (and (= (point) lspos) (end-of-line 1))) + (setq org-map-continue-from nil))) (when (and (eq action 'sparse-tree) (not org-sparse-tree-open-archived-trees)) (org-hide-archived-subtrees (point-min) (point-max))) - Balamayam On Thu, Dec 15, 2011 at 3:18 AM, 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 > --001636c5b217f491c604b4296597 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable The patch has error, it does not work for the following example file
/tm= p/example.org
* DONE s1
* DONE s2<= br>* DONE s3

The below patch works for all the cases

diff --g= it a/lisp/org.el b/lisp/org.el
index 8a1fbd3..93d603f 100644
--- a/lisp/org.el
+++ b/lisp/org.el
= @@ -12858,7 +12858,8 @@ only lines with a TODO keyword are included in the = outpu
=A0=A0=A0=A0=A0=A0=A0 ;; Get the correct position from where to co= ntinue
=A0=A0=A0=A0=A0=A0=A0 (if org-map-continue-from
=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 (goto-char org-map-continue-from)
-=A0=A0=A0=A0=A0=A0=A0=A0 (a= nd (=3D (point) lspos) (end-of-line 1)))))
+=A0=A0=A0=A0=A0=A0=A0=A0 (an= d (=3D (point) lspos) (end-of-line 1)))
+=A0=A0=A0=A0=A0=A0 (setq org-ma= p-continue-from nil)))
=A0=A0=A0=A0 (when (and (eq action 'sparse-tree)
=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0 (not org-sparse-tree-open-archived-trees))
=A0= =A0=A0=A0=A0=A0 (org-hide-archived-subtrees (point-min) (point-max)))
- Balamayam

On Thu, Dec 15, 2011 at 3:18 AM, bala subramaniyam <balamayam@gmail.com> wro= te:
Hi,
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 The variable "org-map-cont= inue-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."
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (setq org-map-cont= inue-from nil)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (save-excursion =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (setq rtn1 (funcall action))<= br>-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (push rtn1 rtn)))
+=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (push rtn1 rtn))
+=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 (setq org-map-continue-from nil))
=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 (t (error "Invalid action")))
=A0
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; if we are to skip sublevels, ju= mp 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= ()
=A0 (setq org-map-continue-from (point-at-bol))
=A0 (org-archive-= subtree))

=A0(org-map-entries 'my-org-archive-subtree "/DON= E" (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&= quot; is called which sets the variable
"org-map-continue-from"= ; value to *beginning of line* and this variable is not set back to nil aft= er the function call ends, which leads to infinite loop while parsing the s= ubsequent headlines which does not match the "DONE" state(**NEXT = ss2).

Regards,
Balamayam

--001636c5b217f491c604b4296597--