Subject: bug#29334: 25.3; compiled commands don't respect special interactive expressions

From: Stefan Monnier <[email-masked]>
Date: Thu, 04 Jan 2018 00:25:55 -0500

> Yes, thank you!  This is something that has bugged me
> for a while.  This change is actually a regression (or
> else on purpose?), introduced in Emacs 24.

Indeed.  As for the question in parenthesis, yes I consciously decided
to break this "ugly hack" back then, wondering how much time it would
take for people to notice it (and hoping I'd find the time/motivation
to "do it right" in the mean time).

> Hah, okay, but that was the conservative approach!  The radical one
> would be resolving this FIXME:
>
>     static void
>     fix_command (Lisp_Object input, Lisp_Object values)
>     {
>       /* FIXME: Instead of this ugly hack, we should provide a way for an
>          interactive spec to return an expression/function that will re-build the
>          args without user intervention.  */

E.g. we could allow the interactive spec to return either a list of
argument *values*, or a list of argument *expressions* (and we could
distinguish the two by having the second be a vector instead of a list,
for example).

        Stefan