Subject: bug#11134: 24.0.94; Mac's Text to Speech stopped working in emacs buffers when I moved from Snow Leopard to Lion

From: Stefan Monnier <[email-masked]>
Date: Sun, 01 Apr 2012 09:26:03 -0400

>> The NS port does not support accessability at all, but if it is the
>> function described by YAMAMOTO Mitsuharu above you want, try the
>> patch below.
>> +  else if ([attribute isEqualToString:NSAccessibilityValueAttribute])
>> +    {
>> +      if (! NILP (BVAR (current_buffer, mark_active)))
>> +        str = ns_get_local_selection (QPRIMARY, QUTF8_STRING);
>> +      if (NILP (str))
>> +        str = Fbuffer_string ();
>> +    }
> Is it safe to call Fbuffer_string (in particular, move the gap) inside
> read_socket_hook?  It is apparently unsafe without SYNC_INPUT, but I'm
> not sure if it is supposed to be OK for the SYNC_INPUT case.

Indeed without SYNC_INPUT it's clearly unsafe (not just because of
move_gap).

And to tell you the truth, I'm not sure either what is safe with
SYNC_INPUT and what isn't.

This said, it shouldn't be difficult to change make_buffer_string_both
such that it doesn't need to move the gap, at which point I think it
would be OK.

        Stefan