branch: master
commit 543e97b0c590afa640f0d815ba600f8b8a1890b8
Author: jhonnyseven <[email protected]>
Commit: Oleh Krehel <[email protected]>
Fix switch-frame handling.
Calling only `hydra-keyboard-quit' on switch-frame event was
effectively stopping the original frame switch. This change adds a
call to the original handler after calling `hydra-keyboard-quit'.
See #73
* hydra.el: Add `hydra--handle-switch-frame'
* hydra-test.el: Update
Fixes #77
---
hydra-test.el | 24 ++++++++++++------------
hydra.el | 8 +++++++-
2 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/hydra-test.el b/hydra-test.el
index f1edbb1..b908ac0 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -64,7 +64,7 @@ Call the head: `first-error'."
(107 . hydra-error/previous-error)
(106 . hydra-error/next-error)
(104 . hydra-error/first-error)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -116,7 +116,7 @@ Call the head: `next-error'."
(107 . hydra-error/previous-error)
(106 . hydra-error/next-error)
(104 . hydra-error/first-error)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -168,7 +168,7 @@ Call the head: `previous-error'."
(107 . hydra-error/previous-error)
(106 . hydra-error/next-error)
(104 . hydra-error/first-error)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -231,7 +231,7 @@ The body can be accessed via `hydra-error/body'."
(107 . hydra-error/previous-error)
(106 . hydra-error/next-error)
(104 . hydra-error/first-error)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -357,7 +357,7 @@ The body can be accessed via `hydra-toggle/body'."
(97 . hydra-toggle/abbrev-mode)
(102 . hydra-toggle/auto-fill-mode)
(116 .
hydra-toggle/toggle-truncate-lines)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -448,7 +448,7 @@ Call the head: `next-line'."
(107 . hydra-vi/previous-line)
(106 . hydra-vi/next-line)
(7 . hydra-vi/hydra-keyboard-quit)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -505,7 +505,7 @@ Call the head: `previous-line'."
(107 . hydra-vi/previous-line)
(106 . hydra-vi/next-line)
(7 . hydra-vi/hydra-keyboard-quit)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -578,7 +578,7 @@ The body can be accessed via `hydra-vi/body'."
(107 . hydra-vi/previous-line)
(106 . hydra-vi/next-line)
(7 . hydra-vi/hydra-keyboard-quit)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -863,7 +863,7 @@ Call the head: `(text-scale-set 0)'."
(setq hydra-curr-map
(quote (keymap (7 . hydra-keyboard-quit)
(114 . hydra-zoom/lambda-r)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -924,7 +924,7 @@ The body can be accessed via `hydra-zoom/body'."
(setq hydra-curr-map
(quote (keymap (7 . hydra-keyboard-quit)
(114 . hydra-zoom/lambda-r)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -985,7 +985,7 @@ Call the head: `(text-scale-set 0)'."
(setq hydra-curr-map
(quote (keymap (7 . hydra-keyboard-quit)
(114 . hydra-zoom/lambda-r)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
@@ -1046,7 +1046,7 @@ The body can be accessed via `hydra-zoom/body'."
(setq hydra-curr-map
(quote (keymap (7 . hydra-keyboard-quit)
(114 . hydra-zoom/lambda-r)
- (switch-frame . hydra-keyboard-quit)
+ (switch-frame .
hydra--handle-switch-frame)
(kp-subtract .
hydra--negative-argument)
(kp-9 . hydra--digit-argument)
(kp-8 . hydra--digit-argument)
diff --git a/hydra.el b/hydra.el
index f7b305c..975bff7 100644
--- a/hydra.el
+++ b/hydra.el
@@ -188,7 +188,7 @@ Vanquishable only through a blue head.")
(define-key map [kp-8] 'hydra--digit-argument)
(define-key map [kp-9] 'hydra--digit-argument)
(define-key map [kp-subtract] 'hydra--negative-argument)
- (define-key map [switch-frame] 'hydra-keyboard-quit)
+ (define-key map [switch-frame] 'hydra--handle-switch-frame)
map)
"Keymap that all Hydras inherit. See `universal-argument-map'.")
@@ -196,6 +196,12 @@ Vanquishable only through a blue head.")
(make-sparse-keymap)
"Keymap of the current Hydra called.")
+(defun hydra--handle-switch-frame (evt)
+ "Quit hydra and call old switch-frame event handler."
+ (interactive "e")
+ (hydra-keyboard-quit)
+ (funcall (lookup-key (current-global-map) [switch-frame]) evt))
+
(defun hydra--universal-argument (arg)
"Forward to (`universal-argument' ARG)."
(interactive "P")