Subject: Re: bug#6256: 24.0.50; read-event in `repeat' command

From: Stefan Monnier <[email-masked]>
Date: Tue, 19 Oct 2010 16:54:40 -0400

> 1. > Yes, tho the only change it requires is to change the lets into setqs.

> Including the let-binding of `repeat-message-function'?  I assume not.
> Doing that would change the value globally from then on.  I've left
> that one as a let binding.

Good.

> 2. However, you say that your implementation will anyway render a let
> binding of `repeat-message-function' ineffective.  Do you mean your
> current fix using read-key or your future reimplementation that you
> have locally?

I mean my future reimplementation.

> I assume you mean the latter.  I can't test that, so I can't say how annoying
> the changed message behavior would be.

Don't worry about it: it's a problem for me, as of now.

> It seems like your future replacement would change the notion of
> a repetition so that it no longer does everything that is currently
> done in `repeat' (since `repeat' is not called repetitively).  Dunno.

It changes the place where the loop happens, yes: insteads of calling
repeat repetitively from repeat itself, it's called repetitively from
the toplevel command loop.

> I realize you are still working on it, but please try not to sacrifice
> too much in your quest for simplicity.

It's not for simplicity but for correctness (several corner cases fail
to work with read-key/event/char).

> 3. Your current read-key fix for `repeat' does not work in Emacs 23,
> whereas my fix using read-event does work.

I did not understand that from your answer and I'm very surprised, since
AFAIK this part of Emacs hasn't changed significantly.  In any case I've
only tested it under Emacs-23 (yup, that's a 3 there).

> But maybe I will be if I understand its advantages.  What was your
> objection to the solution I provided using `read-event'?  You never
> stated it, IIRC.

Your characterization of what works and what doesn't makes no sense to
me (based on my understand of what the code does, and based on my
tests), so I used the code that I know to work and I understand why.

Since you say it doesn't work for you, please follow my advice:

   Please confirm whether or not it fixes it
   for you, and if it doesn't, please show me the values of
   `repeat-repeat-char' and `evt' in the above test.

because without that info from your tests, I can't help you much further.

        Stefan