diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 2609397b0d9..dc5f8f46aba 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -606,9 +606,14 @@ color. The function should accept a single argument, the color name." (defun list-colors-print (list &optional callback) (let ((callback-fn - (if callback - `(lambda (button) - (funcall ,callback (button-get button 'color-name)))))) + ;; Expect CALLBACK to be a function, but allow it to be a form that + ;; evaluates to a function, for backward-compatibility. (Bug#45831) + (cond ((functionp callback) + (lambda (button) + (funcall callback (button-get button 'color-name)))) + (callback + `(lambda (button) + (funcall ,callback (button-get button 'color-name))))))) (dolist (color list) (if (consp color) (if (cdr color)