summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/timer.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2013-08-12 22:30:52 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2013-08-12 22:30:52 -0400
commit5514cc4c84969122668c89a387b858157e0c2e74 (patch)
treeb636e0c6cff2ce0b37b5c6b48c2a191fa8838d20 /lisp/emacs-lisp/timer.el
parent5c41e9ffeaefbf8d01360c1fc911a324940573ee (diff)
downloademacs-5514cc4c84969122668c89a387b858157e0c2e74.tar.gz
* lisp/emacs-lisp/timer.el (timer--time-setter): New function.
(timer--time): Use it as gv-setter. * lisp/emacs-lisp/gv.el (gv-define-simple-setter): Output warning when setter is not a symbol.
Diffstat (limited to 'lisp/emacs-lisp/timer.el')
-rw-r--r--lisp/emacs-lisp/timer.el33
1 files changed, 16 insertions, 17 deletions
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 410e43b16e6..1ee3cec15a6 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -55,30 +55,29 @@
(defsubst timer--check (timer)
(or (timerp timer) (signal 'wrong-type-argument (list #'timerp timer))))
+(defun timer--time-setter (timer time)
+ (timer--check timer)
+ (setf (timer--high-seconds timer) (pop time))
+ (let ((low time) (usecs 0) (psecs 0))
+ (when (consp time)
+ (setq low (pop time))
+ (when time
+ (setq usecs (pop time))
+ (when time
+ (setq psecs (car time)))))
+ (setf (timer--low-seconds timer) low)
+ (setf (timer--usecs timer) usecs)
+ (setf (timer--psecs timer) psecs)
+ time))
+
;; Pseudo field `time'.
(defun timer--time (timer)
+ (declare (gv-setter timer--time-setter))
(list (timer--high-seconds timer)
(timer--low-seconds timer)
(timer--usecs timer)
(timer--psecs timer)))
-(gv-define-setter timer--time (time timer)
- (macroexp-let2 nil val time
- `(progn
- (timer--check ,timer)
- (setf (timer--high-seconds ,timer) (pop ,val))
- (let ((low ,val) (usecs 0) (psecs 0))
- (when (consp ,val)
- (setq low (pop ,val))
- (when ,val
- (setq usecs (pop ,val))
- (when ,val
- (setq psecs (car ,val)))))
- (setf (timer--low-seconds ,timer) low)
- (setf (timer--usecs ,timer) usecs)
- (setf (timer--psecs ,timer) psecs))
- ,val)))
-
(defun timer-set-time (timer time &optional delta)
"Set the trigger time of TIMER to TIME.
TIME must be in the internal format returned by, e.g., `current-time'.