[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master d0cc1c5 01/45: Define a keymap var for each hydra and re-u
From: |
Oleh Krehel |
Subject: |
[elpa] master d0cc1c5 01/45: Define a keymap var for each hydra and re-use it |
Date: |
Thu, 16 Apr 2015 12:45:39 +0000 |
branch: master
commit d0cc1c5f5b3bfdf1b92e359d8ca6259345c1db0d
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
Define a keymap var for each hydra and re-use it
* hydra.el (hydra--make-defun): It will receive not the keymap, but the
variable that hold the keymap.
(defhydra): Define keymap as a variable.
* hydra-test.el (hydra-red-error): Update test.
(hydra-blue-toggle): Update test.
(hydra-amaranth-vi): Update test.
(hydra-zoom-duplicate-1): Update test.
(hydra-zoom-duplicate-2): Update test.
---
hydra-test.el | 620 ++++++++++++++++++---------------------------------------
hydra.el | 17 +-
2 files changed, 207 insertions(+), 430 deletions(-)
diff --git a/hydra-test.el b/hydra-test.el
index 155c047..9fc4ad0 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -37,6 +37,37 @@
("k" previous-error "prev")
("SPC" hydra-repeat "rep" :bind nil)))
'(progn
+ (defvar hydra-error/keymap
+ (quote (keymap (7 . hydra-keyboard-quit)
+ (32 . hydra-repeat)
+ (107 . hydra-error/previous-error)
+ (106 . hydra-error/next-error)
+ (104 . hydra-error/first-error)
+ (switch-frame . hydra--handle-switch-frame)
+ (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)))
+ "Keymap for hydra-error.")
(defun hydra-error/first-error nil "Create a hydra with a \"M-g\" body
and the heads:
\"h\": `first-error',
@@ -51,45 +82,13 @@ Call the head: `first-error'."
(hydra-default-pre)
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
first-error)))
+ (condition-case err (call-interactively (function first-error))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-error/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (32 . hydra-repeat)
- (107 . hydra-error/previous-error)
- (106 . hydra-error/next-error)
- (104 . hydra-error/first-error)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-error/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-error/next-error nil "Create a hydra with a \"M-g\" body
and the heads:
\"h\": `first-error',
@@ -104,45 +103,13 @@ Call the head: `next-error'."
(hydra-default-pre)
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
next-error)))
+ (condition-case err (call-interactively (function next-error))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-error/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (32 . hydra-repeat)
- (107 . hydra-error/previous-error)
- (106 . hydra-error/next-error)
- (104 . hydra-error/first-error)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-error/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-error/previous-error nil "Create a hydra with a \"M-g\"
body and the heads:
\"h\": `first-error',
@@ -157,54 +124,22 @@ Call the head: `previous-error'."
(hydra-default-pre)
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
previous-error)))
+ (condition-case err (call-interactively (function
previous-error))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-error/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (32 . hydra-repeat)
- (107 . hydra-error/previous-error)
- (106 . hydra-error/next-error)
- (104 . hydra-error/first-error)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-error/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(unless (keymapp (lookup-key global-map (kbd "M-g")))
(define-key global-map (kbd "M-g")
nil))
(define-key global-map [134217831 104]
- (function hydra-error/first-error))
+ (function hydra-error/first-error))
(define-key global-map [134217831 106]
- (function hydra-error/next-error))
+ (function hydra-error/next-error))
(define-key global-map [134217831 107]
- (function hydra-error/previous-error))
+ (function hydra-error/previous-error))
(defun hydra-error/hint nil
(if hydra-lv (lv-message (format #("error: [h]: first, [j]: next, [k]:
prev, [SPC]: rep." 8 9 (face hydra-face-red)
20 21 (face hydra-face-red)
@@ -227,39 +162,8 @@ The body can be accessed via `hydra-error/body'."
(hydra-disable)
(catch (quote hydra-disable)
(when hydra-is-helpful (hydra-error/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (32 . hydra-repeat)
- (107 . hydra-error/previous-error)
- (106 . hydra-error/next-error)
- (104 . hydra-error/first-error)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-error/keymap)
+ t (lambda nil
(hydra-cleanup))))
(setq prefix-arg current-prefix-arg)))))))
(ert-deftest hydra-blue-toggle ()
@@ -273,6 +177,37 @@ The body can be accessed via `hydra-error/body'."
("a" abbrev-mode "abbrev")
("q" nil "cancel")))
'(progn
+ (defvar hydra-toggle/keymap
+ (quote (keymap (7 . hydra-keyboard-quit)
+ (113 . hydra-toggle/nil)
+ (97 . hydra-toggle/abbrev-mode-and-exit)
+ (102 . hydra-toggle/auto-fill-mode-and-exit)
+ (116 . hydra-toggle/toggle-truncate-lines-and-exit)
+ (switch-frame . hydra--handle-switch-frame)
+ (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)))
+ "Keymap for hydra-toggle.")
(defun hydra-toggle/toggle-truncate-lines-and-exit nil "Create a hydra
with no body and the heads:
\"t\": `toggle-truncate-lines',
@@ -358,39 +293,8 @@ The body can be accessed via `hydra-toggle/body'."
(hydra-disable)
(catch (quote hydra-disable)
(when hydra-is-helpful (hydra-toggle/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (113 . hydra-toggle/nil)
- (97 .
hydra-toggle/abbrev-mode-and-exit)
- (102 .
hydra-toggle/auto-fill-mode-and-exit)
- (116 .
hydra-toggle/toggle-truncate-lines-and-exit)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-toggle/keymap)
+ t (lambda nil
(hydra-cleanup))))
(setq prefix-arg current-prefix-arg)))))))
(ert-deftest hydra-amaranth-vi ()
@@ -408,6 +312,41 @@ The body can be accessed via `hydra-toggle/body'."
("k" previous-line)
("q" nil "quit")))
'(progn
+ (defvar hydra-vi/keymap
+ (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 (unless hydra-lv (sit-for
0.8))
+ (hydra-vi/hint)))
+ (113 . hydra-vi/nil)
+ (107 . hydra-vi/previous-line)
+ (106 . hydra-vi/next-line)
+ (7 . hydra-vi/hydra-keyboard-quit-and-exit)
+ (switch-frame . hydra--handle-switch-frame)
+ (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)))
+ "Keymap for hydra-vi.")
(defun hydra-vi/hydra-keyboard-quit-and-exit nil "Create a hydra with no
body and the heads:
\"\": `hydra-keyboard-quit',
@@ -441,49 +380,13 @@ Call the head: `next-line'."
(set-cursor-color "#e52b50")
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
next-line)))
+ (condition-case err (call-interactively (function next-line))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-vi/hint))
- (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 (unless
hydra-lv (sit-for 0.8))
- (hydra-vi/hint)))
- (113 . hydra-vi/nil)
- (107 . hydra-vi/previous-line)
- (106 . hydra-vi/next-line)
- (7 .
hydra-vi/hydra-keyboard-quit-and-exit)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-vi/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-vi/previous-line nil "Create a hydra with no body and the
heads:
\"\": `hydra-keyboard-quit',
@@ -499,49 +402,13 @@ Call the head: `previous-line'."
(set-cursor-color "#e52b50")
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
previous-line)))
+ (condition-case err (call-interactively (function
previous-line))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-vi/hint))
- (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 (unless
hydra-lv (sit-for 0.8))
- (hydra-vi/hint)))
- (113 . hydra-vi/nil)
- (107 . hydra-vi/previous-line)
- (106 . hydra-vi/next-line)
- (7 .
hydra-vi/hydra-keyboard-quit-and-exit)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-vi/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-vi/nil nil "Create a hydra with no body and the heads:
\"\": `hydra-keyboard-quit',
@@ -580,43 +447,8 @@ The body can be accessed via `hydra-vi/body'."
(hydra-disable)
(catch (quote hydra-disable)
(when hydra-is-helpful (hydra-vi/hint))
- (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 (unless
hydra-lv (sit-for 0.8))
- (hydra-vi/hint)))
- (113 . hydra-vi/nil)
- (107 . hydra-vi/previous-line)
- (106 . hydra-vi/next-line)
- (7 .
hydra-vi/hydra-keyboard-quit-and-exit)
- (switch-frame .
hydra--handle-switch-frame)
- (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 (hydra-cleanup))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-vi/keymap)
+ t (lambda nil
(hydra-cleanup))))
(setq prefix-arg current-prefix-arg)))))))
(ert-deftest defhydradio ()
@@ -906,6 +738,34 @@ _f_ auto-fill-mode: %`auto-fill-function
("0" (text-scale-set 0) :bind nil :exit t)
("1" (text-scale-set 0) nil :bind nil :exit t)))
'(progn
+ (defvar hydra-zoom/keymap
+ (quote (keymap (7 . hydra-keyboard-quit)
+ (114 . hydra-zoom/lambda-r)
+ (switch-frame . hydra--handle-switch-frame)
+ (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-zoom/lambda-0-and-exit)
+ (48 . hydra-zoom/lambda-0-and-exit)
+ (45 . hydra--negative-argument)
+ (21 . hydra--universal-argument)))
+ "Keymap for hydra-zoom.")
(defun hydra-zoom/lambda-r nil "Create a hydra with no body and the
heads:
\"r\": `(text-scale-set 0)',
@@ -919,43 +779,14 @@ Call the head: `(text-scale-set 0)'."
(hydra-default-pre)
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
(lambda nil (interactive)
-
(text-scale-set 0)))))
+ (condition-case err (call-interactively (function (lambda nil
(interactive)
+
(text-scale-set 0))))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-zoom/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (114 . hydra-zoom/lambda-r)
- (switch-frame .
hydra--handle-switch-frame)
- (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-zoom/lambda-0-and-exit)
- (48 . hydra-zoom/lambda-0-and-exit)
- (45 . hydra--negative-argument)
- (21 . hydra--universal-argument))))
- t (lambda nil (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-zoom/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-zoom/lambda-0-and-exit nil "Create a hydra with no body and
the heads:
\"r\": `(text-scale-set 0)',
@@ -989,36 +820,8 @@ The body can be accessed via `hydra-zoom/body'."
(hydra-disable)
(catch (quote hydra-disable)
(when hydra-is-helpful (hydra-zoom/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (114 . hydra-zoom/lambda-r)
- (switch-frame .
hydra--handle-switch-frame)
- (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-zoom/lambda-0-and-exit)
- (48 . hydra-zoom/lambda-0-and-exit)
- (45 . hydra--negative-argument)
- (21 . hydra--universal-argument))))
- t (lambda nil (hydra-cleanup))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-zoom/keymap)
+ t (lambda nil
(hydra-cleanup))))
(setq prefix-arg current-prefix-arg)))))))
(ert-deftest hydra-zoom-duplicate-2 ()
@@ -1031,6 +834,34 @@ The body can be accessed via `hydra-zoom/body'."
("0" (text-scale-set 0) :bind nil :exit t)
("1" (text-scale-set 0) nil :bind nil)))
'(progn
+ (defvar hydra-zoom/keymap
+ (quote (keymap (7 . hydra-keyboard-quit)
+ (114 . hydra-zoom/lambda-r)
+ (switch-frame . hydra--handle-switch-frame)
+ (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-zoom/lambda-r)
+ (48 . hydra-zoom/lambda-0-and-exit)
+ (45 . hydra--negative-argument)
+ (21 . hydra--universal-argument)))
+ "Keymap for hydra-zoom.")
(defun hydra-zoom/lambda-r nil "Create a hydra with no body and the
heads:
\"r\": `(text-scale-set 0)',
@@ -1044,43 +875,14 @@ Call the head: `(text-scale-set 0)'."
(hydra-default-pre)
(hydra-disable)
(catch (quote hydra-disable)
- (condition-case err (prog1 t (call-interactively (function
(lambda nil (interactive)
-
(text-scale-set 0)))))
+ (condition-case err (call-interactively (function (lambda nil
(interactive)
+
(text-scale-set 0))))
((quit error)
(message "%S" err)
- (unless hydra-lv (sit-for 0.8))
- nil))
+ (unless hydra-lv (sit-for 0.8))))
(when hydra-is-helpful (hydra-zoom/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (114 . hydra-zoom/lambda-r)
- (switch-frame .
hydra--handle-switch-frame)
- (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-zoom/lambda-r)
- (48 . hydra-zoom/lambda-0-and-exit)
- (45 . hydra--negative-argument)
- (21 . hydra--universal-argument))))
- t (lambda nil (hydra-cleanup))))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-zoom/keymap)
+ t (lambda nil
(hydra-cleanup))))))
(defun hydra-zoom/lambda-0-and-exit nil "Create a hydra with no body and
the heads:
\"r\": `(text-scale-set 0)',
@@ -1096,7 +898,7 @@ Call the head: `(text-scale-set 0)'."
(hydra-cleanup)
(catch (quote hydra-disable)
(call-interactively (function (lambda nil (interactive)
- (text-scale-set 0))))))
+ (text-scale-set 0))))))
(defun hydra-zoom/hint nil
(if hydra-lv (lv-message (format #("zoom: [r 0]: reset." 7 8 (face
hydra-face-red)
9 10 (face hydra-face-blue))))
@@ -1114,36 +916,8 @@ The body can be accessed via `hydra-zoom/body'."
(hydra-disable)
(catch (quote hydra-disable)
(when hydra-is-helpful (hydra-zoom/hint))
- (setq hydra-last
- (hydra-set-transient-map
- (setq hydra-curr-map
- (quote (keymap (7 . hydra-keyboard-quit)
- (114 . hydra-zoom/lambda-r)
- (switch-frame .
hydra--handle-switch-frame)
- (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-zoom/lambda-r)
- (48 . hydra-zoom/lambda-0-and-exit)
- (45 . hydra--negative-argument)
- (21 . hydra--universal-argument))))
- t (lambda nil (hydra-cleanup))))
+ (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map
hydra-zoom/keymap)
+ t (lambda nil
(hydra-cleanup))))
(setq prefix-arg current-prefix-arg)))))))
(ert-deftest hydra--pad ()
diff --git a/hydra.el b/hydra.el
index 18233af..47badef 100644
--- a/hydra.el
+++ b/hydra.el
@@ -598,18 +598,16 @@ OTHER-POST is an optional extension to the :post key of
BODY."
,body-post)
`(,(when cmd
`(condition-case err
- (prog1 t
- (call-interactively #',cmd))
+ (call-interactively #',cmd)
((quit error)
(message "%S" err)
(unless hydra-lv
- (sit-for 0.8))
- nil)))
+ (sit-for 0.8)))))
(when hydra-is-helpful
(,hint))
(setq hydra-last
(hydra-set-transient-map
- (setq hydra-curr-map ',keymap)
+ (setq hydra-curr-map ,keymap)
t
,(if (and
(not (memq body-color
@@ -886,6 +884,7 @@ result of `defhydra'."
(when (keywordp (car body))
(setq body (cons nil (cons nil body))))
(let* ((keymap (copy-keymap hydra-base-map))
+ (keymap-name (intern (format "%S/keymap" name)))
(body-name (intern (format "%S/body" name)))
(body-key (cadr body))
(body-plist (cddr body))
@@ -930,10 +929,14 @@ result of `defhydra'."
(hydra--make-funcall body-body-pre)
(hydra--handle-nonhead keymap name body heads)
`(progn
+ ;; create keymap
+ (defvar ,keymap-name
+ ',keymap
+ ,(format "Keymap for %S." name))
;; create defuns
,@(mapcar
(lambda (head)
- (hydra--make-defun name body doc head keymap
+ (hydra--make-defun name body doc head keymap-name
body-pre body-post))
heads-nodup)
;; free up keymap prefix
@@ -970,7 +973,7 @@ result of `defhydra'."
,(hydra--message name body docstring heads))
,(hydra--make-defun
name body doc '(nil body)
- keymap
+ keymap-name
(or body-body-pre body-pre) body-post
'(setq prefix-arg current-prefix-arg))))))
- [elpa] master updated (22139ae -> f972634), Oleh Krehel, 2015/04/16
- [elpa] master cc6accd 04/45: hydra.el (hydra--digit-argument): Fix for Emacs 24.3, Oleh Krehel, 2015/04/16
- [elpa] master e4cae0a 03/45: hydra.el (defhydra): Simplify :cmd-name part, Oleh Krehel, 2015/04/16
- [elpa] master c06c006 02/45: Use set/defvar for keymap, Oleh Krehel, 2015/04/16
- [elpa] master e7aaafb 07/45: hydra.el (hydra-pink-fallback): Allow prefix arguments, Oleh Krehel, 2015/04/16
- [elpa] master d0cc1c5 01/45: Define a keymap var for each hydra and re-use it,
Oleh Krehel <=
- [elpa] master 666048c 10/45: Update testing setup, Oleh Krehel, 2015/04/16
- [elpa] master f9bf8fe 08/45: hydra.el (hydra-set-transient-map): Update, Oleh Krehel, 2015/04/16
- [elpa] master 60483cb 09/45: Add integration testing, Oleh Krehel, 2015/04/16
- [elpa] master 4dde4f7 11/45: hydra.el (hydra--format): Add some more symbols, Oleh Krehel, 2015/04/16
- [elpa] master 3fce2bd 12/45: Try to re-encode the input in the terminal, Oleh Krehel, 2015/04/16
- [elpa] master fa5643f 15/45: Quit Hydra for `handle-switch-frame', Oleh Krehel, 2015/04/16
- [elpa] master af39a98 14/45: Adapt to the new `hydra-set-transient-map', Oleh Krehel, 2015/04/16
- [elpa] master acdec5b 27/45: Add an integration test for digit args in amaranth, Oleh Krehel, 2015/04/16
- [elpa] master 1a54e09 05/45: hydra.el (hydra--make-funcall): Update location, Oleh Krehel, 2015/04/16
- [elpa] master b351b7c 24/45: hydra.el (hydra--body-color): Remove, Oleh Krehel, 2015/04/16