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.
This commit is contained in:
Robert Pluim 2023-01-06 09:00:00 +01:00
parent 699711786a
commit 7420b6dcc3
2 changed files with 19 additions and 1 deletions

View file

@ -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))

View file

@ -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