Function: type-break-demo-boring

type-break-demo-boring is a byte-compiled function defined in type-break.el.gz.

Signature

(type-break-demo-boring)

Documentation

Boring typing break demo.

Source Code

;; Defined in /usr/src/emacs/lisp/type-break.el.gz
;; Boring demo, but doesn't use many cycles
(defun type-break-demo-boring ()
  "Boring typing break demo."
  (let ((rmsg (if type-break-terse-messages
                  ""
                "Press any key to resume from typing break"))
        (buffer-name "*Typing Break Buffer*")
        lines elapsed timeleft tmsg)
    (condition-case ()
        (progn
          (switch-to-buffer (get-buffer-create buffer-name))
          (buffer-disable-undo (current-buffer))
          (setq lines (/ (window-body-height) 2))
          (unless type-break-terse-messages (setq lines (1- lines)))
          (if type-break-demo-boring-stats
              (setq lines (- lines 2)))
          (setq lines (make-string lines ?\C-j))
          (while (not (input-pending-p))
            (erase-buffer)
            (setq elapsed (type-break-time-difference
                           type-break-time-last-break
			   nil))
            (let ((good-interval (or type-break-good-rest-interval
                                     type-break-good-break-interval)))
              (cond
               (good-interval
                (setq timeleft (- good-interval elapsed))
                (if (> timeleft 0)
                    (setq tmsg
                          (format (if type-break-terse-messages
                                      "Break remaining: %s"
                                    "You should rest for %s more")
                                  (type-break-format-time timeleft)))
                  (setq tmsg
                        (format (if type-break-terse-messages
                                    "Break complete (%s elapsed in total)"
                                  "Typing break has lasted %s")
                                (type-break-format-time elapsed)))))
               (t
                (setq tmsg
                      (format (if type-break-terse-messages
                                  "Break has lasted %s"
                                "Typing break has lasted %s")
                              (type-break-format-time elapsed))))))
            (insert lines
                    (make-string (/ (- (window-width) (length tmsg)) 2) ?\ )
                    tmsg)
            (if (> (length rmsg) 0)
                (insert "\n"
                        (make-string (/ (- (window-width) (length rmsg)) 2)
                                     ?\ )
                        rmsg))
            (if type-break-demo-boring-stats
                (let*
                    ((message
                      (format
                       (if type-break-terse-messages
                           "Since last break: %s keystrokes\n"
                         "Since your last break you've typed %s keystrokes\n")
                       type-break-keystroke-count))
                     (column-spaces
                      (make-string (/ (- (window-width) (length message)) 2)
                                   ?\ ))
                     (wpm (/ (/ (float type-break-keystroke-count) 5)
                             (/ (type-break-time-difference
                                 type-break-interval-start
                                 type-break-time-last-break)
                                60.0))))
                  (insert "\n\n" column-spaces message)
                  (if type-break-terse-messages
                      (insert (format "                  %s%.2f wpm"
                                      column-spaces
                                      wpm))
                    (setq message
                          (format "at an average of %.2f words per minute"
                                  wpm))
                    (insert
                     (make-string (/ (- (window-width) (length message)) 2)
                                  ?\ )
                     message))))
            (goto-char (point-min))
            (sit-for 60))
	  (read-event)
	  (type-break-catch-up-event)
          (kill-buffer buffer-name))
      (quit
       (and (get-buffer buffer-name)
            (kill-buffer buffer-name))))))