From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Overview of agenda files Date: Fri, 26 Sep 2008 18:10:13 +0200 Message-ID: References: <1222255681.24243.1275691879@webmail.messagingengine.com> Mime-Version: 1.0 (Apple Message framework v929.2) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KjGHL-0004Hu-Ks for emacs-orgmode@gnu.org; Fri, 26 Sep 2008 12:34:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KjGHH-0004EU-24 for emacs-orgmode@gnu.org; Fri, 26 Sep 2008 12:34:49 -0400 Received: from [199.232.76.173] (port=53365 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KjGHG-0004EG-Tl for emacs-orgmode@gnu.org; Fri, 26 Sep 2008 12:34:46 -0400 Received: from pony.ic.uva.nl ([145.18.40.181]:57140) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KjGGx-0001rL-DV for emacs-orgmode@gnu.org; Fri, 26 Sep 2008 12:34:46 -0400 In-Reply-To: <1222255681.24243.1275691879@webmail.messagingengine.com> 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: Vladi Solutka Cc: emacs-orgmode@gnu.org Hi Vladi, On Sep 24, 2008, at 1:28 PM, Vladi Solutka wrote: > Hi! > > First: Thanks for orgmode! Didn't know that it would be possible to > love my emacs even more :-)) > > After I'd watched Dominiks Google Talk about org-mode (thanks for > that, very interesting), I started to organize my stuff in a more > "information centric" way. It looks like this is a very good approach > especially when handling small, but long running projects. > > All I currently miss is the possibility to have a top overview of my > projects, listing the count of the different keywords (since each > project has its own file, this would be in fact an overview of my > agenda files). This would give me a quick overview of the status of > each project and would be a perfect starting point when > checking/digging into my projects, especially if the counts and > filenames would be links ... > > Example: > > |-------+------+------+-------| > | File | TODO | WAIT | LATER | > |-------+------+------+-------| > | File1 | 5 | 2 | 10 | > | File2 | 2 | 2 | | > | File3 | 12 | 0 | 0 | > |-------+------+------+-------| > > > Did anyone something like that before? Or is this maybe already > possible with orgmode? There is nothing built-in to make something like this, but using dynamic blocks and the entry mapper, it can be implemented compactly. Load the following code, in .emacs or so.... (defun org-dblock-write:count-todo-states (params) (let ((states (or (plist-get params :states) '("TODO"))) table file entry tbl) ;; Map over all entries (apply 'org-map-entries 'my-count-todo-states-internal nil 'agenda params) (setq table (nreverse table)) ;; Insert headline (insert "|File|" (mapconcat 'identity states "|") "|\n|-") ;; Insert the counts (while (setq entry (pop table)) (setq file (car entry) tbl (cdr entry)) (insert "\n|[[file:" file "][" (file-name-nondirectory file) "]]|" (mapconcat (lambda (x) (number-to-string (or (cdr (assoc x tbl)) 0))) states "|") "|")) ;; Align the table (org-table-align))) (defun my-count-todo-states-internal () "Count TODO keywords per file, into dynamically scoped variable `table'." (let ((todo (org-get-todo-state)) (bfn (buffer-file-name)) a a1) (if (not (assoc bfn table)) ;; Add entry for this new file name (push (list bfn) table)) (setq a (assoc bfn table)) (if (not (assoc todo (cdr a))) ;; Add entry for this new TODO keyword (setcdr a (cons (cons todo 0) (cdr a)))) (setq a1 (assoc todo (cdr a))) (setcdr a1 (1+ (cdr a1))))) Then put the following two lines into an Org-mode buffer #+BEGIN: count-todo-states :states ("TODO" "WAIT" "LATER") #+END: count-todo-states Each time you press `C-c C-c' on te BEGIN line, the table you are looking for will be updated between these two lines. I have made the file names links, I am not sure what you mean by making links of the counts..... HTH - Carsten