branch: externals/keymap-popup
commit f3f9f1d6fd4ad32b4a31be312f0174d6479d429a
Author: Thanos Apollo <[email protected]>
Commit: Thanos Apollo <[email protected]>
annotate: fix lambda descriptions being destructured
---
keymap-popup.el | 8 +++++---
tests/keymap-popup-tests.el | 7 +++++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/keymap-popup.el b/keymap-popup.el
index cbb76993cb..d6059f8109 100644
--- a/keymap-popup.el
+++ b/keymap-popup.el
@@ -183,9 +183,11 @@ KEY is a key string for normal entries, or a command
symbol for
annotated entries. SPEC is (DESCRIPTION COMMAND-OR-TYPE &rest PROPS)
for key-based entries, or (DESCRIPTION &rest PROPS) for annotated ones."
(if (symbolp key)
- ;; Annotated entry: key is a command symbol, spec is (DESC . PROPS)
- ;; or a bare string
- (let* ((spec (if (stringp spec) (list spec) spec))
+ ;; Annotated entry: key is a command symbol, spec is (DESC . PROPS),
+ ;; a bare string, or a bare lambda/function form.
+ (let* ((spec (cond ((stringp spec) (list spec))
+ ((memq (car-safe spec) '(lambda function)) (list
spec))
+ (t spec)))
(description (car spec))
(props (cdr spec)))
`(:key nil :description ,description :type suffix
diff --git a/tests/keymap-popup-tests.el b/tests/keymap-popup-tests.el
index ecd6425a56..5770bc1bb5 100644
--- a/tests/keymap-popup-tests.el
+++ b/tests/keymap-popup-tests.el
@@ -736,6 +736,13 @@
(should (eq (plist-get entry :command) 'forward-char))
(should (equal (plist-get entry :description) "Forward"))))
+(ert-deftest keymap-popup-test-annotate-parse-lambda-description ()
+ "Bare lambda as description is preserved, not destructured."
+ (let* ((desc '(lambda () (if t "On" "Off")))
+ (entry (keymap-popup--parse-entry 'forward-char desc)))
+ (should (equal (plist-get entry :description) desc))
+ (should (eq (plist-get entry :command) 'forward-char))))
+
(ert-deftest keymap-popup-test-resolve-key ()
(let* ((entry (list :key nil :description "Forward" :type 'suffix