From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Re: org-agenda-list-stuck-projects and nested projects Date: Mon, 14 Jul 2008 12:17:47 -0700 Message-ID: <54B77BB2-5855-4104-A233-B3B8CADC903A@uva.nl> References: <87wsjxnxnn.fsf@transitory.lefae.org> <2000F983-CA16-4A50-9AE5-9BE3CF830746@uva.nl> <87fxqknu8i.fsf@transitory.lefae.org> <87iqvdco7f.fsf@transitory.lefae.org> Mime-Version: 1.0 (Apple Message framework v924) 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 1KITYY-0005o1-Aj for emacs-orgmode@gnu.org; Mon, 14 Jul 2008 15:17:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KITYX-0005nU-UZ for emacs-orgmode@gnu.org; Mon, 14 Jul 2008 15:17:53 -0400 Received: from [199.232.76.173] (port=40168 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KITYX-0005nM-KF for emacs-orgmode@gnu.org; Mon, 14 Jul 2008 15:17:53 -0400 Received: from korteweg.uva.nl ([146.50.98.70]:42659) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KITYX-0004xe-Qh for emacs-orgmode@gnu.org; Mon, 14 Jul 2008 15:17:54 -0400 In-Reply-To: <87iqvdco7f.fsf@transitory.lefae.org> 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: Ross Patterson Cc: emacs-orgmode@gnu.org On Jul 10, 2008, at 4:29 PM, Ross Patterson wrote: > Ross Patterson writes: > >> Carsten Dominik writes: >> >>> The "stuck projects" view depends on the hypothesis that you can >>> clearly identify what a "project means". In the default setup, >>> projects >>> are assumed to have LEVEL=2 and should not be DONE. >>> >>> In the hierarchy you are using, it seems that any entry can be >>> called a >>> "projects", and that you do have projects within projects. So the >>> idea that >>> you need to avoid skipping subtrees and limit yourself to skipping >>> entries only >>> is the right approach. >>> >>> However, what you are really asking for is to look only at direct >>> children, >>> and in this case is is better to write a special skip function: >>> >>> (defun org-skip-unless-child-todo () >>> (let ((subtree-end (save-excursion (org-end-of-subtree t))) >>> (entry-end (save-excursion (or (outline-next-heading) (point- >>> max))))) >>> (if (re-search-forward >>> (concat "^" (regexp-quote >>> (make-string (1+ level) ?*)) >>> "[ \t]+" >>> "\\(" >>> (mapconcat 'identity org-not-done-keywords "\\|") >>> "\\)") >>> subtree-end t) >>> ;; skip this entry by returning the entry-end position >>> entry-end >>> ;; do not skip this entry by returning nil >>> nil))) >>> >>> As you can see, this function first determines the end of the >>> subtree >>> (for the search) and the end of the entry positions. Then it >>> creates >>> a special regular expression that will only match headlines that are >>> direct children of the current level. During a tags search, the >>> "level" variable contains the current level (careful, when you are >>> using org-odd-levels-only, it contains the reduced level...). >>> So the special regexp contains one star more that the current, and >>> then >>> any TODO keyword. >>> >>> If there is a TODO child, the function returns the position at the >>> end >>> of >>> entry, to continue search from there. >>> >>> If there is no mach, it returns nil, meaning that this entry should >>> *not* be skipped. >>> >>> The agenda custom command would look like this: >>> >>> (("0" "Special Stuck" tags "LEVEL>0/-DONE-TODO" >>> ((org-agenda-skip-function 'org-skip-unless-child-todo))) >>> >>> So we select entries that are LEVEL>0, i.e. all entries, but we >>> require >>> that these entries are not TODO entries. OK, these are the >>> candidate >>> projects. And the we skip them when they have a direct TODO child. >>> >>> HTH >>> >>> - Carsten >> >> Wow, that is a response and a half! Looks like you've pretty much >> done >> it for me. Thanks so much! I'll let you know how it works. > > Thanks again for that function and custom command. They work like a > charm! > > Having gotten to use them for a bit, I wonder if one refinement > would be > possible. Consider the following tree: > > * Testing > ** Project > *** Sub-project > **** TODO Task > > With the custom command you provided, the "* Project" entry will be > reported as a stuck project. Ideally, I'd like it not to be > considered > a stuck project. ????????????? I believe this is *exactly* what you asked for, please re-read your own post. What you are asking for now seems to be pretty much the original behavior... or am I missing something? - Carsten