Increases/decreases wpm on the fly
[spray] / spray.el
index 77bff8e95214da58b6005d085e749abe666d93db..48819cb12ad2d42ea97c30bf760044f195ce00ef 100644 (file)
--- a/spray.el
+++ b/spray.el
@@ -54,6 +54,8 @@
     (define-key km (kbd "l") 'spray-forward-word)
     (define-key km (kbd "<left>") 'spray-backward-word)
     (define-key km (kbd "<right>") 'spray-forward-word)
+    (define-key km (kbd "f") 'spray-faster)
+    (define-key km (kbd "s") 'spray-slower)
     km)
   "keymap for spray-mode buffers")
 
@@ -130,8 +132,7 @@ an integer or a float value."
          (spray-start/stop -1))))
 
 (defun spray--pre-command-handler ()
-  (unless (memq this-command
-                '(spray-forward-word spray-backward-word spray-start/stop))
+  (unless (string-match "^spray-" (symbol-name this-command))
     (spray-mode -1)))
 
 (defun spray--word-at-point ()
@@ -199,6 +200,32 @@ an integer or a float value."
   (skip-chars-backward "\s\t\n")
   (spray--word-at-point))
 
+(defun spray-faster ()
+  "Increases speed.
+
+Increases the wpm (words per minute) parameter. See the variable
+`spray-wmp'."
+  (interactive)
+  (spray-inc-wpm 20))
+
+(defun spray-slower ()
+  "Decreases speed.
+
+Decreases the wpm (words per minute) parameter. See the variable
+`spray-wmp'."
+  (interactive)
+  (spray-inc-wpm -20))
+
+(defun spray-inc-wpm (delta)
+  (let ((was-running spray--running))
+    (spray-start/stop -1)
+    (when (< 10 (+ spray-wpm delta))
+      (setq spray-wpm (+ spray-wpm delta)))
+    (spray-backward-word)
+    (message "spray wpm: %d" spray-wpm)
+    (when was-running
+      (spray-start/stop 1))))
+
 ;; * provide
 
 (provide 'spray)