;; 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
tab-stop-list '(22 32 40 60 67))
(abbrev-mode 0)
(auto-fill-mode 0)
- (buffer-flush-undo (current-buffer))
+ (buffer-disable-undo (current-buffer))
(use-local-map itimer-edit-map)
(set-syntax-table emacs-lisp-mode-syntax-table))
(unwind-protect
(condition-case condition-data
(save-match-data
+ ;; Suppress warnings - see comment below.
+ (defvar last-event-time)
+ (defvar next-wakeup)
+ (defvar itimer)
+ (defvar itimers)
+ (defvar time-elapsed)
(let* ((current-itimer itimer)
(quit-flag nil)
(inhibit-quit nil)
;; for FSF Emacs timer.el emulation under XEmacs.
;; eldoc expect this to be done, apparently.
(this-command nil)
- ;; bind these variables so that the
- ;; itimer function can't screw with
- ;; them.
+ ;; bind these variables so that the itimer
+ ;; function can't screw with them.
last-event-time next-wakeup
itimer itimers time-elapsed)
(if (itimer-uses-arguments current-itimer)