[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d6c054a007 09/16: Fix "cons up a storm" issue in type-break
From: |
Paul Eggert |
Subject: |
master d6c054a007 09/16: Fix "cons up a storm" issue in type-break |
Date: |
Mon, 1 Aug 2022 04:17:28 -0400 (EDT) |
branch: master
commit d6c054a00776d8d04f14a24102043bfd409f948a
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>
Fix "cons up a storm" issue in type-break
* lisp/type-break.el (type-break-time-last-command)
(type-break-mode, type-break, type-break-check)
(type-break-time-sum, type-break-keystroke-reset):
Use integer timestamps; that’s good enough for this module.
---
lisp/type-break.el | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/lisp/type-break.el b/lisp/type-break.el
index dca5a43b89..320ccaf94a 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -46,11 +46,6 @@
;; in the mode line instead, do M-x type-break-mode-line-message-mode
;; 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 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.
-
;; This package was inspired by Roland McGrath's hanoi-break.el.
;; Several people contributed feedback and ideas, including
;; Roland McGrath <roland@gnu.org>
@@ -263,7 +258,7 @@ It will be either \"seconds\" or \"keystrokes\".")
(defvar type-break-keystroke-count 0)
(defvar type-break-time-last-break nil)
(defvar type-break-time-next-break nil)
-(defvar type-break-time-last-command (current-time))
+(defvar type-break-time-last-command (time-convert nil 'integer))
(defvar type-break-current-time-warning-interval nil)
(defvar type-break-current-keystroke-warning-interval nil)
(defvar type-break-time-warning-count 0)
@@ -362,7 +357,7 @@ problems."
(setq type-break-time-last-break
(or (type-break-get-previous-time)
- (current-time)))
+ (time-convert nil 'integer)))
;; Schedule according to break time from session file.
(type-break-schedule
@@ -381,7 +376,7 @@ problems."
(setq type-break-interval-start type-break-time-last-break)
(- type-break-interval diff))
;; Schedule from now.
- (setq type-break-interval-start (current-time))
+ (setq type-break-interval-start (time-convert nil 'integer))
(type-break-file-time type-break-interval-start)
type-break-interval))
type-break-interval-start
@@ -525,7 +520,7 @@ as per the function `type-break-schedule'."
;; remove any query scheduled during interactive invocation
(remove-hook 'type-break-post-command-hook 'type-break-do-query)
(let ((continue t)
- (start-time (current-time)))
+ (start-time (time-convert nil 'integer)))
(setq type-break-time-last-break start-time)
(while continue
(save-window-excursion
@@ -676,9 +671,9 @@ keystroke threshold has been exceeded."
(progn
(type-break-keystroke-reset)
(type-break-mode-line-countdown-or-break nil)
- (setq type-break-time-last-break (current-time))
+ (setq type-break-time-last-break (time-convert nil 'integer))
(type-break-schedule)))
- (setq type-break-time-last-command (current-time))))
+ (setq type-break-time-last-command (time-convert nil 'integer))))
(and type-break-keystroke-threshold
(let ((keys (this-command-keys)))
@@ -943,14 +938,13 @@ FRAC should be the inverse of the fractional value; for
example, a value of
;;; misc functions
-;; Compute the difference, in seconds, between a and b, two structures
-;; similar to those returned by `current-time'.
+;; Compute the difference, in seconds, between a and b, two time values.
(defun type-break-time-difference (a b)
(round (float-time (time-subtract b a))))
;; Return a time value that is the sum of the time-value arguments.
(defun type-break-time-sum (&rest tmlist)
- (let ((sum '(0 0)))
+ (let ((sum 0))
(dolist (tem tmlist)
(setq sum (time-add sum tem)))
sum))
@@ -967,7 +961,7 @@ FRAC should be the inverse of the fractional value; for
example, a value of
(t (format "%d seconds" secs)))))
(defun type-break-keystroke-reset ()
- (setq type-break-interval-start (current-time)) ; not a keystroke
+ (setq type-break-interval-start (time-convert nil 'integer))
(setq type-break-keystroke-count 0)
(setq type-break-keystroke-warning-count 0)
(setq type-break-current-keystroke-warning-interval
- master updated (ee0ce18662 -> bec8474a45), Paul Eggert, 2022/08/01
- master 24e1123241 06/16: Improve time-equal-p etc. performance, Paul Eggert, 2022/08/01
- master 914cf4b91b 04/16: Make time arithmetic more like comparison, Paul Eggert, 2022/08/01
- master afa67ed6f2 08/16: Fix year-285428751 bug in hanoi-unix-64, Paul Eggert, 2022/08/01
- master 353413a76b 10/16: * lisp/vc/vc.el: Remove stray comment hyphen., Paul Eggert, 2022/08/01
- master 932c0bc1fc 01/16: Tune blv_found, Paul Eggert, 2022/08/01
- master d6c054a007 09/16: Fix "cons up a storm" issue in type-break,
Paul Eggert <=
- master a51863f73d 12/16: Simplify a few timestamps, Paul Eggert, 2022/08/01
- master d634cb0954 11/16: Omit some (current-time) calls, Paul Eggert, 2022/08/01
- master 2cd204d8bb 13/16: Prefer ‘time-equal-p’ to ‘equal’ on timestamps, Paul Eggert, 2022/08/01
- master 72c3efd7d0 15/16: Fix time comparison in primitive-undo, Paul Eggert, 2022/08/01
- master bec8474a45 16/16: Improve GCC pacification in xterm.c, Paul Eggert, 2022/08/01
- master 0a4477415c 05/16: Improve float-time etc. performance, Paul Eggert, 2022/08/01
- master 9d4633e934 02/16: (time-equal-p nil X) returns nil, Paul Eggert, 2022/08/01
- master e3b6242938 03/16: Fix get-internal-runtime precision, Paul Eggert, 2022/08/01
- master 2fd2008e67 07/16: * src/timefns.c (Ffloat_time): Fix doc string., Paul Eggert, 2022/08/01
- master 4d896c0977 14/16: Use list-form timestamps in .nnmh-articles, Paul Eggert, 2022/08/01