Subject: Re: bug#67836: 29.1.90; map-y-or-n-p doesn't terminate when run in a kmacro in batch mode

From: Stefan Monnier <[email-masked]>
Date: Sat, 16 Dec 2023 11:55:21 -0500

>> Could you two point me to examples of uses of the
>> techniques you propose?  I'm curious to see how they compare.
> I'd start by grepping our test suite for "mock".

Thanks.  I found some uses in `shadowfile-tests.el` as well as one in
`tramp-test47-read-password`.

That got me to

    grep "(symbol-function .\?'read" test/**/*.el

which points to many more uses.

>> There's a tension where fixing such problems at low-level can have
>> longer term benefits (at the cost of backward incompatibilities), so
>> I think the best is to start by sending a patch that fixes the problem
>> at the place you judge to be The Right Place™.
> There's no disagreement on this level, the disagreement is about
> where's The Right Place™ ;-)

But before submitting the bug&patch there's no way to know that.
It's best if we don't try to second guess what the other one will think
is best.  Instead, we start by stating what we judge to be best, and
then we can reconcile differences via discussions.

The only really important aspect is to accept that opinions can differ
and that we may not always get what we want (and have the humility to
accept that even when we're convinced we're right, because even in that
case, we may just be missing the point :-)

>> Regarding `ding` in particular.  I don't really know what should be its
>> behavior in general.  I've always been surprised that it (usually)
>> doesn't actually signal an error even though its intention is to signal
>> to the user that there was a problem.
> You don't think we should be able to "ding" without signaling an
> error?

I think we should, but in practice `ding` should almost never be called
from "normal" ELisp code.  Most ELisp code signals an error instead
(which is then caught by the command loop which in turn emits a ding).

>From that point of view, the fact that `ding` itself signals an error
when used from a keyboard macro is a bit weird.

        Stefan