> (defvar foo-timer
> (progn ; Cancel to prevent ~duplication.
> (when (boundp 'foo-timer) (cancel-timer foo-timer))
> (run-with-idle-timer 2 t 'foo))
> "Timer used to foo whenever Emacs is idle.")
The traditional way to do something like the above is:
(defvar foo-timer nil)
(define-minor-mode foo "blala" :toto 1 :titi 0
(when foo-timer
(cancel foo-timer)
(setq foo-timer nil))
(when foo-mode
(setq foo-timer (run-with-idle-timer 5 t 'foo-fun))))
OK. I'm not sure why that's better, but it does seem to move a little toward
the direction I was suggesting with a `define-idle-timer' macro.