emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master f58d356 17/22: Allow #'command syntax for heads, just to h


From: Oleh Krehel
Subject: [elpa] master f58d356 17/22: Allow #'command syntax for heads, just to have it
Date: Fri, 16 Oct 2015 10:06:59 +0000

branch: master
commit f58d356724ff2ea890dedb0a660cf1dd1ce3e04d
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    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
---
 hydra.el |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/hydra.el b/hydra.el
index a9b4587..c5c3196 100644
--- a/hydra.el
+++ b/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")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]