]> code.delx.au - gnu-emacs-elpa/commitdiff
Don't bind `hydra-keyboard-quit' in foreign keymaps
authorOleh Krehel <ohwoeowho@gmail.com>
Fri, 20 Mar 2015 14:01:13 +0000 (15:01 +0100)
committerOleh Krehel <ohwoeowho@gmail.com>
Fri, 20 Mar 2015 14:01:13 +0000 (15:01 +0100)
* hydra.el (defhydra): Update.

Fixes #78.

hydra.el

index 975bff7b18ff823d1f77ff345ea7f1236a2e7d8d..2680f386634702437776bec024724879435f2b80 100644 (file)
--- a/hydra.el
+++ b/hydra.el
@@ -908,31 +908,32 @@ result of `defhydra'."
                  (cl-mapcar
                   (lambda (head)
                     (let ((name (hydra--head-property head :cmd-name)))
-                      (when (cadr head)
-                        (when (or body-key method)
-                          (let ((bind (hydra--head-property head :bind 'default))
-                                (final-key
-                                 (if body-key
-                                     (vconcat (kbd body-key) (kbd (car head)))
-                                   (kbd (car head)))))
-                            (cond ((null bind) nil)
-
-                                  ((eq bind 'default)
-                                   (list
-                                    (if (hydra--callablep method)
-                                        'funcall
-                                      'define-key)
-                                    method
-                                    final-key
-                                    (list 'function name)))
-
-                                  ((hydra--callablep bind)
-                                   `(funcall (function ,bind)
-                                             ,final-key
-                                             (function ,name)))
-
-                                  (t
-                                   (error "Invalid :bind property %S" head))))))))
+                      (when (and (cadr head)
+                                 (not (eq (cadr head) 'hydra-keyboard-quit))
+                                 (or body-key method))
+                        (let ((bind (hydra--head-property head :bind 'default))
+                              (final-key
+                               (if body-key
+                                   (vconcat (kbd body-key) (kbd (car head)))
+                                 (kbd (car head)))))
+                          (cond ((null bind) nil)
+
+                                ((eq bind 'default)
+                                 (list
+                                  (if (hydra--callablep method)
+                                      'funcall
+                                    'define-key)
+                                  method
+                                  final-key
+                                  (list 'function name)))
+
+                                ((hydra--callablep bind)
+                                 `(funcall (function ,bind)
+                                           ,final-key
+                                           (function ,name)))
+
+                                (t
+                                 (error "Invalid :bind property %S" head)))))))
                   heads))
          (defun ,(intern (format "%S/hint" name)) ()
            ,(hydra--message name body docstring heads))