aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/emacs-lisp/timer.el
diff options
context:
space:
mode:
authorGlenn Morris <[email protected]>2010-10-21 21:03:55 -0700
committerGlenn Morris <[email protected]>2010-10-21 21:03:55 -0700
commit9a0dd02d20468a86f29fc3467a8c14d1ba0c6c84 (patch)
tree75c6939f5431f5838b419f581a898fdb463144b4 /lisp/emacs-lisp/timer.el
parent2f42e9a28671c675d74d70928525649953bb2144 (diff)
Support for systems without floats was removed a decade ago.
* lisp/loadup.el: Unconditionally load float-sup. * lisp/paren.el (show-paren-delay): * lisp/emacs-lisp/float-sup.el: * lisp/emulation/cua-base.el (cua-prefix-override-inhibit-delay): * lisp/obsolete/lazy-lock.el (lazy-lock-defer-time, lazy-lock-stealth-nice) (lazy-lock-stealth-verbose): Assume float support. * lisp/ps-print.el: Assume float support on Emacs. * lisp/emacs-lisp/timer.el (timer-next-integral-multiple-of-time): Remove non-float branch. * lisp/obsolete/lazy-lock.el: Remove leading `*' from defcustom docs.
Diffstat (limited to 'lisp/emacs-lisp/timer.el')
-rw-r--r--lisp/emacs-lisp/timer.el40
1 files changed, 14 insertions, 26 deletions
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 6ae6a86857..b12d906867 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -93,31 +93,20 @@ fire each time Emacs is idle for that many seconds."
More precisely, the next value, after TIME, that is an integral multiple
of SECS seconds since the epoch. SECS may be a fraction."
(let ((time-base (ash 1 16)))
- (if (fboundp 'atan)
- ;; Use floating point, taking care to not lose precision.
- (let* ((float-time-base (float time-base))
- (million 1000000.0)
- (time-usec (+ (* million
- (+ (* float-time-base (nth 0 time))
- (nth 1 time)))
- (nth 2 time)))
- (secs-usec (* million secs))
- (mod-usec (mod time-usec secs-usec))
- (next-usec (+ (- time-usec mod-usec) secs-usec))
- (time-base-million (* float-time-base million)))
- (list (floor next-usec time-base-million)
- (floor (mod next-usec time-base-million) million)
- (floor (mod next-usec million))))
- ;; Floating point is not supported.
- ;; Use integer arithmetic, avoiding overflow if possible.
- (let* ((mod-sec (mod (+ (* (mod time-base secs)
- (mod (nth 0 time) secs))
- (nth 1 time))
- secs))
- (next-1-sec (+ (- (nth 1 time) mod-sec) secs)))
- (list (+ (nth 0 time) (floor next-1-sec time-base))
- (mod next-1-sec time-base)
- 0)))))
+ ;; Use floating point, taking care to not lose precision.
+ (let* ((float-time-base (float time-base))
+ (million 1000000.0)
+ (time-usec (+ (* million
+ (+ (* float-time-base (nth 0 time))
+ (nth 1 time)))
+ (nth 2 time)))
+ (secs-usec (* million secs))
+ (mod-usec (mod time-usec secs-usec))
+ (next-usec (+ (- time-usec mod-usec) secs-usec))
+ (time-base-million (* float-time-base million)))
+ (list (floor next-usec time-base-million)
+ (floor (mod next-usec time-base-million) million)
+ (floor (mod next-usec million))))))
(defun timer-relative-time (time secs &optional usecs)
"Advance TIME by SECS seconds and optionally USECS microseconds.
@@ -543,5 +532,4 @@ If the user does not answer after SECONDS seconds, return DEFAULT-VALUE."
(provide 'timer)
-;; arch-tag: b1a9237b-7787-4382-9e46-8f2c3b3273e0
;;; timer.el ends here