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

From: Michael Welsh Duggan <[email-masked]>
Date: Sat, 03 Dec 2011 22:29:24 -0500

Chong Yidong <[email-masked]> writes:

> 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.

Yes, this seems to do the trick for me as well.

> === 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))
>

-- 
Michael Welsh Duggan
([email-masked])