[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hydra 9c4a4711bc 38/46: hydra.el (hydra-key-doc-functio
From: |
Stefan Monnier |
Subject: |
[elpa] externals/hydra 9c4a4711bc 38/46: hydra.el (hydra-key-doc-function-default): Accept also sexp as doc |
Date: |
Tue, 25 Oct 2022 22:27:22 -0400 (EDT) |
branch: externals/hydra
commit 9c4a4711bc78364e114acbbcf484a60669d02d78
Author: Oleh Krehel <ohwoeowho@gmail.com>
Commit: Oleh Krehel <ohwoeowho@gmail.com>
hydra.el (hydra-key-doc-function-default): Accept also sexp as doc
* hydra-test.el (hydra-column-sexp): Add test.
Fixes #304
---
hydra-test.el | 31 +++++++++++++++++++++++++++++++
hydra.el | 32 +++++++++++++++++---------------
2 files changed, 48 insertions(+), 15 deletions(-)
diff --git a/hydra-test.el b/hydra-test.el
index 048f37f5b2..75de3b28e6 100644
--- a/hydra-test.el
+++ b/hydra-test.el
@@ -1671,6 +1671,37 @@ k: ↑ window | |
|
512 513 (face hydra-face-red)
578 579 (face hydra-face-blue)))))
+(ert-deftest hydra-column-sexp ()
+ (should (equal
+ (eval (nth 5
+ (macroexpand
+ '(defhydra hydra-toggle-stuff ()
+ "Toggle"
+ ("d" toggle-debug-on-error "debug-on-error" :column
"Misc")
+ ("a" abbrev-mode
+ (format "abbrev: %s"
+ (if (bound-and-true-p abbrev-mode)
+ "[x]"
+ "[ ]")))))))
+ '(concat
+ (format "Toggle:\n")
+ "Misc"
+ "\n"
+ "-----------------"
+ "\n"
+ #("d: debug-on-error"
+ 0 1 (face hydra-face-red))
+ "\n"
+ (format
+ "%1s: %-15s"
+ #("a" 0 1 (face hydra-face-red))
+ (format
+ "abbrev: %s"
+ (if (bound-and-true-p abbrev-mode)
+ "[x]"
+ "[ ]")))
+ "\n"))))
+
(defhydra hydra-extendable ()
"extendable"
("j" next-line "down"))
diff --git a/hydra.el b/hydra.el
index 652b943a1d..0f18b13028 100644
--- a/hydra.el
+++ b/hydra.el
@@ -498,9 +498,10 @@ Remove :color key. And sort the plist alphabetically."
"The function for formatting key-doc pairs.")
(defun hydra-key-doc-function-default (key key-width doc doc-width)
- "Doc"
(cond
((equal key " ") (format (format "%%-%ds" (+ 3 key-width doc-width)) doc))
+ ((listp doc)
+ `(format ,(format "%%%ds: %%%ds" key-width (- -1 doc-width)) ,key ,doc))
(t (format (format "%%%ds: %%%ds" key-width (- -1 doc-width)) key doc))))
(defun hydra--to-string (x)
@@ -1114,20 +1115,21 @@ representing the maximum dimension of their owning
group.
(nreverse (cdr res))))
(defun hydra--hint-row (heads body)
- (let* ((lst (hydra-interpose
- "| "
- (mapcar (lambda (head)
- (funcall hydra-key-doc-function
- (hydra-fontify-head head body)
- (let ((n (hydra--head-property head
:max-key-len)))
- (+ n (cl-count ?% (car head))))
- (nth 2 head) ;; doc
- (hydra--head-property head :max-doc-len)))
- heads)))
- (len (length lst))
- (new-last (replace-regexp-in-string "\s+$" "" (car (last lst)))))
- (when (= 0 (length (setf (nth (- len 1) lst) new-last)))
- (setf (nth (- len 2) lst) "|"))
+ (let ((lst (hydra-interpose
+ "| "
+ (mapcar (lambda (head)
+ (funcall hydra-key-doc-function
+ (hydra-fontify-head head body)
+ (let ((n (hydra--head-property head
:max-key-len)))
+ (+ n (cl-count ?% (car head))))
+ (nth 2 head) ;; doc
+ (hydra--head-property head :max-doc-len)))
+ heads))))
+ (when (stringp (car (last lst)))
+ (let ((len (length lst))
+ (new-last (replace-regexp-in-string "\s+$" "" (car (last lst)))))
+ (when (= 0 (length (setf (nth (- len 1) lst) new-last)))
+ (setf (nth (- len 2) lst) "|"))))
lst))
- [elpa] externals/hydra c30e04d3f6 19/46: lv.el (lv-window): Turn off display-line-numbers, (continued)
- [elpa] externals/hydra c30e04d3f6 19/46: lv.el (lv-window): Turn off display-line-numbers, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 67098cc914 22/46: hydra.el (hydra--format): Add extra newline, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra ffff068d7f 23/46: Update readme.md, add repo name and melpa badges, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 05871dd6c8 26/46: hydra.el (defhydra): Document the :column feature, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 425f20e7ed 27/46: README.md: Link to :column code, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 67e454bf10 29/46: hydra.el (defhydra+): Update indent spec, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 1e423933a9 30/46: hydra.el: sexp hints are now supported for :columns, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 16563fbc4c 31/46: hydra.el (hydra--hint-row): Extract, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 3846e2728f 32/46: hydra.el (hydra-interpose): Extract, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 38a567fc5b 36/46: hydra.el (hydra--hint-from-matrix): Return a list, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 9c4a4711bc 38/46: hydra.el (hydra-key-doc-function-default): Accept also sexp as doc,
Stefan Monnier <=
- [elpa] externals/hydra e0e3282efa 39/46: hydra.el (hydra-hint-display-type): Add, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 6842731f08 43/46: hydra.el (hydra-lv): Declare obsolete, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 7081ee6d44 46/46: Merge commit 'f27fce1b2f0a9162e159557bdeb2c0c94defb4d2' into externals/hydra, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra f27fce1b2f 45/46: hydra.el: Bump version, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra aa55bbd196 37/46: hydra.el (hydra--hint-from-matrix): Don't wrap with concat, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra d96180865c 40/46: hydra.el (hydra-hint-display-alist): Add, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 480ae63137 42/46: Declare dependency on separate lv package, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra acb69859f3 44/46: hydra-test.el: Update tests for the last commit, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra b4fb3298cd 02/46: hydra.el (hydra--hint-heads-wocol): Ignore dynamic hints, Stefan Monnier, 2022/10/25
- [elpa] externals/hydra 2ad0b01611 25/46: hydra.el (hydra--normalize-body): Fixup for Emacs24, Stefan Monnier, 2022/10/25