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)