]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/hydra/hydra-test.el
Merge commit '0c08964462812942db51d177e6ea922b26019e65' from hydra
[gnu-emacs-elpa] / packages / hydra / hydra-test.el
index eee851a079d29750b3b96330ba97fdea7c123a72..f2311ab173aa1009c1585eb95f8b400bdce54914 100644 (file)
@@ -46,8 +46,8 @@ The body can be accessed via `hydra-error/body'.
 
 Call the head: `first-error'."
              (interactive)
+             (hydra-disable)
              (catch (quote hydra-disable)
-               (hydra-disable)
                (condition-case err (prog1 t (call-interactively (function first-error)))
                  ((debug error)
                   (message "%S" err)
@@ -58,32 +58,33 @@ Call the head: `first-error'."
                                                  31 32 (face hydra-face-red))))
                (setq hydra-last
                      (hydra-set-transient-map
-                      (setq hydra-curr-map '(keymap (107 . hydra-error/previous-error)
-                                             (106 . hydra-error/next-error)
-                                             (104 . hydra-error/first-error)
-                                             (kp-subtract . hydra--negative-argument)
-                                             (kp-9 . hydra--digit-argument)
-                                             (kp-8 . hydra--digit-argument)
-                                             (kp-7 . hydra--digit-argument)
-                                             (kp-6 . hydra--digit-argument)
-                                             (kp-5 . hydra--digit-argument)
-                                             (kp-4 . hydra--digit-argument)
-                                             (kp-3 . hydra--digit-argument)
-                                             (kp-2 . hydra--digit-argument)
-                                             (kp-1 . hydra--digit-argument)
-                                             (kp-0 . hydra--digit-argument)
-                                             (57 . hydra--digit-argument)
-                                             (56 . hydra--digit-argument)
-                                             (55 . hydra--digit-argument)
-                                             (54 . hydra--digit-argument)
-                                             (53 . hydra--digit-argument)
-                                             (52 . hydra--digit-argument)
-                                             (51 . hydra--digit-argument)
-                                             (50 . hydra--digit-argument)
-                                             (49 . hydra--digit-argument)
-                                             (48 . hydra--digit-argument)
-                                             (45 . hydra--negative-argument)
-                                             (21 . hydra--universal-argument)))
+                      (setq hydra-curr-map
+                            (quote (keymap (107 . hydra-error/previous-error)
+                                           (106 . hydra-error/next-error)
+                                           (104 . hydra-error/first-error)
+                                           (kp-subtract . hydra--negative-argument)
+                                           (kp-9 . hydra--digit-argument)
+                                           (kp-8 . hydra--digit-argument)
+                                           (kp-7 . hydra--digit-argument)
+                                           (kp-6 . hydra--digit-argument)
+                                           (kp-5 . hydra--digit-argument)
+                                           (kp-4 . hydra--digit-argument)
+                                           (kp-3 . hydra--digit-argument)
+                                           (kp-2 . hydra--digit-argument)
+                                           (kp-1 . hydra--digit-argument)
+                                           (kp-0 . hydra--digit-argument)
+                                           (57 . hydra--digit-argument)
+                                           (56 . hydra--digit-argument)
+                                           (55 . hydra--digit-argument)
+                                           (54 . hydra--digit-argument)
+                                           (53 . hydra--digit-argument)
+                                           (52 . hydra--digit-argument)
+                                           (51 . hydra--digit-argument)
+                                           (50 . hydra--digit-argument)
+                                           (49 . hydra--digit-argument)
+                                           (48 . hydra--digit-argument)
+                                           (45 . hydra--negative-argument)
+                                           (21 . hydra--universal-argument))))
                       t))))
       (defun hydra-error/next-error nil "Create a hydra with a \"M-g\" body and the heads:
 
@@ -95,8 +96,8 @@ The body can be accessed via `hydra-error/body'.
 
 Call the head: `next-error'."
              (interactive)
+             (hydra-disable)
              (catch (quote hydra-disable)
-               (hydra-disable)
                (condition-case err (prog1 t (call-interactively (function next-error)))
                  ((debug error)
                   (message "%S" err)
@@ -107,32 +108,33 @@ Call the head: `next-error'."
                                                  31 32 (face hydra-face-red))))
                (setq hydra-last
                      (hydra-set-transient-map
-                      (setq hydra-curr-map '(keymap (107 . hydra-error/previous-error)
-                                             (106 . hydra-error/next-error)
-                                             (104 . hydra-error/first-error)
-                                             (kp-subtract . hydra--negative-argument)
-                                             (kp-9 . hydra--digit-argument)
-                                             (kp-8 . hydra--digit-argument)
-                                             (kp-7 . hydra--digit-argument)
-                                             (kp-6 . hydra--digit-argument)
-                                             (kp-5 . hydra--digit-argument)
-                                             (kp-4 . hydra--digit-argument)
-                                             (kp-3 . hydra--digit-argument)
-                                             (kp-2 . hydra--digit-argument)
-                                             (kp-1 . hydra--digit-argument)
-                                             (kp-0 . hydra--digit-argument)
-                                             (57 . hydra--digit-argument)
-                                             (56 . hydra--digit-argument)
-                                             (55 . hydra--digit-argument)
-                                             (54 . hydra--digit-argument)
-                                             (53 . hydra--digit-argument)
-                                             (52 . hydra--digit-argument)
-                                             (51 . hydra--digit-argument)
-                                             (50 . hydra--digit-argument)
-                                             (49 . hydra--digit-argument)
-                                             (48 . hydra--digit-argument)
-                                             (45 . hydra--negative-argument)
-                                             (21 . hydra--universal-argument)))
+                      (setq hydra-curr-map
+                            (quote (keymap (107 . hydra-error/previous-error)
+                                           (106 . hydra-error/next-error)
+                                           (104 . hydra-error/first-error)
+                                           (kp-subtract . hydra--negative-argument)
+                                           (kp-9 . hydra--digit-argument)
+                                           (kp-8 . hydra--digit-argument)
+                                           (kp-7 . hydra--digit-argument)
+                                           (kp-6 . hydra--digit-argument)
+                                           (kp-5 . hydra--digit-argument)
+                                           (kp-4 . hydra--digit-argument)
+                                           (kp-3 . hydra--digit-argument)
+                                           (kp-2 . hydra--digit-argument)
+                                           (kp-1 . hydra--digit-argument)
+                                           (kp-0 . hydra--digit-argument)
+                                           (57 . hydra--digit-argument)
+                                           (56 . hydra--digit-argument)
+                                           (55 . hydra--digit-argument)
+                                           (54 . hydra--digit-argument)
+                                           (53 . hydra--digit-argument)
+                                           (52 . hydra--digit-argument)
+                                           (51 . hydra--digit-argument)
+                                           (50 . hydra--digit-argument)
+                                           (49 . hydra--digit-argument)
+                                           (48 . hydra--digit-argument)
+                                           (45 . hydra--negative-argument)
+                                           (21 . hydra--universal-argument))))
                       t))))
       (defun hydra-error/previous-error nil "Create a hydra with a \"M-g\" body and the heads:
 
@@ -144,8 +146,8 @@ The body can be accessed via `hydra-error/body'.
 
 Call the head: `previous-error'."
              (interactive)
+             (hydra-disable)
              (catch (quote hydra-disable)
-               (hydra-disable)
                (condition-case err (prog1 t (call-interactively (function previous-error)))
                  ((debug error)
                   (message "%S" err)
@@ -156,32 +158,33 @@ Call the head: `previous-error'."
                                                  31 32 (face hydra-face-red))))
                (setq hydra-last
                      (hydra-set-transient-map
-                      (setq hydra-curr-map '(keymap (107 . hydra-error/previous-error)
-                                             (106 . hydra-error/next-error)
-                                             (104 . hydra-error/first-error)
-                                             (kp-subtract . hydra--negative-argument)
-                                             (kp-9 . hydra--digit-argument)
-                                             (kp-8 . hydra--digit-argument)
-                                             (kp-7 . hydra--digit-argument)
-                                             (kp-6 . hydra--digit-argument)
-                                             (kp-5 . hydra--digit-argument)
-                                             (kp-4 . hydra--digit-argument)
-                                             (kp-3 . hydra--digit-argument)
-                                             (kp-2 . hydra--digit-argument)
-                                             (kp-1 . hydra--digit-argument)
-                                             (kp-0 . hydra--digit-argument)
-                                             (57 . hydra--digit-argument)
-                                             (56 . hydra--digit-argument)
-                                             (55 . hydra--digit-argument)
-                                             (54 . hydra--digit-argument)
-                                             (53 . hydra--digit-argument)
-                                             (52 . hydra--digit-argument)
-                                             (51 . hydra--digit-argument)
-                                             (50 . hydra--digit-argument)
-                                             (49 . hydra--digit-argument)
-                                             (48 . hydra--digit-argument)
-                                             (45 . hydra--negative-argument)
-                                             (21 . hydra--universal-argument)))
+                      (setq hydra-curr-map
+                            (quote (keymap (107 . hydra-error/previous-error)
+                                           (106 . hydra-error/next-error)
+                                           (104 . hydra-error/first-error)
+                                           (kp-subtract . hydra--negative-argument)
+                                           (kp-9 . hydra--digit-argument)
+                                           (kp-8 . hydra--digit-argument)
+                                           (kp-7 . hydra--digit-argument)
+                                           (kp-6 . hydra--digit-argument)
+                                           (kp-5 . hydra--digit-argument)
+                                           (kp-4 . hydra--digit-argument)
+                                           (kp-3 . hydra--digit-argument)
+                                           (kp-2 . hydra--digit-argument)
+                                           (kp-1 . hydra--digit-argument)
+                                           (kp-0 . hydra--digit-argument)
+                                           (57 . hydra--digit-argument)
+                                           (56 . hydra--digit-argument)
+                                           (55 . hydra--digit-argument)
+                                           (54 . hydra--digit-argument)
+                                           (53 . hydra--digit-argument)
+                                           (52 . hydra--digit-argument)
+                                           (51 . hydra--digit-argument)
+                                           (50 . hydra--digit-argument)
+                                           (49 . hydra--digit-argument)
+                                           (48 . hydra--digit-argument)
+                                           (45 . hydra--negative-argument)
+                                           (21 . hydra--universal-argument))))
                       t))))
       (unless (keymapp (lookup-key global-map (kbd "M-g")))
         (define-key global-map (kbd "M-g")
@@ -200,38 +203,42 @@ Call the head: `previous-error'."
 
 The body can be accessed via `hydra-error/body'."
              (interactive)
-             (when hydra-is-helpful (message #("error: [h]: first, [j]: next, [k]: prev." 8 9 (face hydra-face-red)
-                                               20 21 (face hydra-face-red)
-                                               31 32 (face hydra-face-red))))
-             (setq hydra-last
-                   (hydra-set-transient-map
-                    '(keymap (107 . hydra-error/previous-error)
-                      (106 . hydra-error/next-error)
-                      (104 . hydra-error/first-error)
-                      (kp-subtract . hydra--negative-argument)
-                      (kp-9 . hydra--digit-argument)
-                      (kp-8 . hydra--digit-argument)
-                      (kp-7 . hydra--digit-argument)
-                      (kp-6 . hydra--digit-argument)
-                      (kp-5 . hydra--digit-argument)
-                      (kp-4 . hydra--digit-argument)
-                      (kp-3 . hydra--digit-argument)
-                      (kp-2 . hydra--digit-argument)
-                      (kp-1 . hydra--digit-argument)
-                      (kp-0 . hydra--digit-argument)
-                      (57 . hydra--digit-argument)
-                      (56 . hydra--digit-argument)
-                      (55 . hydra--digit-argument)
-                      (54 . hydra--digit-argument)
-                      (53 . hydra--digit-argument)
-                      (52 . hydra--digit-argument)
-                      (51 . hydra--digit-argument)
-                      (50 . hydra--digit-argument)
-                      (49 . hydra--digit-argument)
-                      (48 . hydra--digit-argument)
-                      (45 . hydra--negative-argument)
-                      (21 . hydra--universal-argument))
-                    t)))))))
+             (hydra-disable)
+             (catch (quote hydra-disable)
+               (when hydra-is-helpful (message #("error: [h]: first, [j]: next, [k]: prev." 8 9 (face hydra-face-red)
+                                                 20 21 (face hydra-face-red)
+                                                 31 32 (face hydra-face-red))))
+               (setq hydra-last
+                     (hydra-set-transient-map
+                      (setq hydra-curr-map
+                            (quote (keymap (107 . hydra-error/previous-error)
+                                           (106 . hydra-error/next-error)
+                                           (104 . hydra-error/first-error)
+                                           (kp-subtract . hydra--negative-argument)
+                                           (kp-9 . hydra--digit-argument)
+                                           (kp-8 . hydra--digit-argument)
+                                           (kp-7 . hydra--digit-argument)
+                                           (kp-6 . hydra--digit-argument)
+                                           (kp-5 . hydra--digit-argument)
+                                           (kp-4 . hydra--digit-argument)
+                                           (kp-3 . hydra--digit-argument)
+                                           (kp-2 . hydra--digit-argument)
+                                           (kp-1 . hydra--digit-argument)
+                                           (kp-0 . hydra--digit-argument)
+                                           (57 . hydra--digit-argument)
+                                           (56 . hydra--digit-argument)
+                                           (55 . hydra--digit-argument)
+                                           (54 . hydra--digit-argument)
+                                           (53 . hydra--digit-argument)
+                                           (52 . hydra--digit-argument)
+                                           (51 . hydra--digit-argument)
+                                           (50 . hydra--digit-argument)
+                                           (49 . hydra--digit-argument)
+                                           (48 . hydra--digit-argument)
+                                           (45 . hydra--negative-argument)
+                                           (21 . hydra--universal-argument))))
+                      t))
+               (setq prefix-arg current-prefix-arg)))))))
 
 (ert-deftest hydra-blue-toggle ()
   (should
@@ -256,7 +263,8 @@ The body can be accessed via `toggle/body'.
 Call the head: `toggle-truncate-lines'."
              (interactive)
              (hydra-disable)
-             (call-interactively (function toggle-truncate-lines)))
+             (catch (quote hydra-disable)
+               (call-interactively (function toggle-truncate-lines))))
       (defun toggle/auto-fill-mode nil "Create a hydra with no body and the heads:
 
 \"t\":    `toggle-truncate-lines',
@@ -269,7 +277,8 @@ The body can be accessed via `toggle/body'.
 Call the head: `auto-fill-mode'."
              (interactive)
              (hydra-disable)
-             (call-interactively (function auto-fill-mode)))
+             (catch (quote hydra-disable)
+               (call-interactively (function auto-fill-mode))))
       (defun toggle/abbrev-mode nil "Create a hydra with no body and the heads:
 
 \"t\":    `toggle-truncate-lines',
@@ -282,7 +291,8 @@ The body can be accessed via `toggle/body'.
 Call the head: `abbrev-mode'."
              (interactive)
              (hydra-disable)
-             (call-interactively (function abbrev-mode)))
+             (catch (quote hydra-disable)
+               (call-interactively (function abbrev-mode))))
       (defun toggle/nil nil "Create a hydra with no body and the heads:
 
 \"t\":    `toggle-truncate-lines',
@@ -294,7 +304,8 @@ The body can be accessed via `toggle/body'.
 
 Call the head: `nil'."
              (interactive)
-             (hydra-disable))
+             (hydra-disable)
+             (catch (quote hydra-disable)))
       (defun toggle/body nil "Create a hydra with no body and the heads:
 
 \"t\":    `toggle-truncate-lines',
@@ -304,100 +315,19 @@ Call the head: `nil'."
 
 The body can be accessed via `toggle/body'."
              (interactive)
-             (when hydra-is-helpful (message #("toggle: [t]: truncate, [f]: fill, [a]: abbrev, [q]: cancel." 9 10 (face hydra-face-blue)
-                                               24 25 (face hydra-face-blue)
-                                               35 36 (face hydra-face-blue)
-                                               48 49 (face hydra-face-blue))))
-             (setq hydra-last
-                   (hydra-set-transient-map
-                    '(keymap (113 . toggle/nil)
-                      (97 . toggle/abbrev-mode)
-                      (102 . toggle/auto-fill-mode)
-                      (116 . toggle/toggle-truncate-lines)
-                      (kp-subtract . hydra--negative-argument)
-                      (kp-9 . hydra--digit-argument)
-                      (kp-8 . hydra--digit-argument)
-                      (kp-7 . hydra--digit-argument)
-                      (kp-6 . hydra--digit-argument)
-                      (kp-5 . hydra--digit-argument)
-                      (kp-4 . hydra--digit-argument)
-                      (kp-3 . hydra--digit-argument)
-                      (kp-2 . hydra--digit-argument)
-                      (kp-1 . hydra--digit-argument)
-                      (kp-0 . hydra--digit-argument)
-                      (57 . hydra--digit-argument)
-                      (56 . hydra--digit-argument)
-                      (55 . hydra--digit-argument)
-                      (54 . hydra--digit-argument)
-                      (53 . hydra--digit-argument)
-                      (52 . hydra--digit-argument)
-                      (51 . hydra--digit-argument)
-                      (50 . hydra--digit-argument)
-                      (49 . hydra--digit-argument)
-                      (48 . hydra--digit-argument)
-                      (45 . hydra--negative-argument)
-                      (21 . hydra--universal-argument))
-                    t)))))))
-
-(ert-deftest hydra-amaranth-vi ()
-  (should
-   (equal
-    (macroexpand
-     '(defhydra hydra-vi
-       (:pre
-        (set-cursor-color "#40e0d0")
-        :post
-        (set-cursor-color "#ffffff")
-        :color amaranth)
-       "vi"
-       ("l" forward-char)
-       ("h" backward-char)
-       ("j" next-line)
-       ("k" previous-line)
-       ("q" nil "quit")))
-    '(progn
-      (defun hydra-vi/forward-char nil "Create a hydra with no body and the heads:
-
-\"l\":    `forward-char',
-\"h\":    `backward-char',
-\"j\":    `next-line',
-\"k\":    `previous-line',
-\"q\":    `nil'
-
-The body can be accessed via `hydra-vi/body'.
-
-Call the head: `forward-char'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
+             (hydra-disable)
              (catch (quote hydra-disable)
-               (hydra-disable)
-               (condition-case err (prog1 t (call-interactively (function forward-char)))
-                 ((debug error)
-                  (message "%S" err)
-                  (sit-for 0.8)
-                  nil))
-               (when hydra-is-helpful (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                 7 8 (face hydra-face-amaranth)
-                                                 10 11 (face hydra-face-amaranth)
-                                                 13 14 (face hydra-face-amaranth)
-                                                 17 18 (face hydra-face-blue))))
+               (when hydra-is-helpful (message #("toggle: [t]: truncate, [f]: fill, [a]: abbrev, [q]: cancel." 9 10 (face hydra-face-blue)
+                                                 24 25 (face hydra-face-blue)
+                                                 35 36 (face hydra-face-blue)
+                                                 48 49 (face hydra-face-blue))))
                (setq hydra-last
                      (hydra-set-transient-map
                       (setq hydra-curr-map
-                            (quote (keymap (t lambda nil (interactive)
-                                              (message "An amaranth Hydra can only exit through a blue head")
-                                              (hydra-set-transient-map hydra-curr-map t)
-                                              (when hydra-is-helpful (sit-for 0.8)
-                                                    (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                               7 8 (face hydra-face-amaranth)
-                                                               10 11 (face hydra-face-amaranth)
-                                                               13 14 (face hydra-face-amaranth)
-                                                               17 18 (face hydra-face-blue)))))
-                                           (113 . hydra-vi/nil)
-                                           (107 . hydra-vi/previous-line)
-                                           (106 . hydra-vi/next-line)
-                                           (104 . hydra-vi/backward-char)
-                                           (108 . hydra-vi/forward-char)
+                            (quote (keymap (113 . toggle/nil)
+                                           (97 . toggle/abbrev-mode)
+                                           (102 . toggle/auto-fill-mode)
+                                           (116 . toggle/toggle-truncate-lines)
                                            (kp-subtract . hydra--negative-argument)
                                            (kp-9 . hydra--digit-argument)
                                            (kp-8 . hydra--digit-argument)
@@ -421,77 +351,27 @@ Call the head: `forward-char'."
                                            (48 . hydra--digit-argument)
                                            (45 . hydra--negative-argument)
                                            (21 . hydra--universal-argument))))
-                      t (lambda nil (set-cursor-color "#ffffff"))))))
-      (defun hydra-vi/backward-char nil "Create a hydra with no body and the heads:
+                      t))
+               (setq prefix-arg current-prefix-arg)))))))
 
-\"l\":    `forward-char',
-\"h\":    `backward-char',
-\"j\":    `next-line',
-\"k\":    `previous-line',
-\"q\":    `nil'
-
-The body can be accessed via `hydra-vi/body'.
-
-Call the head: `backward-char'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
-             (catch (quote hydra-disable)
-               (hydra-disable)
-               (condition-case err (prog1 t (call-interactively (function backward-char)))
-                 ((debug error)
-                  (message "%S" err)
-                  (sit-for 0.8)
-                  nil))
-               (when hydra-is-helpful (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                 7 8 (face hydra-face-amaranth)
-                                                 10 11 (face hydra-face-amaranth)
-                                                 13 14 (face hydra-face-amaranth)
-                                                 17 18 (face hydra-face-blue))))
-               (setq hydra-last
-                     (hydra-set-transient-map
-                      (setq hydra-curr-map
-                            (quote (keymap (t lambda nil (interactive)
-                                              (message "An amaranth Hydra can only exit through a blue head")
-                                              (hydra-set-transient-map hydra-curr-map t)
-                                              (when hydra-is-helpful (sit-for 0.8)
-                                                    (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                               7 8 (face hydra-face-amaranth)
-                                                               10 11 (face hydra-face-amaranth)
-                                                               13 14 (face hydra-face-amaranth)
-                                                               17 18 (face hydra-face-blue)))))
-                                           (113 . hydra-vi/nil)
-                                           (107 . hydra-vi/previous-line)
-                                           (106 . hydra-vi/next-line)
-                                           (104 . hydra-vi/backward-char)
-                                           (108 . hydra-vi/forward-char)
-                                           (kp-subtract . hydra--negative-argument)
-                                           (kp-9 . hydra--digit-argument)
-                                           (kp-8 . hydra--digit-argument)
-                                           (kp-7 . hydra--digit-argument)
-                                           (kp-6 . hydra--digit-argument)
-                                           (kp-5 . hydra--digit-argument)
-                                           (kp-4 . hydra--digit-argument)
-                                           (kp-3 . hydra--digit-argument)
-                                           (kp-2 . hydra--digit-argument)
-                                           (kp-1 . hydra--digit-argument)
-                                           (kp-0 . hydra--digit-argument)
-                                           (57 . hydra--digit-argument)
-                                           (56 . hydra--digit-argument)
-                                           (55 . hydra--digit-argument)
-                                           (54 . hydra--digit-argument)
-                                           (53 . hydra--digit-argument)
-                                           (52 . hydra--digit-argument)
-                                           (51 . hydra--digit-argument)
-                                           (50 . hydra--digit-argument)
-                                           (49 . hydra--digit-argument)
-                                           (48 . hydra--digit-argument)
-                                           (45 . hydra--negative-argument)
-                                           (21 . hydra--universal-argument))))
-                      t (lambda nil (set-cursor-color "#ffffff"))))))
-      (defun hydra-vi/next-line nil "Create a hydra with no body and the heads:
+(ert-deftest hydra-amaranth-vi ()
+  (unless (version< emacs-version "24.4")
+    (should
+     (equal
+      (macroexpand
+       '(defhydra hydra-vi
+         (:pre
+          (set-cursor-color "#e52b50")
+          :post
+          (set-cursor-color "#ffffff")
+          :color amaranth)
+         "vi"
+         ("j" next-line)
+         ("k" previous-line)
+         ("q" nil "quit")))
+      '(progn
+        (defun hydra-vi/next-line nil "Create a hydra with no body and the heads:
 
-\"l\":    `forward-char',
-\"h\":    `backward-char',
 \"j\":    `next-line',
 \"k\":    `previous-line',
 \"q\":    `nil'
@@ -499,65 +379,60 @@ Call the head: `backward-char'."
 The body can be accessed via `hydra-vi/body'.
 
 Call the head: `next-line'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
-             (catch (quote hydra-disable)
+               (interactive)
+               (set-cursor-color "#e52b50")
                (hydra-disable)
-               (condition-case err (prog1 t (call-interactively (function next-line)))
-                 ((debug error)
-                  (message "%S" err)
-                  (sit-for 0.8)
-                  nil))
-               (when hydra-is-helpful (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                 7 8 (face hydra-face-amaranth)
-                                                 10 11 (face hydra-face-amaranth)
-                                                 13 14 (face hydra-face-amaranth)
-                                                 17 18 (face hydra-face-blue))))
-               (setq hydra-last
-                     (hydra-set-transient-map
-                      (setq hydra-curr-map
-                            (quote (keymap (t lambda nil (interactive)
-                                              (message "An amaranth Hydra can only exit through a blue head")
-                                              (hydra-set-transient-map hydra-curr-map t)
-                                              (when hydra-is-helpful (sit-for 0.8)
-                                                    (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                               7 8 (face hydra-face-amaranth)
-                                                               10 11 (face hydra-face-amaranth)
-                                                               13 14 (face hydra-face-amaranth)
-                                                               17 18 (face hydra-face-blue)))))
-                                           (113 . hydra-vi/nil)
-                                           (107 . hydra-vi/previous-line)
-                                           (106 . hydra-vi/next-line)
-                                           (104 . hydra-vi/backward-char)
-                                           (108 . hydra-vi/forward-char)
-                                           (kp-subtract . hydra--negative-argument)
-                                           (kp-9 . hydra--digit-argument)
-                                           (kp-8 . hydra--digit-argument)
-                                           (kp-7 . hydra--digit-argument)
-                                           (kp-6 . hydra--digit-argument)
-                                           (kp-5 . hydra--digit-argument)
-                                           (kp-4 . hydra--digit-argument)
-                                           (kp-3 . hydra--digit-argument)
-                                           (kp-2 . hydra--digit-argument)
-                                           (kp-1 . hydra--digit-argument)
-                                           (kp-0 . hydra--digit-argument)
-                                           (57 . hydra--digit-argument)
-                                           (56 . hydra--digit-argument)
-                                           (55 . hydra--digit-argument)
-                                           (54 . hydra--digit-argument)
-                                           (53 . hydra--digit-argument)
-                                           (52 . hydra--digit-argument)
-                                           (51 . hydra--digit-argument)
-                                           (50 . hydra--digit-argument)
-                                           (49 . hydra--digit-argument)
-                                           (48 . hydra--digit-argument)
-                                           (45 . hydra--negative-argument)
-                                           (21 . hydra--universal-argument))))
-                      t (lambda nil (set-cursor-color "#ffffff"))))))
-      (defun hydra-vi/previous-line nil "Create a hydra with no body and the heads:
+               (catch (quote hydra-disable)
+                 (condition-case err (prog1 t (call-interactively (function next-line)))
+                   ((debug error)
+                    (message "%S" err)
+                    (sit-for 0.8)
+                    nil))
+                 (when hydra-is-helpful (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                   7 8 (face hydra-face-amaranth)
+                                                   11 12 (face hydra-face-blue))))
+                 (setq hydra-last
+                       (hydra-set-transient-map
+                        (setq hydra-curr-map
+                              (quote (keymap (7 lambda nil (interactive)
+                                                (hydra-disable)
+                                                (set-cursor-color "#ffffff"))
+                                             (t lambda nil (interactive)
+                                                (message "An amaranth Hydra can only exit through a blue head")
+                                                (hydra-set-transient-map hydra-curr-map t)
+                                                (when hydra-is-helpful (sit-for 0.8)
+                                                      (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                                 7 8 (face hydra-face-amaranth)
+                                                                 11 12 (face hydra-face-blue)))))
+                                             (113 . hydra-vi/nil)
+                                             (107 . hydra-vi/previous-line)
+                                             (106 . hydra-vi/next-line)
+                                             (kp-subtract . hydra--negative-argument)
+                                             (kp-9 . hydra--digit-argument)
+                                             (kp-8 . hydra--digit-argument)
+                                             (kp-7 . hydra--digit-argument)
+                                             (kp-6 . hydra--digit-argument)
+                                             (kp-5 . hydra--digit-argument)
+                                             (kp-4 . hydra--digit-argument)
+                                             (kp-3 . hydra--digit-argument)
+                                             (kp-2 . hydra--digit-argument)
+                                             (kp-1 . hydra--digit-argument)
+                                             (kp-0 . hydra--digit-argument)
+                                             (57 . hydra--digit-argument)
+                                             (56 . hydra--digit-argument)
+                                             (55 . hydra--digit-argument)
+                                             (54 . hydra--digit-argument)
+                                             (53 . hydra--digit-argument)
+                                             (52 . hydra--digit-argument)
+                                             (51 . hydra--digit-argument)
+                                             (50 . hydra--digit-argument)
+                                             (49 . hydra--digit-argument)
+                                             (48 . hydra--digit-argument)
+                                             (45 . hydra--negative-argument)
+                                             (21 . hydra--universal-argument))))
+                        t))))
+        (defun hydra-vi/previous-line nil "Create a hydra with no body and the heads:
 
-\"l\":    `forward-char',
-\"h\":    `backward-char',
 \"j\":    `next-line',
 \"k\":    `previous-line',
 \"q\":    `nil'
@@ -565,65 +440,60 @@ Call the head: `next-line'."
 The body can be accessed via `hydra-vi/body'.
 
 Call the head: `previous-line'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
-             (catch (quote hydra-disable)
+               (interactive)
+               (set-cursor-color "#e52b50")
                (hydra-disable)
-               (condition-case err (prog1 t (call-interactively (function previous-line)))
-                 ((debug error)
-                  (message "%S" err)
-                  (sit-for 0.8)
-                  nil))
-               (when hydra-is-helpful (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                 7 8 (face hydra-face-amaranth)
-                                                 10 11 (face hydra-face-amaranth)
-                                                 13 14 (face hydra-face-amaranth)
-                                                 17 18 (face hydra-face-blue))))
-               (setq hydra-last
-                     (hydra-set-transient-map
-                      (setq hydra-curr-map
-                            (quote (keymap (t lambda nil (interactive)
-                                              (message "An amaranth Hydra can only exit through a blue head")
-                                              (hydra-set-transient-map hydra-curr-map t)
-                                              (when hydra-is-helpful (sit-for 0.8)
-                                                    (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                               7 8 (face hydra-face-amaranth)
-                                                               10 11 (face hydra-face-amaranth)
-                                                               13 14 (face hydra-face-amaranth)
-                                                               17 18 (face hydra-face-blue)))))
-                                           (113 . hydra-vi/nil)
-                                           (107 . hydra-vi/previous-line)
-                                           (106 . hydra-vi/next-line)
-                                           (104 . hydra-vi/backward-char)
-                                           (108 . hydra-vi/forward-char)
-                                           (kp-subtract . hydra--negative-argument)
-                                           (kp-9 . hydra--digit-argument)
-                                           (kp-8 . hydra--digit-argument)
-                                           (kp-7 . hydra--digit-argument)
-                                           (kp-6 . hydra--digit-argument)
-                                           (kp-5 . hydra--digit-argument)
-                                           (kp-4 . hydra--digit-argument)
-                                           (kp-3 . hydra--digit-argument)
-                                           (kp-2 . hydra--digit-argument)
-                                           (kp-1 . hydra--digit-argument)
-                                           (kp-0 . hydra--digit-argument)
-                                           (57 . hydra--digit-argument)
-                                           (56 . hydra--digit-argument)
-                                           (55 . hydra--digit-argument)
-                                           (54 . hydra--digit-argument)
-                                           (53 . hydra--digit-argument)
-                                           (52 . hydra--digit-argument)
-                                           (51 . hydra--digit-argument)
-                                           (50 . hydra--digit-argument)
-                                           (49 . hydra--digit-argument)
-                                           (48 . hydra--digit-argument)
-                                           (45 . hydra--negative-argument)
-                                           (21 . hydra--universal-argument))))
-                      t (lambda nil (set-cursor-color "#ffffff"))))))
-      (defun hydra-vi/nil nil "Create a hydra with no body and the heads:
+               (catch (quote hydra-disable)
+                 (condition-case err (prog1 t (call-interactively (function previous-line)))
+                   ((debug error)
+                    (message "%S" err)
+                    (sit-for 0.8)
+                    nil))
+                 (when hydra-is-helpful (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                   7 8 (face hydra-face-amaranth)
+                                                   11 12 (face hydra-face-blue))))
+                 (setq hydra-last
+                       (hydra-set-transient-map
+                        (setq hydra-curr-map
+                              (quote (keymap (7 lambda nil (interactive)
+                                                (hydra-disable)
+                                                (set-cursor-color "#ffffff"))
+                                             (t lambda nil (interactive)
+                                                (message "An amaranth Hydra can only exit through a blue head")
+                                                (hydra-set-transient-map hydra-curr-map t)
+                                                (when hydra-is-helpful (sit-for 0.8)
+                                                      (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                                 7 8 (face hydra-face-amaranth)
+                                                                 11 12 (face hydra-face-blue)))))
+                                             (113 . hydra-vi/nil)
+                                             (107 . hydra-vi/previous-line)
+                                             (106 . hydra-vi/next-line)
+                                             (kp-subtract . hydra--negative-argument)
+                                             (kp-9 . hydra--digit-argument)
+                                             (kp-8 . hydra--digit-argument)
+                                             (kp-7 . hydra--digit-argument)
+                                             (kp-6 . hydra--digit-argument)
+                                             (kp-5 . hydra--digit-argument)
+                                             (kp-4 . hydra--digit-argument)
+                                             (kp-3 . hydra--digit-argument)
+                                             (kp-2 . hydra--digit-argument)
+                                             (kp-1 . hydra--digit-argument)
+                                             (kp-0 . hydra--digit-argument)
+                                             (57 . hydra--digit-argument)
+                                             (56 . hydra--digit-argument)
+                                             (55 . hydra--digit-argument)
+                                             (54 . hydra--digit-argument)
+                                             (53 . hydra--digit-argument)
+                                             (52 . hydra--digit-argument)
+                                             (51 . hydra--digit-argument)
+                                             (50 . hydra--digit-argument)
+                                             (49 . hydra--digit-argument)
+                                             (48 . hydra--digit-argument)
+                                             (45 . hydra--negative-argument)
+                                             (21 . hydra--universal-argument))))
+                        t))))
+        (defun hydra-vi/nil nil "Create a hydra with no body and the heads:
 
-\"l\":    `forward-char',
-\"h\":    `backward-char',
 \"j\":    `next-line',
 \"k\":    `previous-line',
 \"q\":    `nil'
@@ -631,66 +501,66 @@ Call the head: `previous-line'."
 The body can be accessed via `hydra-vi/body'.
 
 Call the head: `nil'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
-             (hydra-disable)
-             (set-cursor-color "#ffffff"))
-      (defun hydra-vi/body nil "Create a hydra with no body and the heads:
+               (interactive)
+               (set-cursor-color "#e52b50")
+               (hydra-disable)
+               (catch (quote hydra-disable)
+                 (set-cursor-color "#ffffff")))
+        (defun hydra-vi/body nil "Create a hydra with no body and the heads:
 
-\"l\":    `forward-char',
-\"h\":    `backward-char',
 \"j\":    `next-line',
 \"k\":    `previous-line',
 \"q\":    `nil'
 
 The body can be accessed via `hydra-vi/body'."
-             (interactive)
-             (set-cursor-color "#40e0d0")
-             (when hydra-is-helpful (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                               7 8 (face hydra-face-amaranth)
-                                               10 11 (face hydra-face-amaranth)
-                                               13 14 (face hydra-face-amaranth)
-                                               17 18 (face hydra-face-blue))))
-             (setq hydra-last
-                   (hydra-set-transient-map
-                    (quote (keymap (t lambda nil (interactive)
-                                      (message "An amaranth Hydra can only exit through a blue head")
-                                      (hydra-set-transient-map hydra-curr-map t)
-                                      (when hydra-is-helpful (sit-for 0.8)
-                                            (message #("vi: l, h, j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
-                                                       7 8 (face hydra-face-amaranth)
-                                                       10 11 (face hydra-face-amaranth)
-                                                       13 14 (face hydra-face-amaranth)
-                                                       17 18 (face hydra-face-blue)))))
-                                   (113 . hydra-vi/nil)
-                                   (107 . hydra-vi/previous-line)
-                                   (106 . hydra-vi/next-line)
-                                   (104 . hydra-vi/backward-char)
-                                   (108 . hydra-vi/forward-char)
-                                   (kp-subtract . hydra--negative-argument)
-                                   (kp-9 . hydra--digit-argument)
-                                   (kp-8 . hydra--digit-argument)
-                                   (kp-7 . hydra--digit-argument)
-                                   (kp-6 . hydra--digit-argument)
-                                   (kp-5 . hydra--digit-argument)
-                                   (kp-4 . hydra--digit-argument)
-                                   (kp-3 . hydra--digit-argument)
-                                   (kp-2 . hydra--digit-argument)
-                                   (kp-1 . hydra--digit-argument)
-                                   (kp-0 . hydra--digit-argument)
-                                   (57 . hydra--digit-argument)
-                                   (56 . hydra--digit-argument)
-                                   (55 . hydra--digit-argument)
-                                   (54 . hydra--digit-argument)
-                                   (53 . hydra--digit-argument)
-                                   (52 . hydra--digit-argument)
-                                   (51 . hydra--digit-argument)
-                                   (50 . hydra--digit-argument)
-                                   (49 . hydra--digit-argument)
-                                   (48 . hydra--digit-argument)
-                                   (45 . hydra--negative-argument)
-                                   (21 . hydra--universal-argument)))
-                    t (lambda nil (set-cursor-color "#ffffff")))))))))
+               (interactive)
+               (set-cursor-color "#e52b50")
+               (hydra-disable)
+               (catch (quote hydra-disable)
+                 (when hydra-is-helpful (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                   7 8 (face hydra-face-amaranth)
+                                                   11 12 (face hydra-face-blue))))
+                 (setq hydra-last
+                       (hydra-set-transient-map
+                        (setq hydra-curr-map
+                              (quote (keymap (7 lambda nil (interactive)
+                                                (hydra-disable)
+                                                (set-cursor-color "#ffffff"))
+                                             (t lambda nil (interactive)
+                                                (message "An amaranth Hydra can only exit through a blue head")
+                                                (hydra-set-transient-map hydra-curr-map t)
+                                                (when hydra-is-helpful (sit-for 0.8)
+                                                      (message #("vi: j, k, [q]: quit." 4 5 (face hydra-face-amaranth)
+                                                                 7 8 (face hydra-face-amaranth)
+                                                                 11 12 (face hydra-face-blue)))))
+                                             (113 . hydra-vi/nil)
+                                             (107 . hydra-vi/previous-line)
+                                             (106 . hydra-vi/next-line)
+                                             (kp-subtract . hydra--negative-argument)
+                                             (kp-9 . hydra--digit-argument)
+                                             (kp-8 . hydra--digit-argument)
+                                             (kp-7 . hydra--digit-argument)
+                                             (kp-6 . hydra--digit-argument)
+                                             (kp-5 . hydra--digit-argument)
+                                             (kp-4 . hydra--digit-argument)
+                                             (kp-3 . hydra--digit-argument)
+                                             (kp-2 . hydra--digit-argument)
+                                             (kp-1 . hydra--digit-argument)
+                                             (kp-0 . hydra--digit-argument)
+                                             (57 . hydra--digit-argument)
+                                             (56 . hydra--digit-argument)
+                                             (55 . hydra--digit-argument)
+                                             (54 . hydra--digit-argument)
+                                             (53 . hydra--digit-argument)
+                                             (52 . hydra--digit-argument)
+                                             (51 . hydra--digit-argument)
+                                             (50 . hydra--digit-argument)
+                                             (49 . hydra--digit-argument)
+                                             (48 . hydra--digit-argument)
+                                             (45 . hydra--negative-argument)
+                                             (21 . hydra--universal-argument))))
+                        t))
+                 (setq prefix-arg current-prefix-arg))))))))
 
 (provide 'hydra-test)