emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Adam Spiers <orgmode@adamspiers.org>
To: org-mode mailing list <emacs-orgmode@gnu.org>
Subject: FR: headline iteration API
Date: Fri, 30 May 2008 13:46:19 +0100	[thread overview]
Message-ID: <20080530124619.GB9520@atlantic.linksys.moosehall> (raw)

Hi all,

I would like to propose a new extensibility feature: an API for
iterating over all the headlines in a given buffer/file or set of
buffers/files.  In a manner similar to mapcar, this would allow you to
execute an elisp function for each headline which could do anything
you want.  It would *not* have any mandatory side-effects such as
modifying any buffer etc. - that would be left to the extension
developer to do.  Having said that, an API set of helper functions for
things like "increase the priority of this headline" or "add a tag to
this headline" would enrich the possible applications, although those
helper functions probably mostly exist already, even if they are not
explicitly documented as an API at the moment?

Anyway, example use cases:

  - Generating custom reports containing arbitrary combinations
    of things like the following:

    - (count of number of) items ...
      - grouped by TODO keyword state
      - grouped by tag
      - grouped by category
      - grouped by "area of responsibility"
      - grouped by priority
      - with a scheduled date/time
      - with a scheduled date/time in the past
      - with a scheduled date/time within a certain period
      - with a deadline
      - with a deadline missed
      - with a deadline within a certain period

    - amount of time scheduled for a particular type of
      TODO/tag/category/priority (e.g. to ensure that you are planning
      to spend your time evenly across various areas of
      responsibility, this would greatly assist with GTD-like
      "30,000ft and above" reviews)

    - actions taken during minuting of a meeting, grouped by owner

I am sure there are many other really cool ideas which the community
could come up with.  Reports could even be auto-generated via
`after-save-hook' or similar.

Obviously the agenda generation code has a lot of sophisticated
iteration capabilities already built in - without looking at the code,
I am wildly guessing that with some refactoring this logic could maybe
be reused, so that a new headline iteration API would support existing
mechanisms such as tag searches, org-agenda-skip, and sorting?  If so,
IMHO that would be really amazingly powerful :-)

Would be very interested in everyone's thoughts.  Thanks!
Adam

             reply	other threads:[~2008-05-30 12:46 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-30 12:46 Adam Spiers [this message]
2008-06-04 14:35 ` FR: headline iteration API Daniel Clemente
2008-06-10 10:28   ` Adam Spiers
2008-06-12  6:46     ` Carsten Dominik
2008-06-12 10:16       ` Adam Spiers
2008-06-12 10:51         ` Carsten Dominik
2008-06-11  6:57 ` Dominik, C.
2008-06-11 11:06   ` Adam Spiers
2008-06-11 17:15     ` Eddward DeVilla
2008-06-12  1:09       ` Eddward DeVilla
2008-07-16 15:06       ` Max Mikhanosha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080530124619.GB9520@atlantic.linksys.moosehall \
    --to=orgmode@adamspiers.org \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).