David Maus <dm...@ictsoc.de> writes:

Hi David,

>>  - headlines that contain only past timestamps and are closed TODOs (if
>>    they are TODOs), that is, any TODO state after the | in
>>    `org-todo-keywords'
>
>>  - the same applies to all children of that entry, recursively
>
> This is quite simple: The function returns non-nil if an entry is
> active (recursion \o/):
>
> (defun dmj/org-entry-is-active-p ()
>   "Return non-nil if entry is active.
> An entry is considered to be active if it has an active timestamp
> in the future or an open TODO keyword or at least one active child."
>   (save-excursion
>     (beginning-of-line)
>     (let ((children (delq nil (org-map-entries
>                              'dmj/org-entry-is-active-p
>                              (format "LEVEL>%d" (org-outline-level))
>                              'tree)))
>         (timestamp (org-entry-get nil "TIMESTAMP")))
>       (or (org-entry-is-todo-p)
>           children
>           (and timestamp (time-less-p (current-time) (org-time-string-to-time 
> timestamp)))))))

Looks good. :-)

>>  - the agenda should only list the top-most entries for which these
>>    properties hold
>
> This is the tougher part: Because the state of an entry
> (active/inactive) depends on its children the function that finally
> displays the entries must first obtain the state of the entries and
> their relationships and then remove all inactive entries whose
> (grand,grand...)parents are inactive.
>
> Sounds like you would require a a user-defined agenda function in
> `org-agenda-custom-commands'.

Yes, that's most likely.  I'll dig into that further when I find some
spare time.  Thanks a lot for providing this starting point for me.

Bye,
Tassilo


_______________________________________________
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

Reply via email to