[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] org-scan-tags

From: Carsten Dominik
Subject: Re: [Orgmode] org-scan-tags
Date: Thu, 3 Feb 2011 17:13:38 +0100

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

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

- Carsten

- Carsten

I.e. in

(let* ((re (concat "^" outline-regexp " *\\(\\<\\("
(mapconcat 'regexp-quote org-todo-keywords-1 "\ \|")
"\\>\\)\\)? *\\(.*?\\)\\(:[[: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
  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
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
or an agenda.



Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]