]> code.delx.au - gnu-emacs-elpa/commitdiff
Fix switch-frame handling.
authorjhonnyseven <jhonnyseven@users.noreply.github.com>
Fri, 13 Mar 2015 14:12:21 +0000 (16:12 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Sat, 14 Mar 2015 08:31:09 +0000 (09:31 +0100)
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
hydra.el

index f1edbb184eba97020764155754da04e01c8eef87..b908ac0c8a862612d20f216d0e217bf6a558b6a2 100644 (file)
@@ -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)
index f7b305ceb9e42669be951b59790c69aa1d4876b1..975bff7b18ff823d1f77ff345ea7f1236a2e7d8d 100644 (file)
--- 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")