[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Introduction

This manual documents the internals of XEmacs. It presumes knowledge of how to use XEmacs (see (xemacs)Top section ‘Top’ in XEmacs User’s Manual), and especially, knowledge of XEmacs Lisp (see (lispref)Top section ‘Top’ in XEmacs Lisp Reference Manual). Information in either of these manuals will not be repeated here, and some information in the Lisp Reference Manual in particular is more relevant to a person working on the internals than the average XEmacs Lisp programmer. (In such cases, a cross-reference is usually made to the Lisp Reference Manual.)

Ideally, this manual would be complete and up-to-date. Unfortunately, in reality it is neither, due to the limited resources of the maintainers of XEmacs. (That said, it is much better than the internal documentation of most programs.) Also, much information about the internals is documented only in the code itself, in the form of comments. Furthermore, since the maintainers are more likely to be working on the code than on this manual, information contained in comments may be more up-to-date than information in this manual. Do not assume that all information in this manual is necessarily accurate as of the snapshot of the code you are looking at, and in the case of contradictions between the code comments and the manual, always assume that the code comments are correct. (Because of the proximity of the comments to the code, comments will rarely be out-of-date.)

The manual is organized in chapters which are broadly grouped into major divisions:

  1. First is the introduction, including this chapter and chapters on the history and authorship of XEmacs.
  2. Next, starting with XEmacs from the Outside, are a couple of chapters giving a broad overview of the internal workings of XEmacs.
  3. Afterwards, starting with XEmacs from the Perspective of Building, are some chapters documenting important information relevant to those working on the code.
  4. The remaining divisions document the nitty-gritty details of the internal workings. First, starting with XEmacs from the Inside, is a division on the low-level types and allocation routines and the workings of the Lisp interpreter that drives XEmacs.
  5. Next, starting with Buffers, is a division on the parts of the code specifically devoted to text processing, including multilingual support (Mule).
  6. Afterwards, starting with Consoles; Devices; Frames; Windows, is a division covering the display mechanism and the objects and modules relevant to this.
  7. Then, starting with Events and the Event Loop, is a division covering the interface between XEmacs and the outside world, including user interactions, subprocesses, file I/O, interfaces to particular windowing systems, and dumping.
  8. Finally, starting with Future Work, is a division containing proposals and discussion relating to future work on XEmacs.

This manual was primarily written by Ben Wing. Certain sections were written by others, including those mentioned on the title page as well as other coders. Some sections were lifted directly from comments in the code, and in those cases we may not completely be aware of the authorship. In addition, due to the collaborative nature of XEmacs, many people have made small changes and emendations as they have discovered problems.

The following is a (necessarily incomplete) list of the work that was not done by Ben Wing (for more complete information, take a look at the ChangeLog for the ‘man’ directory and the CVS records of actual changes):

Stephen Turnbull

Various cleanup work, mostly post-2000. Object-Oriented Techniques in XEmacs. A Reader’s Guide to XEmacs Coding Conventions. Searching and Matching. Regression Testing XEmacs. Modules for Regression Testing. Lucid Widget Library. A number of sections in the Future Work chapter.

Martin Buchholz

Various cleanup work, mostly pre-2001. Docs on inline functions. Docs on dfc conversion functions (Conversion to and from External Data). Improvements in support for non-ASCII (European) keysyms under X. A section or two in the Future Work chapter.

Hrvoje Niksic

Coding for Mule.

Matthias Neubauer

Garbage Collection - Step by Step.

Olivier Galibert

Portable dumper documentation.

Andy Piper

Redisplay Piece by Piece. Glyphs.

Chuck Thompson

Line Start Cache.

Kenichi Handa


Jamie Zawinski

A couple of sections in the Future Work chapter.

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Aidan Kehoe on December 27, 2016 using texi2html 1.82.