Subject: Re: bug#10195: 24.0.92; M-w may no longer provide visual feedback

From: Chong Yidong <[email-masked]>
Date: Sun, 04 Dec 2011 10:29:16 +0800

Eli Zaretskii <[email-masked]> writes:

> M-w calls sit-for after bouncing point to the position of mark; the
> default waiting period is 1 sec.  How about instrumenting sit-for with
> calls to `message' and seeing what's going on there?  One possibility
> is that some input event terminates the wait immediately (see
> sit-for's code).  Another possibility is that something happens in
> read-event, in which case you will need to use GDB.  But I think it
> would be good to see what's going on in sit-for before you go to the C
> level.
>
> Another idea is to replace the call to sit-for in kill-ring-save with
> a call to sleep-for, and see if that changes anything.  If it does,
> the probably culprit is sit-for and whatever it calls.

FWIW, I can see this problem, and the following workaround seems to do
the trick.  Your pending input explanation is probably right.

=== modified file 'lisp/simple.el'
*** lisp/simple.el	2011-11-19 19:49:56 +0000
--- lisp/simple.el	2011-12-04 02:25:33 +0000
***************
*** 3251,3256 ****
--- 3251,3257 ----
  	      ;; Swap point and mark.
  	      (set-marker (mark-marker) (point) (current-buffer))
  	      (goto-char other-end)
+ 	      (redisplay t)
  	      (sit-for blink-matching-delay)
  	      ;; Swap back.
  	      (set-marker (mark-marker) other-end (current-buffer))