[OS X Emacs] Asynchronous events in Carbon Emacs

Lloyd Zusman ljz at asfast.com
Thu Oct 9 23:01:20 EDT 2008

Under macosx (Leopard), I can run the standard build of Carbon emacs 
(22.3.1) inside of a Terminal window by invoking the following command
line from within Terminal:

    /Applications/Emacs.app/Contents/MacOS/Emacs -nw FILE

... where FILE is the item that I want to edit.

If I run it in this way, events defined Emacs' `special-event-map' are
invoked asynchronously and in real time. For example, if I define a
[sigusr1] event, its `special-event-map' handler gets invoked as soon as
I send a USR1 signal to the Emacs process. This is the behavior that I
am expecting.

However, if I run Carbon Emacs without the `-nw' flag so that it creates
and manages its own window outside of Terminal, these `special-event-map'
events don't get invoked in real time any more, but rather, they only get
invoked the next time I interact directly with the Emacs window with either
the mouse or a keystroke. In other words, if I am trapping [sigusr1] as 
described above and send a USR1 signal to the process, nothing happens
until I click in the Emacs window with the mouse or perform some sort of 
keyboard interaction with it, at which time the [sigusr1] events that have 
accumulated all get processed, one after the other.

It's as if the windowed version of Carbon Emacs can only process
`special-event-map' events in synchronization with the keyboard and mouse
input queues.

Has anyone else seen this behavior? If so, is there any way that you know
of to tell the windowed version of Carbon Emacs to process [sigusr1] and
other `special-event-map' events in an asynchronous manner in the same
way that they get processed when `-nw' is specified and Carbon Emacs is
running in a Terminal?

Thanks in advance.

 Lloyd Zusman
 ljz at asfast.com
 God bless you.

More information about the MacOSX-Emacs mailing list