From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: monthly report Date: Tue, 29 May 2007 14:29:11 +0200 Message-ID: <7b72afe87a251d7615438346906a6f1f@science.uva.nl> References: <86ps4pbrxy.fsf@bitty.lumos.us> Mime-Version: 1.0 (Apple Message framework v624) Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ht0pC-0007x8-0G for emacs-orgmode@gnu.org; Tue, 29 May 2007 08:29:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ht0p9-0007ui-Bb for emacs-orgmode@gnu.org; Tue, 29 May 2007 08:29:17 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ht0p9-0007uc-2V for emacs-orgmode@gnu.org; Tue, 29 May 2007 08:29:15 -0400 Received: from korteweg.uva.nl ([146.50.98.70]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ht0p8-0004Ek-Qw for emacs-orgmode@gnu.org; Tue, 29 May 2007 08:29:15 -0400 In-Reply-To: <86ps4pbrxy.fsf@bitty.lumos.us> 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: Steven Lumos Cc: emacs-orgmode@gnu.org On May 25, 2007, at 3:41, Steven Lumos wrote: > Being yet another planner switcher, I'm used to using planner-report- > generate to assist me with writing a monthly activity report. I don't > need fine-grained time tracking, or even most of what planner-report- > generate does--it would be ideal to get just a list of TODOs that were > closed between two dates and then I'll look at it while I type a few > sentences in an email buffer. > > Is there already an easy way to "get a list" (I guess that a sparse > tree would be most convenient for me) of TODOs marked as closed within > some date range? You can use org-occur to create a tree with matches of CLOSED time stamps. And you can use the callback argument of org-occur to verify if a match is in a given time interval. Something like this: (defun org-closed-in-range () "Sparse treee of items closed in a certain time range." (interactive) ;; Get the time interval from the user. (let* ((time1 (time-to-seconds (org-read-date nil 'to-time nil "Starting date: "))) (time2 (time-to-seconds (org-read-date nil 'to-time nil "End date:"))) ;; callbakc function (callback (lambda () (let ((time (time-to-seconds (apply 'encode-time (org-parse-time-string (match-string 1)))))) ;; check if time in interval (and (>= time time1) (<= time time2)))))) ;; make tree, check each match with the callback (org-occur "CLOSED: +\\[\\(.*?\\)\\]" nil callback)))