Subject: Re: bug#50051: 28.0.50; easymenu defined popup menus broken since 27.1

From: Lars Ingebrigtsen <[email-masked]>
Date: Sat, 14 Aug 2021 14:39:09 +0200

Hugh Daschbach <[email-masked]> writes:

> This opens a window with *popup-tests* buffer.  Right click on the text
> "Right click here." to generate the wrong-type-argument error.
>
> This test works with 26.3.  Bisecting the Emacs source tree reveals this
> regression was introduced by the first hunk in
> a070bd1c8b5213ad469d41dd80d392f924644aed.

Stefan, this was the patch that replaced some lambdas with closures in
easymenu.  I see that parts of that patch was reverted(ish), but not the
bit that's triggering this problem.

Here's the reverted thing:

diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el
index 292d50b91a..15b8bef428 100644
--- a/lisp/emacs-lisp/easymenu.el
+++ b/lisp/emacs-lisp/easymenu.el
@@ -475,7 +475,7 @@ easy-menu-make-symbol
                   ;; `functionp' is probably not needed.
                   (functionp callback) noexp)
               callback
-	    (lambda () (interactive) callback)))
+	    (eval `(lambda () (interactive) ,callback) t)))
     command))
 
I briefly tried to debug the current problem, but it wasn't immediately
clear what the correct fix here would be...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no