From 7b9430b4506b59298120a08737be9f4ad5b9cd49 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 3 Jul 2011 16:51:42 -0700 Subject: [PATCH] * type-break.el: Accept time formats that the builtins accept. (timep, type-break-time-difference): Accept any format that float-time accepts, rather than insisting on (HIGH LOW USECS) format. This is simpler and helps future-proof the code. (type-break-time-difference): Round rather than ignoring subseconds components. --- lisp/ChangeLog | 9 +++++++++ lisp/type-break.el | 17 +++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5f1f09afb07..0dc4ca5e4ec 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2011-07-03 Paul Eggert + + * type-break.el: Accept time formats that the builtins accept. + (timep, type-break-time-difference): Accept any format that + float-time accepts, rather than insisting on (HIGH LOW USECS) format. + This is simpler and helps future-proof the code. + (type-break-time-difference): Round rather than ignoring + subseconds components. + 2011-07-03 Lars Magne Ingebrigtsen * info.el (Info-apropos-matches): Make non-interactive, since it diff --git a/lisp/type-break.el b/lisp/type-break.el index 2d6960c77bc..612c8cf4617 100644 --- a/lisp/type-break.el +++ b/lisp/type-break.el @@ -47,7 +47,7 @@ ;; or set the variable of the same name to `t'. ;; This program can truly cons up a storm because of all the calls to -;; `current-time' (which always returns 3 fresh conses). I'm dismayed by +;; `current-time' (which always returns fresh conses). I'm dismayed by ;; this, but I think the health of my hands is far more important than a ;; few pages of virtual memory. @@ -501,12 +501,9 @@ variable of the same name." (defun timep (time) "If TIME is in the format returned by `current-time' then return TIME, else return nil." - (and (listp time) - (eq (length time) 3) - (integerp (car time)) - (integerp (nth 1 time)) - (integerp (nth 2 time)) - time)) + (condition-case nil + (progn (float-time time) time) + (error nil))) (defun type-break-choose-file () "Return file to read from." @@ -993,12 +990,8 @@ FRAC should be the inverse of the fractional value; for example, a value of ;; Compute the difference, in seconds, between a and b, two structures ;; similar to those returned by `current-time'. -;; Use addition rather than logand since that is more robust; the low 16 -;; bits of the seconds might have been incremented, making it more than 16 -;; bits wide. (defun type-break-time-difference (a b) - (+ (lsh (- (car b) (car a)) 16) - (- (car (cdr b)) (car (cdr a))))) + (round (float-time (time-subtract b a)))) ;; Return (in a new list the same in structure to that returned by ;; `current-time') the sum of the arguments. Each argument may be a time