emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master d44bf58 22/28: Don't bind `hydra-keyboard-quit' in foreign


From: Oleh Krehel
Subject: [elpa] master d44bf58 22/28: Don't bind `hydra-keyboard-quit' in foreign keymaps
Date: Sun, 22 Mar 2015 16:34:46 +0000

branch: master
commit d44bf581d2c9cb831ccc5ac0fff24be4c36b8eed
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Don't bind `hydra-keyboard-quit' in foreign keymaps
    
    * hydra.el (defhydra): Update.
    
    Fixes #78.
---
 hydra.el |   51 ++++++++++++++++++++++++++-------------------------
 1 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/hydra.el b/hydra.el
index 975bff7..2680f38 100644
--- 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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]