* hydra.el (defhydra): When a plist isn't nil, `plist-put' can be used,
which is useful to overwrite :cmd-name if it's present. When plist is
nil, use the old code.
* hydra.el (hydra--make-defun): It will receive not the keymap, but the
variable that hold the keymap.
(defhydra): Define keymap as a variable.
* 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.
* hydra.el (hydra-repeat): Update.
It's possible now, for instance with `hydra-vi' to do this:
4j.2..
This will forward-line 4 times (4j), 4 times (.), 2 times (2.), 2
times (.).
Fixes#92
* hydra.el (hydra--make-defun): Update.
(hydra--head-name): Change signature, since body is needed to determine
the color. When the head will exit, add "-and-exit" to its name (except
for the nil head and body).
(defhydra): Update the call to `hydra--head-name', since it's not valid
until the head has a hint.
* hydra-test.el (hydra-blue-toggle): Update.
(hydra-amaranth-vi): Update.
(hydra-zoom-duplicate-1): Update.
(hydra-zoom-duplicate-2): Update.
Fixes#84
* hydra.el (hydra--format): Update. Treat variables in the same way as
s-expressions.
* hydra-test.el (hydra-format-2): Add test.
(hydra-format-with-sexp-2): Add test.
Fixes#85
* hydra.el (hydra--make-defun): When both :timeout and :post are given,
if `hydra-timeout' runs out, it will call :post before
`hydra-keyboard-quit'.
(hydra-timeout): Update to call function if it's given. Always call
`hydra-keyboard-quit' afterwards.
For this example code:
(global-set-key
(kbd "C-c t")
(defhydra test-hydra-b
(:timeout 2.0 :post (message "test b quit"))
"test b"
("x" (message "x"))
("y" (message "y"))
("q" nil "quit")))
The message "test b quit" is issued:
- on "q"
- on "x" or "y", after one of them has started the timer, and the timer
ran out. The timer is set to 2.0 seconds, and is reset each time "x"
or "y" is pressed.
- not on a plain "C-c t"
Fixes#34
Calling only `hydra-keyboard-quit' on switch-frame event was
effectively stopping the original frame switch. This change adds a
call to the original handler after calling `hydra-keyboard-quit'.
See #73
* hydra.el: Add `hydra--handle-switch-frame'
* hydra-test.el: Update
Fixes#77
* lv.el (lv-window): Defer `truncate-lines' to `lv-message'. Set window
hscroll to 0, just in case.
(lv-message): If STR is one-line, set `truncate-lines' to nil, otherwise
set it to t. Make `window-min-height' buffer-local and set it to the
amount of newlines in STR.
Re #40.
* hydra-init.el: Add bare init.
Now, typing:
make compile
in the hydra repository will start an "emacs -q" with all hydras from
hydra-examples.el defined. Thus you can test that they work for you.
The simplest one is "<f2> g", you can type that in any buffer.
If you want to test with a different version of emacs, just type e.g.:
make compile emacs=emacs24
Re #70.
* hydra.el (hydra--handle-nonhead): Bind the plain `hydra-keyboard-quit'
only when there's no :post.
(defhydra): When there's :post, add another head for keyboard quit.
* hydra-test.el (hydra-amaranth-vi): Update test.
Fixes#67.