[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hydra 9ca93bdffb 28/46: hydra.el (defhydra+): Add
From: |
Stefan Monnier |
Subject: |
[elpa] externals/hydra 9ca93bdffb 28/46: hydra.el (defhydra+): Add |
Date: |
Tue, 25 Oct 2022 22:27:21 -0400 (EDT) |
branch: externals/hydra
commit 9ca93bdffb651839c055d90ce45653ac0dc35d44
Author: Oleh Krehel <ohwoeowho@gmail.com>
Commit: Oleh Krehel <ohwoeowho@gmail.com>
hydra.el (defhydra+): Add
* hydra-test.el (hydra-extend): Add test.
Fixes #185
---
hydra-test.el | 22 ++++++++++++++++++++++
hydra.el | 15 +++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/hydra-test.el b/hydra-test.el
index eed1163935..2fb98a0b14 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -1656,6 +1656,28 @@ k: ↑ window | |
|
512 513 (face hydra-face-red)
578 579 (face hydra-face-blue)))))
+(defhydra hydra-extendable ()
+ "extendable"
+ ("j" next-line "down"))
+
+(ert-deftest hydra-extend ()
+ (should (equal (macroexpand
+ '(defhydra+ hydra-extendable ()
+ ("k" previous-line "up")))
+ (macroexpand
+ '(defhydra hydra-extendable ()
+ "extendable"
+ ("j" next-line "down")
+ ("k" previous-line "up")))))
+ (should (equal (macroexpand
+ '(defhydra+ hydra-extendable ()
+ ("k" previous-line "up" :exit t)))
+ (macroexpand
+ '(defhydra hydra-extendable ()
+ "extendable"
+ ("j" next-line "down")
+ ("k" previous-line "up" :exit t))))))
+
(provide 'hydra-test)
;;; hydra-test.el ends here
diff --git a/hydra.el b/hydra.el
index 87e7376301..39dc8156db 100644
--- a/hydra.el
+++ b/hydra.el
@@ -1364,6 +1364,21 @@ result of `defhydra'."
(hydra--complain "Error in defhydra %S: %s" name (cdr err))
nil)))
+(defmacro defhydra+ (name body &optional docstring &rest heads)
+ "Redefine an existing hydra by adding new heads.
+Arguments are same as of `defhydra'."
+ (declare (indent 1))
+ (unless (stringp docstring)
+ (setq heads
+ (cons docstring heads))
+ (setq docstring nil))
+ `(defhydra ,name ,(or body (hydra--prop name "/params"))
+ ,(or docstring (hydra--prop name "/docstring"))
+ ,@(cl-delete-duplicates
+ (append (hydra--prop name "/heads") heads)
+ :key #'car
+ :test #'equal)))
+
(defun hydra--prop (name prop-name)
(symbol-value (intern (concat (symbol-name name) prop-name))))
- [elpa] externals/hydra e0e3282efa 39/46: hydra.el (hydra-hint-display-type): Add, (continued)
- [elpa] externals/hydra e0e3282efa 39/46: hydra.el (hydra-hint-display-type): Add, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 6842731f08 43/46: hydra.el (hydra-lv): Declare obsolete, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 7081ee6d44 46/46: Merge commit 'f27fce1b2f0a9162e159557bdeb2c0c94defb4d2' into externals/hydra, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra f27fce1b2f 45/46: hydra.el: Bump version, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra aa55bbd196 37/46: hydra.el (hydra--hint-from-matrix): Don't wrap with concat, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra d96180865c 40/46: hydra.el (hydra-hint-display-alist): Add, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 480ae63137 42/46: Declare dependency on separate lv package, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra acb69859f3 44/46: hydra-test.el: Update tests for the last commit, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra b4fb3298cd 02/46: hydra.el (hydra--hint-heads-wocol): Ignore dynamic hints, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 2ad0b01611 25/46: hydra.el (hydra--normalize-body): Fixup for Emacs24, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 9ca93bdffb 28/46: hydra.el (defhydra+): Add,
Stefan Monnier <=
- [elpa] externals/hydra b7279c7c19 33/46: hydra.el (hydra--hint-row): Prep to return list, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 8e3698fb53 41/46: hydra-examples.el (hydra-rectangle): Change "p" to "x", Stefan Monnier, 2022/10/25