On Tue, Nov 20, 2012 at 11:12:10AM -0500, Mike McLean wrote:
> On Sat, Nov 17, 2012 at 11:02 AM, Toby Cubitt <ts...@cantab.net> wrote:
> 
> > On Sat, Nov 17, 2012 at 03:42:24PM +0100, Nicolas Goaziou wrote:
> > > Toby Cubitt <ts...@cantab.net> writes:
> > >
> > > > I've replaced the cons cells with additional plist properties, as you
> > > > suggested. The resulting customization ui still isn't wonderful in my
> > > > opinion. But it does the job, and I'm not sure how much scope there is
> > > > for improving it further. If you see a way, by all means feel free to
> > > > make the changes yourself. I really don't mind what format you go with
> > > > for org-time-clocksum-format, as long as it supports the new formatting
> > > > features implemented in the patch.
> > >
> > > Considering I'm not an expert in customize ui, it's good enough as it
> > > is.
> >
> > OK. If someone thinks of a way to improve the customization ui (keeping
> > the same data type), it's easy to change it later without breaking
> > anything.
> >
> > > I've applied your patch (with some small changes in a docstring). Thank
> > > you again for all that work.
> >
> > Glad we finally found a good implementation. Thanks to you for all your
> > helpful feedback.
> >
> >
> I like the new implementation and customization options, but now when I do
> ~C-c C-x C-c~ to get a sub-tree time, I get nothing but zeros (~0d 0:00~)
> for every subtree.

Argh. This is a bug in org-hours-to-clocksum-string, which doesn't
truncate the computed number of minutes to an integer.

Instead of changing org-hours-to-clocksum-string, it's probably
preferable to make org-minutes-to-clocksum-string more robust, so it
copes correctly with floating point arguments.

The attached patch does this. Sorry for letting this slip through.

Toby
-- 
Dr T. S. Cubitt
Mathematics and Quantum Information group
Department of Mathematics
Complutense University
Madrid, Spain

email: ts...@cantab.net
web:   www.dr-qubit.org
>From 24c646916a1195b3291067ef6e54d9e99a1201da Mon Sep 17 00:00:00 2001
From: "Toby S. Cubitt" <ts...@cantab.net>
Date: Tue, 20 Nov 2012 18:15:21 +0100
Subject: [PATCH] Fix org-minutes-to-clocksum-string to cope with floating
 point arguments.

---
 lisp/org.el |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index dc411b8..e3354c6 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16773,19 +16773,19 @@ The format is determined by `org-time-clocksum-format',
 	  (format org-time-clocksum-fractional-format (/ m 60.0)))
 	 ;; choice of fractional formats for different time units
 	 ((and (setq fmt (plist-get org-time-clocksum-fractional-format :years))
-	       (> (/ m (* 365 24 60)) 0))
+	       (> (/ (truncate m) (* 365 24 60)) 0))
 	  (format fmt (/ m (* 365 24 60.0))))
 	 ((and (setq fmt (plist-get org-time-clocksum-fractional-format :months))
-	       (> (/ m (* 30 24 60)) 0))
+	       (> (/ (truncate m) (* 30 24 60)) 0))
 	  (format fmt (/ m (* 30 24 60.0))))
 	 ((and (setq fmt (plist-get org-time-clocksum-fractional-format :weeks))
-	       (> (/ m (* 7 24 60)) 0))
+	       (> (/ (truncate m) (* 7 24 60)) 0))
 	  (format fmt (/ m (* 7 24 60.0))))
 	 ((and (setq fmt (plist-get org-time-clocksum-fractional-format :days))
-	       (> (/ m (* 24 60)) 0))
+	       (> (/ (truncate m) (* 24 60)) 0))
 	  (format fmt (/ m (* 24 60.0))))
 	 ((and (setq fmt (plist-get org-time-clocksum-fractional-format :hours))
-	       (> (/ m 60) 0))
+	       (> (/ (truncate m) 60) 0))
 	  (format fmt (/ m 60.0)))
 	 ((setq fmt (plist-get org-time-clocksum-fractional-format :minutes))
 	  (format fmt m))
@@ -16805,27 +16805,27 @@ The format is determined by `org-time-clocksum-format',
 	  (format org-time-clocksum-format (setq n (/ m 60)) (- m (* 60 n)))
 	;; separate formats components
 	(and (setq fmt (plist-get org-time-clocksum-format :years))
-	     (or (> (setq n (/ m (* 365 24 60))) 0)
+	     (or (> (setq n (/ (truncate m) (* 365 24 60))) 0)
 		 (plist-get org-time-clocksum-format :require-years))
 	     (setq clocksum (concat clocksum (format fmt n))
 		   m (- m (* n 365 24 60))))
 	(and (setq fmt (plist-get org-time-clocksum-format :months))
-	     (or (> (setq n (/ m (* 30 24 60))) 0)
+	     (or (> (setq n (/ (truncate m) (* 30 24 60))) 0)
 		 (plist-get org-time-clocksum-format :require-months))
 	     (setq clocksum (concat clocksum (format fmt n))
 		   m (- m (* n 30 24 60))))
 	(and (setq fmt (plist-get org-time-clocksum-format :weeks))
-	     (or (> (setq n (/ m (* 7 24 60))) 0)
+	     (or (> (setq n (/ (truncate m) (* 7 24 60))) 0)
 		 (plist-get org-time-clocksum-format :require-weeks))
 	     (setq clocksum (concat clocksum (format fmt n))
 		   m (- m (* n 7 24 60))))
 	(and (setq fmt (plist-get org-time-clocksum-format :days))
-	     (or (> (setq n (/ m (* 24 60))) 0)
+	     (or (> (setq n (/ (truncate m) (* 24 60))) 0)
 		 (plist-get org-time-clocksum-format :require-days))
 	     (setq clocksum (concat clocksum (format fmt n))
 		   m (- m (* n 24 60))))
 	(and (setq fmt (plist-get org-time-clocksum-format :hours))
-	     (or (> (setq n (/ m 60)) 0)
+	     (or (> (setq n (/ (truncate m) 60)) 0)
 		 (plist-get org-time-clocksum-format :require-hours))
 	     (setq clocksum (concat clocksum (format fmt n))
 		   m (- m (* n 60))))
-- 
1.7.8.6

Reply via email to