Mercurial > emacs
diff lisp/type-break.el @ 5939:454dc146502d
Initial revision
author | Roland McGrath <roland@gnu.org> |
---|---|
date | Mon, 14 Feb 1994 00:41:56 +0000 |
parents | |
children | 5ecef3b02f2d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/type-break.el Mon Feb 14 00:41:56 1994 +0000 @@ -0,0 +1,65 @@ +(require 'timer) + +;;;###autoload +(defvar hanoi-break-interval (* 60 30) + "*Number of seconds between Hanoi breaks.") + +(add-hook 'post-command-hook 'hanoi-break-check t) + +(defvar hanoi-break-p nil + "Non-nil if we need a Hanoi break real soon now.") + +(defun hanoi-break-check () + "Take a Hanoi break if the time has come." + (and (not (input-pending-p)) + (prog1 hanoi-break-p + (setq hanoi-break-p nil)) + (hanoi-break))) + +;;;###autoload +(defun hanoi-break () + "Take a Hanoi break, son." + (interactive) + (save-window-excursion + (eval (condition-case error + (if (not (yes-or-no-p "Take a break now? ")) + '(hanoi-break-schedule 60) ; Bug him again in one minute. + ;; Eat the screen. + (if (eq (selected-window) (minibuffer-window)) + (other-window 1)) + (delete-other-windows) + (scroll-right (window-width)) + ;; Send him on his way. + (message "Take a break, son.") + (if (get-buffer "*Hanoi*") + (kill-buffer "*Hanoi*")) + (condition-case () + (progn + (hanoi (/ (window-width) 8)) + ;; Wait for him to come back. + (read-char) + (kill-buffer "*Hanoi*")) + (quit nil)) + '(hanoi-break-schedule)) ; Schedule next break. + (quit '(hanoi-break-schedule 60)) ; Bug him again in one minute. + ;;(error t) + )))) + +;;;###autoload +(defun hanoi-break-schedule (&optional time) + "Schedule a break for ARG seconds from now (default: hanoi-break-interval)." + (interactive (list (and current-prefix-arg + (prefix-numeric-value current-prefix-arg)))) + (or time (setq time hanoi-break-interval)) + (run-at-time time nil 'hanoi-break-soon)) + +(defun hanoi-break-soon () + "Take a Hanoi break very soon." + (setq hanoi-break-p t)) + +(defun cancel-hanoi-break () + "Cancel scheduled Hanoi breaks." + (interactive) + (cancel-function-timers 'hanoi-break-soon)) + +(provide 'hanoi-break)