[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)
- [elpa] master updated (231ac7f -> 32b8352), Oleh Krehel, 2017/07/22
- [elpa] master 69529ad 01/36: hydra.el (hydra-default-hint): Add option, Oleh Krehel, 2017/07/22
- [elpa] master f01f4a4 04/36: hydra.el (hydra-key-regex): Extract from hydra--format, Oleh Krehel, 2017/07/22
- [elpa] master 83b9019 07/36: hydra.el (hydra-width-spec-regex): Update, Oleh Krehel, 2017/07/22
- [elpa] master 9fd53ba 08/36: hydra.el (hydra-doc-format-spec): New defcustom, Oleh Krehel, 2017/07/22
- [elpa] master f668f4c 06/36: hydra.el (hydra-key-regex): Add "↓←→⌫⌦⏎", Oleh Krehel, 2017/07/22
- [elpa] master f877855 12/36: hydra-examples.el (org-agenda-cts): Add, Oleh Krehel, 2017/07/22
- [elpa] master 0a5074a 09/36: hydra.el (hydra--format): Avoid inf loops, Oleh Krehel, 2017/07/22
- [elpa] master 270b917 14/36: hydra.el (defhydra): Don't eval hints during the definition, Oleh Krehel, 2017/07/22
- [elpa] master 200a444 10/36: hydra.el (hydra--hint): Revert return "" for :hint nil,
Oleh Krehel <=
- [elpa] master 798684a 13/36: hydra-examples.el: Don't byte-compile, Oleh Krehel, 2017/07/22
- [elpa] master 1eee0f3 18/36: hydra.el (hydra-get-property): New defun., Oleh Krehel, 2017/07/22
- [elpa] master 272dc4a 05/36: hydra.el (hydra-docstring-keys-translate-alist): Update, Oleh Krehel, 2017/07/22
- [elpa] master 5be27f4 02/36: Add a shortcut to supply a head's eval-able docstring, Oleh Krehel, 2017/07/22
- [elpa] master 585db09 17/36: hydra-examples.el: Add example of setting verbosity, Oleh Krehel, 2017/07/22
- [elpa] master 6d5bdf7 11/36: Introduce (:hint none), Oleh Krehel, 2017/07/22
- [elpa] master 76d51ec 23/36: Fix compile warnings, Oleh Krehel, 2017/07/22
- [elpa] master dd5f703 27/36: hydra.el: Use error-message-string, not message, Oleh Krehel, 2017/07/22
- [elpa] master d2aaf86 20/36: Fix e.g. _f_(foo) in format string, Oleh Krehel, 2017/07/22
- [elpa] master a72d68a 28/36: hydra.el (hydra-fontify-head-default): Fix head keys as "%f", Oleh Krehel, 2017/07/22