[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master b81d078 29/72: Generate a global resetter in `defhydradio'
From: |
Oleh Krehel |
Subject: |
[elpa] master b81d078 29/72: Generate a global resetter in `defhydradio' |
Date: |
Fri, 06 Mar 2015 13:04:10 +0000 |
branch: master
commit b81d078e7713722ac0688a6bdb907d46d37a0e3e
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
Generate a global resetter in `defhydradio'
* hydra.el (defhydradio): `NAME/reset-radios' will be generated.
(hydra--quote-maybe): Don't quote nil.
* hydra-test.el: Update test.
---
hydra-test.el | 5 ++++-
hydra.el | 27 +++++++++++++++++++--------
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/hydra-test.el b/hydra-test.el
index 429cf14..96f02da 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -586,7 +586,10 @@ The body can be accessed via `hydra-vi/body'."
"Str")
(put 'hydra-test/str 'range ["foo" "bar" "baz"])
(defun hydra-test/str ()
- (hydra--cycle-radio 'hydra-test/str))))))
+ (hydra--cycle-radio 'hydra-test/str))
+ (defun hydra-test/reset-radios ()
+ (setq hydra-test/num 0)
+ (setq hydra-test/str "foo"))))))
(provide 'hydra-test)
diff --git a/hydra.el b/hydra.el
index fcb8cde..a3024c4 100644
--- a/hydra.el
+++ b/hydra.el
@@ -602,11 +602,19 @@ inialize the variable.
VALUE defaults to [nil t].
DOC defaults to TOGGLE-NAME split and capitalized."
(declare (indent defun))
- (cons 'progn
- (apply #'append
- (mapcar (lambda (h)
- (hydra--radio name h))
- heads))))
+ `(progn
+ ,@(apply #'append
+ (mapcar (lambda (h)
+ (hydra--radio name h))
+ heads))
+ (defun ,(intern (format "%S/reset-radios" name)) ()
+ ,@(mapcar
+ (lambda (h)
+ (let ((full-name (intern (format "%S/%S" name (car h))))
+ )
+ `(setq ,full-name ,(hydra--quote-maybe
+ (and (cadr h) (aref (cadr h) 0))))))
+ heads))))
(defun hydra--radio (parent head)
"Generate a hydradio with PARENT from HEAD."
@@ -624,9 +632,12 @@ DOC defaults to TOGGLE-NAME split and capitalized."
(defun hydra--quote-maybe (x)
"Quote X if it's a symbol."
- (if (symbolp x)
- (list 'quote x)
- x))
+ (cond ((null x)
+ nil)
+ ((symbolp x)
+ (list 'quote x))
+ (t
+ x)))
(defun hydra--cycle-radio (sym)
"Set SYM to the next value in its range."
- [elpa] master 9769143 25/72: hydra-examples.el: Add example 7, (continued)
- [elpa] master 9769143 25/72: hydra-examples.el: Add example 7, Oleh Krehel, 2015/03/06
- [elpa] master c049a33 16/72: Allow for Ruby-style Hydra docstrings, Oleh Krehel, 2015/03/06
- [elpa] master 688e8fd 23/72: hydra.el (hydra--head-color): fix for teal color, Oleh Krehel, 2015/03/06
- [elpa] master 0cda4ce 26/72: Fix typos, Oleh Krehel, 2015/03/06
- [elpa] master caf114a 11/72: Fix unintentional recursion in Emacs 25, Oleh Krehel, 2015/03/06
- [elpa] master c7281e9 17/72: Minor refactoring, Oleh Krehel, 2015/03/06
- [elpa] master 06b35f7 08/72: Remove obsoletes, Oleh Krehel, 2015/03/06
- [elpa] master 806e04b 09/72: Don't clutter Echo Area, Oleh Krehel, 2015/03/06
- [elpa] master 4f0ef62 27/72: hydra.el (hydra-pink-fallback): Add, Oleh Krehel, 2015/03/06
- [elpa] master 4aa8826 18/72: hydra.el (hydra--message): Take same arguments as `defhydra', Oleh Krehel, 2015/03/06
- [elpa] master b81d078 29/72: Generate a global resetter in `defhydradio',
Oleh Krehel <=
- [elpa] master 42cb833 21/72: hydra.el (hydra--hint): Take same arguments as `defhydra', Oleh Krehel, 2015/03/06
- [elpa] master 0a3cc60 30/72: Add compat color-less syntax, Oleh Krehel, 2015/03/06
- [elpa] master 92e1922 19/72: hydra.el (hydra--hint): Take same arguments as `defhydra', Oleh Krehel, 2015/03/06
- [elpa] master 6f7cef2 22/72: Add teal body color, Oleh Krehel, 2015/03/06
- [elpa] master 7010772 32/72: hydra.el (hydra--head-color): Improve, Oleh Krehel, 2015/03/06
- [elpa] master d0e8d57 33/72: hydra.el (hydra-add-font-lock): Add `defhydradio', Oleh Krehel, 2015/03/06
- [elpa] master 0881733 28/72: hydra.el (defhydra): Fix typo, Oleh Krehel, 2015/03/06
- [elpa] master a4c4eb6 36/72: Add example for `Buffer-menu-mode', Oleh Krehel, 2015/03/06
- [elpa] master 88b32d5 24/72: hydra.el (hydra--hint): Add exception, Oleh Krehel, 2015/03/06
- [elpa] master c41c932 31/72: README.md: fix tables, Oleh Krehel, 2015/03/06