Hi all I have some long standing improvements to Taskjuggler export which I'd finally like to push to the repo. Thanks Christian Egli (5): Add some minimal infrastructure to handle export to both tj2 and tj3 Mark a task as a milestone if it is a leaf node and cannot be scheduled Replace recursive functions with iterative ones Remove a spurious debug statement Escape double quotes in headlines lisp/org-taskjuggler.el | 76 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 58 insertions(+), 18 deletions(-)
* org-taskjuggler.el (org-export-taskjuggler-target-version): (org-taskjuggler-targeting-tj3-p): Add some minimal infrastructure to handle export to both tj2 and tj3. (org-taskjuggler-open-task): Use a different way to purge allocations for tj2 and tj3. --- lisp/org-taskjuggler.el | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index 8d6318e..ec6bb30 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -181,6 +181,11 @@ resources for the project." :group 'org-export-taskjuggler :type 'string) +(defcustom org-export-taskjuggler-target-version 2.4 + "Which version of TaskJuggler the exporter is targeting." + :group 'org-export-taskjuggler + :type 'number) + (defcustom org-export-taskjuggler-default-project-version "1.0" "Default version string for the project." :group 'org-export-taskjuggler @@ -331,6 +336,10 @@ with the TaskJuggler GUI." (command (concat process-name " " file-name))) (start-process-shell-command process-name nil command))) +(defun org-taskjuggler-targeting-tj3-p () + "Return true if we are targeting TaskJuggler III." + (< org-export-taskjuggler-target-version 3.0)) + (defun org-taskjuggler-parent-is-ordered-p () "Return true if the parent of the current node has a property \"ORDERED\". Return nil otherwise." @@ -623,7 +632,10 @@ org-mode priority string." (if (and parent-ordered previous-sibling) (format " depends %s\n" previous-sibling) (and depends (format " depends %s\n" depends))) - (and allocate (format " purge allocations\n allocate %s\n" allocate)) + (and allocate (format " purge %s\n allocate %s\n" + (or (and (org-taskjuggler-targeting-tj3-p) "allocations") + "allocate") + allocate)) (and complete (format " complete %s\n" complete)) (and effort (format " effort %s\n" effort)) (and priority (format " priority %s\n" priority)) -- 1.7.1
* org-taskjuggler.el (org-taskjuggler-compute-task-leafiness): Compute the leafiness of a node. (org-taskjuggler-open-task, org-export-as-taskjuggler): Mark a node as a milestone if it is a leaf and has no effort. Mark a task as a milestone if it has neither an effort, a duration, an end or a period. This is needed for tj3 export as tj3 fails to compile the file if there is a leaf node with no computable end date. tj2 happily ignored the situation, but TJ3 throws an error. --- lisp/org-taskjuggler.el | 37 +++++++++++++++++++++++++++++++------ 1 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index ec6bb30..2d16790 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -263,9 +263,10 @@ defined in `org-export-taskjuggler-default-reports'." (let* ((tasks (org-taskjuggler-resolve-dependencies (org-taskjuggler-assign-task-ids - (org-map-entries - '(org-taskjuggler-components) - org-export-taskjuggler-project-tag nil 'archive 'comment)))) + (org-taskjuggler-compute-task-leafiness + (org-map-entries + '(org-taskjuggler-components) + org-export-taskjuggler-project-tag nil 'archive 'comment))))) (resources (org-taskjuggler-assign-resource-ids (org-map-entries @@ -392,6 +393,23 @@ a path to the current task." (setq previous-level level) (setq resolved-tasks (append resolved-tasks (list task))))))) +(defun org-taskjuggler-compute-task-leafiness (tasks) + "Figure out if each task is a leaf by looking at it's level, +and the level of its successor. If the successor is higher (ie +deeper), then it's not a leaf." + (cond + ((null tasks) nil) + ;; if a task has no successors it is a leaf + ((null (car (cdr tasks))) + (cons (cons (cons "leaf-node" t) (car tasks)) + (org-taskjuggler-compute-task-leafiness (cdr tasks)))) + ;; if the successor has a lower level than task it is a leaf + ((<= (cdr (assoc "level" (car (cdr tasks)))) (cdr (assoc "level" (car tasks)))) + (cons (cons (cons "leaf-node" t) (car tasks)) + (org-taskjuggler-compute-task-leafiness (cdr tasks)))) + ;; otherwise examine the rest of the tasks + (t (cons (car tasks) (org-taskjuggler-compute-task-leafiness (cdr tasks)))))) + (defun org-taskjuggler-assign-resource-ids (resources &optional unique-ids) "Given a list of resources return the same list, assigning a unique id to each resource." @@ -621,11 +639,17 @@ org-mode priority string." (cdr (assoc "complete" task)))) (parent-ordered (cdr (assoc "parent-ordered" task))) (previous-sibling (cdr (assoc "previous-sibling" task))) + (milestone (or (cdr (assoc "milestone" task)) + (and (assoc "leaf-node" task) + (not (or effort + (cdr (assoc "duration" task)) + (cdr (assoc "end" task)) + (cdr (assoc "period" task))))))) (attributes '(account start note duration endbuffer endcredit end - flags journalentry length maxend maxstart milestone - minend minstart period reference responsible - scheduling startbuffer startcredit statusnote))) + flags journalentry length maxend maxstart minend + minstart period reference responsible scheduling + startbuffer startcredit statusnote))) (insert (concat "task " unique-id " \"" headline "\" {\n" @@ -639,6 +663,7 @@ org-mode priority string." (and complete (format " complete %s\n" complete)) (and effort (format " effort %s\n" effort)) (and priority (format " priority %s\n" priority)) + (and milestone (format " milestone\n")) (org-taskjuggler-get-attributes task attributes) "\n")))) -- 1.7.1
* org-taskjuggler.el (org-taskjuggler-compute-task-leafiness): (org-taskjuggler-assign-resource-ids): Replace recursive implementation with an iterative one. That way we can avoid to have ask users to increase `max-lisp-eval-depth'. --- lisp/org-taskjuggler.el | 48 ++++++++++++++++++++++++---------------------- 1 files changed, 25 insertions(+), 23 deletions(-) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index 2d16790..5b3f16f 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -397,31 +397,33 @@ a path to the current task." "Figure out if each task is a leaf by looking at it's level, and the level of its successor. If the successor is higher (ie deeper), then it's not a leaf." - (cond - ((null tasks) nil) - ;; if a task has no successors it is a leaf - ((null (car (cdr tasks))) - (cons (cons (cons "leaf-node" t) (car tasks)) - (org-taskjuggler-compute-task-leafiness (cdr tasks)))) - ;; if the successor has a lower level than task it is a leaf - ((<= (cdr (assoc "level" (car (cdr tasks)))) (cdr (assoc "level" (car tasks)))) - (cons (cons (cons "leaf-node" t) (car tasks)) - (org-taskjuggler-compute-task-leafiness (cdr tasks)))) - ;; otherwise examine the rest of the tasks - (t (cons (car tasks) (org-taskjuggler-compute-task-leafiness (cdr tasks)))))) - -(defun org-taskjuggler-assign-resource-ids (resources &optional unique-ids) + (let (new-list) + (while (car tasks) + (let ((task (car tasks)) + (successor (car (cdr tasks)))) + (cond + ;; if a task has no successors it is a leaf + ((null successor) + (push (cons (cons "leaf-node" t) task) new-list)) + ;; if the successor has a lower level than task it is a leaf + ((<= (cdr (assoc "level" successor)) (cdr (assoc "level" task))) + (push (cons (cons "leaf-node" t) task) new-list)) + ;; otherwise examine the rest of the tasks + (t (push task new-list)))) + (setq tasks (cdr tasks))) + (print new-list) + (nreverse new-list))) + +(defun org-taskjuggler-assign-resource-ids (resources) "Given a list of resources return the same list, assigning a unique id to each resource." - (cond - ((null resources) nil) - (t - (let* ((resource (car resources)) - (unique-id (org-taskjuggler-get-unique-id resource unique-ids))) - (push (cons "unique-id" unique-id) resource) - (cons resource - (org-taskjuggler-assign-resource-ids (cdr resources) - (cons unique-id unique-ids))))))) + (let (unique-ids new-list) + (dolist (resource resources new-list) + (let ((unique-id (org-taskjuggler-get-unique-id resource unique-ids))) + (push (cons "unique-id" unique-id) resource) + (push unique-id unique-ids) + (push resource new-list))) + (nreverse new-list))) (defun org-taskjuggler-resolve-dependencies (tasks) (let ((previous-level 0) -- 1.7.1
* org-taskjuggler.el (org-taskjuggler-compute-task-leafiness): Remove a debug statement. --- lisp/org-taskjuggler.el | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index 5b3f16f..b39353c 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -411,7 +411,6 @@ deeper), then it's not a leaf." ;; otherwise examine the rest of the tasks (t (push task new-list)))) (setq tasks (cdr tasks))) - (print new-list) (nreverse new-list))) (defun org-taskjuggler-assign-resource-ids (resources) -- 1.7.1
* org-taskjuggler.el (org-taskjuggler-components): Escape quotes in headlines. Taskjuggler will barf if the task names (which are double quoted strings) contain double quotes. --- lisp/org-taskjuggler.el | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index b39353c..ed3af48 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -354,7 +354,9 @@ information, all the properties, etc." (let* ((props (org-entry-properties)) (components (org-heading-components)) (level (nth 1 components)) - (headline (nth 4 components)) + (headline + (replace-regexp-in-string + "\"" "\\\"" (nth 4 components) t t)) ; quote double quotes in headlines (parent-ordered (org-taskjuggler-parent-is-ordered-p))) (push (cons "level" level) props) (push (cons "headline" headline) props) -- 1.7.1
Hello Christian, Great news ! I am using your wonderful exporter with the extensions from Anthony Lander. The exporter connects two great tools: Org and taskjuggler and I like it very much. Thanx a lot for this work ! Two questions however: Does your fork incorporate Anthonys enhancements (e.g. the :TJ:-Drawer) ? Is it available at your github (https://github.com/egli/org-mode) ? with kind regards, Marc-Oliver Ihm Am 16.03.2011 12:04, schrieb Christian Egli: > Hi all > > I have some long standing improvements to Taskjuggler export which I'd > finally like to push to the repo. > > Thanks > > Christian Egli (5): > Add some minimal infrastructure to handle export to both tj2 and tj3 > Mark a task as a milestone if it is a leaf node and cannot be > scheduled > Replace recursive functions with iterative ones > Remove a spurious debug statement > Escape double quotes in headlines > > lisp/org-taskjuggler.el | 76 +++++++++++++++++++++++++++++++++++----------- > 1 files changed, 58 insertions(+), 18 deletions(-) > > >
Patch 691 (http://patchwork.newartisans.com/patch/691/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C1300273502-12977-2-git-send-email-christian.egli%40alumni.ethz.ch%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O, > 1/5] Add some minimal infrastructure to handle export to both tj2 and > tj3 > Date: Wed, 16 Mar 2011 16:04:58 -0000 > From: Christian Egli <christian.egli@alumni.ethz.ch> > X-Patchwork-Id: 691 > Message-Id: <1300273502-12977-2-git-send-email-christian.egli@alumni.ethz.ch> > To: emacs-orgmode@gnu.org > > * org-taskjuggler.el (org-export-taskjuggler-target-version): > (org-taskjuggler-targeting-tj3-p): Add some minimal infrastructure to > handle export to both tj2 and tj3. > (org-taskjuggler-open-task): Use a different way to purge allocations > for tj2 and tj3. > > --- > lisp/org-taskjuggler.el | 14 +++++++++++++- > 1 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el > index 8d6318e..ec6bb30 100644 > --- a/lisp/org-taskjuggler.el > +++ b/lisp/org-taskjuggler.el > @@ -181,6 +181,11 @@ resources for the project." > :group 'org-export-taskjuggler > :type 'string) > > +(defcustom org-export-taskjuggler-target-version 2.4 > + "Which version of TaskJuggler the exporter is targeting." > + :group 'org-export-taskjuggler > + :type 'number) > + > (defcustom org-export-taskjuggler-default-project-version "1.0" > "Default version string for the project." > :group 'org-export-taskjuggler > @@ -331,6 +336,10 @@ with the TaskJuggler GUI." > (command (concat process-name " " file-name))) > (start-process-shell-command process-name nil command))) > > +(defun org-taskjuggler-targeting-tj3-p () > + "Return true if we are targeting TaskJuggler III." > + (< org-export-taskjuggler-target-version 3.0)) > + > (defun org-taskjuggler-parent-is-ordered-p () > "Return true if the parent of the current node has a property > \"ORDERED\". Return nil otherwise." > @@ -623,7 +632,10 @@ org-mode priority string." > (if (and parent-ordered previous-sibling) > (format " depends %s\n" previous-sibling) > (and depends (format " depends %s\n" depends))) > - (and allocate (format " purge allocations\n allocate %s\n" allocate)) > + (and allocate (format " purge %s\n allocate %s\n" > + (or (and (org-taskjuggler-targeting-tj3-p) "allocations") > + "allocate") > + allocate)) > (and complete (format " complete %s\n" complete)) > (and effort (format " effort %s\n" effort)) > (and priority (format " priority %s\n" priority)) >
Patch 695 (http://patchwork.newartisans.com/patch/695/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C1300273502-12977-3-git-send-email-christian.egli%40alumni.ethz.ch%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O, 2/5] Mark a task as a milestone if it is a leaf node and cannot be > scheduled > Date: Wed, 16 Mar 2011 16:04:59 -0000 > From: Christian Egli <christian.egli@alumni.ethz.ch> > X-Patchwork-Id: 695 > Message-Id: <1300273502-12977-3-git-send-email-christian.egli@alumni.ethz.ch> > To: emacs-orgmode@gnu.org > > * org-taskjuggler.el (org-taskjuggler-compute-task-leafiness): Compute > the leafiness of a node. > (org-taskjuggler-open-task, org-export-as-taskjuggler): Mark a node as > a milestone if it is a leaf and has no effort. > > Mark a task as a milestone if it has neither an effort, a duration, an > end or a period. This is needed for tj3 export as tj3 fails to compile > the file if there is a leaf node with no computable end date. tj2 > happily ignored the situation, but TJ3 throws an error. > > --- > lisp/org-taskjuggler.el | 37 +++++++++++++++++++++++++++++++------ > 1 files changed, 31 insertions(+), 6 deletions(-) > > diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el > index ec6bb30..2d16790 100644 > --- a/lisp/org-taskjuggler.el > +++ b/lisp/org-taskjuggler.el > @@ -263,9 +263,10 @@ defined in `org-export-taskjuggler-default-reports'." > (let* ((tasks > (org-taskjuggler-resolve-dependencies > (org-taskjuggler-assign-task-ids > - (org-map-entries > - '(org-taskjuggler-components) > - org-export-taskjuggler-project-tag nil 'archive 'comment)))) > + (org-taskjuggler-compute-task-leafiness > + (org-map-entries > + '(org-taskjuggler-components) > + org-export-taskjuggler-project-tag nil 'archive 'comment))))) > (resources > (org-taskjuggler-assign-resource-ids > (org-map-entries > @@ -392,6 +393,23 @@ a path to the current task." > (setq previous-level level) > (setq resolved-tasks (append resolved-tasks (list task))))))) > > +(defun org-taskjuggler-compute-task-leafiness (tasks) > + "Figure out if each task is a leaf by looking at it's level, > +and the level of its successor. If the successor is higher (ie > +deeper), then it's not a leaf." > + (cond > + ((null tasks) nil) > + ;; if a task has no successors it is a leaf > + ((null (car (cdr tasks))) > + (cons (cons (cons "leaf-node" t) (car tasks)) > + (org-taskjuggler-compute-task-leafiness (cdr tasks)))) > + ;; if the successor has a lower level than task it is a leaf > + ((<= (cdr (assoc "level" (car (cdr tasks)))) (cdr (assoc "level" (car tasks)))) > + (cons (cons (cons "leaf-node" t) (car tasks)) > + (org-taskjuggler-compute-task-leafiness (cdr tasks)))) > + ;; otherwise examine the rest of the tasks > + (t (cons (car tasks) (org-taskjuggler-compute-task-leafiness (cdr tasks)))))) > + > (defun org-taskjuggler-assign-resource-ids (resources &optional unique-ids) > "Given a list of resources return the same list, assigning a > unique id to each resource." > @@ -621,11 +639,17 @@ org-mode priority string." > (cdr (assoc "complete" task)))) > (parent-ordered (cdr (assoc "parent-ordered" task))) > (previous-sibling (cdr (assoc "previous-sibling" task))) > + (milestone (or (cdr (assoc "milestone" task)) > + (and (assoc "leaf-node" task) > + (not (or effort > + (cdr (assoc "duration" task)) > + (cdr (assoc "end" task)) > + (cdr (assoc "period" task))))))) > (attributes > '(account start note duration endbuffer endcredit end > - flags journalentry length maxend maxstart milestone > - minend minstart period reference responsible > - scheduling startbuffer startcredit statusnote))) > + flags journalentry length maxend maxstart minend > + minstart period reference responsible scheduling > + startbuffer startcredit statusnote))) > (insert > (concat > "task " unique-id " \"" headline "\" {\n" > @@ -639,6 +663,7 @@ org-mode priority string." > (and complete (format " complete %s\n" complete)) > (and effort (format " effort %s\n" effort)) > (and priority (format " priority %s\n" priority)) > + (and milestone (format " milestone\n")) > > (org-taskjuggler-get-attributes task attributes) > "\n")))) >
Patch 692 (http://patchwork.newartisans.com/patch/692/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C1300273502-12977-6-git-send-email-christian.egli%40alumni.ethz.ch%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O,5/5] Escape double quotes in headlines > Date: Wed, 16 Mar 2011 16:05:02 -0000 > From: Christian Egli <christian.egli@alumni.ethz.ch> > X-Patchwork-Id: 692 > Message-Id: <1300273502-12977-6-git-send-email-christian.egli@alumni.ethz.ch> > To: emacs-orgmode@gnu.org > > * org-taskjuggler.el (org-taskjuggler-components): Escape quotes in > headlines. > > Taskjuggler will barf if the task names (which are double quoted > strings) contain double quotes. > > --- > lisp/org-taskjuggler.el | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el > index b39353c..ed3af48 100644 > --- a/lisp/org-taskjuggler.el > +++ b/lisp/org-taskjuggler.el > @@ -354,7 +354,9 @@ information, all the properties, etc." > (let* ((props (org-entry-properties)) > (components (org-heading-components)) > (level (nth 1 components)) > - (headline (nth 4 components)) > + (headline > + (replace-regexp-in-string > + "\"" "\\\"" (nth 4 components) t t)) ; quote double quotes in headlines > (parent-ordered (org-taskjuggler-parent-is-ordered-p))) > (push (cons "level" level) props) > (push (cons "headline" headline) props) >
Hi Christian,
Christian Egli <christian.egli@alumni.ethz.ch> writes:
> I have some long standing improvements to Taskjuggler export which I'd
> finally like to push to the repo.
this is great -- thanks a lot for the patches.
I'm myself using TJ for some reports and I've had to hack things
around when we had this compatibility problem.
Ps: I had trouble applying your patches: they came in one order on the
list, and on a different one on patchwork. Applying them from patchwork
didn't always work, so I had to do a few things manually. Not a problem.
--
Bastien
Hi Marc-Oliver,
Marc-Oliver Ihm <marc-oliver.ihm@online.de> writes:
> Does your fork incorporate Anthonys enhancements (e.g. the
> :TJ:-Drawer) ?
Did Anthony advertized his enhancements on this list? That's the
place where to announce them, so that people won't miss them...
Best,
--
Bastien
Christian Egli <christian.egli@alumni.ethz.ch> writes:
> +(defun org-taskjuggler-targeting-tj3-p ()
> + "Return true if we are targeting TaskJuggler III."
> + (< org-export-taskjuggler-target-version 3.0))
I'm dubious on this one.
Shouldn't it be
#+begin_src emacs-lisp
(defun org-taskjuggler-targeting-tj3-p ()
"Return true if we are targeting TaskJuggler III."
(> org-export-taskjuggler-target-version 3.0))
#+end
?
--
Bastien
Bastien <bzg@altern.org> writes:
> Christian Egli <christian.egli@alumni.ethz.ch> writes:
>
>> +(defun org-taskjuggler-targeting-tj3-p ()
>> + "Return true if we are targeting TaskJuggler III."
>> + (< org-export-taskjuggler-target-version 3.0))
>
> I'm dubious on this one.
>
> Shouldn't it be
>
> #+begin_src emacs-lisp
> (defun org-taskjuggler-targeting-tj3-p ()
> "Return true if we are targeting TaskJuggler III."
> (> org-export-taskjuggler-target-version 3.0))
> #+end
>
> ?
Basically org-export-taskjuggler-target-version can be 2.4 or 3.0. So
org-taskjuggler-targeting-tj3-p should return true if
org-export-taskjuggler-target-version is 3.0 or higher and false
otherwise.
So, let's see what the *scratch* buffer has to say about this
#+begin_src emacs-lisp
(setq org-export-taskjuggler-target-version 2.4)
2.4
(defun org-taskjuggler-targeting-tj3-p ()
"Return true if we are targeting TaskJuggler III."
(> org-export-taskjuggler-target-version 3.0))
org-taskjuggler-targeting-tj3-p
(org-taskjuggler-targeting-tj3-p)
nil
(setq org-export-taskjuggler-target-version 3.0)
3.0
(org-taskjuggler-targeting-tj3-p)
nil
(setq org-export-taskjuggler-target-version 3.1)
3.1
(org-taskjuggler-targeting-tj3-p)
t
#+end
Ah, you're right. There is a problem :-\.
The correct version should be
#+begin_src emacs-lisp
(defun org-taskjuggler-targeting-tj3-p ()
"Return true if we are targeting TaskJuggler III."
(>= org-export-taskjuggler-target-version 3.0))
#+end
Let's test this in *scratch*
#+begin_src emacs-lisp
(setq org-export-taskjuggler-target-version 2.4)
2.4
(defun org-taskjuggler-targeting-tj3-p ()
"Return true if we are targeting TaskJuggler III."
(>= org-export-taskjuggler-target-version 3.0))
org-taskjuggler-targeting-tj3-p
(org-taskjuggler-targeting-tj3-p)
nil
(setq org-export-taskjuggler-target-version 3.0)
3.0
(org-taskjuggler-targeting-tj3-p)
t
(setq org-export-taskjuggler-target-version 3.1)
3.1
(org-taskjuggler-targeting-tj3-p)
t
#+end
How do we proceed? Do I resubmit the patch?
Thanks
Christian
--
Christian Egli
Swiss Library for the Blind, Visually Impaired and Print Disabled
Grubenstrasse 12, CH-8045 Zürich, Switzerland
Hi Bastien
Bastien <bzg@altern.org> writes:
> Ps: I had trouble applying your patches: they came in one order on the
> list, and on a different one on patchwork. Applying them from patchwork
> didn't always work, so I had to do a few things manually. Not a problem.
Is there anything I can do about this? I just commited the changes
locally and used git format-patch and git send-email.
Thanks
Christian
--
Christian Egli
Swiss Library for the Blind, Visually Impaired and Print Disabled
Grubenstrasse 12, CH-8045 Zürich, Switzerland
Hi Christian,
Christian Egli <christian.egli@sbs.ch> writes:
> How do we proceed? Do I resubmit the patch?
No need, I just applied the fix you suggest. Thanks for it!
--
Bastien
Hi Christian,
Christian Egli <christian.egli@sbs.ch> writes:
> Bastien <bzg@altern.org> writes:
>
>> Ps: I had trouble applying your patches: they came in one order on the
>> list, and on a different one on patchwork. Applying them from patchwork
>> didn't always work, so I had to do a few things manually. Not a problem.
>
> Is there anything I can do about this?
I don't think so. I'll investigate deeper if I see this problem again.
Thanks,
--
Bastien
Hi Marc Marc-Oliver Ihm <marc-oliver.ihm@online.de> writes: > Does your fork incorporate Anthonys enhancements (e.g. the > :TJ:-Drawer) ? It contains some of his enhancements but not all. He has two versions of the code. One for tj2 and one for tj3. I would like to have one version for both. The code as it stands right now can export a project for both tj2 and tj3. However the way the defaults are set for the reports now (in defcustom variables) it will not work for tj3. You'll have to redefine the variables via M-x customize. If you look at his code you'll see that he has some other enhancements. There is support for project specific definitions, for global definitions (such as shifts, etc) and for flags. One really nice idea is that he added support for Drawers that can contain taskjuggler specific code that is tied to a specific node. However I would like to implement this as a src block, which would probably also cover global definitions and file specific reports. My initial idea was to use something like #+BEGIN_TASKJUGGLER and #+END_TASKJUGGLER. But nowadays it seems more kosher to use something along the line of #+BEGIN_SRC taskjuggler. I don't know what that would entail though. I might have to write a Babel backend for Taskjuggler. I basically just want to use these code blocks in my exporter. > Is it available at your github (https://github.com/egli/org-mode) ? No, this is stale (I should probably remove it). My most up to date code should be in the orgmode repo. Thanks Christian -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland
Bastien <bzg@altern.org> writes:
> Did Anthony advertized his enhancements on this list?
AFAIK he did announce them here, but that was a long time ago, probably
more than six months.
Thanks
--
Christian Egli
Swiss Library for the Blind, Visually Impaired and Print Disabled
Grubenstrasse 12, CH-8045 Zürich, Switzerland
Bastien <bzg@altern.org> writes:
> I'm myself using TJ for some reports and I've had to hack things
> around when we had this compatibility problem.
I almost forgot to ask: What where the problems you had to hack around?
Thanks
Christian
--
Christian Egli
Swiss Library for the Blind, Visually Impaired and Print Disabled
Grubenstrasse 12, CH-8045 Zürich, Switzerland