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

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

[elpa] master 200a444 10/36: hydra.el (hydra--hint): Revert return "" fo


From: Oleh Krehel
Subject: [elpa] master 200a444 10/36: hydra.el (hydra--hint): Revert return "" for :hint nil
Date: Sat, 22 Jul 2017 11:22:22 -0400 (EDT)

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

    hydra.el (hydra--hint): Revert return "" for :hint nil
    
    * hydra.el (hydra--format): When body's :hint is nil /and/ the docstring
      starts with a newline, set the output of `hydra--hint' to "".
      This is necessary for the ?x? syntax.
    
    * hydra-test.el (hydra-format-8): Add test.
    
    Fixes #190
---
 hydra-test.el |  10 +++++
 hydra.el      | 115 +++++++++++++++++++++++++++++-----------------------------
 2 files changed, 68 insertions(+), 57 deletions(-)

diff --git a/hydra-test.el b/hydra-test.el
index a40a0ca..03c20d4 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -1137,6 +1137,16 @@ _f_ auto-fill-mode:    %`auto-fill-function
          0 2 (face hydra-face-red)))
       ""))))
 
+(ert-deftest hydra-format-8 ()
+  (should
+   (equal
+    (hydra--format nil '(nil nil :hint nil) "test"
+                   '(("f" forward-char nil :exit nil)
+                     ("b" backward-char "back" :exit nil)))
+    '(format
+      #("test: [b]: back."
+        7 8 (face hydra-face-red))))))
+
 (ert-deftest hydra-format-with-sexp-1 ()
   (should (equal
            (let ((hydra-fontify-head-function
diff --git a/hydra.el b/hydra.el
index e1dedd2..5626a4f 100644
--- a/hydra.el
+++ b/hydra.el
@@ -470,62 +470,60 @@ Return DEFAULT if PROP is not in H."
 (defun hydra--hint (body heads)
   "Generate a hint for the echo area.
 BODY, and HEADS are parameters to `defhydra'."
-  (if (null (hydra-plist-get-default (cddr body) :hint 1))
-      ""
-    (let (alist)
-      (dolist (h heads)
-        (let ((val (assoc (cadr h) alist))
-              (pstr (hydra-fontify-head h body)))
-          (unless (null (cl-caddr h))
-            (if val
-                (setf (cadr val)
-                      (concat (cadr val) " " pstr))
-              (push
-               (cons (cadr h)
-                     (cons pstr (cl-caddr h)))
-               alist)))))
-      (let ((keys (nreverse (mapcar #'cdr alist)))
-            (n-cols (plist-get (cddr body) :columns))
-            res)
-        (setq res
-              (if n-cols
-                  (let ((n-rows (1+ (/ (length keys) n-cols)))
-                        (max-key-len (apply #'max (mapcar (lambda (x) (length 
(car x))) keys)))
-                        (max-doc-len (apply #'max (mapcar (lambda (x)
-                                                            (length 
(hydra--to-string (cdr x)))) keys))))
-                    `(concat
-                      "\n"
-                      (mapconcat #'identity
-                                 (mapcar
-                                  (lambda (x)
-                                    (mapconcat
-                                     (lambda (y)
-                                       (and y
-                                            (funcall hydra-key-doc-function
-                                                     (car y)
-                                                     ,max-key-len
-                                                     (hydra--to-string (cdr y))
-                                                     ,max-doc-len))) x ""))
-                                  ',(hydra--matrix keys n-cols n-rows))
-                                 "\n")))
-
-
-                `(concat
-                  (mapconcat
-                   (lambda (x)
-                     (let ((str (hydra--to-string (cdr x))))
-                       (format
-                        (if (> (length str) 0)
-                            (concat hydra-head-format str)
-                          "%s")
-                        (car x))))
-                   ',keys
-                   ", ")
-                  ,(if keys "." ""))))
-        (if (cl-every #'stringp
-                      (mapcar 'cddr alist))
-            (eval res)
-          res)))))
+  (let (alist)
+    (dolist (h heads)
+      (let ((val (assoc (cadr h) alist))
+            (pstr (hydra-fontify-head h body)))
+        (unless (null (cl-caddr h))
+          (if val
+              (setf (cadr val)
+                    (concat (cadr val) " " pstr))
+            (push
+             (cons (cadr h)
+                   (cons pstr (cl-caddr h)))
+             alist)))))
+    (let ((keys (nreverse (mapcar #'cdr alist)))
+          (n-cols (plist-get (cddr body) :columns))
+          res)
+      (setq res
+            (if n-cols
+                (let ((n-rows (1+ (/ (length keys) n-cols)))
+                      (max-key-len (apply #'max (mapcar (lambda (x) (length 
(car x))) keys)))
+                      (max-doc-len (apply #'max (mapcar (lambda (x)
+                                                          (length 
(hydra--to-string (cdr x)))) keys))))
+                  `(concat
+                    "\n"
+                    (mapconcat #'identity
+                               (mapcar
+                                (lambda (x)
+                                  (mapconcat
+                                   (lambda (y)
+                                     (and y
+                                          (funcall hydra-key-doc-function
+                                                   (car y)
+                                                   ,max-key-len
+                                                   (hydra--to-string (cdr y))
+                                                   ,max-doc-len))) x ""))
+                                ',(hydra--matrix keys n-cols n-rows))
+                               "\n")))
+
+
+              `(concat
+                (mapconcat
+                 (lambda (x)
+                   (let ((str (hydra--to-string (cdr x))))
+                     (format
+                      (if (> (length str) 0)
+                          (concat hydra-head-format str)
+                        "%s")
+                      (car x))))
+                 ',keys
+                 ", ")
+                ,(if keys "." ""))))
+      (if (cl-every #'stringp
+                    (mapcar 'cddr alist))
+          (eval res)
+        res))))
 
 (defvar hydra-fontify-head-function nil
   "Possible replacement for `hydra-fontify-head-default'.")
@@ -606,7 +604,10 @@ _NAME, BODY, DOCSTRING and HEADS are parameters of 
`defhydra'.
 The expressions can be auto-expanded according to NAME."
   (setq docstring (hydra--strip-align-markers docstring))
   (setq docstring (replace-regexp-in-string "___" "_β_" docstring))
-  (let ((rest (hydra--hint body heads))
+  (let ((rest (if (and (null (hydra-plist-get-default (cddr body) :hint 1))
+                       (string-match "\\`\n" docstring))
+                  ""
+                (hydra--hint body heads)))
         (start 0)
         varlist
         offset)



reply via email to

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