From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hendy Subject: Setting taskjuggler project start date (ox-taskjuggler) Date: Mon, 25 Mar 2013 01:27:58 -0500 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:34800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UK0sz-0003w2-9P for emacs-orgmode@gnu.org; Mon, 25 Mar 2013 02:28:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UK0sy-0006Vp-95 for emacs-orgmode@gnu.org; Mon, 25 Mar 2013 02:28:01 -0400 Received: from mail-la0-x22a.google.com ([2a00:1450:4010:c03::22a]:43730) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UK0sy-0006Vk-0w for emacs-orgmode@gnu.org; Mon, 25 Mar 2013 02:28:00 -0400 Received: by mail-la0-f42.google.com with SMTP id fe20so10709620lab.15 for ; Sun, 24 Mar 2013 23:27:59 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode Having trouble setting the project start date, which results in a build error since my project started before today, and the default project start appears to be today's date. This was with no customization to the top level headline. Intuitively, I added a :start: property like so: #+begin_src org * Project :taskjuggler_project: :PROPERTIES: :start: 2013-03-01 :END: #+end_src This results in (no change from exporting with no :start: property: #+begin_src TJ project nil "Project" "1.0" 2013-03-25 +280d { } #+end_src >From digging around in ox-taskjuggler.el, it looks like the project gets defined here: #+begin_src ox-taskjuggler.el (line 607) (defun org-taskjuggler--build-project (project info) "Return a project declaration. PROJECT is a headline. INFO is a plist used as a communication channel. If no start date is specified, start today. If no end date is specified, end `org-taskjuggler-default-project-duration' days from now." (format "project %s \"%s\" \"%s\" %s %s {\n}\n" (org-taskjuggler-get-id project info) (org-taskjuggler-get-name project) ;; Version is obtained through :TASKJUGGLER_VERSION: ;; property or `org-taskjuggler-default-project-version'. (or (org-element-property :VERSION project) org-taskjuggler-default-project-version) (or (org-taskjuggler-get-start project) (format-time-string "%Y-%m-%d")) (let ((end (org-taskjuggler-get-end project))) (or (and end (format "- %s" end)) (format "+%sd" org-taskjuggler-default-project-duration)))))] #+end_src I'm no esliper, but I think I can track that the consecutive =%s= arguments are replaced by the successive function calls. That, and =org-taskjuggler-get-start project= looks like the ticket. That function is here: #+begin_src ox-taskjuggler.el (line 372) (defun org-taskjuggler-get-start (item) "Return start date for task or resource ITEM. ITEM is a headline. Return value is a string or nil if ITEM doesn't have any start date defined.." (let ((scheduled (org-element-property :scheduled item))) (and scheduled (org-timestamp-format scheduled "%Y-%02m-%02d")))) #+end_src So, that suggested that perhaps I needed to use :scheduled: instead of :start:. I tried that with the same results. It appears that this property /is/ applied at the task level for the top headline, however: #+begin_src TJ task project "Project" { purge allocate allocate jwhendy start 2013-03-01 ... } #+end_src So, it applies :start: to the top level project in the /task/ definition area, but doesn't apply it to the very top level project definition. Any suggestions? John