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)))



_______________________________________________
Emacs-orgmode mailing list
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

Reply via email to