From 772ca4c915a629a62be0b5ee64005a929bf1bf04 Mon Sep 17 00:00:00 2001 From: "Guido A.J. Stevens" Date: Wed, 11 Sep 2024 13:24:58 +0200 Subject: [PATCH] lisp/org-duration.el: support range durations * lisp/org-duration.el (org-duration-to-minutes): Do not choke on low-high range durations (e.g. "2d-5d") when rendering an agenda. Calculate the average of the range instead. Range durations are valid when estimating effort, and supported elsewhere via the {est+} summarizer. TINYCHANGE --- lisp/org-duration.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/org-duration.el b/lisp/org-duration.el index 662a94bd5..46771a355 100644 --- a/lisp/org-duration.el +++ b/lisp/org-duration.el @@ -283,7 +283,7 @@ When optional argument CANONICAL is non-nil, ignore `org-duration-units' and use standard time units value. A bare number is translated into minutes. The empty string is -translated into 0.0. +translated into 0.0. A low - high range duration is averaged. Return value as a float. Raise an error if duration format is not recognized." @@ -311,6 +311,8 @@ not recognized." (org-duration-to-minutes hms-part)))) ((string-match-p "\\`[0-9]+\\(\\.[0-9]*\\)?\\'" duration) (float (string-to-number duration))) + ((string-match-p "-" duration) + (pcase-let ((`(,low ,high) (mapcar #'org-duration-to-minutes (split-string duration "-")))) (/ (+ low high) 2))) (t (error "Invalid duration format: %S" duration))))) ;;;###autoload -- 2.43.0