branch: master commit 926d9a4b28032cdfbcade78468e78ff33f2cfd9b Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
Add pink body color * hydra.el (hydra-face-pink): New face. (hydra--face): Update. (defhydra): Pink is a variation on amaranth. It still intercepts all bindings, but will call the intercepted bindings if they're valid. Re #38. --- hydra.el | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) diff --git a/hydra.el b/hydra.el index f4c0842..ff03722 100644 --- a/hydra.el +++ b/hydra.el @@ -116,6 +116,10 @@ It's possible to set this to nil.") (defface hydra-face-amaranth '((t (:foreground "#E52B50" :bold t))) "Amaranth Hydra can exit only through a blue head.") + +(defface hydra-face-pink + '((t (:foreground "#FF6EB4" :bold t))) + "Amaranth Hydra can exit only through a blue head.") ;;* Fontification (defun hydra-add-font-lock () "Fontify `defhydra' statements." @@ -223,6 +227,7 @@ Return DEFAULT if PROP is not in H." (blue 'hydra-face-blue) (red 'hydra-face-red) (amaranth 'hydra-face-amaranth) + (pink 'hydra-face-pink) (t (error "Unknown color for %S" h)))) (defun hydra--hint (docstring heads body-color) @@ -430,7 +435,7 @@ result of `defhydra'." (setq body-pre `(funcall #',body-pre))) (when (and body-post (symbolp body-post)) (setq body-post `(funcall #',body-post))) - (when (eq body-color 'amaranth) + (when (memq body-color '(amaranth pink)) (if (cl-some `(lambda (h) (eq (hydra--color h ',body-color) 'blue)) heads) @@ -438,17 +443,22 @@ result of `defhydra'." (when (cl-some `(lambda (h) (eq (hydra--color h ',body-color) 'red)) heads) - (warn "Amaranth body color: upgrading all red heads to amaranth")) + (warn "%S body color: upgrading all red heads to %S" body-color body-color)) (define-key keymap [t] `(lambda () (interactive) - (message "An amaranth Hydra can only exit through a blue head") + ,@(if (eq body-color 'amaranth) + '((message "An amaranth Hydra can only exit through a blue head")) + '((let ((kb (key-binding (this-command-keys)))) + (if kb + (call-interactively kb) + (message "A pink Hydra can only exit through a blue head"))))) (hydra-set-transient-map hydra-curr-map t) (when hydra-is-helpful (unless hydra-lv (sit-for 0.8)) (,hint-name))))) - (error "An amaranth Hydra must have at least one blue head in order to exit")) + (error "An %S Hydra must have at least one blue head in order to exit" body-color)) (when hydra-keyboard-quit (define-key keymap hydra-keyboard-quit `(lambda ()