Allow #'command syntax for heads, just to have it

* hydra.el (hydra--make-callable):
(hydra--head-name): Allow #'command syntax in the CMD place for each
head.

This isn't the recommended syntax, however you can use it if you prefer.

Fixes #156
master
Oleh Krehel 11 years ago
parent c5327e1d34
commit f58d356724
  1. 23
      hydra.el

@ -363,11 +363,14 @@ When ARG is non-nil, use that instead."
"Generate a callable symbol from X.
If X is a function symbol or a lambda, return it. Otherwise, it
should be a single statement. Wrap it in an interactive lambda."
(if (or (symbolp x) (functionp x))
x
`(lambda ()
(interactive)
,x)))
(cond ((or (symbolp x) (functionp x))
x)
((and (consp x) (eq (car x) 'function))
(cadr x))
(t
`(lambda ()
(interactive)
,x))))
(defun hydra-plist-get-default (plist prop default)
"Extract a value from a property list.
@ -716,9 +719,13 @@ BODY-AFTER-EXIT is added to the end of the wrapper."
(defun hydra--head-name (h name)
"Return the symbol for head H of hydra with NAME."
(let ((str (format "%S/%s" name
(if (symbolp (cadr h))
(cadr h)
(concat "lambda-" (car h))))))
(cond ((symbolp (cadr h))
(cadr h))
((and (consp (cadr h))
(eq (cl-caadr h) 'function))
(cadr (cadr h)))
(t
(concat "lambda-" (car h)))))))
(when (and (hydra--head-property h :exit)
(not (memq (cadr h) '(body nil))))
(setq str (concat str "-and-exit")))

Loading…
Cancel
Save