From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Supporting non-stuck projects view with minimal effort Date: Sat, 26 Dec 2009 12:06:15 +0100 Message-ID: <2F4B22E0-35D7-4409-A556-90399F0DB64F@gmail.com> References: <20091222175803.GA22580@taupan.ath.cx> Mime-Version: 1.0 (Apple Message framework v936) 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 1NOUTa-0004Id-BE for emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:06:26 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NOUTV-0004GU-3E for emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:06:25 -0500 Received: from [199.232.76.173] (port=59276 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NOUTU-0004GP-Tg for emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:06:20 -0500 Received: from mail-fx0-f228.google.com ([209.85.220.228]:54712) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NOUTU-0008FC-JW for emacs-orgmode@gnu.org; Sat, 26 Dec 2009 06:06:20 -0500 Received: by fxm28 with SMTP id 28so588217fxm.26 for ; Sat, 26 Dec 2009 03:06:19 -0800 (PST) In-Reply-To: <20091222175803.GA22580@taupan.ath.cx> 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: friedel@nomaden.org Cc: Emacs-orgmode mailing list On Dec 22, 2009, at 6:58 PM, Friedrich Delgado Friedrichs wrote: > Hi! > > I've been thinking, the view of stuck projects is nice, but I'd need a > view of non-stuck projects to complement it. Hi Friedel, can you describe how you would use such a view in your workflow? - Carsten > > I came up with this ugly mess: > > (defun fdf/org-agenda-list-unstuck-projects (&rest ignore) > "Create agenda view for projects that are NOT stuck. > Stuck projects are project that have no next actions. For the > definitions > of what a project is and how to check if it stuck, customize the > variable > `org-stuck-projects'. > MATCH is being ignored." > (interactive) > (let* ((org-agenda-overriding-header > (or org-agenda-overriding-header "List of unstuck projects: > ")) > (matcher (nth 0 org-stuck-projects)) > (todo (nth 1 org-stuck-projects)) > (todo-wds (if (member "*" todo) > (progn > (org-prepare-agenda-buffers (org-agenda-files > nil 'ifmode)) > (org-delete-all > org-done-keywords-for-agenda > (copy-sequence > org-todo-keywords-for-agenda))) > todo)) > (todo-re (concat "^\\*+[ \t]+\\(" > (mapconcat 'identity todo-wds "\\|") > "\\)\\>")) > (tags (nth 2 org-stuck-projects)) > (tags-re (if (member "*" tags) > (org-re "^\\*+ .*:[[:alnum:]_@]+:[ \t]*$") > (if tags > (concat "^\\*+ .*:\\(" > (mapconcat 'identity tags "\\|") > (org-re "\\):[[:alnum:]_@:]*[ > \t]*$"))))) > (gen-re (nth 3 org-stuck-projects)) > (re-list > (delq nil > (list > (if todo todo-re) > (if tags tags-re) > (and gen-re (stringp gen-re) (string-match "\\S-" > gen-re) > gen-re)))) > (skip-regexp > (if re-list > (mapconcat 'identity re-list "\\|") > (error "No information how to identify unstuck > projects")))) > (org-tags-view nil matcher) > (let ((org-agenda-skip-function > (lambda () > (org-agenda-skip-if t 'notregexp skip-regexp)))) > (with-current-buffer org-agenda-buffer-name > (setq org-agenda-redo-command > '(org-agenda-list-stuck-projects > (or current-prefix-arg org-last-arg))))))) > > As you will notice, this is blatantly copied and pasted from > org-agenda-list-stuck-projects (which is why it's ugly), the only > difference is that it doesn't set org-agenda-skip-function but uses > org-agenda-skip-if. > > I think this could be very easily integrated into > org-agenda-list-stuck-projects (with an optional parameter 'negate'), > but I somehow feel reluctant to patch org-core for some irrational > reason. > > Kind regards > Friedel > -- > Friedrich Delgado Friedrichs > TauPan on Ircnet and Freenode ;) > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten