Mercurial > emacs
changeset 55599:055b9a2c6093
(timer-activate): Add optional arg triggered-p.
Use it to set triggered-p element of timer.
(timer-event-handler): Set triggered-p element non-nil while running
the timer function.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 14 May 2004 23:09:35 +0000 |
parents | c9d9adb76244 |
children | 734ff40978ad |
files | lisp/emacs-lisp/timer.el |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/timer.el Fri May 14 23:08:54 2004 +0000 +++ b/lisp/emacs-lisp/timer.el Fri May 14 23:09:35 2004 +0000 @@ -161,7 +161,7 @@ (aset timer 6 args) timer) -(defun timer-activate (timer) +(defun timer-activate (timer &optional triggered-p) "Put TIMER on the list of active timers." (if (and (timerp timer) (integerp (aref timer 1)) @@ -184,7 +184,7 @@ (if last (setcdr last (cons timer timers)) (setq timer-list (cons timer timers))) - (aset timer 0 nil) + (aset timer 0 triggered-p) (aset timer 7 nil) nil) (error "Invalid or uninitialized timer"))) @@ -270,7 +270,7 @@ (setq timer-event-last timer) (let ((inhibit-quit t)) (if (timerp timer) - (progn + (let (retrigger) ;; Delete from queue. (cancel-timer timer) ;; Re-schedule if requested. @@ -287,13 +287,16 @@ (aref timer 4)))) (if (> repeats timer-max-repeats) (timer-inc-time timer (* (aref timer 4) repeats))))) - (timer-activate timer))) + (timer-activate timer t) + (setq retrigger t))) ;; Run handler. ;; We do this after rescheduling so that the handler function ;; can cancel its own timer successfully with cancel-timer. (condition-case nil (apply (aref timer 5) (aref timer 6)) - (error nil))) + (error nil)) + (if retrigger + (aset timer 7 nil))) (error "Bogus timer event")))) ;; This function is incompatible with the one in levents.el.