;; signal errors appropriately if the arguments are not valid.
(defmacro check-itimer (var)
- "If VAR is not bound to an itimer, signal wrong-type-argument.
+ "If VAR is not bound to an itimer, signal `wrong-type-argument'.
This is a macro."
(list 'setq var
(list 'if (list 'itimerp var) var
(list 'list ''string-or-itimer-p var))))))
(defmacro check-nonnegative-number (var)
- "If VAR is not bound to a number, signal wrong-type-argument.
+ "If VAR is not bound to a number, signal `wrong-type-argument'.
If VAR is not bound to a positive number, signal args-out-of-range.
This is a macro."
(list 'setq var
var))))
(defmacro check-string (var)
- "If VAR is not bound to a string, signal wrong-type-argument.
+ "If VAR is not bound to a string, signal `wrong-type-argument'.
This is a macro."
(list 'setq var
(list 'if (list 'stringp var) var
\f
;; Functions to access and modify itimer attributes.
-(defun itimerp (obj)
- "Return non-nil if OBJ is an itimer."
- (and (consp obj) (eq (length obj) 8)))
+(defun itimerp (object)
+ "Return non-nil if OBJECT is an itimer."
+ (and (consp object) (eq (length object) 8)))
-(defun itimer-live-p (obj)
- "Return non-nil if OBJ is an itimer and is active.
+(defun itimer-live-p (object)
+ "Return non-nil if OBJECT is an itimer and is active.
``Active'' means Emacs will run it when it expires.
-`activate-timer' must be called on an itimer to make it active.
+`activate-itimer' must be called on an itimer to make it active.
Itimers started with `start-itimer' are automatically active."
- (and (itimerp obj) (memq obj itimer-list)))
+ (and (itimerp object) (memq object itimer-list)))
(defun itimer-name (itimer)
"Return the name of ITIMER."
must be an integer.
Optional fourth arg RESTART non-nil means that this itimer should be
restarted automatically after its function is called. Normally an itimer
- is deleted at expiration after its function has returned.
+ is deleted at expiration after its function has returned.
If non-nil RESTART should be a number indicating the value at which the
itimer should be set at restart time.
Optional fifth arg IS-IDLE specifies if this is an idle timer.
(error "itimer named \"%s\" already existing and activated"
(itimer-name itimer))))
(let ((inhibit-quit t))
+ (if itimer-timer
+ ;; Modify the itimer timeout value as if it were begun
+ ;; at the last time when the itimer driver was woken up.
+ (set-itimer-value
+ itimer
+ (+ (itimer-value itimer)
+ (itimer-time-difference (current-time)
+ itimer-timer-last-wakeup))))
;; add the itimer to the global list
(setq itimer-list (cons itimer itimer-list))
;; If the itimer process is scheduled to wake up too late for