From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 8CAuNrghMmHSAQEAgWs5BA (envelope-from ) for ; Fri, 03 Sep 2021 15:23:04 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id KKtkMbghMmF1RgAA1q6Kng (envelope-from ) for ; Fri, 03 Sep 2021 13:23:04 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 06D90E07 for ; Fri, 3 Sep 2021 15:23:04 +0200 (CEST) Received: from localhost ([::1]:34386 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mM99p-0007Ot-Us for larch@yhetil.org; Fri, 03 Sep 2021 09:23:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42008) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mM8b5-0000Wm-Q8 for emacs-orgmode@gnu.org; Fri, 03 Sep 2021 08:47:07 -0400 Received: from [89.44.42.106] (port=54762 helo=littlemy.pompo.co) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mM8b3-00010E-Vf for emacs-orgmode@gnu.org; Fri, 03 Sep 2021 08:47:07 -0400 Received: from littlemy.pompo.co (littlemy.pompo.co [127.0.0.1]) by littlemy.pompo.co (Postfix) with ESMTP id 4H1HQL5bVJz2mB2 for ; Fri, 3 Sep 2021 13:38:18 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=pompo.co; h= content-type:content-type:mime-version:message-id:date:date :subject:subject:to:from:from:user-agent; s=dkim; t=1630672698; x=1631536699; bh=N+8KnBaJdIKXZUcG71pv5eRkgspELhDhAlQaXVe6oAo=; b= F+T8uhUw5Un32h0BcgWfG9RgbQf75SHWwowjEN8j7yKFhslkKXxs4ZcGBtHT0ZrU UHvITjoavUsLTtWRsHPqeQd310T7LWMtPnKbi6rAXFsctwQglNlgLCSWplpN9ta2 /yU8ivsss/CaR2DhAPRGmtOEkvuxI7AplVRpUoCHHJ4V9z335rUtKG2afGJlXWDI pvoN9VeioM28ZRdb9QTKzgvYW2jntxb75nqtA1xNTIJa26kXFRFIvirLFsmbUPJo wR8Yf0KHcdpFUaa9ogDFdcOQhGuYMQlpFdkeh0wT8LInC7wOzufzWVqQ3EGono3a WQuI2o/ZQdZDjRLI62e68g== X-Virus-Scanned: Debian amavisd-new at pompo.co Received: from littlemy.pompo.co ([127.0.0.1]) by littlemy.pompo.co (littlemy.pompo.co [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Ak2lwKkIqfIS for ; Fri, 3 Sep 2021 13:38:18 +0100 (BST) Received: from rugelakh (unknown [192.168.1.1]) by littlemy.pompo.co (Postfix) with ESMTPSA id 4H1HQK5rwYz2m8f for ; Fri, 3 Sep 2021 13:38:17 +0100 (BST) User-agent: mu4e 1.6.3; emacs 27.2 From: Daniel Nemenyi To: emacs-orgmode@gnu.org Subject: [FR] Remove blank :effort:s from taskjuggler export Date: Fri, 03 Sep 2021 13:07:42 +0100 Message-ID: <87o899n8av.fsf@pompo.co> MIME-Version: 1.0 Content-Type: text/plain X-Host-Lookup-Failed: Reverse DNS lookup failed for 89.44.42.106 (failed) Received-SPF: pass client-ip=89.44.42.106; envelope-from=daniel@pompo.co; helo=littlemy.pompo.co X-Spam_score_int: 6 X-Spam_score: 0.6 X-Spam_bar: / X-Spam_report: (0.6 / 5.0 requ) BAYES_40=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 03 Sep 2021 09:19:18 -0400 X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1630675384; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=NA3BaBxqFTKyZaNvY/rTkQQmFfRn1q91BPPdBh+y6XI=; b=rBU/XVosHkq7yPAiBQwP5LUIiordYvHlHUbeJrBQpwmpt5h4zijpC+EmiF+t110Dr7ReqZ LONs94SJXQu5+psCdeZ4f/VRaBWlXPGKd1zPhwF3GPtgK6lZYMOwAlkLbixB9RzVKzOo48 N9I+WHEnxWQC1PHrPvP0mOLsk8OnBk2CYoGU2uuQCSDjel4EMRk+LXNcBIj2xMN7O4kjVU X7gku/vhChaNGCoBnphEDxTmpJY1NwXljiPVkbR2zhi5s9NG4D2tUYGLPYfCCXI8BuM9nm t8EtrrFQCcSOGyuhDsjRs8u0dI4g8O7gIRmk8yFyRm5sQgOOY87rRLe6HCD4Iw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1630675384; a=rsa-sha256; cv=none; b=Deo2DW7o1YkhJuVHeZLfqQZx7NoL1tJ4WLysecISgO64iKGq/40cZxSD53NktE5xDppK+o LAKcQzmhVpfq+gjqKLgRLs6gSpwY4j/smoUhY0eO8XBLO5kDNcpCB0875xacDUWkWlebv+ Wl4bD/wrvJP67IHrAbHopQDYwHhJBqcbpsOfy1HaE9Ow96/Truww5tqmXY3UplBsyxqet5 R6NSMv/PeAPPKEjQcihYDsX1xg7uwMf7xWr9yfqdeVZwT2uJlvH1p7INDSyVMKvxj78ATN oYJGD6FL4ga+Nb8DccWhmtKkZyRvmj1sEz6HgR5oeOrebXUOU4tewWE34N2dfg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=pompo.co header.s=dkim header.b=F+T8uhUw; dmarc=pass (policy=reject) header.from=pompo.co; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: -3.12 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=pompo.co header.s=dkim header.b=F+T8uhUw; dmarc=pass (policy=reject) header.from=pompo.co; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: 06D90E07 X-Spam-Score: -3.12 X-Migadu-Scanner: scn1.migadu.com X-TUID: SJTbFfGy02Wy Dear wonderful Orgers, Something I think would make the taskjuggler export even smoother would be if empty :effort:'s were simply skipped over, rather than exported to the tjp without a value and triggering a tj3 error. Let me explain. Say we had the following org file, with one big feature: --- #+COLUMNS: %70ITEM(Task) %Effort %allocate * Big feature :taskjuggler_project: :PROPERTIES: :EFFORT: 4d :ALLOCATE: alice, john :END: * Resources :taskjuggler_resource: ** Alice P Hacker ** John McCarthy --- I decide that I want to break up that big task into subtasks, so I add them and switch into column view to add the efforts and allocations. Crucially, also in column view, I delete the effort estimate (using e) from the Big Feature, as otherwise taskjuggler would error that Big feature (a parent node) should not have an effort estimate when it has children. This typical behaviour (for me) leaves me with the following. --- #+COLUMNS: %70ITEM(Task) %Effort %allocate * Big feature :taskjuggler_project: :PROPERTIES: :EFFORT: # Note empty :effort: :END: ** Design feature :PROPERTIES: :EFFORT: 1d :ALLOCATE: alice :END: ** Code feature :PROPERTIES: :EFFORT: 2d :ALLOCATE: john :END: ** Test feature :PROPERTIES: :EFFORT: 1d :ALLOCATE: alice :END: * Resources :taskjuggler_resource: ** Alice P Hacker ** John McCarthy --- Alas the empty :effort: node causes tj3 to fail with a cryptic 'Error: Unexpected token 'task' found. Expecting one of :INTEGER, :FLOAT', as the effort key is exported to the tjp file without a value: --- task big "Big feature" { effort task design "Design feature" { ... --- My solution would be for org-taskjuggler-export to simply skip over empty effort symbols. Another solution might be for column view to remove symbols that have been deleted - however this might have unintended consequences? Thanks for taking this into account, and for the amazing tool that is org mode! Daniel