branch: master commit 5379642fb311ebf262e56173f4318e4e6f86ee4c Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
Use `hydra-keyboard-quit' instead of `hydra-cleanup' * hydra.el (hydra--pred): Update. (hydra--make-defun): Update. (hydra-cleanup): Remove. (hydra-keyboard-quit): Absorb `hydra-cleanup'. * hydra-test.el (hydra-red-error): Update test. (hydra-blue-toggle): Update test. (hydra-amaranth-vi): Update test. (hydra-zoom-duplicate-1): Update test. (hydra-zoom-duplicate-2): Update test. Fixes #100 --- hydra-test.el | 160 ++++++++++++++++++++++++++++---------------------------- hydra.el | 28 ++++------ 2 files changed, 92 insertions(+), 96 deletions(-) diff --git a/hydra-test.el b/hydra-test.el index de699f9..bea27407 100644 --- a/hydra-test.el +++ b/hydra-test.el @@ -38,35 +38,35 @@ ("SPC" hydra-repeat "rep" :bind nil))) '(progn (set (defvar hydra-error/keymap nil "Keymap for hydra-error.") - (quote (keymap (7 . hydra-keyboard-quit) - (32 . hydra-repeat) - (107 . hydra-error/previous-error) - (106 . hydra-error/next-error) - (104 . hydra-error/first-error) - (switch-frame . hydra--handle-switch-frame) - (kp-subtract . hydra--negative-argument) - (kp-9 . hydra--digit-argument) - (kp-8 . hydra--digit-argument) - (kp-7 . hydra--digit-argument) - (kp-6 . hydra--digit-argument) - (kp-5 . hydra--digit-argument) - (kp-4 . hydra--digit-argument) - (kp-3 . hydra--digit-argument) - (kp-2 . hydra--digit-argument) - (kp-1 . hydra--digit-argument) - (kp-0 . hydra--digit-argument) - (57 . hydra--digit-argument) - (56 . hydra--digit-argument) - (55 . hydra--digit-argument) - (54 . hydra--digit-argument) - (53 . hydra--digit-argument) - (52 . hydra--digit-argument) - (51 . hydra--digit-argument) - (50 . hydra--digit-argument) - (49 . hydra--digit-argument) - (48 . hydra--digit-argument) - (45 . hydra--negative-argument) - (21 . hydra--universal-argument)))) + (quote (keymap (7 . hydra-keyboard-quit) + (32 . hydra-repeat) + (107 . hydra-error/previous-error) + (106 . hydra-error/next-error) + (104 . hydra-error/first-error) + (switch-frame . hydra--handle-switch-frame) + (kp-subtract . hydra--negative-argument) + (kp-9 . hydra--digit-argument) + (kp-8 . hydra--digit-argument) + (kp-7 . hydra--digit-argument) + (kp-6 . hydra--digit-argument) + (kp-5 . hydra--digit-argument) + (kp-4 . hydra--digit-argument) + (kp-3 . hydra--digit-argument) + (kp-2 . hydra--digit-argument) + (kp-1 . hydra--digit-argument) + (kp-0 . hydra--digit-argument) + (57 . hydra--digit-argument) + (56 . hydra--digit-argument) + (55 . hydra--digit-argument) + (54 . hydra--digit-argument) + (53 . hydra--digit-argument) + (52 . hydra--digit-argument) + (51 . hydra--digit-argument) + (50 . hydra--digit-argument) + (49 . hydra--digit-argument) + (48 . hydra--digit-argument) + (45 . hydra--negative-argument) + (21 . hydra--universal-argument)))) (defun hydra-error/first-error nil "Create a hydra with a \"M-g\" body and the heads: \"h\": `first-error', @@ -87,7 +87,7 @@ Call the head: `first-error'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-error/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-error/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-error/next-error nil "Create a hydra with a \"M-g\" body and the heads: \"h\": `first-error', @@ -108,7 +108,7 @@ Call the head: `next-error'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-error/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-error/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-error/previous-error nil "Create a hydra with a \"M-g\" body and the heads: \"h\": `first-error', @@ -129,7 +129,7 @@ Call the head: `previous-error'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-error/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-error/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (unless (keymapp (lookup-key global-map (kbd "M-g"))) (define-key global-map (kbd "M-g") nil)) @@ -162,7 +162,7 @@ The body can be accessed via `hydra-error/body'." (catch (quote hydra-disable) (when hydra-is-helpful (hydra-error/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-error/keymap) - t (lambda nil (hydra-cleanup)))) + t (lambda nil (hydra-keyboard-quit)))) (setq prefix-arg current-prefix-arg))))))) (ert-deftest hydra-blue-toggle () @@ -177,35 +177,35 @@ The body can be accessed via `hydra-error/body'." ("q" nil "cancel"))) '(progn (set (defvar hydra-toggle/keymap nil "Keymap for hydra-toggle.") - (quote (keymap (7 . hydra-keyboard-quit) - (113 . hydra-toggle/nil) - (97 . hydra-toggle/abbrev-mode-and-exit) - (102 . hydra-toggle/auto-fill-mode-and-exit) - (116 . hydra-toggle/toggle-truncate-lines-and-exit) - (switch-frame . hydra--handle-switch-frame) - (kp-subtract . hydra--negative-argument) - (kp-9 . hydra--digit-argument) - (kp-8 . hydra--digit-argument) - (kp-7 . hydra--digit-argument) - (kp-6 . hydra--digit-argument) - (kp-5 . hydra--digit-argument) - (kp-4 . hydra--digit-argument) - (kp-3 . hydra--digit-argument) - (kp-2 . hydra--digit-argument) - (kp-1 . hydra--digit-argument) - (kp-0 . hydra--digit-argument) - (57 . hydra--digit-argument) - (56 . hydra--digit-argument) - (55 . hydra--digit-argument) - (54 . hydra--digit-argument) - (53 . hydra--digit-argument) - (52 . hydra--digit-argument) - (51 . hydra--digit-argument) - (50 . hydra--digit-argument) - (49 . hydra--digit-argument) - (48 . hydra--digit-argument) - (45 . hydra--negative-argument) - (21 . hydra--universal-argument)))) + (quote (keymap (7 . hydra-keyboard-quit) + (113 . hydra-toggle/nil) + (97 . hydra-toggle/abbrev-mode-and-exit) + (102 . hydra-toggle/auto-fill-mode-and-exit) + (116 . hydra-toggle/toggle-truncate-lines-and-exit) + (switch-frame . hydra--handle-switch-frame) + (kp-subtract . hydra--negative-argument) + (kp-9 . hydra--digit-argument) + (kp-8 . hydra--digit-argument) + (kp-7 . hydra--digit-argument) + (kp-6 . hydra--digit-argument) + (kp-5 . hydra--digit-argument) + (kp-4 . hydra--digit-argument) + (kp-3 . hydra--digit-argument) + (kp-2 . hydra--digit-argument) + (kp-1 . hydra--digit-argument) + (kp-0 . hydra--digit-argument) + (57 . hydra--digit-argument) + (56 . hydra--digit-argument) + (55 . hydra--digit-argument) + (54 . hydra--digit-argument) + (53 . hydra--digit-argument) + (52 . hydra--digit-argument) + (51 . hydra--digit-argument) + (50 . hydra--digit-argument) + (49 . hydra--digit-argument) + (48 . hydra--digit-argument) + (45 . hydra--negative-argument) + (21 . hydra--universal-argument)))) (defun hydra-toggle/toggle-truncate-lines-and-exit nil "Create a hydra with no body and the heads: \"t\": `toggle-truncate-lines', @@ -219,7 +219,7 @@ Call the head: `toggle-truncate-lines'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function toggle-truncate-lines)))) (defun hydra-toggle/auto-fill-mode-and-exit nil "Create a hydra with no body and the heads: @@ -235,7 +235,7 @@ Call the head: `auto-fill-mode'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function auto-fill-mode)))) (defun hydra-toggle/abbrev-mode-and-exit nil "Create a hydra with no body and the heads: @@ -251,7 +251,7 @@ Call the head: `abbrev-mode'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function abbrev-mode)))) (defun hydra-toggle/nil nil "Create a hydra with no body and the heads: @@ -267,7 +267,7 @@ Call the head: `nil'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable))) (defun hydra-toggle/hint nil (if hydra-lv (lv-message (format #("toggle: [t]: truncate, [f]: fill, [a]: abbrev, [q]: cancel." 9 10 (face hydra-face-blue) @@ -292,7 +292,7 @@ The body can be accessed via `hydra-toggle/body'." (catch (quote hydra-disable) (when hydra-is-helpful (hydra-toggle/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-toggle/keymap) - t (lambda nil (hydra-cleanup)))) + t (lambda nil (hydra-keyboard-quit)))) (setq prefix-arg current-prefix-arg))))))) (ert-deftest hydra-amaranth-vi () @@ -358,7 +358,7 @@ Call the head: `hydra-keyboard-quit'." (hydra-default-pre) (set-cursor-color "#e52b50") (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function hydra-keyboard-quit)) (set-cursor-color "#ffffff"))) @@ -383,7 +383,7 @@ Call the head: `next-line'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-vi/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-vi/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-vi/previous-line nil "Create a hydra with no body and the heads: \"\": `hydra-keyboard-quit', @@ -405,7 +405,7 @@ Call the head: `previous-line'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-vi/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-vi/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-vi/nil nil "Create a hydra with no body and the heads: \"\": `hydra-keyboard-quit', @@ -420,7 +420,7 @@ Call the head: `nil'." (hydra-default-pre) (set-cursor-color "#e52b50") (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (set-cursor-color "#ffffff"))) (defun hydra-vi/hint nil @@ -445,7 +445,7 @@ The body can be accessed via `hydra-vi/body'." (catch (quote hydra-disable) (when hydra-is-helpful (hydra-vi/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-vi/keymap) - t (lambda nil (hydra-cleanup)))) + t (lambda nil (hydra-keyboard-quit)))) (setq prefix-arg current-prefix-arg))))))) (ert-deftest defhydradio () @@ -776,13 +776,13 @@ Call the head: `(text-scale-set 0)'." (hydra-disable) (catch (quote hydra-disable) (condition-case err (call-interactively (function (lambda nil (interactive) - (text-scale-set 0)))) + (text-scale-set 0)))) ((quit error) (message "%S" err) (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-zoom/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-zoom/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-zoom/lambda-0-and-exit nil "Create a hydra with no body and the heads: \"r\": `(text-scale-set 0)', @@ -795,10 +795,10 @@ Call the head: `(text-scale-set 0)'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function (lambda nil (interactive) - (text-scale-set 0)))))) + (text-scale-set 0)))))) (defun hydra-zoom/hint nil (if hydra-lv (lv-message (format #("zoom: [r 0]: reset." 7 8 (face hydra-face-red) 9 10 (face hydra-face-blue)))) @@ -817,7 +817,7 @@ The body can be accessed via `hydra-zoom/body'." (catch (quote hydra-disable) (when hydra-is-helpful (hydra-zoom/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-zoom/keymap) - t (lambda nil (hydra-cleanup)))) + t (lambda nil (hydra-keyboard-quit)))) (setq prefix-arg current-prefix-arg))))))) (ert-deftest hydra-zoom-duplicate-2 () @@ -877,7 +877,7 @@ Call the head: `(text-scale-set 0)'." (unless hydra-lv (sit-for 0.8)))) (when hydra-is-helpful (hydra-zoom/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-zoom/keymap) - t (lambda nil (hydra-cleanup)))))) + t (lambda nil (hydra-keyboard-quit)))))) (defun hydra-zoom/lambda-0-and-exit nil "Create a hydra with no body and the heads: \"r\": `(text-scale-set 0)', @@ -890,7 +890,7 @@ Call the head: `(text-scale-set 0)'." (interactive) (hydra-default-pre) (hydra-disable) - (hydra-cleanup) + (hydra-keyboard-quit) (catch (quote hydra-disable) (call-interactively (function (lambda nil (interactive) (text-scale-set 0)))))) @@ -912,7 +912,7 @@ The body can be accessed via `hydra-zoom/body'." (catch (quote hydra-disable) (when hydra-is-helpful (hydra-zoom/hint)) (setq hydra-last (hydra-set-transient-map (setq hydra-curr-map hydra-zoom/keymap) - t (lambda nil (hydra-cleanup)))) + t (lambda nil (hydra-keyboard-quit)))) (setq prefix-arg current-prefix-arg))))))) (ert-deftest hydra--pad () diff --git a/hydra.el b/hydra.el index f6c83a1..60e1e65 100644 --- a/hydra.el +++ b/hydra.el @@ -93,7 +93,7 @@ This is a compatibility code for Emacs older than 24.4." `(lambda () (if (lookup-key hydra-curr-map (this-command-keys-vector)) t - (hydra-cleanup) + (hydra-keyboard-quit) ,(when on-exit `(funcall ,(hydra--make-callable on-exit))) nil))) @@ -389,23 +389,19 @@ BODY is the second argument to `defhydra'" (setq hydra--input-method-function input-method-function) (setq input-method-function nil)))) -(defun hydra-cleanup () - "Clean up after a Hydra." - (when hydra--input-method-function - (setq input-method-function hydra--input-method-function) - (setq hydra--input-method-function nil)) - (when (window-live-p lv-wnd) - (let ((buf (window-buffer lv-wnd))) - (delete-window lv-wnd) - (kill-buffer buf)))) - (defun hydra-keyboard-quit () "Quitting function similar to `keyboard-quit'." (interactive) (hydra-disable) - (hydra-cleanup) (cancel-timer hydra-timer) - (unless hydra-lv + (when hydra--input-method-function + (setq input-method-function hydra--input-method-function) + (setq hydra--input-method-function nil)) + (if hydra-lv + (when (window-live-p lv-wnd) + (let ((buf (window-buffer lv-wnd))) + (delete-window lv-wnd) + (kill-buffer buf))) (message "")) nil) @@ -593,7 +589,7 @@ OTHER-POST is an optional extension to the :post key of BODY." (hydra-default-pre) ,@(when body-pre (list body-pre)) (hydra-disable) - ,@(when (memq color '(blue teal)) '((hydra-cleanup))) + ,@(when (memq color '(blue teal)) '((hydra-keyboard-quit))) (catch 'hydra-disable ,@(delq nil (if (memq color '(blue teal)) @@ -616,8 +612,8 @@ OTHER-POST is an optional extension to the :post key of BODY." (not (memq body-color '(amaranth pink teal))) body-post) - `(lambda () (hydra-cleanup) ,body-post) - `(lambda () (hydra-cleanup))))) + `(lambda () (hydra-keyboard-quit) ,body-post) + `(lambda () (hydra-keyboard-quit))))) ,(or other-post (when body-timeout (list 'hydra-timeout