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