Table of Contents
1. Introduction
2. Authorship of XEmacs
3. A History of Emacs
3.1 Through Version 18
3.2 Epoch
3.3 Lucid Emacs
3.4 GNU Emacs 19
3.5 GNU Emacs 20
3.6 XEmacs
4. The XEmacs Split
5. XEmacs from the Outside
6. The Lisp Language
7. XEmacs from the Perspective of Building
8. Build-Time Dependencies
9. The Modules of XEmacs
9.1 A Summary of the Various XEmacs Modules
9.2 Modules for Building XEmacs
9.2.1 Modules for Build Configuration
9.2.2 Modules for Compiling XEmacs
9.2.3 Modules for Preloading Lisp
9.3 Low-Level Modules
9.4 Basic Lisp Modules
9.5 Modules for Standard Editing Operations
9.6 Modules for Interfacing with the File System
9.7 Modules for Other Aspects of the Lisp Interpreter and Object System
9.8 Modules for Interfacing with the Operating System
10. The Build Configuration System
10.1 The version.sh Script
10.2 Adding Configurable Features
10.3 The configure Script
10.4 The Makefile Precursors
11. Rules When Writing New C Code
11.1 Introduction to Writing C Code
11.2 Writing New Modules
11.3 Working with Lisp Objects
11.4 Writing Lisp Primitives
11.5 Writing Good Comments
11.6 Adding Global Lisp Variables
11.7 Writing Macros
11.8 Proper Use of Unsigned Types
11.9 Major Textual Changes
11.9.1 Great Integral Type Renaming
11.9.2 Text/Char Type Renaming
11.10 Debugging and Testing
12. Regression Testing XEmacs
12.1 How to Regression-Test
12.2 Modules for Regression Testing
13. CVS Techniques
13.1 Creating a Branch
13.2 Merging a Branch into the Trunk
14. XEmacs from the Inside
15. Basic Types
16. Low-Level Allocation
16.1 Basic Heap Allocation
16.2 Stack Allocation
16.3 Dynamic Arrays
16.4 Allocation by Blocks
16.5 Modules for Allocation
17. The XEmacs Object System (Abstractly Speaking)
18. How Lisp Objects Are Represented in C
19. Allocation of Objects in XEmacs Lisp
19.1 Introduction to Allocation
19.2 Garbage Collection
19.3 GCPROing
19.4 Garbage Collection - Step by Step
19.4.1 Invocation
19.4.2 garbage_collect_1
19.4.3 mark_object
19.4.4 gc_sweep
19.4.5 sweep_lcrecords_1
19.4.6 compact_string_chars
19.4.7 sweep_strings
19.4.8 sweep_bit_vectors_1
19.5 Integers and Characters
19.6 Allocation from Frob Blocks
19.7 lrecords
19.8 Low-level allocation
19.9 Cons
19.10 Vector
19.11 Bit Vector
19.12 Symbol
19.13 Marker
19.14 String
19.15 Compiled Function
20. The Lisp Reader and Compiler
21. Evaluation; Stack Frames; Bindings
21.1 Evaluation
21.2 Dynamic Binding; The specbinding Stack; Unwind-Protects
21.3 Simple Special Forms
21.4 Catch and Throw
21.5 Error Trapping
22. Symbols and Variables
22.1 Introduction to Symbols
22.2 Obarrays
22.3 Symbol Values
23. Buffers
23.1 Introduction to Buffers
23.2 Buffer Lists
23.3 Markers and Extents
23.4 The Buffer Object
24. Text
24.1 The Text in a Buffer
24.2 Ibytes and Ichars
24.3 Byte-Char Position Conversion
24.4 Searching and Matching
25. Multilingual Support
25.1 Introduction to Multilingual Issues #1
25.2 Introduction to Multilingual Issues #2
25.3 Introduction to Multilingual Issues #3
25.4 Introduction to Multilingual Issues #4
25.5 Character Sets
25.6 Encodings
25.6.1 Japanese EUC (Extended Unix Code)
25.6.2 JIS7
25.7 Internal Mule Encodings
25.7.1 Internal String Encoding
25.7.2 Internal Character Encoding
25.8 Byte/Character Types; Buffer Positions; Other Typedefs
25.8.1 Byte Types
25.8.2 Different Ways of Seeing Internal Text
25.8.3 Buffer Positions
25.8.4 Other Typedefs
25.8.5 Usage of the Various Representations
25.8.6 Working With the Various Representations
25.9 Internal Text APIs
25.9.1 Basic internal-format APIs
25.9.2 The DFC API
25.9.3 The Eistring API
25.10 Coding for Mule
25.10.1 Character-Related Data Types
25.10.2 Working With Character and Byte Positions
25.10.3 Conversion to and from External Data
25.10.4 General Guidelines for Writing Mule-Aware Code
25.10.5 An Example of Mule-Aware Code
25.10.6 Mule-izing Code
25.11 CCL
25.12 Microsoft Windows-Related Multilingual Issues
25.12.1 Microsoft Documentation
25.12.2 Locales, code pages, and other concepts of "language"
25.12.3 More about code pages
25.12.4 More about locales
25.12.5 Unicode support under Windows
25.12.6 The golden rules of writing Unicode-safe code
25.12.7 The format of the locale in setlocale()
25.12.8 Random other Windows I18N docs
25.13 Modules for Internationalization
25.14 The Great Mule Merge of March 2002
25.14.1 List of changed files in new Mule workspace
25.14.2 Changes to the MULE subsystems
25.14.3 Pervasive changes throughout XEmacs sources
25.14.4 Changes to specific subsystems
25.14.5 Mule changes by theme
25.14.6 File-coding rewrite
25.14.7 General User-Visible Changes
25.14.8 General Lisp-Visible Changes
25.14.9 User documentation
25.14.10 General internal changes
25.14.11 Ben's TODO list (probably obsolete)
25.14.12 Ben's README (probably obsolete)
26. Consoles; Devices; Frames; Windows
26.1 Introduction to Consoles; Devices; Frames; Windows
26.2 Point
26.3 Window Hierarchy
26.4 The Window Object
26.5 Creating a New Console, Device, or Frame Type
26.6 Modules for the Basic Displayable Lisp Objects
27. The Redisplay Mechanism
27.1 Critical Redisplay Sections
27.1.1 Nasty Bugs due to Reentrancy in Redisplay Structures handling QUIT
27.2 Line Start Cache
27.3 Redisplay Piece by Piece
27.4 Modules for the Redisplay Mechanism
27.5 Modules for other Display-Related Lisp Objects
28. Extents
28.1 Introduction to Extents
28.2 Extent Ordering
28.3 Format of the Extent Info
28.4 Zero-Length Extents
28.5 Mathematics of Extent Ordering
28.6 Extent Fragments
29. Faces
30. Glyphs
30.1 Glyph Instantiation
30.2 Widget-Glyphs
30.3 Widget-Glyphs in the MS-Windows Environment
30.4 Widget-Glyphs in the X Environment
31. Specifiers
32. Menus
33. Events and the Event Loop
33.1 Introduction to Events
33.2 Main Loop
33.3 Specifics of the Event Gathering Mechanism
33.4 Specifics About the Emacs Event
33.5 Event Queues
33.6 Event Stream Callback Routines
33.7 Other Event Loop Functions
33.8 Stream Pairs
33.9 Converting Events
33.10 Dispatching Events; The Command Builder
33.11 Focus Handling
33.12 Editor-Level Control Flow Modules
34. Asynchronous Events; Quit Checking
34.1 Signal Handling
34.2 Control-G (Quit) Checking
34.2.1 Reentrancy Problems due to QUIT Checking
34.3 Profiling
34.4 Asynchronous Timeouts
34.5 Exiting
35. Lstreams
35.1 Creating an Lstream
35.2 Lstream Types
35.3 Lstream Functions
35.4 Lstream Methods
36. Subprocesses
36.0.1 Ben's separate stderr notes (probably obsolete)
37. Interface to MS Windows
37.1 Different kinds of Windows environments
37.2 Windows Build Flags
37.3 Windows I18N Introduction
37.4 Modules for Interfacing with MS Windows
37.5 CHANGES from 21.4-windows branch (probably obsolete)
38. Interface to the X Window System
38.1 Lucid Widget Library
38.1.1 Generic Widget Interface
38.1.2 Scrollbars
38.1.3 Menubars
38.1.4 Checkboxes and Radio Buttons
38.1.5 Progress Bars
38.1.6 Tab Controls
38.2 Modules for Interfacing with X Windows
39. Dumping
39.1 Dumping Justification
39.2 Overview
39.3 Data descriptions
39.4 Dumping phase
39.4.1 Object inventory
39.4.2 Address allocation
39.4.3 The header
39.4.4 Data dumping
39.4.5 Pointers dumping
39.5 Reloading phase
39.5.1 File loading
39.5.2 Putting back the pdump_opaques
39.5.3 Putting back the pdump_root_block_ptrs
39.5.4 Object relocation
39.5.5 Putting back the pdump_root_objects and pdump_weak_object_chains
39.5.6 Reorganize the hash tables
39.6 Remaining issues
40. Future Work
40.1 Future Work -- General Suggestions
40.2 Future Work -- Elisp Compatibility Package
40.3 Future Work -- Drag-n-Drop
40.4 Future Work -- Standard Interface for Enabling Extensions
40.5 Future Work -- Better Initialization File Scheme
40.6 Future Work -- Keyword Parameters
40.7 Future Work -- Property Interface Changes
40.8 Future Work -- Toolbars
40.8.1 Future Work -- Easier Toolbar Customization
40.8.2 Future Work -- Toolbar Interface Changes
40.9 Future Work -- Menu API Changes
40.10 Future Work -- Removal of Misc-User Event Type
40.11 Future Work -- Mouse Pointer
40.11.1 Future Work -- Abstracted Mouse Pointer Interface
40.11.2 Future Work -- Busy Pointer
40.12 Future Work -- Extents
40.12.1 Future Work -- Everything should obey duplicable extents
40.13 Future Work -- Version Number and Development Tree Organization
40.14 Future Work -- Improvements to the xemacs.org Website
40.15 Future Work -- Keybindings
40.15.1 Future Work -- Keybinding Schemes
40.15.2 Future Work -- Better Support for Windows Style Key Bindings
40.15.3 Future Work -- Misc Key Binding Ideas
40.16 Future Work -- Byte Code Snippets
40.16.1 Future Work -- Autodetection
40.16.2 Future Work -- Conversion Error Detection
40.16.3 Future Work -- Unicode
40.16.4 Future Work -- BIDI Support
40.16.5 Future Work -- Localized Text/Messages
40.16.6 Proposal for How This All Ought to Work
40.17 Future Work -- Lisp Stream API
40.18 Future Work -- Multiple Values
40.19 Future Work -- Macros
40.20 Future Work -- Specifiers
40.21 Future Work -- Display Tables
40.22 Future Work -- Making Elisp Function Calls Faster
40.23 Future Work -- Lisp Engine Replacement
40.23.1 Future Work -- Lisp Engine Discussion
40.23.2 Future Work -- Lisp Engine Replacement -- Implementation
40.23.3 Future Work -- Startup File Modification by Packages
40.24 Future Work -- Better Rendering Support
40.24.1 Better Rendering Support -- Review Criteria
40.24.2 Better Rendering Support -- Implementation
40.24.3 Better Rendering Support -- Current Status
40.24.3.1 Bugs Reported in sjt-xft
40.24.4 Better Rendering Support -- Configuration with the Interim Patches
40.24.5 Better Rendering Support -- Modern Font Support
40.24.5.1 Modern Font Support -- Font Concepts
40.24.5.2 Modern Font Support -- fontconfig
40.24.5.3 Modern Font Support -- fontconfig
41. Future Work Discussion
41.1 Discussion -- Garbage Collection
41.1.1 Discussion -- Pure Space
41.1.2 Discussion -- Hashtable-Based Marking and Cleanup
41.1.3 Discussion -- The Anti-Cons
41.2 Discussion -- Glyphs
41.3 Discussion -- Dialog Boxes
41.4 Discussion -- Multilingual Issues
41.5 Discussion -- Instantiators and Generic Property Accessors
41.6 Discussion -- Switching to C++
41.7 Discussion -- Windows External Widget
41.8 Discussion -- Packages
41.9 Discussion -- Distribution Layout
42. Old Future Work
42.1 Old Future Work -- A Portable Unexec Replacement
42.2 Old Future Work -- Indirect Buffers
42.3 Old Future Work -- Improvements in support for non-ASCII (European) keysyms under X
42.4 Old Future Work -- RTF Clipboard Support
42.5 Old Future Work -- xemacs.org Mailing Address Changes
42.6 Old Future Work -- Lisp callbacks from critical areas of the C code
Index
This document was generated
by XEmacs Webmaster on October, 2 2007
using texi2html