A Note on Good X Programming Style
In the section describing frame objects earlier on, we noted that several frame-related Emacs LISP functions duplicate operations such as window iconification that are normally driven through your X Window System manager. As you study the Emacs LISP Reference Manual, you’ll find that there are other such functions we haven’t covered here--for example, it’s possible to read and write the X server selection buffers directly from Emacs LISP. Although functions like these are made available in Emacs LISP in accordance with its design philosophy, you should think twice--and then think again—before using them in an Emacs LISP program that isn’t itself driven by an X input event loop. Conventional interactive programs (including Emacs on character terminals) have a modal I/O style: they’re designed to be used one at a time, and they explicitly solicit input from the user when they’re good and ready for it. A lot of the program’s state is determined by where the user is in the overall execution sequence. The interaction profile of such programs looks like a collection of little I/O loops in order, each one expecting a subset of input events potentially different from the previous.
In the X world, by contrast, almost all programs (and all good programs) are driven by one big nonmodal event loop that accepts a large range of X input events besides ordinary keystrokes, including mouse clicks, exposure events, and resizes. Very little of the program state ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access