From: Roland McGrath Date: Mon, 14 Feb 1994 00:41:56 +0000 (+0000) Subject: Initial revision X-Git-Tag: emacs-19.34~9913 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=622aca7c603d3b0c51e6373d01161fe440fc6957;p=emacs.git Initial revision --- diff --git a/lisp/type-break.el b/lisp/type-break.el new file mode 100644 index 00000000000..d25a67ae083 --- /dev/null +++ b/lisp/type-break.el @@ -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)