[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master bb01930 09/17: Fix "catch 'hydra-disable"
From: |
Oleh Krehel |
Subject: |
[elpa] master bb01930 09/17: Fix "catch 'hydra-disable" |
Date: |
Tue, 10 Feb 2015 07:13:25 +0000 |
branch: master
commit bb01930bb74db39bbcf6ca014bc4d7607b1762c7
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
Fix "catch 'hydra-disable"
* hydra.el (hydra--make-defun): `(catch 'hydra-disable ...)' should
extend thoughout the whole defun. The scope was reduced by mistake
earlier, now restoring.
* hydra-test.el: Update tests.
---
hydra-test.el | 779 +++++++++++++++++++++++----------------------------------
hydra.el | 35 ++--
2 files changed, 329 insertions(+), 485 deletions(-)
diff --git a/hydra-test.el b/hydra-test.el
index 5e7c0d4..4376ab3 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -46,46 +46,46 @@ 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)
(sit-for 0.8)
- nil)))
- (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)))
+ nil))
+ (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))))
(defun hydra-error/next-error nil "Create a hydra with a \"M-g\" body
and the heads:
\"h\": `first-error',
@@ -96,46 +96,46 @@ 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)
(sit-for 0.8)
- nil)))
- (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)))
+ nil))
+ (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))))
(defun hydra-error/previous-error nil "Create a hydra with a \"M-g\"
body and the heads:
\"h\": `first-error',
@@ -146,46 +146,46 @@ 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)
(sit-for 0.8)
- nil)))
- (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)))
+ nil))
+ (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))))
(unless (keymapp (lookup-key global-map (kbd "M-g")))
(define-key global-map (kbd "M-g")
nil))
@@ -203,39 +203,41 @@ 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
- (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)))))))
+ (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))))))))
(ert-deftest hydra-blue-toggle ()
(should
@@ -260,7 +262,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',
@@ -273,7 +276,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',
@@ -286,7 +290,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',
@@ -298,7 +303,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',
@@ -308,105 +314,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
- (setq hydra-curr-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 ()
- (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"
- ("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 "#e52b50")
- (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))))
+ (hydra-disable)
+ (catch (quote hydra-disable)
+ (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 (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: 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)
@@ -430,80 +350,26 @@ Call the head: `forward-char'."
(48 . hydra--digit-argument)
(45 . hydra--negative-argument)
(21 . hydra--universal-argument))))
- t)))
- (defun hydra-vi/backward-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'.
+ t))))))))
-Call the head: `backward-char'."
- (interactive)
- (set-cursor-color "#e52b50")
- (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 (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: 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)))
+(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'
@@ -513,66 +379,58 @@ The body can be accessed via `hydra-vi/body'.
Call the head: `next-line'."
(interactive)
(set-cursor-color "#e52b50")
+ (hydra-disable)
(catch (quote hydra-disable)
- (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 (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: 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)))
+ 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'
@@ -582,66 +440,58 @@ The body can be accessed via `hydra-vi/body'.
Call the head: `previous-line'."
(interactive)
(set-cursor-color "#e52b50")
+ (hydra-disable)
(catch (quote hydra-disable)
- (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 (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: 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)))
+ 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'
@@ -652,11 +502,10 @@ Call the head: `nil'."
(interactive)
(set-cursor-color "#e52b50")
(hydra-disable)
- (set-cursor-color "#ffffff"))
+ (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'
@@ -664,55 +513,51 @@ Call the head: `nil'."
The body can be accessed via `hydra-vi/body'."
(interactive)
(set-cursor-color "#e52b50")
- (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 (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: 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))))))))
+ (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)))))))))
(provide 'hydra-test)
diff --git a/hydra.el b/hydra.el
index b8eef4a..86abcfc 100644
--- a/hydra.el
+++ b/hydra.el
@@ -247,29 +247,28 @@ BODY-COLOR, BODY-PRE, and BODY-POST are used as well."
,doc
(interactive)
,@(when body-pre (list body-pre))
- ,@(delq nil
- (if (eq color 'blue)
- `((hydra-disable)
- ,(when cmd `(call-interactively #',cmd))
- ,body-post)
- `(,(when cmd
- `(catch 'hydra-disable
- (hydra-disable)
- (condition-case err
+ (hydra-disable)
+ (catch 'hydra-disable
+ ,@(delq nil
+ (if (eq color 'blue)
+ `(,(when cmd `(call-interactively #',cmd))
+ ,body-post)
+ `(,(when cmd
+ `(condition-case err
(prog1 t
(call-interactively #',cmd))
((debug error)
(message "%S" err)
(sit-for 0.8)
- nil))))
- (when hydra-is-helpful
- (message ,hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map ',keymap)
- t
- ,@(if (and (not (eq body-color 'amaranth)) body-post)
- `((lambda () ,body-post))))))))))
+ nil)))
+ (when hydra-is-helpful
+ (message ,hint))
+ (setq hydra-last
+ (hydra-set-transient-map
+ (setq hydra-curr-map ',keymap)
+ t
+ ,@(if (and (not (eq body-color 'amaranth))
body-post)
+ `((lambda () ,body-post)))))))))))
;;* Macros
;;** hydra-create
- [elpa] master 9a8e2f1 04/17: hydra.el (hydra-keyboard-quit): New custom var, (continued)
- [elpa] master 9a8e2f1 04/17: hydra.el (hydra-keyboard-quit): New custom var, Oleh Krehel, 2015/02/10
- [elpa] master 9b31ead 08/17: Update semantics for local heads to `:bind nil', Oleh Krehel, 2015/02/10
- [elpa] master 969fa66 10/17: fix typo - single not singe, Oleh Krehel, 2015/02/10
- [elpa] master d41be74 11/17: `hydra/body' will pass the initial `current-prefix-arg' along, Oleh Krehel, 2015/02/10
- [elpa] master ad771a4 03/17: Move defun-creating code into a defun, Oleh Krehel, 2015/02/10
- [elpa] master 763bb2a 13/17: Allow lambda :bind property for body and heads, Oleh Krehel, 2015/02/10
- [elpa] master 0712a43 12/17: README.md: update, Oleh Krehel, 2015/02/10
- [elpa] master d10c26e 14/17: Update comments and mark the old examples obsolete, Oleh Krehel, 2015/02/10
- [elpa] master 0c08964 16/17: README.md: update, Oleh Krehel, 2015/02/10
- [elpa] master 4ca646e 15/17: Allow a sexp as head's CMD paramater, Oleh Krehel, 2015/02/10
- [elpa] master bb01930 09/17: Fix "catch 'hydra-disable",
Oleh Krehel <=
- [elpa] master 11b130e 17/17: Merge commit '0c08964462812942db51d177e6ea922b26019e65' from hydra, Oleh Krehel, 2015/02/10