On 8.4.2011, at 05:34, Bernt Hansen wrote: > "Filippo A. Salustri" <salus...@ryerson.ca> writes: > >> Hi, >> I'm thinking I might like to try some programming to do things to the >> agenda from an elisp function. >> I tried 'apropos agenda' but I didn't really see the kind of thing >> I'm looking for. >> What I'm hoping is for some way to iterate over each item in the >> agenda, and be able to access the content of the item in some >> structured way. >> I think I've seen functions that can pull info like TODO state and >> priority from the item under the cursor, so it's the iteration part >> that I'm really interested in. >> >> Any advice? > > Hi Fil, > > I just found the B f code to execute an arbitrary function on marked > entries in the agenda. Maybe this will help? > > This following code visits the marked entries and just displays the > heading for the task. > > Mark multiple entries in the agenda with 'm' and then 'B f bh/test RET' > should display the heading of each marked task in the *Messages* buffer. > > --8<---------------cut here---------------start------------->8--- > (defun bh/test () > (interactive) > (let* ((marker (or (org-get-at-bol 'org-marker) > (org-agenda-error))) > (buffer (marker-buffer marker)) > (pos (marker-position marker))) > (with-current-buffer buffer > (if (org-mode-p) > (save-excursion > (goto-char pos) > (message "%s" (nth 4 (org-heading-components)))))))) > --8<---------------cut here---------------end--------------->8---
Also useful can be (org-entry-properties marker) Kind of slow for *many* entries, but perfectly good for a limited number... - Carsten