Now we’re going to discuss Emacs LISP programming for X, picking up where Chapter 13 left off. Through our discussion of the various user-accessible ways of working with the X primitives, you should already have some intuitive understanding of how Emacs’ X-interface code works. In order to discuss Emacs LISP programming under X, we’ll have to go into these concepts a bit more formally and in somewhat greater detail.
In this section, we’ll discuss each of the major new primitive concepts associated with Emacs’ X support. If you’re not interested in programming Emacs LISP, you can bail out from here to the end of chapter.
There are three things keep in mind as you read this section:
Yes, some of these concepts (menus and text properties in particular) could make sense outside of an X or GUI environment. At the time of the writing, however, they’re only spottily supported on character-terminal Emacs, if they’re supported at all. 
Each concept is generally associated with a new Emacs LISP data structure. In understanding the new behaviors, it’s helpful to bear in mind what kinds of operations on each data structure make sense—and what kinds of operations will be cheap or expensive.
The behavior of some X-related functions and the shape of some X-related data structures have changed (in a few cases incompatibly) since the first release of Emacs 19. Although dramatic changes in future releases seem unlikely at this time, a little care and extra ...