"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)
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."
(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."