From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Re: manipulating the agenda from elisp? Date: Fri, 8 Apr 2011 18:59:38 +0200 Message-ID: References: <87bp0h2z80.fsf@norang.ca> Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=42398 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q8F2C-0006Ue-CD for emacs-orgmode@gnu.org; Fri, 08 Apr 2011 12:59:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q8F2B-0003oq-GH for emacs-orgmode@gnu.org; Fri, 08 Apr 2011 12:59:48 -0400 Received: from mail-ew0-f41.google.com ([209.85.215.41]:32976) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q8F2B-0003oU-9G for emacs-orgmode@gnu.org; Fri, 08 Apr 2011 12:59:47 -0400 Received: by ewy9 with SMTP id 9so1186827ewy.0 for ; Fri, 08 Apr 2011 09:59:45 -0700 (PDT) In-Reply-To: <87bp0h2z80.fsf@norang.ca> 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: Bernt Hansen Cc: "Filippo A. Salustri" , emacs-orgmode@gnu.org On 8.4.2011, at 05:34, Bernt Hansen wrote: > "Filippo A. Salustri" 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