Version 0.15.0 of package Hydra has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Hydra describes itself as: ================================ Make bindings that stick around. ================================ More at https://elpa.gnu.org/packages/hydra.html ## Summary: This package can be used to tie related commands into a family of short bindings with a common prefix - a Hydra. Once you summon the Hydra (through the prefixed binding), all the heads can be called in succession with only a short extension. The Hydra is vanquished once Hercules, any binding that isn't the Hydra's head, arrives. Note that Hercules, besides vanquishing the Hydra, will still serve his original purpose, calling his proper command. This makes the Hydra very seamless, it's like a minor mode that disables itself automagically. Here's an example Hydra, bound in the global map (you can use any keymap in place of `global-map'): (defhydra hydra-zoom (global-map "<f2>") "zoom" ("g" text-scale-increase "in") ("l" text-scale-decrease "out")) ## Recent NEWS: 1 0.15.0 ════════ 1.1 New Features ──────────────── 1.1.1 defhydra ╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ◊ 1.1.1.1 New :base-map option in body plist In case your hydra conflicts with el:hydra-base-map, you can now override it. Example: ┌──── │ (defhydra hydra-numbers (:base-map (make-sparse-keymap)) │ "test" │ ("0" (message "zero")) │ ("1" (message "one"))) └──── See [#285]. [#285] <https://github.com/abo-abo/hydra/issues/285> ◊ 1.1.1.2 Make no docstring equivalent to :hint nil Example: ┌──── │ (defhydra hydra-clock (:color blue) │ ("q" nil "quit" :column "Clock") │ ("c" org-clock-cancel "cancel" :color pink :column "Do") │ ("d" org-clock-display "display") │ ("e" org-clock-modify-effort-estimate "effort") │ ("i" org-clock-in "in") │ ("j" org-clock-goto "jump") │ ("o" org-clock-out "out") │ ("r" org-clock-report "report")) └──── See [#291]. [#291] <https://github.com/abo-abo/hydra/issues/291> ◊ 1.1.1.3 Declare /params and /docstring See [#185]. [#185] <https://github.com/abo-abo/hydra/issues/185> ◊ 1.1.1.4 Sexp hints are now supported for :columns Example ┌──── │ (defhydra hydra-test () │ "Test" │ ("j" next-line (format-time-string "%H:%M:%S" (current-time)) :column "One") │ ("k" previous-line (format-time-string "%H:%M:%S" (current-time))) │ ("l" backward-char "back" :column "Two")) └──── See [#311]. [#311] <https://github.com/abo-abo/hydra/issues/311> 1.1.2 defhydra+ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ New macro. Allows to add heads to an existing hydra. Example: ┌──── │ (defhydra hydra-extendable () │ "extendable" │ ("j" next-line "down")) │ │ (defhydra+ hydra-extendable () │ ("k" previous-line "up")) └──── See [#185]. [#185] <https://github.com/abo-abo/hydra/issues/185> 1.1.3 el:hydra-hint-display-type ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ Customize what to use to display the hint: • el:message • el:lv-message • posframe el:hydra-lv is now obsolete. See [#317]. [#317] <https://github.com/abo-abo/hydra/issues/317>