summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Pluim <rpluim@gmail.com>2023-01-06 09:00:00 +0100
committerRobert Pluim <rpluim@gmail.com>2023-01-06 10:06:25 +0100
commit7420b6dcc379617ca9691049c16bfb2d158f9496 (patch)
tree22b0009d5b2d22c5f2cd5c1b936ef3f128ea8d65
parent699711786ac7aa6d6524467076a45568e283e061 (diff)
downloademacs-7420b6dcc379617ca9691049c16bfb2d158f9496.tar.gz
Fix `pr-interface'
`pr-interface' specifies `inline' for its menu items, which is not necessary, but it causes `widget-choice-value-create' to bug out. (Bug#60501) * lisp/wid-edit.el (widget-choice-value-create): Allow the value to be a non-list. * test/lisp/wid-edit-tests.el (widget-test-handle-spurious-inline): Add test to ensure that unnecessary :inline is allowed.
-rw-r--r--lisp/wid-edit.el4
-rw-r--r--test/lisp/wid-edit-tests.el16
2 files changed, 19 insertions, 1 deletions
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 798db9f9dd2..60bd2baa6fb 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -2220,7 +2220,9 @@ But if NO-TRUNCATE is non-nil, include them."
(if (widget-get current :inline)
(setq val value
fun :match-inline)
- (setq val (car value)
+ (setq val (if (consp value)
+ (car value)
+ value)
fun :match))
(setq val value
fun :match))
diff --git a/test/lisp/wid-edit-tests.el b/test/lisp/wid-edit-tests.el
index 3f5fcea0c33..b379c7c91a8 100644
--- a/test/lisp/wid-edit-tests.el
+++ b/test/lisp/wid-edit-tests.el
@@ -267,6 +267,22 @@ return nil, even with a non-nil bubblep argument."
(should child)
(should (equal (widget-value widget) '(1 "One"))))))
+;; Bug#60501
+(ert-deftest widget-test-handle-spurious-inline ()
+ "Test the we can create a menu widget with an unnecessary :inline"
+ (with-temp-buffer
+ (widget-insert "Testing.\n\n")
+ (let* ((widget (widget-create 'menu-choice
+ :inline t
+ :value "*scratch*"
+ '(choice-item "*scratch*")))
+ (child (car (widget-get widget :children))))
+ (widget-insert "\n")
+ (use-local-map widget-keymap)
+ (widget-setup)
+ (should child)
+ (should (string-equal (widget-value widget) "*scratch*")))))
+
(ert-deftest widget-test-option-can-handle-choice ()
"Test that we can create a option widget with a choice correctly."
(with-temp-buffer