Don't bind `hydra-keyboard-quit' in foreign keymaps

* hydra.el (defhydra): Update.

Fixes #78.
master
Oleh Krehel 11 years ago
parent 97d6987bb5
commit d44bf581d2
  1. 51
      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))

Loading…
Cancel
Save