branch: master commit 81d88e4c11595c2d7003546e0afbbd03a5222a37 Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
hydra.el (hydra-show-hint): Extract from defhydra * hydra-test.el: Update tests. There should be no change in the behavior, but now the code that shows the hint is all conveniently in a single defun, instead of separately in each hydra's each head. --- hydra-test.el | 146 ++++++++++++++++++++-------------------------------------- hydra.el | 16 +++---- 2 files changed, 57 insertions(+), 105 deletions(-) diff --git a/hydra-test.el b/hydra-test.el index 03c20d4..1c14c70 100644 --- a/hydra-test.el +++ b/hydra-test.el @@ -121,20 +121,16 @@ Call the head: `first-error'." (setq hydra-curr-body-fn (quote hydra-error/body))) (condition-case err - (progn - (setq this-command - (quote first-error)) - (call-interactively - (function first-error))) - ((quit error) - (message "%S" err) - (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-error/hint)) - (message - (eval hydra-error/hint)))) + (progn + (setq this-command + (quote first-error)) + (call-interactively + (function first-error))) + ((quit error) + (message "%S" err) + (unless hydra-lv (sit-for 0.8)))) + (hydra-show-hint + hydra-error/hint) (hydra-set-transient-map hydra-error/keymap (lambda nil @@ -159,20 +155,16 @@ Call the head: `next-error'." (setq hydra-curr-body-fn (quote hydra-error/body))) (condition-case err - (progn - (setq this-command - (quote next-error)) - (call-interactively - (function next-error))) - ((quit error) - (message "%S" err) - (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-error/hint)) - (message - (eval hydra-error/hint)))) + (progn + (setq this-command + (quote next-error)) + (call-interactively + (function next-error))) + ((quit error) + (message "%S" err) + (unless hydra-lv (sit-for 0.8)))) + (hydra-show-hint + hydra-error/hint) (hydra-set-transient-map hydra-error/keymap (lambda nil @@ -197,20 +189,16 @@ Call the head: `previous-error'." (setq hydra-curr-body-fn (quote hydra-error/body))) (condition-case err - (progn - (setq this-command - (quote previous-error)) - (call-interactively - (function previous-error))) - ((quit error) - (message "%S" err) - (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-error/hint)) - (message - (eval hydra-error/hint)))) + (progn + (setq this-command + (quote previous-error)) + (call-interactively + (function previous-error))) + ((quit error) + (message "%S" err) + (unless hydra-lv (sit-for 0.8)))) + (hydra-show-hint + hydra-error/hint) (hydra-set-transient-map hydra-error/keymap (lambda nil @@ -224,12 +212,12 @@ Call the head: `previous-error'." (define-key global-map (kbd "M-g") nil)) (define-key global-map [134217831 104] - (quote hydra-error/first-error)) + (quote hydra-error/first-error)) (define-key global-map [134217831 106] - (quote hydra-error/next-error)) + (quote hydra-error/next-error)) (define-key global-map [134217831 107] - (quote - hydra-error/previous-error)) + (quote + hydra-error/previous-error)) (defun hydra-error/body nil "Create a hydra with a \"M-g\" body and the heads: @@ -245,12 +233,8 @@ The body can be accessed via `hydra-error/body'." (hydra-keyboard-quit) (setq hydra-curr-body-fn (quote hydra-error/body))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-error/hint)) - (message - (eval hydra-error/hint)))) + (hydra-show-hint + hydra-error/hint) (hydra-set-transient-map hydra-error/keymap (lambda nil @@ -425,12 +409,8 @@ The body can be accessed via `hydra-toggle/body'." (hydra-keyboard-quit) (setq hydra-curr-body-fn (quote hydra-toggle/body))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-toggle/hint)) - (message - (eval hydra-toggle/hint)))) + (hydra-show-hint + hydra-toggle/hint) (hydra-set-transient-map hydra-toggle/keymap (lambda nil @@ -531,11 +511,7 @@ Call the head: `next-line'." ((quit error) (message "%S" err) (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-vi/hint)) - (message (eval hydra-vi/hint)))) + (hydra-show-hint hydra-vi/hint) (hydra-set-transient-map hydra-vi/keymap (lambda nil @@ -568,11 +544,7 @@ Call the head: `previous-line'." ((quit error) (message "%S" err) (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-vi/hint)) - (message (eval hydra-vi/hint)))) + (hydra-show-hint hydra-vi/hint) (hydra-set-transient-map hydra-vi/keymap (lambda nil @@ -610,11 +582,7 @@ The body can be accessed via `hydra-vi/body'." (hydra-keyboard-quit) (setq hydra-curr-body-fn (quote hydra-vi/body))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-vi/hint)) - (message (eval hydra-vi/hint)))) + (hydra-show-hint hydra-vi/hint) (hydra-set-transient-map hydra-vi/keymap (lambda nil @@ -714,12 +682,8 @@ Call the head: `(text-scale-set 0)'." ((quit error) (message "%S" err) (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-zoom/hint)) - (message - (eval hydra-zoom/hint)))) + (hydra-show-hint + hydra-zoom/hint) (hydra-set-transient-map hydra-zoom/keymap (lambda nil @@ -760,12 +724,8 @@ The body can be accessed via `hydra-zoom/body'." (hydra-keyboard-quit) (setq hydra-curr-body-fn (quote hydra-zoom/body))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-zoom/hint)) - (message - (eval hydra-zoom/hint)))) + (hydra-show-hint + hydra-zoom/hint) (hydra-set-transient-map hydra-zoom/keymap (lambda nil @@ -865,12 +825,8 @@ Call the head: `(text-scale-set 0)'." ((quit error) (message "%S" err) (unless hydra-lv (sit-for 0.8)))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-zoom/hint)) - (message - (eval hydra-zoom/hint)))) + (hydra-show-hint + hydra-zoom/hint) (hydra-set-transient-map hydra-zoom/keymap (lambda nil @@ -911,12 +867,8 @@ The body can be accessed via `hydra-zoom/body'." (hydra-keyboard-quit) (setq hydra-curr-body-fn (quote hydra-zoom/body))) - (when hydra-is-helpful - (if hydra-lv - (lv-message - (eval hydra-zoom/hint)) - (message - (eval hydra-zoom/hint)))) + (hydra-show-hint + hydra-zoom/hint) (hydra-set-transient-map hydra-zoom/keymap (lambda nil diff --git a/hydra.el b/hydra.el index 9e4947d..14d275e 100644 --- a/hydra.el +++ b/hydra.el @@ -769,10 +769,7 @@ BODY-AFTER-EXIT is added to the end of the wrapper." (sit-for 0.8))))) ,(if (and body-idle (eq (cadr head) 'body)) `(hydra-idle-message ,body-idle ,hint) - `(when hydra-is-helpful - (if hydra-lv - (lv-message (eval ,hint)) - (message (eval ,hint))))) + `(hydra-show-hint ,hint)) (hydra-set-transient-map ,keymap (lambda () (hydra-keyboard-quit) ,body-before-exit) @@ -782,6 +779,12 @@ BODY-AFTER-EXIT is added to the end of the wrapper." ,(when body-timeout `(hydra-timeout ,body-timeout)))))))) +(defun hydra-show-hint (hint) + (when hydra-is-helpful + (if hydra-lv + (lv-message (eval hint)) + (message (eval hint))))) + (defmacro hydra--make-funcall (sym) "Transform SYM into a `funcall' to call it." `(when (and ,sym (symbolp ,sym)) @@ -920,10 +923,7 @@ NAMES should be defined by `defhydradio' or similar." (timer-set-function hydra-message-timer (lambda () - (when hydra-is-helpful - (if hydra-lv - (lv-message (eval hint)) - (message (eval hint)))) + (hydra-show-hint hint) (cancel-timer hydra-message-timer))) (timer-activate hydra-message-timer))