emacs-orgmode
[Top][All Lists]
Advanced

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

[O] [PATCH v2 07/11] org-taskjuggler: make project umbrella task optiona


From: Yann Hodique
Subject: [O] [PATCH v2 07/11] org-taskjuggler: make project umbrella task optional
Date: Wed, 15 Aug 2012 21:11:53 +0200

* org-taskjuggler.el (org-export-taskjuggler-keep-project-as-task): new custom
variable
(org-export-as-taskjuggler): optionally drop the topmost "task" (project)
(org-taskjuggler-assign-task-ids): adapt path computation by optionally
dropping the topmost component (project)

introduce `org-export-taskjuggler-keep-project-as-task' as a flag to toggle
the behavior. Keep old behavior as default.
---
 lisp/org-taskjuggler.el | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el
index 7376302..3c97e03 100644
--- a/lisp/org-taskjuggler.el
+++ b/lisp/org-taskjuggler.el
@@ -264,6 +264,14 @@ but before any resource and task declarations."
   the corresponding resource."
   :group 'org-export-taskjuggler)
 
+(defcustom org-export-taskjuggler-keep-project-as-task t
+  "Whether to keep the project headline as an umbrella task for
+  all declared tasks. Setting this to nil will allow maintaining
+  completely separated task buckets, while still sharing the same
+  resources pool."
+  :group 'org-export-taskjuggler
+  :type 'boolean)
+
 ;;; Hooks
 
 (defvar org-export-taskjuggler-final-hook nil
@@ -350,7 +358,10 @@ defined in `org-export-taskjuggler-default-reports'."
 
       (org-clone-local-variables old-buffer "^org-")
       (insert org-export-taskjuggler-default-global-header)
-      (org-taskjuggler-open-project (car tasks))
+      (org-taskjuggler-open-project
+       (if org-export-taskjuggler-keep-project-as-task
+          (car tasks)
+        (pop tasks)))
       (insert org-export-taskjuggler-default-global-properties)
       (insert "\n")
       (dolist (resource resources)
@@ -365,7 +376,9 @@ defined in `org-export-taskjuggler-default-reports'."
          (org-taskjuggler-close-maybe level)
          (org-taskjuggler-open-task task)
          (setq org-export-taskjuggler-old-level level)))
-      (org-taskjuggler-close-maybe 1)
+      (org-taskjuggler-close-maybe
+       (if org-export-taskjuggler-keep-project-as-task
+          1 2))
       (org-taskjuggler-insert-reports)
       (save-buffer)
       (or (org-export-push-to-kill-ring "TaskJuggler")
@@ -446,7 +459,11 @@ a path to the current task."
          (push unique-id (car unique-ids))
          (setcar path unique-id)))
        (push (cons "unique-id" unique-id) task)
-       (push (cons "path" (mapconcat 'identity (reverse path) ".")) task)
+       (push (cons "path"
+                   (mapconcat 'identity
+                              (if org-export-taskjuggler-keep-project-as-task
+                                  (reverse path)
+                                (cdr (reverse path))) ".")) task)
        (setq previous-level level)
        (setq resolved-tasks (append resolved-tasks (list task)))))))
 
-- 
1.7.11.4




reply via email to

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