(require 'stdlib) (require 'rep.io.timers) (define (run) (let ((alarm-timer nil)) (catch 'alarm (setq alarm-timer (make-timer (lambda () (throw 'alarm)) 5)) (puts "entering recursive-edit, bail-out after 5 sec.") (setq interrupt-mode 'exit) (recursive-edit)) (puts "alarm") (delete-timer alarm-timer))) (define clock-timer nil) (define (start-clock) (setq clock-timer (make-timer (lambda () (let ((count 0)) (puts count) (setq count (1+ count)) (set-timer clock-timer))) 1)) (setq interrupt-mode 'exit) (recursive-edit)) (define (stop-clock) (delete-timer clock-timer) (setq clock-timer nil))