(define-key km (kbd "<right>") 'spray-forward-word)
(define-key km (kbd "f") 'spray-faster)
(define-key km (kbd "s") 'spray-slower)
+ (define-key km (kbd "t") 'spray-time)
(define-key km (kbd "q") 'spray-quit)
(define-key km (kbd "<return>") 'spray-quit)
(define-key km [remap forward-char] 'spray-forward-word)
(len (+ (skip-chars-forward "^\s\t\nā") (skip-chars-forward "ā")))
(end (point))
(accent (+ beg (cl-case len
- ((1) 1)
- ((2 3 4 5) 2)
- ((6 7 8 9) 3)
- ((10 11 12 13) 4)
- (t 5)))))
+ ((1) 1)
+ ((2 3 4 5) 2)
+ ((6 7 8 9) 3)
+ ((10 11 12 13) 4)
+ (t 5)))))
;; this fairly obfuscated, using magic numbers to store state
;; it would be nice to sometime patch this so it is more readable.
;; for greater than 9 length, we display for twice as long
(cond ((not (zerop spray--initial-delay))
(setq spray--initial-delay (1- spray--initial-delay)))
((not (zerop spray--delay))
- (setq spray--delay (1- spray--delay))
- (when (= spray--delay 2)
- (narrow-to-region (point) (point))))
+ (setq spray--delay (1- spray--delay)))
(t
(widen)
(if (eobp)
(when was-running
(spray-start))))
+(defun spray-time ()
+ (interactive)
+ (widen)
+ (let ((position (progn (skip-chars-backward "^\s\t\nā") (point))))
+ (message
+ "%d per cent done; ~%d minute(s) remaining"
+ (* 100 (/ position (+ 0.0 (point-max))))
+ (fround (/ (count-words-region position (point-max)) (+ 0.0 spray-wpm)))))
+ (spray--word-at-point))
+
;; * provide
(provide 'spray)