Function: timer--activate
timer--activate is a byte-compiled function defined in timer.el.gz.
Signature
(timer--activate TIMER &optional TRIGGERED-P REUSE-CELL IDLE)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/timer.el.gz
(defun timer--activate (timer &optional triggered-p reuse-cell idle)
(let ((timers (if idle timer-idle-list timer-list))
last)
(cond
((not (and (timerp timer)
(integerp (timer--high-seconds timer))
(integerp (timer--low-seconds timer))
(integerp (timer--usecs timer))
(integerp (timer--psecs timer))
(timer--function timer)))
(error "Invalid or uninitialized timer"))
;; FIXME: This is not reliable because `idle-delay' is only set late,
;; by `timer-activate-when-idle' :-(
;;((not (eq (not idle)
;; (not (timer--idle-delay timer))))
;; (error "idle arg %S out of sync with idle-delay field of timer: %S"
;; idle timer))
((memq timer timers)
(error "Timer already activated"))
(t
;; Skip all timers to trigger before the new one.
(while (and timers (timer--time-less-p (car timers) timer))
(setq last timers
timers (cdr timers)))
(if reuse-cell
(progn
(setcar reuse-cell timer)
(setcdr reuse-cell timers))
(setq reuse-cell (cons timer timers)))
;; Insert new timer after last which possibly means in front of queue.
(setf (cond (last (cdr last))
(idle timer-idle-list)
(t timer-list))
reuse-cell)
(setf (timer--triggered timer) triggered-p)
(setf (timer--idle-delay timer) idle)
nil))))