emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Agenda views skip function hide parent projects


From: Alan Schmitt
Subject: Re: [O] Agenda views skip function hide parent projects
Date: Wed, 05 Feb 2014 20:40:57 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (darwin)

Wiskey 5 Alpha <address@hidden> writes:

> Hello all.
>
> I am sure this is documented somewhere, but I cant seem to put together
> the correct custom agenda view to support my way of project planning
>
> I have the following todo keywords defined : TODO NEXT DONE WAIT
> I like to list everything as a TODO, even if sub items may be a TODO,
> like this
>
> ** TODO Main Test Project
> *** TODO Main sub project 1
> **** NEXT first task
> *** TODO Main sub project 2 (stuck)
>
> What I would like to see is :
> on my projects list 
> TODO Main sub project 1
>
> The problem is that my project list looks like this
> TODO Main Test Project
> TODO Main sub project 1
>
> I have some projects that are 4 levels deep, so this is quite annoying.
> How do 
> I get just the "deepest" level project to show without it's parents ?

I highly recommend reading this: http://doc.norang.ca/org-mode.html

In particular, if you read this section
http://doc.norang.ca/org-mode.html#Projects you will find functions that
tell you if something is a project (i.e., is a task with a subtask).

I guess one could write something like this:

#+begin_src emacs-lisp
(defun bh/has-subproject-p ()
  "Any task with a todo keyword subtask that is a project"
  (save-restriction
    (widen)
    (let ((has-subproject)
          (subtree-end (save-excursion (org-end-of-subtree t)))
          (is-a-task (member (nth 2 (org-heading-components)) 
org-todo-keywords-1)))
      (save-excursion
        (forward-line 1)
        (while (and (not has-subproject)
                    (< (point) subtree-end)
                    (re-search-forward "^\*+ " subtree-end t))
          (when (bh/is-project-p)
            (setq has-subproject t))))
      (and is-a-task has-subtask))))
#end_src

then combine "is-project-p" and "has-subproject-p" to decide whether to
include something.

Alan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]