From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: org-scan-tags Date: Thu, 3 Feb 2011 17:13:38 +0100 Message-ID: <8D6872F5-4087-4581-A2D9-735CBE2B112E@gmail.com> References: <6A0ECD8D-8BB6-4BD6-9EC3-E6F4B09D0288@gmail.com> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=58187 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pl1oZ-0000E7-8a for emacs-orgmode@gnu.org; Thu, 03 Feb 2011 11:13:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pl1oX-00020a-Vt for emacs-orgmode@gnu.org; Thu, 03 Feb 2011 11:13:47 -0500 Received: from mail-ey0-f169.google.com ([209.85.215.169]:51876) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pl1oX-00020K-Mq for emacs-orgmode@gnu.org; Thu, 03 Feb 2011 11:13:45 -0500 Received: by eyh6 with SMTP id 6so688343eyh.0 for ; Thu, 03 Feb 2011 08:13:44 -0800 (PST) In-Reply-To: <6A0ECD8D-8BB6-4BD6-9EC3-E6F4B09D0288@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Carsten Dominik Cc: Ilya Shlyakhter , emacs-orgmode On Feb 3, 2011, at 6:32 AM, Carsten Dominik wrote: > > On Sep 15, 2010, at 5:19 AM, Ilya Shlyakhter wrote: > >> In org-scan-tags, if todo-only is t, would it be possible to speed >> things up by changingthe regexp go to just the lines with a TODO >> keyword? > > I believe this may cause a problem. The scanner needs to see at least > every parent node to be able to collect all inherited tags. > So I think that a tree like > > * heading > ** one :tag1: > *** TODO two :tag2: > > would incorrectly miss out on :tag1: OK, here is an example where it really does fail: * heading ** one :tag1: *** two *** two :tag2: *** TODO two :tag2: *** two :tag2: Fold up the tree, then do C-c / m +tag1/! RET This should find the "TODO two", but it does not, because the new regexp moves right past the "one" line and so tag1 is overlooked. - Carsten > > - Carsten > >> I.e. in >> >> (let* ((re (concat "^" outline-regexp " *\\(\\<\\(" >> (mapconcat 'regexp-quote org-todo-keywords-1 "\ >> \|") >> (org-re >> "\\>\\)\\)? *\\(.*?\\)\\(:[[:alnum:]_@:]+:\\)? >> [ \t]*$"))) >> >> remove the first "?" if todo-only is t. Also, regexp-opt might make >> a more efficient regexp than mapconcat with regexp-quote. >> >> Reason for request: I'm writing an extension of org for setting & >> checking goals, and want to quickly find entries with headlines of >> the >> form >> GOAL .... >> of which there may be relatively few in a large file. So, stepping >> through all entries and then checking them for the GOAL keyword is >> very inefficient. >> It would be much faster if the regexp included the GOAL as a keyword. >> >> It would be good if the parameter todo-only could be a list of >> strings, and org-scan-tags would return only the headlines where the >> todo keyword is from this list. >> It could use regexp-opt to make an efficient regexp for this. >> >> There also seem to be other opportunities for speeding up >> org-scan-tags in this way: e.g. if the match string includes +mytag, >> the regexp for the headline could include this as well. >> Similarly for properties. Maybe, org-make-tags-matcher could >> return a >> list of tags and properties that must appear in any matching entry. >> >> It would also help if the tags matcher expression could refer to text >> properties stored on the headline -- perhaps, with conditions such as >> :myprop=X (i.e. same as for org properties, but property name must >> be >> a keyword). It already does this for the 'org-category text >> property. >> Then one can e.g. mark entries representing unmet goals with text >> properties, and then use a regular org-tags-view to browse them in a >> sparsetree >> or an agenda. >> >> Thanks, >> >> ilya >> >> _______________________________________________ >> Emacs-orgmode mailing list >> Please use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >