Sync up with r21-2-44. r21-2-44-utf-2000-0_18-n1
authortomo <tomo>
Tue, 1 Jan 2002 06:47:15 +0000 (06:47 +0000)
committertomo <tomo>
Tue, 1 Jan 2002 06:47:15 +0000 (06:47 +0000)
131 files changed:
etc/etags.1
info/emodules.info
info/internals.info
info/internals.info-1
info/internals.info-2
info/internals.info-3
info/internals.info-4
info/internals.info-5
info/internals.info-6
info/internals.info-7
info/internals.info-8
info/internals.info-9
info/lispref.info
info/lispref.info-7
info/lispref.info-9
info/texinfo.info
info/texinfo.info-1
info/texinfo.info-10
info/texinfo.info-11
info/texinfo.info-12
info/texinfo.info-2
info/texinfo.info-3
info/texinfo.info-4
info/texinfo.info-5
info/texinfo.info-6
info/texinfo.info-7
info/texinfo.info-8
info/texinfo.info-9
info/xemacs-faq.info
info/xemacs-faq.info-1
info/xemacs-faq.info-2
info/xemacs-faq.info-3
info/xemacs-faq.info-4
info/xemacs-faq.info-5
info/xemacs.info
info/xemacs.info-1
info/xemacs.info-10
info/xemacs.info-11
info/xemacs.info-12
info/xemacs.info-13
info/xemacs.info-14
info/xemacs.info-15
info/xemacs.info-16
info/xemacs.info-17
info/xemacs.info-18
info/xemacs.info-19
info/xemacs.info-2
info/xemacs.info-20
info/xemacs.info-21
info/xemacs.info-22
info/xemacs.info-23
info/xemacs.info-3
info/xemacs.info-4
info/xemacs.info-5
info/xemacs.info-6
info/xemacs.info-7
info/xemacs.info-8
info/xemacs.info-9
lib-src/ChangeLog
lib-src/etags.c
lib-src/gnuclient.c
lib-src/gnuserv.c
lib-src/gnuslib.c
lib-src/pop.c
lisp/ChangeLog
lisp/gutter-items.el
lisp/gutter.el
lisp/mwheel.el
lisp/sound.el
lisp/startup.el
lwlib/ChangeLog
lwlib/config.h.in
lwlib/lwlib-Xm.c
lwlib/xlwcheckbox.c
lwlib/xlwgauge.c
lwlib/xlwgcs.c
lwlib/xlwgcs.h
lwlib/xlwradio.c
man/ChangeLog
man/lispref/eval.texi
man/lispref/variables.texi
man/xemacs/packages.texi
man/xemacs/programs.texi
man/xemacs/xemacs.texi
nt/ChangeLog
src/.gdbinit
src/ChangeLog
src/abbrev.c
src/alloc.c
src/buffer.c
src/chartab.c
src/chartab.h
src/cmdloop.c
src/commands.h
src/config.h.in
src/console-x.h
src/data.c
src/dired-msw.c
src/dumper.c
src/eldap.c
src/elhash.c
src/emacs.c
src/eval.c
src/event-Xt.c
src/event-msw.c
src/event-stream.c
src/extents.c
src/glyphs-widget.c
src/hpplay.c
src/keymap.c
src/lisp-disunion.h
src/lisp.h
src/m/hp9000s300.h
src/m/sun386.h
src/mule-canna.c
src/mule-wnnfns.c
src/nt.c
src/process-unix.c
src/profile.c
src/ralloc.c
src/redisplay.c
src/regex.c
src/select-x.c
src/select.c
src/sound.c
src/symbols.c
src/symeval.h
src/sysproc.h
src/tparam.c
src/window.c
tests/ChangeLog

index 735b187..3ae60ec 100644 (file)
@@ -1,6 +1,6 @@
 .\" Copyright (c) 1992 Free Software Foundation
 .\" See section COPYING for conditions for redistribution
-.TH etags 1 "02nov1999" "GNU Tools" "GNU Tools"
+.TH etags 1 "14gen2001" "GNU Tools" "GNU Tools"
 .de BP
 .sp
 .ti -.2i
@@ -16,28 +16,28 @@ etags, ctags \- generate tag file for Emacs, vi
 .if n .br
 .B [\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
 .br
-[\|\-\-append\|] [\|\-\-c++\|] [\|\-\-no\-defines\|]
-[\|\-\-no\-globals\|] [\|\-\-include=\fIfile\fP\|]
-[\|\-\-ignore\-indentation\|] [\|\-\-language=\fIlanguage\fP\|]
-[\|\-\-members\|] [\|\-\-output=\fItagfile\fP\|]
-[\|\-\-regex=\fIregexp\fP\|] [\|\-\-no\-regex\|]
-[\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
-[\|\-\-help\|] [\|\-\-version\|]
+.B [\|\-\-append\|] [\|\-\-no\-defines\|]
+.B [\|\-\-no\-globals\|] [\|\-\-include=\fIfile\fP\|]
+.B [\|\-\-ignore\-indentation\|] [\|\-\-language=\fIlanguage\fP\|]
+.B [\|\-\-members\|] [\|\-\-output=\fItagfile\fP\|]
+.B [\|\-\-regex=\fIregexp\fP\|] [\|\-\-no\-regex\|]
+.B [\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
+.B [\|\-\-help\|] [\|\-\-version\|]
 \fIfile\fP .\|.\|.
 
 .B ctags [\|\-aCdgImRVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
 .if n .br
 .B [\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
 .br
-[\|\-\-append\|] [\|\-\-backward\-search\|] [\|\-\-c++\|]
-[\|\-\-cxref\|] [\|\-\-defines\|] [\|\-\-forward\-search\|]
-[\|\-\-globals\|] [\|\-\-ignore\-indentation\|]
-[\|\-\-language=\fIlanguage\fP\|] [\|\-\-members\|]
-[\|\-\-output=\fItagfile\fP\|] [\|\-\-regex=\fIregexp\fP\|]
-[\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
-[\|\-\-typedefs\|] [\|\-\-typedefs\-and\-c++\|]
-[\|\-\-update\|] [\|\-\-no\-warn\|]
-[\|\-\-help\|] [\|\-\-version\|]
+.B [\|\-\-append\|] [\|\-\-backward\-search\|]
+.B [\|\-\-cxref\|] [\|\-\-defines\|] [\|\-\-forward\-search\|]
+.B [\|\-\-globals\|] [\|\-\-ignore\-indentation\|]
+.B [\|\-\-language=\fIlanguage\fP\|] [\|\-\-members\|]
+.B [\|\-\-output=\fItagfile\fP\|] [\|\-\-regex=\fIregexp\fP\|]
+.B [\|\-\-ignore\-case\-regex=\fIregexp\fP\|]
+.B [\|\-\-typedefs\|] [\|\-\-typedefs\-and\-c++\|]
+.B [\|\-\-update\|] [\|\-\-no\-warn\|]
+.B [\|\-\-help\|] [\|\-\-version\|]
 \fIfile\fP .\|.\|.
 .ad b
 .hy 1
@@ -48,10 +48,10 @@ understood by
 \&; the `\|\fBctags\fP\|' program is used to create a similar table in a
 format understood by
 .BR vi ( 1 )\c
-\&.  Both forms of the program understand
-the syntax of C, Objective C, C++, Java, Fortran, Pascal, Cobol, Ada, Perl,
-LaTeX, Scheme, Emacs Lisp/Common Lisp, Postscript, Erlang, Python, Prolog and
-most assembler\-like syntaxes.
+\&.  Both forms of the program understand the syntax of C, Objective C,
+C++, Java, Fortran, Ada, Cobol, Erlang, LaTeX, Emacs Lisp/Common Lisp,
+makefiles, Pascal, Perl, Postscript, Python, Prolog, Scheme and most
+assembler\-like syntaxes.
 Both forms read the files specified on the command line, and write a tag
 table (defaults: `\|TAGS\|' for \fBetags\fP, `\|tags\|' for
 \fBctags\fP) in the current working directory.
@@ -81,11 +81,6 @@ The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
 through files.
 Only \fBctags\fP accepts this option.
 .TP
-.B \-C, \-\-c++
-Treat files with `\|.c\|' and `\|.h\|' extensions as C++ code, not C
-code.  Files with `\|.C\|', `\|.H\|', `\|.cxx\|', `\|.hxx\|', or
-`\|.cc\|' extensions are always assumed to be C++ code.
-.TP
 .B \-\-declarations
 In C and derived languages, create tags for function declarations,
 and create tags for extern variables unless \-\-no\-globals is used.
@@ -125,7 +120,7 @@ Parse the following files according to the given language.  More than
 one such options may be intermixed with filenames.  Use \fB\-\-help\fP
 to get a list of the available languages and their default filename
 extensions.  The `auto' language can be used to restore automatic
-detection of language based on filename extension.  The `none'
+detection of language based on the file name.  The `none'
 language may be used to disable language parsing altogether; only
 regexp matching is done in this case (see the \fB\-\-regex\fP option).
 .TP
@@ -143,8 +138,7 @@ Only tag packages in Ada files.
 Explicit name of file for tag table; overrides default `\|TAGS\|' or
 `\|tags\|'.   (But ignored with \fB\-v\fP or \fB\-x\fP.)
 .TP
-\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP
-\fB\-\-ignore\-case\-regex=\fIregexp\fP\
+\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP, \fB\-\-ignore\-case\-regex=\fIregexp\fP
 Make tags based on regexp matching for each line of the files following
 this option, in addition to the tags made with the standard parsing based
 on language.  When using \-\-regex, case is significant, while it is not
@@ -187,9 +181,9 @@ Tag TCL files (this last example shows the usage of a \fItagregexp\fP):
 
 .br
 A regexp can be preceded by {lang}, thus restriciting it to match lines of
-files of the specified language.  Use \fBetags --help\bP to obtain a list
+files of the specified language.  Use \fBetags --help\fP to obtain a list
 of the recognised languages.  This feature is particularly useful inside
-\fBregex files\fB.  A regex file contains one regex per line.  Empty lines,
+\fBregex files\fP.  A regex file contains one regex per line.  Empty lines,
 and those lines beginning with space or tab are ignored.  Lines beginning
 with @ are references to regex files whose name follows the @ sign.  Other
 lines are considered regular expressions like those following \-\-regex.
index c527ed0..15eb210 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/emodules.info, produced by makeinfo version 4.0 from
+This is ../info/emodules.info, produced by makeinfo version 4.0b from
 emodules.texi.
 
    This file documents the module loading technology of XEmacs.
@@ -937,23 +937,23 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1536
-Node: Introduction\7f2883
-Node: Anatomy of a Module\7f7391
-Node: Required Header File\7f8205
-Node: Required Functions\7f10124
-Node: Required Variables\7f12848
-Node: Loading other Modules\7f15534
-Node: Using ellcc\7f17591
-Node: Compile Mode\7f19385
-Node: Initialization Mode\7f20753
-Node: Link Mode\7f25787
-Node: Other ellcc options\7f26932
-Node: Environment Variables\7f29511
-Node: Defining Functions\7f31202
-Node: Using DEFUN\7f33213
-Node: Declaring Functions\7f34924
-Node: Defining Variables\7f36267
-Node: Index\7f38510
+Node: Top\7f1537
+Node: Introduction\7f2884
+Node: Anatomy of a Module\7f7392
+Node: Required Header File\7f8206
+Node: Required Functions\7f10125
+Node: Required Variables\7f12849
+Node: Loading other Modules\7f15535
+Node: Using ellcc\7f17592
+Node: Compile Mode\7f19386
+Node: Initialization Mode\7f20754
+Node: Link Mode\7f25788
+Node: Other ellcc options\7f26933
+Node: Environment Variables\7f29512
+Node: Defining Functions\7f31203
+Node: Using DEFUN\7f33214
+Node: Declaring Functions\7f34925
+Node: Defining Variables\7f36268
+Node: Index\7f38511
 \1f
 End Tag Table
index 0446b0a..d0f06ab 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -39,159 +39,159 @@ Foundation instead of in the original English.
 
 \1f
 Indirect:
-internals.info-1: 1776
-internals.info-2: 46637
-internals.info-3: 94562
-internals.info-4: 144259
-internals.info-5: 194152
-internals.info-6: 243742
-internals.info-7: 287809
-internals.info-8: 336676
-internals.info-9: 380670
+internals.info-1: 1777
+internals.info-2: 46638
+internals.info-3: 94563
+internals.info-4: 144260
+internals.info-5: 194153
+internals.info-6: 243743
+internals.info-7: 287810
+internals.info-8: 336677
+internals.info-9: 380671
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1776
-Node: A History of Emacs\7f7040
-Node: Through Version 18\7f8565
-Node: Lucid Emacs\7f12013
-Node: GNU Emacs 19\7f15031
-Node: GNU Emacs 20\7f17214
-Node: XEmacs\7f17641
-Node: XEmacs From the Outside\7f20820
-Node: The Lisp Language\7f22587
-Node: XEmacs From the Perspective of Building\7f32130
-Node: XEmacs From the Inside\7f38255
-Node: The XEmacs Object System (Abstractly Speaking)\7f46637
-Node: How Lisp Objects Are Represented in C\7f60723
-Node: Rules When Writing New C Code\7f65400
-Node: General Coding Rules\7f66204
-Node: Writing Lisp Primitives\7f72014
-Node: Adding Global Lisp Variables\7f83183
-Node: Coding for Mule\7f86821
-Node: Character-Related Data Types\7f87800
-Node: Working With Character and Byte Positions\7f90797
-Node: Conversion to and from External Data\7f94562
-Node: General Guidelines for Writing Mule-Aware Code\7f100703
-Node: An Example of Mule-Aware Code\7f103391
-Node: Techniques for XEmacs Developers\7f105372
-Node: A Summary of the Various XEmacs Modules\7f113319
-Node: Low-Level Modules\7f114139
-Node: Basic Lisp Modules\7f121600
-Node: Modules for Standard Editing Operations\7f128194
-Node: Editor-Level Control Flow Modules\7f134082
-Node: Modules for the Basic Displayable Lisp Objects\7f137593
-Node: Modules for other Display-Related Lisp Objects\7f140546
-Node: Modules for the Redisplay Mechanism\7f141887
-Node: Modules for Interfacing with the File System\7f144259
-Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f147957
-Node: Modules for Interfacing with the Operating System\7f153410
-Node: Modules for Interfacing with X Windows\7f160966
-Node: Modules for Internationalization\7f164449
-Node: Allocation of Objects in XEmacs Lisp\7f167086
-Node: Introduction to Allocation\7f167607
-Node: Garbage Collection\7f171293
-Node: GCPROing\7f172449
-Node: Garbage Collection - Step by Step\7f179453
-Node: Invocation\7f179845
-Node: garbage_collect_1\7f182858
-Node: mark_object\7f192340
-Node: gc_sweep\7f194152
-Node: sweep_lcrecords_1\7f199215
-Node: compact_string_chars\7f200210
-Node: sweep_strings\7f202390
-Node: sweep_bit_vectors_1\7f203355
-Node: Integers and Characters\7f204031
-Node: Allocation from Frob Blocks\7f204783
-Node: lrecords\7f206387
-Node: Low-level allocation\7f218613
-Node: Cons\7f222720
-Node: Vector\7f223446
-Node: Bit Vector\7f224023
-Node: Symbol\7f224516
-Node: Marker\7f224870
-Node: String\7f225425
-Node: Compiled Function\7f229038
-Node: Dumping\7f229207
-Node: Overview\7f231428
-Node: Data descriptions\7f231998
-Node: Dumping phase\7f234003
-Node: Object inventory\7f234406
-Node: Address allocation\7f237342
-Node: The header\7f238731
-Node: Data dumping\7f239176
-Node: Pointers dumping\7f239837
-Node: Reloading phase\7f241227
-Node: Remaining issues\7f242781
-Node: Events and the Event Loop\7f243742
-Node: Introduction to Events\7f244192
-Node: Main Loop\7f246141
-Node: Specifics of the Event Gathering Mechanism\7f249716
-Node: Specifics About the Emacs Event\7f262169
-Node: The Event Stream Callback Routines\7f262424
-Node: Other Event Loop Functions\7f262669
-Node: Converting Events\7f263809
-Node: Dispatching Events; The Command Builder\7f264418
-Node: Evaluation; Stack Frames; Bindings\7f264653
-Node: Evaluation\7f264995
-Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f271550
-Node: Simple Special Forms\7f273934
-Node: Catch and Throw\7f274717
-Node: Symbols and Variables\7f277292
-Node: Introduction to Symbols\7f277556
-Node: Obarrays\7f278624
-Node: Symbol Values\7f282157
-Node: Buffers and Textual Representation\7f284445
-Node: Introduction to Buffers\7f285103
-Node: The Text in a Buffer\7f287809
-Node: Buffer Lists\7f294959
-Node: Markers and Extents\7f296910
-Node: Bufbytes and Emchars\7f299175
-Node: The Buffer Object\7f299390
-Node: MULE Character Sets and Encodings\7f302870
-Node: Character Sets\7f303932
-Node: Encodings\7f307417
-Node: Japanese EUC (Extended Unix Code)\7f308484
-Node: JIS7\7f309316
-Node: Internal Mule Encodings\7f310666
-Node: Internal String Encoding\7f312496
-Node: Internal Character Encoding\7f314641
-Node: CCL\7f316365
-Node: The Lisp Reader and Compiler\7f323118
-Node: Lstreams\7f323331
-Node: Creating an Lstream\7f324362
-Node: Lstream Types\7f325589
-Node: Lstream Functions\7f325841
-Node: Lstream Methods\7f329407
-Node: Consoles; Devices; Frames; Windows\7f332549
-Node: Introduction to Consoles; Devices; Frames; Windows\7f332864
-Node: Point\7f335397
-Node: Window Hierarchy\7f336676
-Node: The Window Object\7f341128
-Node: The Redisplay Mechanism\7f344565
-Node: Critical Redisplay Sections\7f345357
-Node: Line Start Cache\7f346344
-Node: Redisplay Piece by Piece\7f349580
-Node: Extents\7f351617
-Node: Introduction to Extents\7f352151
-Node: Extent Ordering\7f353293
-Node: Format of the Extent Info\7f354534
-Node: Zero-Length Extents\7f356421
-Node: Mathematics of Extent Ordering\7f357821
-Node: Extent Fragments\7f362578
-Node: Faces\7f363664
-Node: Glyphs\7f363780
-Node: Specifiers\7f370413
-Node: Menus\7f370542
-Node: Subprocesses\7f372800
-Node: Interface to the X Window System\7f374786
-Node: Lucid Widget Library\7f375067
-Node: Generic Widget Interface\7f376358
-Node: Scrollbars\7f379917
-Node: Menubars\7f380060
-Node: Checkboxes and Radio Buttons\7f380203
-Node: Progress Bars\7f380389
-Node: Tab Controls\7f380549
-Node: Index\7f380670
+Node: Top\7f1777
+Node: A History of Emacs\7f7041
+Node: Through Version 18\7f8566
+Node: Lucid Emacs\7f12014
+Node: GNU Emacs 19\7f15032
+Node: GNU Emacs 20\7f17215
+Node: XEmacs\7f17642
+Node: XEmacs From the Outside\7f20821
+Node: The Lisp Language\7f22588
+Node: XEmacs From the Perspective of Building\7f32131
+Node: XEmacs From the Inside\7f38256
+Node: The XEmacs Object System (Abstractly Speaking)\7f46638
+Node: How Lisp Objects Are Represented in C\7f60724
+Node: Rules When Writing New C Code\7f65401
+Node: General Coding Rules\7f66205
+Node: Writing Lisp Primitives\7f72015
+Node: Adding Global Lisp Variables\7f83184
+Node: Coding for Mule\7f86822
+Node: Character-Related Data Types\7f87801
+Node: Working With Character and Byte Positions\7f90798
+Node: Conversion to and from External Data\7f94563
+Node: General Guidelines for Writing Mule-Aware Code\7f100704
+Node: An Example of Mule-Aware Code\7f103392
+Node: Techniques for XEmacs Developers\7f105373
+Node: A Summary of the Various XEmacs Modules\7f113320
+Node: Low-Level Modules\7f114140
+Node: Basic Lisp Modules\7f121601
+Node: Modules for Standard Editing Operations\7f128195
+Node: Editor-Level Control Flow Modules\7f134083
+Node: Modules for the Basic Displayable Lisp Objects\7f137594
+Node: Modules for other Display-Related Lisp Objects\7f140547
+Node: Modules for the Redisplay Mechanism\7f141888
+Node: Modules for Interfacing with the File System\7f144260
+Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f147958
+Node: Modules for Interfacing with the Operating System\7f153411
+Node: Modules for Interfacing with X Windows\7f160967
+Node: Modules for Internationalization\7f164450
+Node: Allocation of Objects in XEmacs Lisp\7f167087
+Node: Introduction to Allocation\7f167608
+Node: Garbage Collection\7f171294
+Node: GCPROing\7f172450
+Node: Garbage Collection - Step by Step\7f179454
+Node: Invocation\7f179846
+Node: garbage_collect_1\7f182859
+Node: mark_object\7f192341
+Node: gc_sweep\7f194153
+Node: sweep_lcrecords_1\7f199216
+Node: compact_string_chars\7f200211
+Node: sweep_strings\7f202391
+Node: sweep_bit_vectors_1\7f203356
+Node: Integers and Characters\7f204032
+Node: Allocation from Frob Blocks\7f204784
+Node: lrecords\7f206388
+Node: Low-level allocation\7f218614
+Node: Cons\7f222721
+Node: Vector\7f223447
+Node: Bit Vector\7f224024
+Node: Symbol\7f224517
+Node: Marker\7f224871
+Node: String\7f225426
+Node: Compiled Function\7f229039
+Node: Dumping\7f229208
+Node: Overview\7f231429
+Node: Data descriptions\7f231999
+Node: Dumping phase\7f234004
+Node: Object inventory\7f234407
+Node: Address allocation\7f237343
+Node: The header\7f238732
+Node: Data dumping\7f239177
+Node: Pointers dumping\7f239838
+Node: Reloading phase\7f241228
+Node: Remaining issues\7f242782
+Node: Events and the Event Loop\7f243743
+Node: Introduction to Events\7f244193
+Node: Main Loop\7f246142
+Node: Specifics of the Event Gathering Mechanism\7f249717
+Node: Specifics About the Emacs Event\7f262170
+Node: The Event Stream Callback Routines\7f262425
+Node: Other Event Loop Functions\7f262670
+Node: Converting Events\7f263810
+Node: Dispatching Events; The Command Builder\7f264419
+Node: Evaluation; Stack Frames; Bindings\7f264654
+Node: Evaluation\7f264996
+Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f271551
+Node: Simple Special Forms\7f273935
+Node: Catch and Throw\7f274718
+Node: Symbols and Variables\7f277293
+Node: Introduction to Symbols\7f277557
+Node: Obarrays\7f278625
+Node: Symbol Values\7f282158
+Node: Buffers and Textual Representation\7f284446
+Node: Introduction to Buffers\7f285104
+Node: The Text in a Buffer\7f287810
+Node: Buffer Lists\7f294960
+Node: Markers and Extents\7f296911
+Node: Bufbytes and Emchars\7f299176
+Node: The Buffer Object\7f299391
+Node: MULE Character Sets and Encodings\7f302871
+Node: Character Sets\7f303933
+Node: Encodings\7f307418
+Node: Japanese EUC (Extended Unix Code)\7f308485
+Node: JIS7\7f309317
+Node: Internal Mule Encodings\7f310667
+Node: Internal String Encoding\7f312497
+Node: Internal Character Encoding\7f314642
+Node: CCL\7f316366
+Node: The Lisp Reader and Compiler\7f323119
+Node: Lstreams\7f323332
+Node: Creating an Lstream\7f324363
+Node: Lstream Types\7f325590
+Node: Lstream Functions\7f325842
+Node: Lstream Methods\7f329408
+Node: Consoles; Devices; Frames; Windows\7f332550
+Node: Introduction to Consoles; Devices; Frames; Windows\7f332865
+Node: Point\7f335398
+Node: Window Hierarchy\7f336677
+Node: The Window Object\7f341129
+Node: The Redisplay Mechanism\7f344566
+Node: Critical Redisplay Sections\7f345358
+Node: Line Start Cache\7f346345
+Node: Redisplay Piece by Piece\7f349581
+Node: Extents\7f351618
+Node: Introduction to Extents\7f352152
+Node: Extent Ordering\7f353294
+Node: Format of the Extent Info\7f354535
+Node: Zero-Length Extents\7f356422
+Node: Mathematics of Extent Ordering\7f357822
+Node: Extent Fragments\7f362579
+Node: Faces\7f363665
+Node: Glyphs\7f363781
+Node: Specifiers\7f370414
+Node: Menus\7f370543
+Node: Subprocesses\7f372801
+Node: Interface to the X Window System\7f374787
+Node: Lucid Widget Library\7f375068
+Node: Generic Widget Interface\7f376359
+Node: Scrollbars\7f379918
+Node: Menubars\7f380061
+Node: Checkboxes and Radio Buttons\7f380204
+Node: Progress Bars\7f380390
+Node: Tab Controls\7f380550
+Node: Index\7f380671
 \1f
 End Tag Table
index 880768a..b357f91 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0d0f625..14bf799 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 6cc8d80..48b542a 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index c717881..7a7a4b7 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index af423f8..17671f1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 5b89518..9a9dbe1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 8f3633d..e000598 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index d641579..36c52e9 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0c91f06..314d717 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 4.0b from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index ada9e9b..fd2a722 100644 (file)
@@ -58,47 +58,47 @@ lispref.info-4: 147442
 lispref.info-5: 197181
 lispref.info-6: 245535
 lispref.info-7: 293942
-lispref.info-8: 342607
-lispref.info-9: 387689
-lispref.info-10: 436620
-lispref.info-11: 485477
-lispref.info-12: 534008
-lispref.info-13: 581560
-lispref.info-14: 629418
-lispref.info-15: 678833
-lispref.info-16: 726828
-lispref.info-17: 772165
-lispref.info-18: 819635
-lispref.info-19: 867193
-lispref.info-20: 914819
-lispref.info-21: 962846
-lispref.info-22: 1011768
-lispref.info-23: 1058031
-lispref.info-24: 1104495
-lispref.info-25: 1154155
-lispref.info-26: 1202846
-lispref.info-27: 1251701
-lispref.info-28: 1300368
-lispref.info-29: 1350319
-lispref.info-30: 1398468
-lispref.info-31: 1444123
-lispref.info-32: 1494112
-lispref.info-33: 1542682
-lispref.info-34: 1589887
-lispref.info-35: 1639713
-lispref.info-36: 1688389
-lispref.info-37: 1734122
-lispref.info-38: 1783261
-lispref.info-39: 1830703
-lispref.info-40: 1879256
-lispref.info-41: 1925809
-lispref.info-42: 1974504
-lispref.info-43: 2018879
-lispref.info-44: 2063248
-lispref.info-45: 2109742
-lispref.info-46: 2150584
-lispref.info-47: 2199802
-lispref.info-48: 2213671
+lispref.info-8: 342608
+lispref.info-9: 387690
+lispref.info-10: 436622
+lispref.info-11: 485479
+lispref.info-12: 534010
+lispref.info-13: 581562
+lispref.info-14: 629420
+lispref.info-15: 678835
+lispref.info-16: 726830
+lispref.info-17: 772167
+lispref.info-18: 819637
+lispref.info-19: 867195
+lispref.info-20: 914821
+lispref.info-21: 962848
+lispref.info-22: 1011770
+lispref.info-23: 1058033
+lispref.info-24: 1104497
+lispref.info-25: 1154157
+lispref.info-26: 1202848
+lispref.info-27: 1251703
+lispref.info-28: 1300370
+lispref.info-29: 1350321
+lispref.info-30: 1398470
+lispref.info-31: 1444125
+lispref.info-32: 1494114
+lispref.info-33: 1542684
+lispref.info-34: 1589889
+lispref.info-35: 1639715
+lispref.info-36: 1688391
+lispref.info-37: 1734124
+lispref.info-38: 1783263
+lispref.info-39: 1830705
+lispref.info-40: 1879258
+lispref.info-41: 1925811
+lispref.info-42: 1974506
+lispref.info-43: 2018881
+lispref.info-44: 2063250
+lispref.info-45: 2109744
+lispref.info-46: 2150586
+lispref.info-47: 2199804
+lispref.info-48: 2213673
 \1f
 Tag Table:
 (Indirect)
@@ -241,679 +241,679 @@ Node: Evaluation\7f332737
 Node: Intro Eval\7f333542
 Ref: Intro Eval-Footnote-1\7f336895
 Node: Eval\7f337030
-Node: Forms\7f341448
-Node: Self-Evaluating Forms\7f342607
-Node: Symbol Forms\7f344120
-Node: Classifying Lists\7f345037
-Node: Function Indirection\7f345793
-Node: Function Forms\7f348892
-Node: Macro Forms\7f349889
-Node: Special Forms\7f351489
-Node: Autoloading\7f353798
-Node: Quoting\7f354296
-Node: Control Structures\7f355657
-Node: Sequencing\7f357277
-Node: Conditionals\7f360142
-Node: Combining Conditions\7f363565
-Node: Iteration\7f366835
-Node: Nonlocal Exits\7f368614
-Node: Catch and Throw\7f369316
-Node: Examples of Catch\7f373155
-Node: Errors\7f375174
-Node: Signaling Errors\7f376663
-Node: Processing of Errors\7f385410
-Node: Handling Errors\7f387689
-Node: Error Symbols\7f394930
-Node: Cleanups\7f398886
-Node: Variables\7f402664
-Node: Global Variables\7f404433
-Node: Constant Variables\7f405509
-Node: Local Variables\7f406135
-Node: Void Variables\7f411072
-Node: Defining Variables\7f414588
-Node: Accessing Variables\7f421752
-Node: Setting Variables\7f423177
-Node: Variable Scoping\7f427696
-Node: Scope\7f429295
-Node: Extent\7f430820
-Node: Impl of Scope\7f432299
-Node: Using Scoping\7f434262
-Node: Buffer-Local Variables\7f435784
-Node: Intro to Buffer-Local\7f436620
-Node: Creating Buffer-Local\7f439163
-Node: Default Value\7f445062
-Node: Variable Aliases\7f448205
-Node: Functions\7f450056
-Node: What Is a Function\7f451150
-Node: Lambda Expressions\7f455196
-Node: Lambda Components\7f456106
-Node: Simple Lambda\7f457938
-Node: Argument List\7f459595
-Node: Function Documentation\7f463323
-Node: Function Names\7f465265
-Node: Defining Functions\7f467838
-Node: Calling Functions\7f470878
-Node: Mapping Functions\7f474726
-Node: Anonymous Functions\7f477414
-Node: Function Cells\7f480659
-Node: Inline Functions\7f485477
-Node: Related Topics\7f487287
-Node: Macros\7f488340
-Node: Simple Macro\7f489624
-Node: Expansion\7f490359
-Node: Compiling Macros\7f493363
-Node: Defining Macros\7f495199
-Node: Backquote\7f496516
-Node: Problems with Macros\7f498913
-Node: Argument Evaluation\7f499608
-Node: Surprising Local Vars\7f502523
-Node: Eval During Expansion\7f504591
-Node: Repeated Expansion\7f506284
-Node: Customization\7f508200
-Node: Common Keywords\7f508669
-Node: Group Definitions\7f511514
-Node: Variable Definitions\7f513706
-Node: Customization Types\7f518696
-Node: Simple Types\7f520131
-Node: Composite Types\7f522288
-Node: Splicing into Lists\7f526978
-Node: Type Keywords\7f528813
-Node: Loading\7f532333
-Node: How Programs Do Loading\7f534008
-Node: Autoload\7f543134
-Node: Repeated Loading\7f549204
-Node: Named Features\7f551317
-Node: Unloading\7f557747
-Node: Hooks for Loading\7f559903
-Node: Byte Compilation\7f560620
-Node: Speed of Byte-Code\7f562613
-Node: Compilation Functions\7f563820
-Node: Docs and Compilation\7f570477
-Node: Dynamic Loading\7f573130
-Node: Eval During Compile\7f575494
-Node: Compiled-Function Objects\7f576759
-Node: Disassembly\7f581560
-Node: Different Behavior\7f588841
-Node: Debugging\7f590186
-Node: Debugger\7f591598
-Node: Error Debugging\7f592743
-Node: Infinite Loops\7f595496
-Node: Function Debugging\7f596740
-Node: Explicit Debug\7f599540
-Node: Using Debugger\7f600311
-Node: Debugger Commands\7f602173
-Node: Invoking the Debugger\7f606490
-Node: Internals of Debugger\7f610405
-Node: Syntax Errors\7f615292
-Node: Excess Open\7f616540
-Node: Excess Close\7f618415
-Node: Compilation Errors\7f619836
-Node: Edebug\7f621124
-Node: Using Edebug\7f623232
-Node: Instrumenting\7f625929
-Node: Edebug Execution Modes\7f629418
-Node: Jumping\7f632528
-Node: Edebug Misc\7f634871
-Node: Breakpoints\7f636260
-Node: Global Break Condition\7f639066
-Node: Embedded Breakpoints\7f640021
-Node: Trapping Errors\7f640976
-Node: Edebug Views\7f643052
-Node: Edebug Eval\7f645017
-Node: Eval List\7f646194
-Node: Reading in Edebug\7f649579
-Node: Printing in Edebug\7f650378
-Node: Tracing\7f652093
-Node: Coverage Testing\7f653981
-Node: The Outside Context\7f656022
-Node: Checking Whether to Stop\7f656971
-Node: Edebug Display Update\7f657618
-Node: Edebug Recursive Edit\7f659641
-Node: Instrumenting Macro Calls\7f661296
-Node: Specification List\7f663778
-Node: Backtracking\7f673189
-Node: Debugging Backquote\7f675127
-Node: Specification Examples\7f678833
-Node: Edebug Options\7f680900
-Node: Read and Print\7f686239
-Node: Streams Intro\7f687216
-Node: Input Streams\7f689234
-Node: Input Functions\7f694135
-Node: Output Streams\7f696195
-Node: Output Functions\7f700246
-Node: Output Variables\7f704546
-Node: Minibuffers\7f709347
-Node: Intro to Minibuffers\7f710499
-Node: Text from Minibuffer\7f712687
-Node: Object from Minibuffer\7f717781
-Node: Minibuffer History\7f721874
-Node: Completion\7f724853
-Node: Basic Completion\7f726828
-Node: Minibuffer Completion\7f731711
-Node: Completion Commands\7f735288
-Node: High-Level Completion\7f739945
-Node: Reading File Names\7f744694
-Node: Programmed Completion\7f748386
-Node: Yes-or-No Queries\7f750768
-Node: Multiple Queries\7f756505
-Node: Reading a Password\7f760572
-Node: Minibuffer Misc\7f761915
-Node: Command Loop\7f766795
-Node: Command Overview\7f768139
-Node: Defining Commands\7f771417
-Node: Using Interactive\7f772165
-Node: Interactive Codes\7f776938
-Node: Interactive Examples\7f782730
-Node: Interactive Call\7f784044
-Node: Command Loop Info\7f789459
-Node: Events\7f794438
-Node: Event Types\7f795899
-Node: Event Contents\7f797822
-Node: Event Predicates\7f802298
-Node: Accessing Mouse Event Positions\7f803616
-Node: Frame-Level Event Position Info\7f804315
-Node: Window-Level Event Position Info\7f805355
-Node: Event Text Position Info\7f807119
-Node: Event Glyph Position Info\7f809611
-Node: Event Toolbar Position Info\7f810934
-Node: Other Event Position Info\7f811605
-Node: Accessing Other Event Info\7f812014
-Node: Working With Events\7f813634
-Node: Converting Events\7f819635
-Node: Reading Input\7f823034
-Node: Key Sequence Input\7f824036
-Node: Reading One Event\7f826671
-Node: Dispatching an Event\7f829495
-Node: Quoted Character Input\7f829946
-Node: Peeking and Discarding\7f831294
-Node: Waiting\7f835198
-Node: Quitting\7f837512
-Node: Prefix Command Arguments\7f841920
-Node: Recursive Editing\7f847007
-Node: Disabling Commands\7f851802
-Node: Command History\7f853870
-Node: Keyboard Macros\7f855607
-Node: Keymaps\7f857824
-Node: Keymap Terminology\7f859401
-Node: Format of Keymaps\7f862330
-Node: Creating Keymaps\7f862741
-Node: Inheritance and Keymaps\7f864821
-Node: Key Sequences\7f867193
-Node: Prefix Keys\7f871989
-Node: Active Keymaps\7f875574
-Node: Key Lookup\7f884945
-Node: Functions for Key Lookup\7f890108
-Node: Changing Key Bindings\7f895809
-Node: Key Binding Commands\7f902971
-Node: Scanning Keymaps\7f905036
-Node: Other Keymap Functions\7f913605
-Node: Menus\7f914227
-Node: Menu Format\7f914819
-Node: Menubar Format\7f923465
-Node: Menubar\7f924090
-Node: Modifying Menus\7f927203
-Node: Menu Filters\7f932547
-Node: Pop-Up Menus\7f934443
-Node: Menu Accelerators\7f936771
-Node: Creating Menu Accelerators\7f937527
-Node: Keyboard Menu Traversal\7f938887
-Node: Menu Accelerator Functions\7f939614
-Node: Buffers Menu\7f942690
-Node: Dialog Boxes\7f943984
-Node: Dialog Box Format\7f944151
-Node: Dialog Box Functions\7f945576
-Node: Toolbar\7f945973
-Node: Toolbar Intro\7f946408
-Node: Creating Toolbar\7f948808
-Node: Toolbar Descriptor Format\7f949725
-Node: Specifying the Toolbar\7f954222
-Node: Other Toolbar Variables\7f957829
-Node: Gutter\7f962257
-Node: Gutter Intro\7f962846
-Node: Creating Gutter\7f964849
-Node: Gutter Descriptor Format\7f967736
-Node: Specifying a Gutter\7f972193
-Node: Other Gutter Variables\7f975728
-Node: Common Gutter Widgets\7f980115
-Node: Buffer Tabs\7f981107
-Node: Progress Bars\7f981248
-Node: Scrollbars\7f981393
-Node: Drag and Drop\7f981528
-Node: Supported Protocols\7f982604
-Node: OffiX DND\7f983107
-Node: CDE dt\7f984114
-Node: MSWindows OLE\7f984705
-Node: Loose ends\7f984876
-Node: Drop Interface\7f985268
-Node: Drag Interface\7f986290
-Node: Modes\7f986464
-Node: Major Modes\7f987415
-Node: Major Mode Conventions\7f990330
-Node: Example Major Modes\7f996285
-Node: Auto Major Mode\7f1004318
-Node: Mode Help\7f1011768
-Node: Derived Modes\7f1012869
-Node: Minor Modes\7f1015060
-Node: Minor Mode Conventions\7f1016362
-Node: Keymaps and Minor Modes\7f1019225
-Node: Modeline Format\7f1020060
-Node: Modeline Data\7f1021828
-Node: Modeline Variables\7f1026981
-Node: %-Constructs\7f1031697
-Node: Hooks\7f1034684
-Node: Documentation\7f1041444
-Node: Documentation Basics\7f1042867
-Node: Accessing Documentation\7f1045918
-Node: Keys in Documentation\7f1052199
-Node: Describing Characters\7f1055682
-Node: Help Functions\7f1058031
-Node: Obsoleteness\7f1064481
-Node: Files\7f1067473
-Node: Visiting Files\7f1069398
-Node: Visiting Functions\7f1070903
-Node: Subroutines of Visiting\7f1076061
-Node: Saving Buffers\7f1078134
-Node: Reading from Files\7f1084227
-Node: Writing to Files\7f1086388
-Node: File Locks\7f1089105
-Node: Information about Files\7f1092172
-Node: Testing Accessibility\7f1092933
-Node: Kinds of Files\7f1096673
-Node: Truenames\7f1098354
-Node: File Attributes\7f1099356
-Node: Changing File Attributes\7f1104495
-Node: File Names\7f1109917
-Node: File Name Components\7f1111490
-Node: Directory Names\7f1113935
-Node: Relative File Names\7f1117165
-Node: File Name Expansion\7f1118135
-Node: Unique File Names\7f1121889
-Node: File Name Completion\7f1123504
-Node: User Name Completion\7f1126772
-Node: Contents of Directories\7f1128179
-Node: Create/Delete Dirs\7f1131492
-Node: Magic File Names\7f1132598
-Node: Partial Files\7f1138246
-Node: Intro to Partial Files\7f1138474
-Node: Creating a Partial File\7f1139714
-Node: Detached Partial Files\7f1140650
-Node: Format Conversion\7f1141772
-Node: Files and MS-DOS\7f1147270
-Node: Backups and Auto-Saving\7f1149334
-Node: Backup Files\7f1150009
-Node: Making Backups\7f1151406
-Node: Rename or Copy\7f1154155
-Node: Numbered Backups\7f1156648
-Node: Backup Names\7f1158883
-Node: Auto-Saving\7f1162175
-Node: Reverting\7f1170337
-Node: Buffers\7f1173673
-Node: Buffer Basics\7f1175089
-Node: Current Buffer\7f1177142
-Node: Buffer Names\7f1181846
-Node: Buffer File Name\7f1185053
-Node: Buffer Modification\7f1189172
-Node: Modification Time\7f1191415
-Node: Read Only Buffers\7f1194790
-Node: The Buffer List\7f1198029
-Node: Creating Buffers\7f1202846
-Node: Killing Buffers\7f1204992
-Node: Indirect Buffers\7f1208824
-Node: Windows\7f1211398
-Node: Basic Windows\7f1212876
-Node: Splitting Windows\7f1215974
-Node: Deleting Windows\7f1221300
-Node: Selecting Windows\7f1225218
-Node: Cyclic Window Ordering\7f1229441
-Node: Buffers and Windows\7f1234596
-Node: Displaying Buffers\7f1236374
-Node: Choosing Window\7f1241713
-Node: Window Point\7f1249631
-Node: Window Start\7f1251701
-Node: Vertical Scrolling\7f1256500
-Node: Horizontal Scrolling\7f1262698
-Node: Size of Window\7f1266227
-Node: Position of Window\7f1270945
-Node: Resizing Windows\7f1273198
-Node: Window Configurations\7f1278636
-Node: Frames\7f1282133
-Node: Creating Frames\7f1284474
-Node: Frame Properties\7f1285814
-Node: Property Access\7f1286630
-Node: Initial Properties\7f1287537
-Node: X Frame Properties\7f1290023
-Node: Size and Position\7f1294657
-Node: Frame Name\7f1296655
-Node: Frame Titles\7f1297569
-Node: Deleting Frames\7f1299393
-Node: Finding All Frames\7f1300368
-Node: Frames and Windows\7f1303596
-Node: Minibuffers and Frames\7f1306378
-Node: Input Focus\7f1307296
-Node: Visibility of Frames\7f1310401
-Node: Raising and Lowering\7f1312391
-Node: Frame Configurations\7f1314767
-Node: Frame Hooks\7f1315824
-Node: Consoles and Devices\7f1317629
-Node: Basic Console Functions\7f1320372
-Node: Basic Device Functions\7f1320795
-Node: Console Types and Device Classes\7f1321641
-Node: Connecting to a Console or Device\7f1323908
-Node: The Selected Console and Device\7f1326092
-Node: Console and Device I/O\7f1327118
-Node: Positions\7f1327882
-Node: Point\7f1328851
-Node: Motion\7f1331941
-Node: Character Motion\7f1332708
-Node: Word Motion\7f1334945
-Node: Buffer End Motion\7f1336335
-Node: Text Lines\7f1337872
-Node: Screen Lines\7f1342773
-Node: List Motion\7f1346836
-Node: Skipping Characters\7f1350319
-Node: Excursions\7f1352538
-Node: Narrowing\7f1355578
-Node: Markers\7f1360909
-Node: Overview of Markers\7f1361815
-Node: Predicates on Markers\7f1366507
-Node: Creating Markers\7f1367753
-Node: Information from Markers\7f1371953
-Node: Changing Markers\7f1373051
-Node: The Mark\7f1374579
-Node: The Region\7f1383082
-Node: Text\7f1388768
-Node: Near Point\7f1391467
-Node: Buffer Contents\7f1395654
-Node: Comparing Text\7f1397060
-Node: Insertion\7f1398468
-Node: Commands for Insertion\7f1402378
-Node: Deletion\7f1405272
-Node: User-Level Deletion\7f1408922
-Node: The Kill Ring\7f1413082
-Node: Kill Ring Concepts\7f1415256
-Node: Kill Functions\7f1416310
-Node: Yank Commands\7f1418233
-Node: Low-Level Kill Ring\7f1420104
-Node: Internals of Kill Ring\7f1423190
-Node: Undo\7f1425970
-Node: Maintaining Undo\7f1430307
-Node: Filling\7f1432925
-Node: Margins\7f1438919
-Node: Auto Filling\7f1442942
-Node: Sorting\7f1444123
-Node: Columns\7f1453437
-Node: Indentation\7f1456518
-Node: Primitive Indent\7f1457297
-Node: Mode-Specific Indent\7f1458622
-Node: Region Indent\7f1461154
-Node: Relative Indent\7f1464101
-Node: Indent Tabs\7f1466483
-Node: Motion by Indent\7f1467804
-Node: Case Changes\7f1468583
-Node: Text Properties\7f1471936
-Node: Examining Properties\7f1473749
-Node: Changing Properties\7f1475632
-Node: Property Search\7f1479223
-Node: Special Properties\7f1483942
-Node: Saving Properties\7f1484223
-Node: Substitution\7f1487365
-Node: Registers\7f1490635
-Node: Transposition\7f1493218
-Node: Change Hooks\7f1494112
-Node: Transformations\7f1496152
-Node: Searching and Matching\7f1501256
-Node: String Search\7f1502387
-Node: Regular Expressions\7f1507368
-Node: Syntax of Regexps\7f1508735
-Node: Regexp Example\7f1523338
-Node: Regexp Search\7f1525508
-Node: POSIX Regexps\7f1531845
-Node: Search and Replace\7f1533922
-Node: Match Data\7f1537287
-Node: Simple Match Data\7f1538417
-Node: Replacing Match\7f1542682
-Node: Entire Match Data\7f1545363
-Node: Saving Match Data\7f1547601
-Node: Searching and Case\7f1548989
-Node: Standard Regexps\7f1551023
-Node: Syntax Tables\7f1553221
-Node: Syntax Basics\7f1554335
-Node: Syntax Descriptors\7f1557307
-Node: Syntax Class Table\7f1559157
-Node: Syntax Flags\7f1565195
-Node: Syntax Table Functions\7f1568412
-Node: Motion and Syntax\7f1572700
-Node: Parsing Expressions\7f1574152
-Node: Standard Syntax Tables\7f1580250
-Node: Syntax Table Internals\7f1581094
-Node: Abbrevs\7f1582120
-Node: Abbrev Mode\7f1583924
-Node: Abbrev Tables\7f1584644
-Node: Defining Abbrevs\7f1586183
-Node: Abbrev Files\7f1588104
-Node: Abbrev Expansion\7f1589887
-Node: Standard Abbrev Tables\7f1594518
-Node: Extents\7f1595677
-Node: Intro to Extents\7f1596920
-Node: Creating and Modifying Extents\7f1600912
-Node: Extent Endpoints\7f1602493
-Node: Finding Extents\7f1605756
-Node: Mapping Over Extents\7f1609878
-Node: Extent Properties\7f1616001
-Node: Detached Extents\7f1626162
-Node: Extent Parents\7f1628021
-Node: Duplicable Extents\7f1629715
-Node: Extents and Events\7f1632936
-Node: Atomic Extents\7f1634843
-Node: Specifiers\7f1635290
-Node: Introduction to Specifiers\7f1637403
-Node: Specifiers In-Depth\7f1639713
-Node: Specifier Instancing\7f1644625
-Node: Specifier Types\7f1647887
-Node: Adding Specifications\7f1652961
-Node: Retrieving Specifications\7f1662382
-Node: Specifier Tag Functions\7f1666127
-Node: Specifier Instancing Functions\7f1669361
-Node: Specifier Example\7f1672768
-Node: Creating Specifiers\7f1675924
-Node: Specifier Validation Functions\7f1680241
-Node: Other Specification Functions\7f1682627
-Node: Faces and Window-System Objects\7f1686448
-Node: Faces\7f1686772
-Node: Merging Faces\7f1688389
-Node: Basic Face Functions\7f1690350
-Node: Face Properties\7f1692498
-Node: Face Convenience Functions\7f1702771
-Node: Other Face Display Functions\7f1705991
-Node: Fonts\7f1706803
-Node: Font Specifiers\7f1707504
-Node: Font Instances\7f1708689
-Node: Font Instance Names\7f1709656
-Node: Font Instance Size\7f1710497
-Node: Font Instance Characteristics\7f1711783
-Node: Font Convenience Functions\7f1712961
-Node: Colors\7f1714251
-Node: Color Specifiers\7f1714691
-Node: Color Instances\7f1717051
-Node: Color Instance Properties\7f1717795
-Node: Color Convenience Functions\7f1718421
-Node: Glyphs\7f1719474
-Node: Glyph Functions\7f1721075
-Node: Creating Glyphs\7f1721482
-Node: Glyph Properties\7f1734122
-Node: Glyph Convenience Functions\7f1743289
-Node: Glyph Dimensions\7f1747236
-Node: Images\7f1748316
-Node: Image Specifiers\7f1748765
-Node: Image Instantiator Conversion\7f1764256
-Node: Image Instances\7f1765621
-Node: Image Instance Types\7f1766372
-Node: Image Instance Functions\7f1769137
-Node: Glyph Types\7f1776194
-Node: Mouse Pointer\7f1777966
-Node: Redisplay Glyphs\7f1780969
-Node: Subwindows\7f1782002
-Node: Annotations\7f1782245
-Node: Annotation Basics\7f1783261
-Node: Annotation Primitives\7f1787199
-Node: Annotation Properties\7f1788538
-Node: Locating Annotations\7f1791578
-Node: Margin Primitives\7f1792415
-Node: Annotation Hooks\7f1794309
-Node: Display\7f1794969
-Node: Refresh Screen\7f1795947
-Node: Truncation\7f1798141
-Node: The Echo Area\7f1800666
-Node: Warnings\7f1807109
-Node: Invisible Text\7f1811545
-Node: Selective Display\7f1814124
-Node: Overlay Arrow\7f1818250
-Node: Temporary Displays\7f1819603
-Node: Blinking\7f1823724
-Node: Usual Display\7f1825908
-Node: Display Tables\7f1828457
-Node: Display Table Format\7f1829261
-Node: Active Display Table\7f1830703
-Node: Character Descriptors\7f1834698
-Node: Beeping\7f1835455
-Node: Hash Tables\7f1840221
-Node: Introduction to Hash Tables\7f1840829
-Node: Working With Hash Tables\7f1847388
-Node: Weak Hash Tables\7f1848505
-Node: Range Tables\7f1850522
-Node: Introduction to Range Tables\7f1851211
-Node: Working With Range Tables\7f1851657
-Node: Databases\7f1852616
-Node: Connecting to a Database\7f1852915
-Node: Working With a Database\7f1854022
-Node: Other Database Functions\7f1854896
-Node: Processes\7f1855465
-Node: Subprocess Creation\7f1857689
-Node: Synchronous Processes\7f1861140
-Node: MS-DOS Subprocesses\7f1867862
-Node: Asynchronous Processes\7f1868936
-Node: Deleting Processes\7f1873293
-Node: Process Information\7f1875164
-Node: Input to Processes\7f1879256
-Node: Signals to Processes\7f1881951
-Node: Output from Processes\7f1886766
-Node: Process Buffers\7f1887578
-Node: Filter Functions\7f1890457
-Node: Accepting Output\7f1896048
-Node: Sentinels\7f1897575
-Node: Process Window Size\7f1901065
-Node: Transaction Queues\7f1901414
-Node: Network\7f1903112
-Node: System Interface\7f1905746
-Node: Starting Up\7f1907016
-Node: Start-up Summary\7f1907610
-Node: Init File\7f1911164
-Node: Terminal-Specific\7f1913545
-Node: Command Line Arguments\7f1916704
-Node: Getting Out\7f1920193
-Node: Killing XEmacs\7f1920762
-Node: Suspending XEmacs\7f1922430
-Node: System Environment\7f1925809
-Node: User Identification\7f1931990
-Node: Time of Day\7f1935519
-Node: Time Conversion\7f1938306
-Node: Timers\7f1943548
-Node: Terminal Input\7f1945721
-Node: Input Modes\7f1946224
-Node: Translating Input\7f1948683
-Node: Recording Input\7f1952848
-Node: Terminal Output\7f1954948
-Node: Flow Control\7f1958569
-Node: Batch Mode\7f1962531
-Node: X-Windows\7f1963913
-Node: X Selections\7f1964784
-Node: X Server\7f1967535
-Node: Resources\7f1967986
-Node: Server Data\7f1973297
-Node: Grabs\7f1974504
-Node: X Miscellaneous\7f1976084
-Node: ToolTalk Support\7f1978469
-Node: XEmacs ToolTalk API Summary\7f1978686
-Node: Sending Messages\7f1979986
-Node: Example of Sending Messages\7f1980237
-Node: Elisp Interface for Sending Messages\7f1981299
-Node: Receiving Messages\7f1987895
-Node: Example of Receiving Messages\7f1988118
-Node: Elisp Interface for Receiving Messages\7f1988954
-Node: LDAP Support\7f1992811
-Node: Building XEmacs with LDAP support\7f1993305
-Node: XEmacs LDAP API\7f1994282
-Node: LDAP Variables\7f1995334
-Node: The High-Level LDAP API\7f1997934
-Node: The Low-Level LDAP API\7f2001407
-Node: The LDAP Lisp Object\7f2002238
-Node: Opening and Closing a LDAP Connection\7f2002793
-Node: Low-level Operations on a LDAP Server\7f2004599
-Node: LDAP Internationalization\7f2007323
-Node: LDAP Internationalization Variables\7f2008228
-Node: Encoder/Decoder Functions\7f2009959
-Node: Syntax of Search Filters\7f2010996
-Node: PostgreSQL Support\7f2012294
-Node: Building XEmacs with PostgreSQL support\7f2012689
-Node: XEmacs PostgreSQL libpq API\7f2014036
-Node: libpq Lisp Variables\7f2015915
-Node: libpq Lisp Symbols and DataTypes\7f2018879
-Node: Synchronous Interface Functions\7f2032119
-Node: Asynchronous Interface Functions\7f2036610
-Node: Large Object Support\7f2040115
-Node: Other libpq Functions\7f2040742
-Node: Unimplemented libpq Functions\7f2043777
-Node: XEmacs PostgreSQL libpq Examples\7f2049096
-Node: Internationalization\7f2055187
-Node: I18N Levels 1 and 2\7f2055530
-Node: I18N Level 3\7f2056236
-Node: Level 3 Basics\7f2056517
-Node: Level 3 Primitives\7f2057350
-Node: Dynamic Messaging\7f2058956
-Node: Domain Specification\7f2059419
-Node: Documentation String Extraction\7f2061089
-Node: I18N Level 4\7f2062007
-Node: MULE\7f2062199
-Node: Internationalization Terminology\7f2063248
-Node: Charsets\7f2075447
-Node: Charset Properties\7f2076143
-Node: Basic Charset Functions\7f2080858
-Node: Charset Property Functions\7f2083039
-Node: Predefined Charsets\7f2085109
-Node: MULE Characters\7f2088029
-Node: Composite Characters\7f2088904
-Node: Coding Systems\7f2090171
-Node: Coding System Types\7f2092311
-Node: ISO 2022\7f2096295
-Node: EOL Conversion\7f2108570
-Node: Coding System Properties\7f2109742
-Node: Basic Coding System Functions\7f2114065
-Node: Coding System Property Functions\7f2116099
-Node: Encoding and Decoding Text\7f2116657
-Node: Detection of Textual Encoding\7f2117793
-Node: Big5 and Shift-JIS Functions\7f2119329
-Node: Predefined Coding Systems\7f2120481
-Node: CCL\7f2132575
-Node: CCL Syntax\7f2135679
-Node: CCL Statements\7f2137255
-Node: CCL Expressions\7f2141903
-Node: Calling CCL\7f2144442
-Node: CCL Examples\7f2147447
-Node: Category Tables\7f2147584
-Node: Tips\7f2149943
-Node: Style Tips\7f2150584
-Node: Compilation Tips\7f2160103
-Node: Documentation Tips\7f2162017
-Node: Comment Tips\7f2167526
-Node: Library Headers\7f2170529
-Node: Building XEmacs and Object Allocation\7f2174501
-Node: Building XEmacs\7f2175384
-Node: Pure Storage\7f2181962
-Node: Garbage Collection\7f2184750
-Node: Standard Errors\7f2195593
-Node: Standard Buffer-Local Variables\7f2199802
-Node: Standard Keymaps\7f2202437
-Node: Standard Hooks\7f2206171
-Node: Index\7f2213671
+Node: Forms\7f341449
+Node: Self-Evaluating Forms\7f342608
+Node: Symbol Forms\7f344121
+Node: Classifying Lists\7f345038
+Node: Function Indirection\7f345794
+Node: Function Forms\7f348893
+Node: Macro Forms\7f349890
+Node: Special Forms\7f351490
+Node: Autoloading\7f353799
+Node: Quoting\7f354297
+Node: Control Structures\7f355658
+Node: Sequencing\7f357278
+Node: Conditionals\7f360143
+Node: Combining Conditions\7f363566
+Node: Iteration\7f366836
+Node: Nonlocal Exits\7f368615
+Node: Catch and Throw\7f369317
+Node: Examples of Catch\7f373156
+Node: Errors\7f375175
+Node: Signaling Errors\7f376664
+Node: Processing of Errors\7f385411
+Node: Handling Errors\7f387690
+Node: Error Symbols\7f394931
+Node: Cleanups\7f398887
+Node: Variables\7f402665
+Node: Global Variables\7f404434
+Node: Constant Variables\7f405510
+Node: Local Variables\7f406136
+Node: Void Variables\7f411074
+Node: Defining Variables\7f414590
+Node: Accessing Variables\7f421754
+Node: Setting Variables\7f423179
+Node: Variable Scoping\7f427698
+Node: Scope\7f429297
+Node: Extent\7f430822
+Node: Impl of Scope\7f432301
+Node: Using Scoping\7f434264
+Node: Buffer-Local Variables\7f435786
+Node: Intro to Buffer-Local\7f436622
+Node: Creating Buffer-Local\7f439165
+Node: Default Value\7f445064
+Node: Variable Aliases\7f448207
+Node: Functions\7f450058
+Node: What Is a Function\7f451152
+Node: Lambda Expressions\7f455198
+Node: Lambda Components\7f456108
+Node: Simple Lambda\7f457940
+Node: Argument List\7f459597
+Node: Function Documentation\7f463325
+Node: Function Names\7f465267
+Node: Defining Functions\7f467840
+Node: Calling Functions\7f470880
+Node: Mapping Functions\7f474728
+Node: Anonymous Functions\7f477416
+Node: Function Cells\7f480661
+Node: Inline Functions\7f485479
+Node: Related Topics\7f487289
+Node: Macros\7f488342
+Node: Simple Macro\7f489626
+Node: Expansion\7f490361
+Node: Compiling Macros\7f493365
+Node: Defining Macros\7f495201
+Node: Backquote\7f496518
+Node: Problems with Macros\7f498915
+Node: Argument Evaluation\7f499610
+Node: Surprising Local Vars\7f502525
+Node: Eval During Expansion\7f504593
+Node: Repeated Expansion\7f506286
+Node: Customization\7f508202
+Node: Common Keywords\7f508671
+Node: Group Definitions\7f511516
+Node: Variable Definitions\7f513708
+Node: Customization Types\7f518698
+Node: Simple Types\7f520133
+Node: Composite Types\7f522290
+Node: Splicing into Lists\7f526980
+Node: Type Keywords\7f528815
+Node: Loading\7f532335
+Node: How Programs Do Loading\7f534010
+Node: Autoload\7f543136
+Node: Repeated Loading\7f549206
+Node: Named Features\7f551319
+Node: Unloading\7f557749
+Node: Hooks for Loading\7f559905
+Node: Byte Compilation\7f560622
+Node: Speed of Byte-Code\7f562615
+Node: Compilation Functions\7f563822
+Node: Docs and Compilation\7f570479
+Node: Dynamic Loading\7f573132
+Node: Eval During Compile\7f575496
+Node: Compiled-Function Objects\7f576761
+Node: Disassembly\7f581562
+Node: Different Behavior\7f588843
+Node: Debugging\7f590188
+Node: Debugger\7f591600
+Node: Error Debugging\7f592745
+Node: Infinite Loops\7f595498
+Node: Function Debugging\7f596742
+Node: Explicit Debug\7f599542
+Node: Using Debugger\7f600313
+Node: Debugger Commands\7f602175
+Node: Invoking the Debugger\7f606492
+Node: Internals of Debugger\7f610407
+Node: Syntax Errors\7f615294
+Node: Excess Open\7f616542
+Node: Excess Close\7f618417
+Node: Compilation Errors\7f619838
+Node: Edebug\7f621126
+Node: Using Edebug\7f623234
+Node: Instrumenting\7f625931
+Node: Edebug Execution Modes\7f629420
+Node: Jumping\7f632530
+Node: Edebug Misc\7f634873
+Node: Breakpoints\7f636262
+Node: Global Break Condition\7f639068
+Node: Embedded Breakpoints\7f640023
+Node: Trapping Errors\7f640978
+Node: Edebug Views\7f643054
+Node: Edebug Eval\7f645019
+Node: Eval List\7f646196
+Node: Reading in Edebug\7f649581
+Node: Printing in Edebug\7f650380
+Node: Tracing\7f652095
+Node: Coverage Testing\7f653983
+Node: The Outside Context\7f656024
+Node: Checking Whether to Stop\7f656973
+Node: Edebug Display Update\7f657620
+Node: Edebug Recursive Edit\7f659643
+Node: Instrumenting Macro Calls\7f661298
+Node: Specification List\7f663780
+Node: Backtracking\7f673191
+Node: Debugging Backquote\7f675129
+Node: Specification Examples\7f678835
+Node: Edebug Options\7f680902
+Node: Read and Print\7f686241
+Node: Streams Intro\7f687218
+Node: Input Streams\7f689236
+Node: Input Functions\7f694137
+Node: Output Streams\7f696197
+Node: Output Functions\7f700248
+Node: Output Variables\7f704548
+Node: Minibuffers\7f709349
+Node: Intro to Minibuffers\7f710501
+Node: Text from Minibuffer\7f712689
+Node: Object from Minibuffer\7f717783
+Node: Minibuffer History\7f721876
+Node: Completion\7f724855
+Node: Basic Completion\7f726830
+Node: Minibuffer Completion\7f731713
+Node: Completion Commands\7f735290
+Node: High-Level Completion\7f739947
+Node: Reading File Names\7f744696
+Node: Programmed Completion\7f748388
+Node: Yes-or-No Queries\7f750770
+Node: Multiple Queries\7f756507
+Node: Reading a Password\7f760574
+Node: Minibuffer Misc\7f761917
+Node: Command Loop\7f766797
+Node: Command Overview\7f768141
+Node: Defining Commands\7f771419
+Node: Using Interactive\7f772167
+Node: Interactive Codes\7f776940
+Node: Interactive Examples\7f782732
+Node: Interactive Call\7f784046
+Node: Command Loop Info\7f789461
+Node: Events\7f794440
+Node: Event Types\7f795901
+Node: Event Contents\7f797824
+Node: Event Predicates\7f802300
+Node: Accessing Mouse Event Positions\7f803618
+Node: Frame-Level Event Position Info\7f804317
+Node: Window-Level Event Position Info\7f805357
+Node: Event Text Position Info\7f807121
+Node: Event Glyph Position Info\7f809613
+Node: Event Toolbar Position Info\7f810936
+Node: Other Event Position Info\7f811607
+Node: Accessing Other Event Info\7f812016
+Node: Working With Events\7f813636
+Node: Converting Events\7f819637
+Node: Reading Input\7f823036
+Node: Key Sequence Input\7f824038
+Node: Reading One Event\7f826673
+Node: Dispatching an Event\7f829497
+Node: Quoted Character Input\7f829948
+Node: Peeking and Discarding\7f831296
+Node: Waiting\7f835200
+Node: Quitting\7f837514
+Node: Prefix Command Arguments\7f841922
+Node: Recursive Editing\7f847009
+Node: Disabling Commands\7f851804
+Node: Command History\7f853872
+Node: Keyboard Macros\7f855609
+Node: Keymaps\7f857826
+Node: Keymap Terminology\7f859403
+Node: Format of Keymaps\7f862332
+Node: Creating Keymaps\7f862743
+Node: Inheritance and Keymaps\7f864823
+Node: Key Sequences\7f867195
+Node: Prefix Keys\7f871991
+Node: Active Keymaps\7f875576
+Node: Key Lookup\7f884947
+Node: Functions for Key Lookup\7f890110
+Node: Changing Key Bindings\7f895811
+Node: Key Binding Commands\7f902973
+Node: Scanning Keymaps\7f905038
+Node: Other Keymap Functions\7f913607
+Node: Menus\7f914229
+Node: Menu Format\7f914821
+Node: Menubar Format\7f923467
+Node: Menubar\7f924092
+Node: Modifying Menus\7f927205
+Node: Menu Filters\7f932549
+Node: Pop-Up Menus\7f934445
+Node: Menu Accelerators\7f936773
+Node: Creating Menu Accelerators\7f937529
+Node: Keyboard Menu Traversal\7f938889
+Node: Menu Accelerator Functions\7f939616
+Node: Buffers Menu\7f942692
+Node: Dialog Boxes\7f943986
+Node: Dialog Box Format\7f944153
+Node: Dialog Box Functions\7f945578
+Node: Toolbar\7f945975
+Node: Toolbar Intro\7f946410
+Node: Creating Toolbar\7f948810
+Node: Toolbar Descriptor Format\7f949727
+Node: Specifying the Toolbar\7f954224
+Node: Other Toolbar Variables\7f957831
+Node: Gutter\7f962259
+Node: Gutter Intro\7f962848
+Node: Creating Gutter\7f964851
+Node: Gutter Descriptor Format\7f967738
+Node: Specifying a Gutter\7f972195
+Node: Other Gutter Variables\7f975730
+Node: Common Gutter Widgets\7f980117
+Node: Buffer Tabs\7f981109
+Node: Progress Bars\7f981250
+Node: Scrollbars\7f981395
+Node: Drag and Drop\7f981530
+Node: Supported Protocols\7f982606
+Node: OffiX DND\7f983109
+Node: CDE dt\7f984116
+Node: MSWindows OLE\7f984707
+Node: Loose ends\7f984878
+Node: Drop Interface\7f985270
+Node: Drag Interface\7f986292
+Node: Modes\7f986466
+Node: Major Modes\7f987417
+Node: Major Mode Conventions\7f990332
+Node: Example Major Modes\7f996287
+Node: Auto Major Mode\7f1004320
+Node: Mode Help\7f1011770
+Node: Derived Modes\7f1012871
+Node: Minor Modes\7f1015062
+Node: Minor Mode Conventions\7f1016364
+Node: Keymaps and Minor Modes\7f1019227
+Node: Modeline Format\7f1020062
+Node: Modeline Data\7f1021830
+Node: Modeline Variables\7f1026983
+Node: %-Constructs\7f1031699
+Node: Hooks\7f1034686
+Node: Documentation\7f1041446
+Node: Documentation Basics\7f1042869
+Node: Accessing Documentation\7f1045920
+Node: Keys in Documentation\7f1052201
+Node: Describing Characters\7f1055684
+Node: Help Functions\7f1058033
+Node: Obsoleteness\7f1064483
+Node: Files\7f1067475
+Node: Visiting Files\7f1069400
+Node: Visiting Functions\7f1070905
+Node: Subroutines of Visiting\7f1076063
+Node: Saving Buffers\7f1078136
+Node: Reading from Files\7f1084229
+Node: Writing to Files\7f1086390
+Node: File Locks\7f1089107
+Node: Information about Files\7f1092174
+Node: Testing Accessibility\7f1092935
+Node: Kinds of Files\7f1096675
+Node: Truenames\7f1098356
+Node: File Attributes\7f1099358
+Node: Changing File Attributes\7f1104497
+Node: File Names\7f1109919
+Node: File Name Components\7f1111492
+Node: Directory Names\7f1113937
+Node: Relative File Names\7f1117167
+Node: File Name Expansion\7f1118137
+Node: Unique File Names\7f1121891
+Node: File Name Completion\7f1123506
+Node: User Name Completion\7f1126774
+Node: Contents of Directories\7f1128181
+Node: Create/Delete Dirs\7f1131494
+Node: Magic File Names\7f1132600
+Node: Partial Files\7f1138248
+Node: Intro to Partial Files\7f1138476
+Node: Creating a Partial File\7f1139716
+Node: Detached Partial Files\7f1140652
+Node: Format Conversion\7f1141774
+Node: Files and MS-DOS\7f1147272
+Node: Backups and Auto-Saving\7f1149336
+Node: Backup Files\7f1150011
+Node: Making Backups\7f1151408
+Node: Rename or Copy\7f1154157
+Node: Numbered Backups\7f1156650
+Node: Backup Names\7f1158885
+Node: Auto-Saving\7f1162177
+Node: Reverting\7f1170339
+Node: Buffers\7f1173675
+Node: Buffer Basics\7f1175091
+Node: Current Buffer\7f1177144
+Node: Buffer Names\7f1181848
+Node: Buffer File Name\7f1185055
+Node: Buffer Modification\7f1189174
+Node: Modification Time\7f1191417
+Node: Read Only Buffers\7f1194792
+Node: The Buffer List\7f1198031
+Node: Creating Buffers\7f1202848
+Node: Killing Buffers\7f1204994
+Node: Indirect Buffers\7f1208826
+Node: Windows\7f1211400
+Node: Basic Windows\7f1212878
+Node: Splitting Windows\7f1215976
+Node: Deleting Windows\7f1221302
+Node: Selecting Windows\7f1225220
+Node: Cyclic Window Ordering\7f1229443
+Node: Buffers and Windows\7f1234598
+Node: Displaying Buffers\7f1236376
+Node: Choosing Window\7f1241715
+Node: Window Point\7f1249633
+Node: Window Start\7f1251703
+Node: Vertical Scrolling\7f1256502
+Node: Horizontal Scrolling\7f1262700
+Node: Size of Window\7f1266229
+Node: Position of Window\7f1270947
+Node: Resizing Windows\7f1273200
+Node: Window Configurations\7f1278638
+Node: Frames\7f1282135
+Node: Creating Frames\7f1284476
+Node: Frame Properties\7f1285816
+Node: Property Access\7f1286632
+Node: Initial Properties\7f1287539
+Node: X Frame Properties\7f1290025
+Node: Size and Position\7f1294659
+Node: Frame Name\7f1296657
+Node: Frame Titles\7f1297571
+Node: Deleting Frames\7f1299395
+Node: Finding All Frames\7f1300370
+Node: Frames and Windows\7f1303598
+Node: Minibuffers and Frames\7f1306380
+Node: Input Focus\7f1307298
+Node: Visibility of Frames\7f1310403
+Node: Raising and Lowering\7f1312393
+Node: Frame Configurations\7f1314769
+Node: Frame Hooks\7f1315826
+Node: Consoles and Devices\7f1317631
+Node: Basic Console Functions\7f1320374
+Node: Basic Device Functions\7f1320797
+Node: Console Types and Device Classes\7f1321643
+Node: Connecting to a Console or Device\7f1323910
+Node: The Selected Console and Device\7f1326094
+Node: Console and Device I/O\7f1327120
+Node: Positions\7f1327884
+Node: Point\7f1328853
+Node: Motion\7f1331943
+Node: Character Motion\7f1332710
+Node: Word Motion\7f1334947
+Node: Buffer End Motion\7f1336337
+Node: Text Lines\7f1337874
+Node: Screen Lines\7f1342775
+Node: List Motion\7f1346838
+Node: Skipping Characters\7f1350321
+Node: Excursions\7f1352540
+Node: Narrowing\7f1355580
+Node: Markers\7f1360911
+Node: Overview of Markers\7f1361817
+Node: Predicates on Markers\7f1366509
+Node: Creating Markers\7f1367755
+Node: Information from Markers\7f1371955
+Node: Changing Markers\7f1373053
+Node: The Mark\7f1374581
+Node: The Region\7f1383084
+Node: Text\7f1388770
+Node: Near Point\7f1391469
+Node: Buffer Contents\7f1395656
+Node: Comparing Text\7f1397062
+Node: Insertion\7f1398470
+Node: Commands for Insertion\7f1402380
+Node: Deletion\7f1405274
+Node: User-Level Deletion\7f1408924
+Node: The Kill Ring\7f1413084
+Node: Kill Ring Concepts\7f1415258
+Node: Kill Functions\7f1416312
+Node: Yank Commands\7f1418235
+Node: Low-Level Kill Ring\7f1420106
+Node: Internals of Kill Ring\7f1423192
+Node: Undo\7f1425972
+Node: Maintaining Undo\7f1430309
+Node: Filling\7f1432927
+Node: Margins\7f1438921
+Node: Auto Filling\7f1442944
+Node: Sorting\7f1444125
+Node: Columns\7f1453439
+Node: Indentation\7f1456520
+Node: Primitive Indent\7f1457299
+Node: Mode-Specific Indent\7f1458624
+Node: Region Indent\7f1461156
+Node: Relative Indent\7f1464103
+Node: Indent Tabs\7f1466485
+Node: Motion by Indent\7f1467806
+Node: Case Changes\7f1468585
+Node: Text Properties\7f1471938
+Node: Examining Properties\7f1473751
+Node: Changing Properties\7f1475634
+Node: Property Search\7f1479225
+Node: Special Properties\7f1483944
+Node: Saving Properties\7f1484225
+Node: Substitution\7f1487367
+Node: Registers\7f1490637
+Node: Transposition\7f1493220
+Node: Change Hooks\7f1494114
+Node: Transformations\7f1496154
+Node: Searching and Matching\7f1501258
+Node: String Search\7f1502389
+Node: Regular Expressions\7f1507370
+Node: Syntax of Regexps\7f1508737
+Node: Regexp Example\7f1523340
+Node: Regexp Search\7f1525510
+Node: POSIX Regexps\7f1531847
+Node: Search and Replace\7f1533924
+Node: Match Data\7f1537289
+Node: Simple Match Data\7f1538419
+Node: Replacing Match\7f1542684
+Node: Entire Match Data\7f1545365
+Node: Saving Match Data\7f1547603
+Node: Searching and Case\7f1548991
+Node: Standard Regexps\7f1551025
+Node: Syntax Tables\7f1553223
+Node: Syntax Basics\7f1554337
+Node: Syntax Descriptors\7f1557309
+Node: Syntax Class Table\7f1559159
+Node: Syntax Flags\7f1565197
+Node: Syntax Table Functions\7f1568414
+Node: Motion and Syntax\7f1572702
+Node: Parsing Expressions\7f1574154
+Node: Standard Syntax Tables\7f1580252
+Node: Syntax Table Internals\7f1581096
+Node: Abbrevs\7f1582122
+Node: Abbrev Mode\7f1583926
+Node: Abbrev Tables\7f1584646
+Node: Defining Abbrevs\7f1586185
+Node: Abbrev Files\7f1588106
+Node: Abbrev Expansion\7f1589889
+Node: Standard Abbrev Tables\7f1594520
+Node: Extents\7f1595679
+Node: Intro to Extents\7f1596922
+Node: Creating and Modifying Extents\7f1600914
+Node: Extent Endpoints\7f1602495
+Node: Finding Extents\7f1605758
+Node: Mapping Over Extents\7f1609880
+Node: Extent Properties\7f1616003
+Node: Detached Extents\7f1626164
+Node: Extent Parents\7f1628023
+Node: Duplicable Extents\7f1629717
+Node: Extents and Events\7f1632938
+Node: Atomic Extents\7f1634845
+Node: Specifiers\7f1635292
+Node: Introduction to Specifiers\7f1637405
+Node: Specifiers In-Depth\7f1639715
+Node: Specifier Instancing\7f1644627
+Node: Specifier Types\7f1647889
+Node: Adding Specifications\7f1652963
+Node: Retrieving Specifications\7f1662384
+Node: Specifier Tag Functions\7f1666129
+Node: Specifier Instancing Functions\7f1669363
+Node: Specifier Example\7f1672770
+Node: Creating Specifiers\7f1675926
+Node: Specifier Validation Functions\7f1680243
+Node: Other Specification Functions\7f1682629
+Node: Faces and Window-System Objects\7f1686450
+Node: Faces\7f1686774
+Node: Merging Faces\7f1688391
+Node: Basic Face Functions\7f1690352
+Node: Face Properties\7f1692500
+Node: Face Convenience Functions\7f1702773
+Node: Other Face Display Functions\7f1705993
+Node: Fonts\7f1706805
+Node: Font Specifiers\7f1707506
+Node: Font Instances\7f1708691
+Node: Font Instance Names\7f1709658
+Node: Font Instance Size\7f1710499
+Node: Font Instance Characteristics\7f1711785
+Node: Font Convenience Functions\7f1712963
+Node: Colors\7f1714253
+Node: Color Specifiers\7f1714693
+Node: Color Instances\7f1717053
+Node: Color Instance Properties\7f1717797
+Node: Color Convenience Functions\7f1718423
+Node: Glyphs\7f1719476
+Node: Glyph Functions\7f1721077
+Node: Creating Glyphs\7f1721484
+Node: Glyph Properties\7f1734124
+Node: Glyph Convenience Functions\7f1743291
+Node: Glyph Dimensions\7f1747238
+Node: Images\7f1748318
+Node: Image Specifiers\7f1748767
+Node: Image Instantiator Conversion\7f1764258
+Node: Image Instances\7f1765623
+Node: Image Instance Types\7f1766374
+Node: Image Instance Functions\7f1769139
+Node: Glyph Types\7f1776196
+Node: Mouse Pointer\7f1777968
+Node: Redisplay Glyphs\7f1780971
+Node: Subwindows\7f1782004
+Node: Annotations\7f1782247
+Node: Annotation Basics\7f1783263
+Node: Annotation Primitives\7f1787201
+Node: Annotation Properties\7f1788540
+Node: Locating Annotations\7f1791580
+Node: Margin Primitives\7f1792417
+Node: Annotation Hooks\7f1794311
+Node: Display\7f1794971
+Node: Refresh Screen\7f1795949
+Node: Truncation\7f1798143
+Node: The Echo Area\7f1800668
+Node: Warnings\7f1807111
+Node: Invisible Text\7f1811547
+Node: Selective Display\7f1814126
+Node: Overlay Arrow\7f1818252
+Node: Temporary Displays\7f1819605
+Node: Blinking\7f1823726
+Node: Usual Display\7f1825910
+Node: Display Tables\7f1828459
+Node: Display Table Format\7f1829263
+Node: Active Display Table\7f1830705
+Node: Character Descriptors\7f1834700
+Node: Beeping\7f1835457
+Node: Hash Tables\7f1840223
+Node: Introduction to Hash Tables\7f1840831
+Node: Working With Hash Tables\7f1847390
+Node: Weak Hash Tables\7f1848507
+Node: Range Tables\7f1850524
+Node: Introduction to Range Tables\7f1851213
+Node: Working With Range Tables\7f1851659
+Node: Databases\7f1852618
+Node: Connecting to a Database\7f1852917
+Node: Working With a Database\7f1854024
+Node: Other Database Functions\7f1854898
+Node: Processes\7f1855467
+Node: Subprocess Creation\7f1857691
+Node: Synchronous Processes\7f1861142
+Node: MS-DOS Subprocesses\7f1867864
+Node: Asynchronous Processes\7f1868938
+Node: Deleting Processes\7f1873295
+Node: Process Information\7f1875166
+Node: Input to Processes\7f1879258
+Node: Signals to Processes\7f1881953
+Node: Output from Processes\7f1886768
+Node: Process Buffers\7f1887580
+Node: Filter Functions\7f1890459
+Node: Accepting Output\7f1896050
+Node: Sentinels\7f1897577
+Node: Process Window Size\7f1901067
+Node: Transaction Queues\7f1901416
+Node: Network\7f1903114
+Node: System Interface\7f1905748
+Node: Starting Up\7f1907018
+Node: Start-up Summary\7f1907612
+Node: Init File\7f1911166
+Node: Terminal-Specific\7f1913547
+Node: Command Line Arguments\7f1916706
+Node: Getting Out\7f1920195
+Node: Killing XEmacs\7f1920764
+Node: Suspending XEmacs\7f1922432
+Node: System Environment\7f1925811
+Node: User Identification\7f1931992
+Node: Time of Day\7f1935521
+Node: Time Conversion\7f1938308
+Node: Timers\7f1943550
+Node: Terminal Input\7f1945723
+Node: Input Modes\7f1946226
+Node: Translating Input\7f1948685
+Node: Recording Input\7f1952850
+Node: Terminal Output\7f1954950
+Node: Flow Control\7f1958571
+Node: Batch Mode\7f1962533
+Node: X-Windows\7f1963915
+Node: X Selections\7f1964786
+Node: X Server\7f1967537
+Node: Resources\7f1967988
+Node: Server Data\7f1973299
+Node: Grabs\7f1974506
+Node: X Miscellaneous\7f1976086
+Node: ToolTalk Support\7f1978471
+Node: XEmacs ToolTalk API Summary\7f1978688
+Node: Sending Messages\7f1979988
+Node: Example of Sending Messages\7f1980239
+Node: Elisp Interface for Sending Messages\7f1981301
+Node: Receiving Messages\7f1987897
+Node: Example of Receiving Messages\7f1988120
+Node: Elisp Interface for Receiving Messages\7f1988956
+Node: LDAP Support\7f1992813
+Node: Building XEmacs with LDAP support\7f1993307
+Node: XEmacs LDAP API\7f1994284
+Node: LDAP Variables\7f1995336
+Node: The High-Level LDAP API\7f1997936
+Node: The Low-Level LDAP API\7f2001409
+Node: The LDAP Lisp Object\7f2002240
+Node: Opening and Closing a LDAP Connection\7f2002795
+Node: Low-level Operations on a LDAP Server\7f2004601
+Node: LDAP Internationalization\7f2007325
+Node: LDAP Internationalization Variables\7f2008230
+Node: Encoder/Decoder Functions\7f2009961
+Node: Syntax of Search Filters\7f2010998
+Node: PostgreSQL Support\7f2012296
+Node: Building XEmacs with PostgreSQL support\7f2012691
+Node: XEmacs PostgreSQL libpq API\7f2014038
+Node: libpq Lisp Variables\7f2015917
+Node: libpq Lisp Symbols and DataTypes\7f2018881
+Node: Synchronous Interface Functions\7f2032121
+Node: Asynchronous Interface Functions\7f2036612
+Node: Large Object Support\7f2040117
+Node: Other libpq Functions\7f2040744
+Node: Unimplemented libpq Functions\7f2043779
+Node: XEmacs PostgreSQL libpq Examples\7f2049098
+Node: Internationalization\7f2055189
+Node: I18N Levels 1 and 2\7f2055532
+Node: I18N Level 3\7f2056238
+Node: Level 3 Basics\7f2056519
+Node: Level 3 Primitives\7f2057352
+Node: Dynamic Messaging\7f2058958
+Node: Domain Specification\7f2059421
+Node: Documentation String Extraction\7f2061091
+Node: I18N Level 4\7f2062009
+Node: MULE\7f2062201
+Node: Internationalization Terminology\7f2063250
+Node: Charsets\7f2075449
+Node: Charset Properties\7f2076145
+Node: Basic Charset Functions\7f2080860
+Node: Charset Property Functions\7f2083041
+Node: Predefined Charsets\7f2085111
+Node: MULE Characters\7f2088031
+Node: Composite Characters\7f2088906
+Node: Coding Systems\7f2090173
+Node: Coding System Types\7f2092313
+Node: ISO 2022\7f2096297
+Node: EOL Conversion\7f2108572
+Node: Coding System Properties\7f2109744
+Node: Basic Coding System Functions\7f2114067
+Node: Coding System Property Functions\7f2116101
+Node: Encoding and Decoding Text\7f2116659
+Node: Detection of Textual Encoding\7f2117795
+Node: Big5 and Shift-JIS Functions\7f2119331
+Node: Predefined Coding Systems\7f2120483
+Node: CCL\7f2132577
+Node: CCL Syntax\7f2135681
+Node: CCL Statements\7f2137257
+Node: CCL Expressions\7f2141905
+Node: Calling CCL\7f2144444
+Node: CCL Examples\7f2147449
+Node: Category Tables\7f2147586
+Node: Tips\7f2149945
+Node: Style Tips\7f2150586
+Node: Compilation Tips\7f2160105
+Node: Documentation Tips\7f2162019
+Node: Comment Tips\7f2167528
+Node: Library Headers\7f2170531
+Node: Building XEmacs and Object Allocation\7f2174503
+Node: Building XEmacs\7f2175386
+Node: Pure Storage\7f2181964
+Node: Garbage Collection\7f2184752
+Node: Standard Errors\7f2195595
+Node: Standard Buffer-Local Variables\7f2199804
+Node: Standard Keymaps\7f2202439
+Node: Standard Hooks\7f2206173
+Node: Index\7f2213673
 \1f
 End Tag Table
index fb875ac..1f075d3 100644 (file)
@@ -1202,7 +1202,7 @@ values.  Loading a file also does evaluation (*note Loading::).
      This limit, with the associated error when it is exceeded, is one
      way that Lisp avoids infinite recursion on an ill-defined function.
 
-     The default value of this variable is 500.  If you set it to a
+     The default value of this variable is 1000.  If you set it to a
      value less than 100, Lisp will reset it to 100 if the given value
      is reached.
 
index 12050f5..e4a6581 100644 (file)
@@ -583,7 +583,7 @@ rather than localized in time.
      This limit, with the associated error when it is exceeded, is one
      way that Lisp avoids infinite recursion on an ill-defined function.
 
-     The default value is 600.
+     The default value is 3000.
 
      `max-lisp-eval-depth' provides another limit on depth of nesting.
      *Note Eval::.
index 1f73e7f..2064e9c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -34,317 +34,317 @@ translation approved by the Free Software Foundation.
 
 \1f
 Indirect:
-texinfo.info-1: 1484
-texinfo.info-2: 48707
-texinfo.info-3: 96681
-texinfo.info-4: 146073
-texinfo.info-5: 196055
-texinfo.info-6: 245147
-texinfo.info-7: 293746
-texinfo.info-8: 343561
-texinfo.info-9: 392874
-texinfo.info-10: 435252
-texinfo.info-11: 481368
-texinfo.info-12: 519528
+texinfo.info-1: 1485
+texinfo.info-2: 48708
+texinfo.info-3: 96682
+texinfo.info-4: 146074
+texinfo.info-5: 196056
+texinfo.info-6: 245148
+texinfo.info-7: 293747
+texinfo.info-8: 343562
+texinfo.info-9: 392875
+texinfo.info-10: 435253
+texinfo.info-11: 481369
+texinfo.info-12: 519529
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1484
-Node: Copying\7f23799
-Node: Overview\7f25804
-Node: Overview-Footnotes\7f27233
-Ref: Overview-Footnote-1\7f27297
-Node: Using Texinfo\7f27769
-Node: Info Files\7f30256
-Node: Info Files-Footnotes\7f34292
-Ref: Info Files-Footnote-1\7f34360
-Node: Printed Books\7f34539
-Node: Printed Books-Footnotes\7f37211
-Ref: Printed Books-Footnote-1\7f37285
-Node: Formatting Commands\7f37495
-Node: Formatting Commands-Footnotes\7f40322
-Ref: Formatting Commands-Footnote-1\7f40408
-Node: Conventions\7f41024
-Node: Comments\7f43586
-Node: Minimum\7f45009
-Node: Six Parts\7f47195
-Node: Short Sample\7f48707
-Node: Acknowledgements\7f52843
-Node: Texinfo Mode\7f53678
-Node: Texinfo Mode Overview\7f55050
-Node: Emacs Editing\7f55826
-Node: Inserting\7f57956
-Node: Showing the Structure\7f62237
-Node: Updating Nodes and Menus\7f64764
-Node: Updating Commands\7f65837
-Node: Updating Requirements\7f71898
-Node: Other Updating Commands\7f74195
-Node: Info Formatting\7f77463
-Node: Printing\7f78721
-Node: Texinfo Mode Summary\7f81066
-Node: Beginning a File\7f85820
-Node: Four Parts\7f86711
-Node: Sample Beginning\7f88181
-Node: Header\7f89801
-Node: First Line\7f91153
-Node: Start of Header\7f92142
-Node: setfilename\7f92855
-Node: settitle\7f94791
-Node: setchapternewpage\7f96681
-Node: paragraphindent\7f99442
-Node: End of Header\7f100924
-Node: Info Summary and Permissions\7f101763
-Node: Titlepage & Copyright Page\7f102782
-Node: titlepage\7f104388
-Node: titlepage-Footnotes\7f106670
-Ref: titlepage-Footnote-1\7f106736
-Node: titlefont center sp\7f107010
-Node: title subtitle author\7f108236
-Node: Copyright & Permissions\7f110508
-Node: end titlepage\7f112509
-Node: headings on off\7f114215
-Node: The Top Node\7f116260
-Node: Title of Top Node\7f117415
-Node: Master Menu Parts\7f118668
-Node: Software Copying Permissions\7f120905
-Node: Ending a File\7f122073
-Node: Printing Indices & Menus\7f122921
-Node: Contents\7f125230
-Node: File End\7f127570
-Node: Structuring\7f128243
-Node: Tree Structuring\7f129900
-Node: Structuring Command Types\7f131343
-Node: makeinfo top\7f133670
-Node: chapter\7f134203
-Node: unnumbered & appendix\7f135227
-Node: majorheading & chapheading\7f136066
-Node: section\7f136887
-Node: unnumberedsec appendixsec heading\7f137651
-Node: subsection\7f138640
-Node: unnumberedsubsec appendixsubsec subheading\7f139212
-Node: subsubsection\7f140165
-Node: Raise/lower sections\7f141715
-Node: Nodes\7f143850
-Node: Two Paths\7f144787
-Node: Node Menu Illustration\7f146073
-Node: node\7f149768
-Node: Node Names\7f152464
-Node: Writing a Node\7f153540
-Node: Node Line Tips\7f155558
-Node: Node Line Requirements\7f156352
-Node: First Node\7f157953
-Node: makeinfo top command\7f159392
-Node: Top Node Summary\7f160571
-Node: makeinfo Pointer Creation\7f162021
-Node: Menus\7f163268
-Node: Menus-Footnotes\7f164207
-Ref: Menus-Footnote-1\7f164265
-Node: Menu Location\7f164558
-Node: Writing a Menu\7f166235
-Node: Menu Parts\7f167201
-Node: Less Cluttered Menu Entry\7f168359
-Node: Menu Example\7f168984
-Node: Other Info Files\7f170505
-Node: Cross References\7f172373
-Node: References\7f173330
-Node: Cross Reference Commands\7f175077
-Node: Cross Reference Parts\7f176136
-Node: xref\7f178972
-Node: Reference Syntax\7f179771
-Node: One Argument\7f181425
-Node: Two Arguments\7f182437
-Node: Three Arguments\7f183552
-Node: Four and Five Arguments\7f185943
-Node: Top Node Naming\7f188355
-Node: ref\7f189365
-Node: pxref\7f190757
-Node: inforef\7f193139
-Node: uref\7f194432
-Node: Marking Text\7f195431
-Node: Indicating\7f196055
-Node: Useful Highlighting\7f197960
-Node: code\7f199349
-Node: kbd\7f202387
-Node: key\7f204257
-Node: samp\7f205590
-Node: var\7f207177
-Node: file\7f208970
-Node: dfn\7f209577
-Node: cite\7f210487
-Node: url\7f210941
-Node: email\7f211505
-Node: Emphasis\7f212317
-Node: emph & strong\7f213217
-Node: Smallcaps\7f214203
-Node: Fonts\7f215530
-Node: Customized Highlighting\7f216618
-Node: Customized Highlighting-Footnotes\7f219433
-Ref: Customized Highlighting-Footnote-1\7f219527
-Node: Quotations and Examples\7f219653
-Node: Block Enclosing Commands\7f221275
-Node: quotation\7f223300
-Node: example\7f224390
-Node: noindent\7f226445
-Node: Lisp Example\7f227909
-Node: Lisp Example-Footnotes\7f228611
-Ref: Lisp Example-Footnote-1\7f228683
-Node: smallexample & smalllisp\7f228801
-Node: display\7f230826
-Node: format\7f231458
-Node: exdent\7f231919
-Node: flushleft & flushright\7f232999
-Node: cartouche\7f234265
-Node: Lists and Tables\7f235032
-Node: Introducing Lists\7f235708
-Node: itemize\7f237373
-Node: enumerate\7f239520
-Node: Two-column Tables\7f242025
-Node: table\7f242714
-Node: ftable vtable\7f245147
-Node: itemx\7f246248
-Node: Multi-column Tables\7f247259
-Node: Multitable Column Widths\7f247930
-Node: Multitable Rows\7f249384
-Node: Indices\7f251165
-Node: Index Entries\7f252315
-Node: Predefined Indices\7f253448
-Node: Indexing Commands\7f254445
-Node: Combining Indices\7f258985
-Node: syncodeindex\7f260348
-Node: synindex\7f262010
-Node: New Indices\7f262535
-Node: Insertions\7f264360
-Node: Braces Atsigns\7f265544
-Node: Inserting An Atsign\7f266096
-Node: Inserting Braces\7f266370
-Node: Inserting Space\7f266733
-Node: Not Ending a Sentence\7f267237
-Node: Ending a Sentence\7f268591
-Node: Multiple Spaces\7f269720
-Node: dmn\7f270939
-Node: Inserting Accents\7f272146
-Node: Dots Bullets\7f273903
-Node: dots\7f274725
-Node: bullet\7f275249
-Node: TeX and copyright\7f275646
-Node: tex\7f276213
-Node: copyright symbol\7f276629
-Node: pounds\7f276889
-Node: minus\7f277253
-Node: math\7f278175
-Node: Glyphs\7f278903
-Node: Glyphs Summary\7f280016
-Node: result\7f280644
-Node: expansion\7f281129
-Node: Print Glyph\7f282085
-Node: Error Glyph\7f282962
-Node: Equivalence\7f283795
-Node: Point Glyph\7f284483
-Node: Images\7f286040
-Node: Breaks\7f287707
-Node: Break Commands\7f289138
-Node: Line Breaks\7f289979
-Node: - and hyphenation\7f290997
-Node: w\7f292247
-Node: sp\7f292960
-Node: page\7f293369
-Node: group\7f293746
-Node: need\7f295489
-Node: Definition Commands\7f296219
-Node: Def Cmd Template\7f297790
-Node: Optional Arguments\7f300787
-Node: deffnx\7f302375
-Node: Def Cmds in Detail\7f303330
-Node: Functions Commands\7f304440
-Node: Variables Commands\7f307445
-Node: Typed Functions\7f309531
-Node: Typed Variables\7f313073
-Node: Abstract Objects\7f315056
-Node: Data Types\7f320281
-Node: Def Cmd Conventions\7f321536
-Node: Sample Function Definition\7f322099
-Node: Footnotes\7f324983
-Node: Footnotes-Footnotes\7f325371
-Ref: Footnotes-Footnote-1\7f325437
-Node: Footnote Commands\7f325717
-Node: Footnote Commands-Footnotes\7f327214
-Ref: Footnote Commands-Footnote-1\7f327296
-Node: Footnote Styles\7f327332
-Node: Conditionals\7f329918
-Node: Conditional Commands\7f330729
-Node: Conditional Not Commands\7f332222
-Node: Raw Formatter Commands\7f332967
-Node: set clear value\7f334797
-Node: ifset ifclear\7f335598
-Node: value\7f338777
-Node: value Example\7f340189
-Node: Macros\7f341767
-Node: Defining Macros\7f342472
-Node: Invoking Macros\7f343561
-Node: Format/Print Hardcopy\7f344667
-Node: Use TeX\7f346504
-Node: Format with tex/texindex\7f347132
-Node: Format with texi2dvi\7f350773
-Node: Print with lpr\7f351364
-Node: Within Emacs\7f352218
-Node: Texinfo Mode Printing\7f353137
-Node: Compile-Command\7f356547
-Node: Requirements Summary\7f357435
-Node: Preparing for TeX\7f358748
-Node: Overfull hboxes\7f361535
-Node: smallbook\7f363094
-Node: A4 Paper\7f364612
-Node: Cropmarks and Magnification\7f365837
-Node: Create an Info File\7f367778
-Node: makeinfo advantages\7f369081
-Node: Invoking makeinfo\7f369997
-Node: makeinfo options\7f370685
-Node: Pointer Validation\7f376169
-Node: makeinfo in Emacs\7f377513
-Node: texinfo-format commands\7f380071
-Node: Batch Formatting\7f381342
-Node: Tag and Split Files\7f382558
-Node: Install an Info File\7f385912
-Node: Directory file\7f386730
-Node: New Info File\7f388598
-Node: Other Info Directories\7f389659
-Node: Installing Dir Entries\7f392874
-Node: Invoking install-info\7f394867
-Node: Command List\7f397282
-Node: Tips\7f435252
-Node: Sample Texinfo File\7f446662
-Node: Sample Permissions\7f448781
-Node: Inserting Permissions\7f449824
-Node: ifinfo Permissions\7f452130
-Node: Titlepage Permissions\7f453751
-Node: Include Files\7f455013
-Node: Using Include Files\7f456100
-Node: texinfo-multiple-files-update\7f458055
-Node: Include File Requirements\7f460416
-Node: Sample Include File\7f461661
-Node: Include Files Evolution\7f463180
-Node: Headings\7f465151
-Node: Headings Introduced\7f465788
-Node: Heading Format\7f467676
-Node: Heading Choice\7f470128
-Node: Custom Headings\7f471500
-Node: Catching Mistakes\7f475828
-Node: makeinfo Preferred\7f477117
-Node: Debugging with Info\7f478022
-Node: Debugging with TeX\7f481368
-Node: Using texinfo-show-structure\7f485648
-Node: Using occur\7f488747
-Node: Running Info-Validate\7f490284
-Node: Using Info-validate\7f491345
-Node: Unsplit\7f493187
-Node: Tagifying\7f494233
-Node: Splitting\7f495085
-Node: Refilling Paragraphs\7f496701
-Node: Refilling Paragraphs-Footnotes\7f498355
-Ref: Refilling Paragraphs-Footnote-1\7f498443
-Node: Command Syntax\7f498606
-Node: Obtaining TeX\7f501563
-Node: Command and Variable Index\7f503676
-Node: Concept Index\7f519528
+Node: Top\7f1485
+Node: Copying\7f23800
+Node: Overview\7f25805
+Node: Overview-Footnotes\7f27234
+Ref: Overview-Footnote-1\7f27298
+Node: Using Texinfo\7f27770
+Node: Info Files\7f30257
+Node: Info Files-Footnotes\7f34293
+Ref: Info Files-Footnote-1\7f34361
+Node: Printed Books\7f34540
+Node: Printed Books-Footnotes\7f37212
+Ref: Printed Books-Footnote-1\7f37286
+Node: Formatting Commands\7f37496
+Node: Formatting Commands-Footnotes\7f40323
+Ref: Formatting Commands-Footnote-1\7f40409
+Node: Conventions\7f41025
+Node: Comments\7f43587
+Node: Minimum\7f45010
+Node: Six Parts\7f47196
+Node: Short Sample\7f48708
+Node: Acknowledgements\7f52844
+Node: Texinfo Mode\7f53679
+Node: Texinfo Mode Overview\7f55051
+Node: Emacs Editing\7f55827
+Node: Inserting\7f57957
+Node: Showing the Structure\7f62238
+Node: Updating Nodes and Menus\7f64765
+Node: Updating Commands\7f65838
+Node: Updating Requirements\7f71899
+Node: Other Updating Commands\7f74196
+Node: Info Formatting\7f77464
+Node: Printing\7f78722
+Node: Texinfo Mode Summary\7f81067
+Node: Beginning a File\7f85821
+Node: Four Parts\7f86712
+Node: Sample Beginning\7f88182
+Node: Header\7f89802
+Node: First Line\7f91154
+Node: Start of Header\7f92143
+Node: setfilename\7f92856
+Node: settitle\7f94792
+Node: setchapternewpage\7f96682
+Node: paragraphindent\7f99443
+Node: End of Header\7f100925
+Node: Info Summary and Permissions\7f101764
+Node: Titlepage & Copyright Page\7f102783
+Node: titlepage\7f104389
+Node: titlepage-Footnotes\7f106671
+Ref: titlepage-Footnote-1\7f106737
+Node: titlefont center sp\7f107011
+Node: title subtitle author\7f108237
+Node: Copyright & Permissions\7f110509
+Node: end titlepage\7f112510
+Node: headings on off\7f114216
+Node: The Top Node\7f116261
+Node: Title of Top Node\7f117416
+Node: Master Menu Parts\7f118669
+Node: Software Copying Permissions\7f120906
+Node: Ending a File\7f122074
+Node: Printing Indices & Menus\7f122922
+Node: Contents\7f125231
+Node: File End\7f127571
+Node: Structuring\7f128244
+Node: Tree Structuring\7f129901
+Node: Structuring Command Types\7f131344
+Node: makeinfo top\7f133671
+Node: chapter\7f134204
+Node: unnumbered & appendix\7f135228
+Node: majorheading & chapheading\7f136067
+Node: section\7f136888
+Node: unnumberedsec appendixsec heading\7f137652
+Node: subsection\7f138641
+Node: unnumberedsubsec appendixsubsec subheading\7f139213
+Node: subsubsection\7f140166
+Node: Raise/lower sections\7f141716
+Node: Nodes\7f143851
+Node: Two Paths\7f144788
+Node: Node Menu Illustration\7f146074
+Node: node\7f149769
+Node: Node Names\7f152465
+Node: Writing a Node\7f153541
+Node: Node Line Tips\7f155559
+Node: Node Line Requirements\7f156353
+Node: First Node\7f157954
+Node: makeinfo top command\7f159393
+Node: Top Node Summary\7f160572
+Node: makeinfo Pointer Creation\7f162022
+Node: Menus\7f163269
+Node: Menus-Footnotes\7f164208
+Ref: Menus-Footnote-1\7f164266
+Node: Menu Location\7f164559
+Node: Writing a Menu\7f166236
+Node: Menu Parts\7f167202
+Node: Less Cluttered Menu Entry\7f168360
+Node: Menu Example\7f168985
+Node: Other Info Files\7f170506
+Node: Cross References\7f172374
+Node: References\7f173331
+Node: Cross Reference Commands\7f175078
+Node: Cross Reference Parts\7f176137
+Node: xref\7f178973
+Node: Reference Syntax\7f179772
+Node: One Argument\7f181426
+Node: Two Arguments\7f182438
+Node: Three Arguments\7f183553
+Node: Four and Five Arguments\7f185944
+Node: Top Node Naming\7f188356
+Node: ref\7f189366
+Node: pxref\7f190758
+Node: inforef\7f193140
+Node: uref\7f194433
+Node: Marking Text\7f195432
+Node: Indicating\7f196056
+Node: Useful Highlighting\7f197961
+Node: code\7f199350
+Node: kbd\7f202388
+Node: key\7f204258
+Node: samp\7f205591
+Node: var\7f207178
+Node: file\7f208971
+Node: dfn\7f209578
+Node: cite\7f210488
+Node: url\7f210942
+Node: email\7f211506
+Node: Emphasis\7f212318
+Node: emph & strong\7f213218
+Node: Smallcaps\7f214204
+Node: Fonts\7f215531
+Node: Customized Highlighting\7f216619
+Node: Customized Highlighting-Footnotes\7f219434
+Ref: Customized Highlighting-Footnote-1\7f219528
+Node: Quotations and Examples\7f219654
+Node: Block Enclosing Commands\7f221276
+Node: quotation\7f223301
+Node: example\7f224391
+Node: noindent\7f226446
+Node: Lisp Example\7f227910
+Node: Lisp Example-Footnotes\7f228612
+Ref: Lisp Example-Footnote-1\7f228684
+Node: smallexample & smalllisp\7f228802
+Node: display\7f230827
+Node: format\7f231459
+Node: exdent\7f231920
+Node: flushleft & flushright\7f233000
+Node: cartouche\7f234266
+Node: Lists and Tables\7f235033
+Node: Introducing Lists\7f235709
+Node: itemize\7f237374
+Node: enumerate\7f239521
+Node: Two-column Tables\7f242026
+Node: table\7f242715
+Node: ftable vtable\7f245148
+Node: itemx\7f246249
+Node: Multi-column Tables\7f247260
+Node: Multitable Column Widths\7f247931
+Node: Multitable Rows\7f249385
+Node: Indices\7f251166
+Node: Index Entries\7f252316
+Node: Predefined Indices\7f253449
+Node: Indexing Commands\7f254446
+Node: Combining Indices\7f258986
+Node: syncodeindex\7f260349
+Node: synindex\7f262011
+Node: New Indices\7f262536
+Node: Insertions\7f264361
+Node: Braces Atsigns\7f265545
+Node: Inserting An Atsign\7f266097
+Node: Inserting Braces\7f266371
+Node: Inserting Space\7f266734
+Node: Not Ending a Sentence\7f267238
+Node: Ending a Sentence\7f268592
+Node: Multiple Spaces\7f269721
+Node: dmn\7f270940
+Node: Inserting Accents\7f272147
+Node: Dots Bullets\7f273904
+Node: dots\7f274726
+Node: bullet\7f275250
+Node: TeX and copyright\7f275647
+Node: tex\7f276214
+Node: copyright symbol\7f276630
+Node: pounds\7f276890
+Node: minus\7f277254
+Node: math\7f278176
+Node: Glyphs\7f278904
+Node: Glyphs Summary\7f280017
+Node: result\7f280645
+Node: expansion\7f281130
+Node: Print Glyph\7f282086
+Node: Error Glyph\7f282963
+Node: Equivalence\7f283796
+Node: Point Glyph\7f284484
+Node: Images\7f286041
+Node: Breaks\7f287708
+Node: Break Commands\7f289139
+Node: Line Breaks\7f289980
+Node: - and hyphenation\7f290998
+Node: w\7f292248
+Node: sp\7f292961
+Node: page\7f293370
+Node: group\7f293747
+Node: need\7f295490
+Node: Definition Commands\7f296220
+Node: Def Cmd Template\7f297791
+Node: Optional Arguments\7f300788
+Node: deffnx\7f302376
+Node: Def Cmds in Detail\7f303331
+Node: Functions Commands\7f304441
+Node: Variables Commands\7f307446
+Node: Typed Functions\7f309532
+Node: Typed Variables\7f313074
+Node: Abstract Objects\7f315057
+Node: Data Types\7f320282
+Node: Def Cmd Conventions\7f321537
+Node: Sample Function Definition\7f322100
+Node: Footnotes\7f324984
+Node: Footnotes-Footnotes\7f325372
+Ref: Footnotes-Footnote-1\7f325438
+Node: Footnote Commands\7f325718
+Node: Footnote Commands-Footnotes\7f327215
+Ref: Footnote Commands-Footnote-1\7f327297
+Node: Footnote Styles\7f327333
+Node: Conditionals\7f329919
+Node: Conditional Commands\7f330730
+Node: Conditional Not Commands\7f332223
+Node: Raw Formatter Commands\7f332968
+Node: set clear value\7f334798
+Node: ifset ifclear\7f335599
+Node: value\7f338778
+Node: value Example\7f340190
+Node: Macros\7f341768
+Node: Defining Macros\7f342473
+Node: Invoking Macros\7f343562
+Node: Format/Print Hardcopy\7f344668
+Node: Use TeX\7f346505
+Node: Format with tex/texindex\7f347133
+Node: Format with texi2dvi\7f350774
+Node: Print with lpr\7f351365
+Node: Within Emacs\7f352219
+Node: Texinfo Mode Printing\7f353138
+Node: Compile-Command\7f356548
+Node: Requirements Summary\7f357436
+Node: Preparing for TeX\7f358749
+Node: Overfull hboxes\7f361536
+Node: smallbook\7f363095
+Node: A4 Paper\7f364613
+Node: Cropmarks and Magnification\7f365838
+Node: Create an Info File\7f367779
+Node: makeinfo advantages\7f369082
+Node: Invoking makeinfo\7f369998
+Node: makeinfo options\7f370686
+Node: Pointer Validation\7f376170
+Node: makeinfo in Emacs\7f377514
+Node: texinfo-format commands\7f380072
+Node: Batch Formatting\7f381343
+Node: Tag and Split Files\7f382559
+Node: Install an Info File\7f385913
+Node: Directory file\7f386731
+Node: New Info File\7f388599
+Node: Other Info Directories\7f389660
+Node: Installing Dir Entries\7f392875
+Node: Invoking install-info\7f394868
+Node: Command List\7f397283
+Node: Tips\7f435253
+Node: Sample Texinfo File\7f446663
+Node: Sample Permissions\7f448782
+Node: Inserting Permissions\7f449825
+Node: ifinfo Permissions\7f452131
+Node: Titlepage Permissions\7f453752
+Node: Include Files\7f455014
+Node: Using Include Files\7f456101
+Node: texinfo-multiple-files-update\7f458056
+Node: Include File Requirements\7f460417
+Node: Sample Include File\7f461662
+Node: Include Files Evolution\7f463181
+Node: Headings\7f465152
+Node: Headings Introduced\7f465789
+Node: Heading Format\7f467677
+Node: Heading Choice\7f470129
+Node: Custom Headings\7f471501
+Node: Catching Mistakes\7f475829
+Node: makeinfo Preferred\7f477118
+Node: Debugging with Info\7f478023
+Node: Debugging with TeX\7f481369
+Node: Using texinfo-show-structure\7f485649
+Node: Using occur\7f488748
+Node: Running Info-Validate\7f490285
+Node: Using Info-validate\7f491346
+Node: Unsplit\7f493188
+Node: Tagifying\7f494234
+Node: Splitting\7f495086
+Node: Refilling Paragraphs\7f496702
+Node: Refilling Paragraphs-Footnotes\7f498356
+Ref: Refilling Paragraphs-Footnote-1\7f498444
+Node: Command Syntax\7f498607
+Node: Obtaining TeX\7f501564
+Node: Command and Variable Index\7f503677
+Node: Concept Index\7f519529
 \1f
 End Tag Table
index ffb02ba..8ee9a21 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index aea9a20..7ea65d1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 43fe115..3f8c007 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index de69019..8868116 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index fc54512..2d9851d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 5eab100..02f4b8b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index c1e77ef..5d7fa08 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index f285171..ad0ff64 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index bbfb172..3cb8989 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 10a127a..c64f1ee 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 79ed349..7c39015 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 8448388..97f0356 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 4.0b from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index bd41315..ff7548f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -8,261 +8,261 @@ END-INFO-DIR-ENTRY
 
 \1f
 Indirect:
-xemacs-faq.info-1: 205
-xemacs-faq.info-2: 49999
-xemacs-faq.info-3: 99617
-xemacs-faq.info-4: 149492
-xemacs-faq.info-5: 199354
+xemacs-faq.info-1: 206
+xemacs-faq.info-2: 50000
+xemacs-faq.info-3: 99618
+xemacs-faq.info-4: 149493
+xemacs-faq.info-5: 199355
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f205
-Node: Introduction\7f16704
-Node: Q1.0.1\7f20146
-Node: Q1.0.2\7f20682
-Node: Q1.0.3\7f21227
-Node: Q1.0.4\7f21489
-Node: Q1.0.5\7f22939
-Node: Q1.0.6\7f23628
-Node: Q1.0.7\7f24634
-Node: Q1.0.8\7f24887
-Node: Q1.0.9\7f25102
-Node: Q1.0.10\7f25380
-Node: Q1.0.11\7f25623
-Node: Q1.0.12\7f26010
-Node: Q1.0.13\7f26378
-Node: Q1.0.14\7f26627
-Node: Q1.1.1\7f27139
-Node: Q1.1.2\7f28181
-Node: Q1.1.3\7f28574
-Node: Q1.2.1\7f29525
-Node: Q1.2.2\7f30581
-Node: Q1.2.3\7f31015
-Node: Q1.3.1\7f32099
-Node: Q1.3.2\7f32750
-Node: Q1.3.3\7f33214
-Node: Q1.3.4\7f33455
-Node: Q1.3.5\7f34228
-Node: Q1.3.6\7f36633
-Node: Q1.3.7\7f38164
-Node: Q1.4.1\7f39099
-Node: Q1.4.2\7f39961
-Node: Q1.4.3\7f40302
-Node: Q1.4.4\7f40721
-Node: Q1.4.5\7f42261
-Node: Q1.4.6\7f42565
-Node: Installation\7f43558
-Node: Q2.0.1\7f46133
-Node: Q2.0.2\7f46933
-Node: Q2.0.3\7f48701
-Node: Q2.0.4\7f49999
-Node: Q2.0.5\7f50591
-Node: Q2.0.6\7f50939
-Node: Q2.0.7\7f51320
-Node: Q2.0.8\7f51701
-Node: Q2.0.9\7f53278
-Node: Q2.0.10\7f54716
-Node: Q2.0.11\7f55560
-Node: Q2.0.12\7f56501
-Node: Q2.0.13\7f58024
-Node: Q2.0.14\7f58513
-Node: Q2.1.1\7f59571
-Node: Q2.1.2\7f62313
-Node: Q2.1.3\7f63490
-Node: Q2.1.4\7f64783
-Node: Q2.1.5\7f65582
-Node: Q2.1.6\7f65944
-Node: Q2.1.7\7f66421
-Node: Q2.1.8\7f66774
-Node: Q2.1.9\7f68308
-Node: Q2.1.10\7f68730
-Node: Q2.1.11\7f69487
-Node: Q2.1.12\7f70352
-Node: Q2.1.13\7f71307
-Node: Q2.1.14\7f72338
-Node: Q2.1.15\7f73449
-Node: Q2.1.16\7f80481
-Node: Q2.1.17\7f81175
-Node: Q2.1.18\7f81772
-Node: Q2.1.19\7f81899
-Node: Q2.1.20\7f82429
-Node: Q2.1.21\7f82811
-Node: Q2.1.22\7f83004
-Node: Q2.1.23\7f84301
-Node: Q2.1.24\7f84969
-Node: Q2.1.25\7f85441
-Node: Customization\7f86076
-Node: Q3.0.1\7f90914
-Node: Q3.0.2\7f91620
-Node: Q3.0.3\7f92184
-Node: Q3.0.4\7f92601
-Node: Q3.0.5\7f93434
-Node: Q3.0.6\7f94215
-Node: Q3.0.7\7f94795
-Node: Q3.0.8\7f95459
-Node: Q3.0.9\7f96417
-Node: Q3.1.1\7f96978
-Node: Q3.1.2\7f97715
-Node: Q3.1.3\7f98146
-Node: Q3.1.4\7f98335
-Node: Q3.1.5\7f98524
-Node: Q3.1.6\7f98908
-Node: Q3.1.7\7f99617
-Node: Q3.1.8\7f101841
-Node: Q3.2.1\7f102383
-Node: Q3.2.2\7f104036
-Node: Q3.2.3\7f104835
-Node: Q3.2.4\7f105437
-Node: Q3.2.5\7f106471
-Node: Q3.2.6\7f106938
-Node: Q3.3.1\7f107863
-Node: Q3.3.2\7f108293
-Node: Q3.3.3\7f108924
-Node: Q3.3.4\7f109305
-Node: Q3.3.5\7f110406
-Node: Q3.4.1\7f111900
-Node: Q3.4.2\7f112543
-Node: Q3.5.1\7f113055
-Node: Q3.5.2\7f114504
-Node: Q3.5.3\7f114922
-Node: Q3.5.4\7f115760
-Node: Q3.5.5\7f116592
-Node: Q3.5.6\7f117732
-Node: Q3.5.7\7f118722
-Node: Q3.5.8\7f120162
-Node: Q3.5.9\7f120909
-Node: Q3.5.10\7f121689
-Node: Q3.5.11\7f122325
-Node: Q3.6.1\7f122878
-Node: Q3.6.2\7f123623
-Node: Q3.6.3\7f124051
-Node: Q3.7.1\7f124551
-Node: Q3.7.2\7f125439
-Node: Q3.7.3\7f126098
-Node: Q3.7.4\7f126520
-Node: Q3.7.5\7f126863
-Node: Q3.7.6\7f127331
-Node: Q3.7.7\7f128046
-Node: Q3.7.8\7f129066
-Node: Q3.8.1\7f129485
-Node: Q3.8.2\7f129945
-Node: Q3.8.3\7f130408
-Node: Q3.8.4\7f131014
-Node: Q3.8.5\7f131733
-Node: Q3.9.1\7f132518
-Node: Q3.9.2\7f133458
-Node: Q3.9.3\7f134056
-Node: Q3.9.4\7f134718
-Node: Q3.10.1\7f135597
-Node: Q3.10.2\7f136415
-Node: Q3.10.3\7f137420
-Node: Q3.10.4\7f138148
-Node: Q3.10.5\7f138531
-Node: Subsystems\7f139583
-Node: Q4.0.1\7f142070
-Node: Q4.0.2\7f142595
-Node: Q4.0.3\7f143153
-Node: Q4.0.4\7f143474
-Node: Q4.0.5\7f143716
-Node: Q4.0.6\7f143947
-Node: Q4.0.7\7f144535
-Node: Q4.0.8\7f144860
-Node: Q4.0.9\7f146087
-Node: Q4.0.10\7f148125
-Node: Q4.0.11\7f148614
-Node: Q4.0.12\7f149492
-Node: Q4.1.1\7f150465
-Node: Q4.1.2\7f150868
-Node: Q4.1.3\7f151195
-Node: Q4.2.1\7f151504
-Node: Q4.2.2\7f152134
-Node: Q4.2.3\7f152374
-Node: Q4.2.4\7f152918
-Node: Q4.3.1\7f153571
-Node: Q4.3.2\7f154155
-Node: Q4.3.3\7f155636
-Node: Q4.3.4\7f155908
-Node: Q4.3.5\7f156585
-Node: Q4.4.1\7f157213
-Node: Q4.4.2\7f158699
-Node: Q4.5.1\7f159903
-Node: Q4.6.1\7f160672
-Node: Q4.7.1\7f165932
-Node: Q4.7.2\7f166887
-Node: Q4.7.3\7f167184
-Node: Q4.7.4\7f167370
-Node: Q4.7.5\7f168254
-Node: Q4.7.6\7f169895
-Node: Miscellaneous\7f170184
-Node: Q5.0.1\7f173597
-Node: Q5.0.2\7f174336
-Node: Q5.0.3\7f175190
-Node: Q5.0.4\7f175892
-Node: Q5.0.5\7f176831
-Node: Q5.0.6\7f178811
-Node: Q5.0.7\7f179468
-Node: Q5.0.8\7f180073
-Node: Q5.0.9\7f180592
-Node: Q5.0.10\7f181106
-Node: Q5.0.11\7f181354
-Node: Q5.0.12\7f181892
-Node: Q5.0.13\7f182809
-Node: Q5.0.14\7f183493
-Node: Q5.0.15\7f184258
-Node: Q5.0.16\7f184555
-Node: Q5.0.17\7f185067
-Node: Q5.0.18\7f185332
-Node: Q5.0.19\7f185526
-Node: Q5.0.20\7f185950
-Node: Q5.1.1\7f186865
-Node: Q5.1.2\7f188934
-Node: Q5.1.3\7f189670
-Node: Q5.1.4\7f193064
-Node: Q5.1.5\7f193599
-Node: Q5.1.6\7f195723
-Node: Q5.1.7\7f197209
-Node: Q5.1.8\7f198802
-Node: Q5.1.9\7f199354
-Node: Q5.1.10\7f200239
-Node: Q5.1.11\7f201370
-Node: Q5.2.1\7f201919
-Node: Q5.2.2\7f202489
-Node: Q5.2.3\7f202906
-Node: Q5.2.4\7f203141
-Node: Q5.3.1\7f204051
-Node: Q5.3.2\7f205272
-Node: Q5.3.3\7f206048
-Node: Q5.3.4\7f206532
-Node: Q5.3.5\7f207199
-Node: Q5.3.6\7f208068
-Node: Q5.3.7\7f208313
-Node: Q5.3.8\7f210503
-Node: Q5.3.9\7f210750
-Node: Q5.3.10\7f211703
-Node: Q5.3.11\7f213787
-Node: Q5.3.12\7f215378
-Node: MS Windows\7f216652
-Node: Q6.0.1\7f218129
-Node: Q6.0.2\7f218876
-Node: Q6.0.3\7f219341
-Node: Q6.0.4\7f219621
-Node: Q6.1.1\7f221900
-Node: Q6.1.2\7f222771
-Node: Q6.1.3\7f223226
-Node: Q6.1.4\7f223508
-Node: Q6.1.5\7f223886
-Node: Q6.1.6\7f224754
-Node: Q6.2.1\7f227060
-Node: Q6.2.2\7f227961
-Node: Q6.2.3\7f228373
-Node: Q6.3.1\7f228662
-Node: Q6.3.2\7f229756
-Node: Q6.3.3\7f232937
-Node: Q6.4.1\7f233206
-Node: Current Events\7f234541
-Node: Q7.0.1\7f235195
-Node: Q7.0.2\7f235834
-Node: Q7.0.3\7f236907
-Node: Q7.0.4\7f237135
+Node: Top\7f206
+Node: Introduction\7f16705
+Node: Q1.0.1\7f20147
+Node: Q1.0.2\7f20683
+Node: Q1.0.3\7f21228
+Node: Q1.0.4\7f21490
+Node: Q1.0.5\7f22940
+Node: Q1.0.6\7f23629
+Node: Q1.0.7\7f24635
+Node: Q1.0.8\7f24888
+Node: Q1.0.9\7f25103
+Node: Q1.0.10\7f25381
+Node: Q1.0.11\7f25624
+Node: Q1.0.12\7f26011
+Node: Q1.0.13\7f26379
+Node: Q1.0.14\7f26628
+Node: Q1.1.1\7f27140
+Node: Q1.1.2\7f28182
+Node: Q1.1.3\7f28575
+Node: Q1.2.1\7f29526
+Node: Q1.2.2\7f30582
+Node: Q1.2.3\7f31016
+Node: Q1.3.1\7f32100
+Node: Q1.3.2\7f32751
+Node: Q1.3.3\7f33215
+Node: Q1.3.4\7f33456
+Node: Q1.3.5\7f34229
+Node: Q1.3.6\7f36634
+Node: Q1.3.7\7f38165
+Node: Q1.4.1\7f39100
+Node: Q1.4.2\7f39962
+Node: Q1.4.3\7f40303
+Node: Q1.4.4\7f40722
+Node: Q1.4.5\7f42262
+Node: Q1.4.6\7f42566
+Node: Installation\7f43559
+Node: Q2.0.1\7f46134
+Node: Q2.0.2\7f46934
+Node: Q2.0.3\7f48702
+Node: Q2.0.4\7f50000
+Node: Q2.0.5\7f50592
+Node: Q2.0.6\7f50940
+Node: Q2.0.7\7f51321
+Node: Q2.0.8\7f51702
+Node: Q2.0.9\7f53279
+Node: Q2.0.10\7f54717
+Node: Q2.0.11\7f55561
+Node: Q2.0.12\7f56502
+Node: Q2.0.13\7f58025
+Node: Q2.0.14\7f58514
+Node: Q2.1.1\7f59572
+Node: Q2.1.2\7f62314
+Node: Q2.1.3\7f63491
+Node: Q2.1.4\7f64784
+Node: Q2.1.5\7f65583
+Node: Q2.1.6\7f65945
+Node: Q2.1.7\7f66422
+Node: Q2.1.8\7f66775
+Node: Q2.1.9\7f68309
+Node: Q2.1.10\7f68731
+Node: Q2.1.11\7f69488
+Node: Q2.1.12\7f70353
+Node: Q2.1.13\7f71308
+Node: Q2.1.14\7f72339
+Node: Q2.1.15\7f73450
+Node: Q2.1.16\7f80482
+Node: Q2.1.17\7f81176
+Node: Q2.1.18\7f81773
+Node: Q2.1.19\7f81900
+Node: Q2.1.20\7f82430
+Node: Q2.1.21\7f82812
+Node: Q2.1.22\7f83005
+Node: Q2.1.23\7f84302
+Node: Q2.1.24\7f84970
+Node: Q2.1.25\7f85442
+Node: Customization\7f86077
+Node: Q3.0.1\7f90915
+Node: Q3.0.2\7f91621
+Node: Q3.0.3\7f92185
+Node: Q3.0.4\7f92602
+Node: Q3.0.5\7f93435
+Node: Q3.0.6\7f94216
+Node: Q3.0.7\7f94796
+Node: Q3.0.8\7f95460
+Node: Q3.0.9\7f96418
+Node: Q3.1.1\7f96979
+Node: Q3.1.2\7f97716
+Node: Q3.1.3\7f98147
+Node: Q3.1.4\7f98336
+Node: Q3.1.5\7f98525
+Node: Q3.1.6\7f98909
+Node: Q3.1.7\7f99618
+Node: Q3.1.8\7f101842
+Node: Q3.2.1\7f102384
+Node: Q3.2.2\7f104037
+Node: Q3.2.3\7f104836
+Node: Q3.2.4\7f105438
+Node: Q3.2.5\7f106472
+Node: Q3.2.6\7f106939
+Node: Q3.3.1\7f107864
+Node: Q3.3.2\7f108294
+Node: Q3.3.3\7f108925
+Node: Q3.3.4\7f109306
+Node: Q3.3.5\7f110407
+Node: Q3.4.1\7f111901
+Node: Q3.4.2\7f112544
+Node: Q3.5.1\7f113056
+Node: Q3.5.2\7f114505
+Node: Q3.5.3\7f114923
+Node: Q3.5.4\7f115761
+Node: Q3.5.5\7f116593
+Node: Q3.5.6\7f117733
+Node: Q3.5.7\7f118723
+Node: Q3.5.8\7f120163
+Node: Q3.5.9\7f120910
+Node: Q3.5.10\7f121690
+Node: Q3.5.11\7f122326
+Node: Q3.6.1\7f122879
+Node: Q3.6.2\7f123624
+Node: Q3.6.3\7f124052
+Node: Q3.7.1\7f124552
+Node: Q3.7.2\7f125440
+Node: Q3.7.3\7f126099
+Node: Q3.7.4\7f126521
+Node: Q3.7.5\7f126864
+Node: Q3.7.6\7f127332
+Node: Q3.7.7\7f128047
+Node: Q3.7.8\7f129067
+Node: Q3.8.1\7f129486
+Node: Q3.8.2\7f129946
+Node: Q3.8.3\7f130409
+Node: Q3.8.4\7f131015
+Node: Q3.8.5\7f131734
+Node: Q3.9.1\7f132519
+Node: Q3.9.2\7f133459
+Node: Q3.9.3\7f134057
+Node: Q3.9.4\7f134719
+Node: Q3.10.1\7f135598
+Node: Q3.10.2\7f136416
+Node: Q3.10.3\7f137421
+Node: Q3.10.4\7f138149
+Node: Q3.10.5\7f138532
+Node: Subsystems\7f139584
+Node: Q4.0.1\7f142071
+Node: Q4.0.2\7f142596
+Node: Q4.0.3\7f143154
+Node: Q4.0.4\7f143475
+Node: Q4.0.5\7f143717
+Node: Q4.0.6\7f143948
+Node: Q4.0.7\7f144536
+Node: Q4.0.8\7f144861
+Node: Q4.0.9\7f146088
+Node: Q4.0.10\7f148126
+Node: Q4.0.11\7f148615
+Node: Q4.0.12\7f149493
+Node: Q4.1.1\7f150466
+Node: Q4.1.2\7f150869
+Node: Q4.1.3\7f151196
+Node: Q4.2.1\7f151505
+Node: Q4.2.2\7f152135
+Node: Q4.2.3\7f152375
+Node: Q4.2.4\7f152919
+Node: Q4.3.1\7f153572
+Node: Q4.3.2\7f154156
+Node: Q4.3.3\7f155637
+Node: Q4.3.4\7f155909
+Node: Q4.3.5\7f156586
+Node: Q4.4.1\7f157214
+Node: Q4.4.2\7f158700
+Node: Q4.5.1\7f159904
+Node: Q4.6.1\7f160673
+Node: Q4.7.1\7f165933
+Node: Q4.7.2\7f166888
+Node: Q4.7.3\7f167185
+Node: Q4.7.4\7f167371
+Node: Q4.7.5\7f168255
+Node: Q4.7.6\7f169896
+Node: Miscellaneous\7f170185
+Node: Q5.0.1\7f173598
+Node: Q5.0.2\7f174337
+Node: Q5.0.3\7f175191
+Node: Q5.0.4\7f175893
+Node: Q5.0.5\7f176832
+Node: Q5.0.6\7f178812
+Node: Q5.0.7\7f179469
+Node: Q5.0.8\7f180074
+Node: Q5.0.9\7f180593
+Node: Q5.0.10\7f181107
+Node: Q5.0.11\7f181355
+Node: Q5.0.12\7f181893
+Node: Q5.0.13\7f182810
+Node: Q5.0.14\7f183494
+Node: Q5.0.15\7f184259
+Node: Q5.0.16\7f184556
+Node: Q5.0.17\7f185068
+Node: Q5.0.18\7f185333
+Node: Q5.0.19\7f185527
+Node: Q5.0.20\7f185951
+Node: Q5.1.1\7f186866
+Node: Q5.1.2\7f188935
+Node: Q5.1.3\7f189671
+Node: Q5.1.4\7f193065
+Node: Q5.1.5\7f193600
+Node: Q5.1.6\7f195724
+Node: Q5.1.7\7f197210
+Node: Q5.1.8\7f198803
+Node: Q5.1.9\7f199355
+Node: Q5.1.10\7f200240
+Node: Q5.1.11\7f201371
+Node: Q5.2.1\7f201920
+Node: Q5.2.2\7f202490
+Node: Q5.2.3\7f202907
+Node: Q5.2.4\7f203142
+Node: Q5.3.1\7f204052
+Node: Q5.3.2\7f205273
+Node: Q5.3.3\7f206049
+Node: Q5.3.4\7f206533
+Node: Q5.3.5\7f207200
+Node: Q5.3.6\7f208069
+Node: Q5.3.7\7f208314
+Node: Q5.3.8\7f210504
+Node: Q5.3.9\7f210751
+Node: Q5.3.10\7f211704
+Node: Q5.3.11\7f213788
+Node: Q5.3.12\7f215379
+Node: MS Windows\7f216653
+Node: Q6.0.1\7f218130
+Node: Q6.0.2\7f218877
+Node: Q6.0.3\7f219342
+Node: Q6.0.4\7f219622
+Node: Q6.1.1\7f221901
+Node: Q6.1.2\7f222772
+Node: Q6.1.3\7f223227
+Node: Q6.1.4\7f223509
+Node: Q6.1.5\7f223887
+Node: Q6.1.6\7f224755
+Node: Q6.2.1\7f227061
+Node: Q6.2.2\7f227962
+Node: Q6.2.3\7f228374
+Node: Q6.3.1\7f228663
+Node: Q6.3.2\7f229757
+Node: Q6.3.3\7f232938
+Node: Q6.4.1\7f233207
+Node: Current Events\7f234542
+Node: Q7.0.1\7f235196
+Node: Q7.0.2\7f235835
+Node: Q7.0.3\7f236908
+Node: Q7.0.4\7f237136
 \1f
 End Tag Table
index 6706c9f..cfb98eb 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 66252fd..62faa2b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 8fa7ecf..8800a07 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7e671ec..7dc867f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index ccfd040..d57a66e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs-faq.info, produced by makeinfo version 4.0b from
 xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index b2ba08b..4797d24 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -31,402 +31,409 @@ translation approved by the author instead of in the original English.
 
 \1f
 Indirect:
-xemacs.info-1: 1350
-xemacs.info-2: 48996
-xemacs.info-3: 96978
-xemacs.info-4: 146218
-xemacs.info-5: 195369
-xemacs.info-6: 243029
-xemacs.info-7: 283112
-xemacs.info-8: 333075
-xemacs.info-9: 380545
-xemacs.info-10: 429063
-xemacs.info-11: 476887
-xemacs.info-12: 526058
-xemacs.info-13: 575241
-xemacs.info-14: 624318
-xemacs.info-15: 673698
-xemacs.info-16: 723565
-xemacs.info-17: 772201
-xemacs.info-18: 820896
-xemacs.info-19: 869813
-xemacs.info-20: 915996
-xemacs.info-21: 965400
-xemacs.info-22: 1007986
+xemacs.info-1: 1351
+xemacs.info-2: 49148
+xemacs.info-3: 97130
+xemacs.info-4: 146370
+xemacs.info-5: 195521
+xemacs.info-6: 243181
+xemacs.info-7: 283264
+xemacs.info-8: 333227
+xemacs.info-9: 380697
+xemacs.info-10: 429215
+xemacs.info-11: 477039
+xemacs.info-12: 526210
+xemacs.info-13: 575703
+xemacs.info-14: 620082
+xemacs.info-15: 669514
+xemacs.info-16: 718919
+xemacs.info-17: 768596
+xemacs.info-18: 816849
+xemacs.info-19: 866480
+xemacs.info-20: 891467
+xemacs.info-21: 923121
+xemacs.info-22: 972525
+xemacs.info-23: 1015111
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1350
-Node: License\7f22790
-Node: Distrib\7f36072
-Node: Intro\7f37736
-Node: Frame\7f40607
-Node: Point\7f44652
-Node: Echo Area\7f46619
-Node: Mode Line\7f48996
-Node: GUI Components\7f53427
-Node: Menubar Basics\7f54708
-Node: Scrollbar Basics\7f56624
-Node: Mode Line Basics\7f57517
-Node: Toolbar Basics\7f58349
-Node: Gutter Basics\7f59016
-Node: Inhibiting\7f61070
-Node: Customizing\7f63441
-Node: XEmacs under X\7f63690
-Node: XEmacs under MS Windows\7f66904
-Node: Keystrokes\7f67319
-Node: Intro to Keystrokes\7f68163
-Node: Representing Keystrokes\7f70266
-Node: Key Sequences\7f71623
-Node: String Key Sequences\7f74964
-Node: Meta Key\7f75347
-Node: Super and Hyper Keys\7f76820
-Node: Character Representation\7f83065
-Node: Commands\7f84085
-Node: Pull-down Menus\7f86934
-Node: File Menu\7f90283
-Node: Edit Menu\7f94105
-Node: Apps Menu\7f96488
-Node: Options Menu\7f96978
-Node: Buffers Menu\7f100996
-Node: Tools Menu\7f101303
-Node: Help Menu\7f101794
-Node: Menu Customization\7f102195
-Node: Entering Emacs\7f106425
-Node: Exiting\7f109322
-Node: Command Switches\7f113795
-Node: Startup Paths\7f123817
-Node: Basic\7f131147
-Node: Inserting Text\7f132551
-Node: Moving Point\7f135547
-Node: Erasing\7f139153
-Node: Basic Files\7f140458
-Node: Basic Help\7f142380
-Node: Blank Lines\7f142975
-Node: Continuation Lines\7f144551
-Node: Position Info\7f146218
-Node: Arguments\7f149634
-Node: Undo\7f153733
-Node: Minibuffer\7f156680
-Node: Minibuffer File\7f159290
-Node: Minibuffer Edit\7f161095
-Node: Completion\7f164036
-Node: Completion Example\7f165967
-Node: Completion Commands\7f167062
-Node: Strict Completion\7f170038
-Node: Completion Options\7f171819
-Node: Minibuffer History\7f173327
-Node: Repetition\7f176511
-Node: M-x\7f179356
-Node: Help\7f184450
-Node: Help Summary\7f185860
-Node: Key Help\7f188646
-Node: Name Help\7f189605
-Node: Apropos\7f192250
-Node: Library Keywords\7f195369
-Node: Help Mode\7f197690
-Node: Misc Help\7f198187
-Node: Mark\7f201335
-Node: Setting Mark\7f203189
-Node: Using Region\7f206311
-Node: Marking Objects\7f207048
-Node: Mark Ring\7f208886
-Node: Mouse Selection\7f210602
-Node: Additional Mouse Operations\7f212609
-Node: Killing\7f216813
-Node: Yanking\7f222449
-Node: Kill Ring\7f223252
-Node: Appending Kills\7f224854
-Node: Earlier Kills\7f226891
-Node: Using X Selections\7f229504
-Node: X Clipboard Selection\7f230754
-Node: X Selection Commands\7f232931
-Node: X Cut Buffers\7f234017
-Node: Active Regions\7f235376
-Node: Accumulating Text\7f239956
-Node: Rectangles\7f243029
-Node: Registers\7f246548
-Node: RegPos\7f248002
-Node: RegText\7f249158
-Node: RegRect\7f250264
-Node: RegConfig\7f251143
-Node: RegNumbers\7f252083
-Node: RegFiles\7f252801
-Node: Bookmarks\7f253459
-Node: Display\7f256831
-Node: Scrolling\7f258326
-Node: Horizontal Scrolling\7f262469
-Node: Selective Display\7f263664
-Node: Display Vars\7f264883
-Node: Search\7f267561
-Node: Incremental Search\7f268754
-Node: Non-Incremental Search\7f277682
-Node: Word Search\7f279124
-Node: Regexp Search\7f280742
-Node: Regexps\7f283112
-Node: Search Case\7f297109
-Node: Replace\7f297890
-Node: Unconditional Replace\7f298838
-Node: Regexp Replace\7f299973
-Node: Replacement and Case\7f300908
-Node: Query Replace\7f301888
-Node: Other Repeating Search\7f305115
-Node: Fixit\7f306370
-Node: Kill Errors\7f306950
-Node: Transpose\7f308283
-Node: Fixing Case\7f310687
-Node: Spelling\7f311333
-Node: Files\7f312794
-Node: File Names\7f314104
-Node: Visiting\7f318441
-Node: Saving\7f325273
-Node: Backup\7f330196
-Node: Backup Names\7f331592
-Node: Backup Deletion\7f333075
-Node: Backup Copying\7f334225
-Node: Interlocking\7f335931
-Node: Reverting\7f340059
-Node: Auto Save\7f341971
-Node: Auto Save Files\7f342938
-Node: Auto Save Control\7f344779
-Node: Recover\7f346617
-Node: Version Control\7f347772
-Node: Concepts of VC\7f349810
-Node: Editing with VC\7f351420
-Node: Variables for Check-in/out\7f356676
-Node: Log Entries\7f358575
-Node: Change Logs and VC\7f359755
-Node: Old Versions\7f363022
-Node: VC Status\7f365025
-Node: Renaming and VC\7f366739
-Node: Snapshots\7f367418
-Node: Making Snapshots\7f367919
-Node: Snapshot Caveats\7f369212
-Node: Version Headers\7f371021
-Node: ListDir\7f373720
-Node: Comparing Files\7f375769
-Node: Dired\7f377302
-Node: Dired Enter\7f377973
-Node: Dired Edit\7f378798
-Node: Dired Deletion\7f380545
-Node: Dired Immed\7f383768
-Node: Misc File Ops\7f385044
-Node: Buffers\7f387532
-Node: Select Buffer\7f389690
-Node: List Buffers\7f391485
-Node: Misc Buffer\7f393243
-Node: Kill Buffer\7f394886
-Node: Several Buffers\7f396016
-Node: Windows\7f399883
-Node: Basic Window\7f400594
-Node: Split Window\7f402313
-Node: Other Window\7f404446
-Node: Pop Up Window\7f406877
-Node: Change Window\7f408382
-Node: Mule\7f411290
-Node: Mule Intro\7f412553
-Node: Language Environments\7f413569
-Node: Input Methods\7f415676
-Node: Select Input Method\7f419396
-Node: Coding Systems\7f421551
-Node: Recognize Coding\7f425737
-Node: Specify Coding\7f429063
-Node: Major Modes\7f433994
-Node: Choosing Modes\7f436213
-Node: Indentation\7f438603
-Node: Indentation Commands\7f440698
-Node: Tab Stops\7f443427
-Node: Just Spaces\7f445276
-Node: Text\7f446091
-Node: Text Mode\7f448074
-Node: Nroff Mode\7f450153
-Node: TeX Mode\7f451796
-Node: TeX Editing\7f454048
-Node: TeX Print\7f457482
-Node: Outline Mode\7f460701
-Node: Outline Format\7f462182
-Node: Outline Motion\7f464982
-Node: Outline Visibility\7f466535
-Node: Words\7f469456
-Node: Sentences\7f472403
-Node: Paragraphs\7f474599
-Node: Pages\7f476887
-Node: Filling\7f479487
-Node: Auto Fill\7f480058
-Node: Fill Commands\7f482205
-Node: Fill Prefix\7f484370
-Node: Case\7f486558
-Node: Programs\7f488586
-Node: Program Modes\7f491136
-Node: Lists\7f493368
-Node: Defuns\7f499208
-Node: Grinding\7f501861
-Node: Basic Indent\7f502489
-Node: Multi-line Indent\7f504510
-Node: Lisp Indent\7f506126
-Node: C Indent\7f509576
-Node: Matching\7f514816
-Node: Comments\7f516338
-Node: Balanced Editing\7f522790
-Node: Lisp Completion\7f523804
-Node: Documentation\7f524819
-Node: Change Log\7f526058
-Node: Tags\7f528636
-Node: Tag Syntax\7f530285
-Node: Create Tags Table\7f534229
-Node: Etags Regexps\7f538289
-Node: Select Tags Table\7f542947
-Node: Find Tag\7f546720
-Node: Tags Search\7f549684
-Node: List Tags\7f553140
-Node: Fortran\7f554169
-Node: Fortran Motion\7f555245
-Node: Fortran Indent\7f556065
-Node: ForIndent Commands\7f556750
-Node: ForIndent Num\7f557895
-Node: ForIndent Conv\7f559169
-Node: ForIndent Vars\7f559945
-Node: Fortran Comments\7f561113
-Node: Fortran Columns\7f564711
-Node: Fortran Abbrev\7f566134
-Node: Asm Mode\7f567043
-Node: Running\7f567595
-Node: Compilation\7f568564
-Node: Lisp Modes\7f573414
-Node: Lisp Libraries\7f574687
-Node: Loading\7f575241
-Node: Compiling Libraries\7f579701
-Node: Mocklisp\7f582592
-Node: Lisp Eval\7f583269
-Node: Lisp Debug\7f586909
-Node: Lisp Interaction\7f592336
-Node: External Lisp\7f593691
-Node: Packages\7f595765
-Node: Package Terminology\7f596620
-Node: Using Packages\7f597978
-Node: Building Packages\7f606856
-Node: Creating Packages\7f609399
-Node: Available Packages\7f614399
-Node: Abbrevs\7f619672
-Node: Defining Abbrevs\7f621871
-Node: Expanding Abbrevs\7f624318
-Node: Editing Abbrevs\7f627020
-Node: Saving Abbrevs\7f628893
-Node: Dynamic Abbrevs\7f630848
-Node: Picture\7f632150
-Node: Basic Picture\7f634583
-Node: Insert in Picture\7f636868
-Node: Tabs in Picture\7f638290
-Node: Rectangles in Picture\7f639811
-Node: Sending Mail\7f641719
-Node: Mail Format\7f643430
-Node: Mail Headers\7f644780
-Node: Mail Mode\7f651188
-Node: Reading Mail\7f654801
-Node: Calendar/Diary\7f656376
-Node: Calendar Motion\7f658050
-Node: Calendar Unit Motion\7f658933
-Node: Move to Beginning or End\7f661256
-Node: Specified Dates\7f662389
-Node: Scroll Calendar\7f663277
-Node: Mark and Region\7f665068
-Node: General Calendar\7f666974
-Node: LaTeX Calendar\7f668582
-Node: Holidays\7f670596
-Node: Sunrise/Sunset\7f673698
-Node: Lunar Phases\7f676737
-Node: Other Calendars\7f678122
-Node: Calendar Systems\7f679609
-Node: To Other Calendar\7f682720
-Node: From Other Calendar\7f684711
-Node: Mayan Calendar\7f687016
-Node: Diary\7f690211
-Node: Diary Commands\7f691960
-Node: Format of Diary File\7f695283
-Node: Date Formats\7f698153
-Node: Adding to Diary\7f700727
-Node: Special Diary Entries\7f702358
-Node: Calendar Customization\7f707697
-Node: Calendar Customizing\7f708559
-Node: Holiday Customizing\7f711794
-Node: Date Display Format\7f718281
-Node: Time Display Format\7f719239
-Node: Daylight Savings\7f720377
-Node: Diary Customizing\7f723565
-Node: Hebrew/Islamic Entries\7f728186
-Node: Fancy Diary Display\7f731526
-Node: Included Diary Files\7f733442
-Node: Sexp Diary Entries\7f734423
-Node: Appt Customizing\7f739513
-Node: Sorting\7f740559
-Node: Shell\7f745365
-Node: Single Shell\7f746658
-Node: Interactive Shell\7f748272
-Node: Shell Mode\7f752037
-Node: Terminal emulator\7f754528
-Node: Term Mode\7f756837
-Node: Paging in Term\7f757751
-Node: Narrowing\7f758549
-Node: Hardcopy\7f760499
-Node: Recursive Edit\7f761471
-Node: Dissociated Press\7f764458
-Node: CONX\7f767021
-Node: Amusements\7f768045
-Node: Emulation\7f768525
-Node: Customization\7f770385
-Node: Minor Modes\7f772201
-Node: Variables\7f773833
-Node: Examining\7f775789
-Node: Easy Customization\7f777250
-Node: Customization Groups\7f778264
-Node: Changing an Option\7f781193
-Node: Face Customization\7f787463
-Node: Specific Customization\7f789227
-Node: Edit Options\7f791834
-Node: Locals\7f793418
-Node: File Variables\7f796597
-Node: Keyboard Macros\7f801147
-Node: Basic Kbd Macro\7f803318
-Node: Save Kbd Macro\7f805250
-Node: Kbd Macro Query\7f806908
-Node: Key Bindings\7f808850
-Node: Keymaps\7f809724
-Node: Rebinding\7f813574
-Node: Interactive Rebinding\7f814273
-Node: Programmatic Rebinding\7f816462
-Node: Key Bindings Using Strings\7f819269
-Node: Disabling\7f820896
-Node: Syntax\7f822675
-Node: Syntax Entry\7f823556
-Node: Syntax Change\7f827640
-Node: Init File\7f829809
-Node: Init Syntax\7f831273
-Node: Init Examples\7f833624
-Node: Terminal Init\7f837814
-Node: Audible Bell\7f839551
-Node: Faces\7f842982
-Node: Frame Components\7f847824
-Node: X Resources\7f848269
-Node: Geometry Resources\7f849928
-Node: Iconic Resources\7f852376
-Node: Resource List\7f852848
-Node: Face Resources\7f859355
-Node: Widgets\7f863032
-Node: Menubar Resources\7f863971
-Node: Quitting\7f865485
-Node: Lossage\7f868463
-Node: Stuck Recursive\7f869107
-Node: Screen Garbled\7f869813
-Node: Text Garbled\7f870947
-Node: Unasked-for Search\7f871586
-Node: Emergency Escape\7f872371
-Node: Total Frustration\7f874150
-Node: Bugs\7f874781
-Node: Glossary\7f884342
-Node: Manifesto\7f915996
-Node: Key Index\7f939473
-Node: Command Index\7f965400
-Node: Variable Index\7f1007986
-Node: Concept Index\7f1024072
+Node: Top\7f1351
+Node: License\7f22943
+Node: Distrib\7f36224
+Node: Intro\7f37888
+Node: Frame\7f40759
+Node: Point\7f44804
+Node: Echo Area\7f46771
+Node: Mode Line\7f49148
+Node: GUI Components\7f53579
+Node: Menubar Basics\7f54860
+Node: Scrollbar Basics\7f56776
+Node: Mode Line Basics\7f57669
+Node: Toolbar Basics\7f58501
+Node: Gutter Basics\7f59168
+Node: Inhibiting\7f61222
+Node: Customizing\7f63593
+Node: XEmacs under X\7f63842
+Node: XEmacs under MS Windows\7f67056
+Node: Keystrokes\7f67471
+Node: Intro to Keystrokes\7f68315
+Node: Representing Keystrokes\7f70418
+Node: Key Sequences\7f71775
+Node: String Key Sequences\7f75116
+Node: Meta Key\7f75499
+Node: Super and Hyper Keys\7f76972
+Node: Character Representation\7f83217
+Node: Commands\7f84237
+Node: Pull-down Menus\7f87086
+Node: File Menu\7f90435
+Node: Edit Menu\7f94257
+Node: Apps Menu\7f96640
+Node: Options Menu\7f97130
+Node: Buffers Menu\7f101148
+Node: Tools Menu\7f101455
+Node: Help Menu\7f101946
+Node: Menu Customization\7f102347
+Node: Entering Emacs\7f106577
+Node: Exiting\7f109474
+Node: Command Switches\7f113947
+Node: Startup Paths\7f123969
+Node: Basic\7f131299
+Node: Inserting Text\7f132703
+Node: Moving Point\7f135699
+Node: Erasing\7f139305
+Node: Basic Files\7f140610
+Node: Basic Help\7f142532
+Node: Blank Lines\7f143127
+Node: Continuation Lines\7f144703
+Node: Position Info\7f146370
+Node: Arguments\7f149786
+Node: Undo\7f153885
+Node: Minibuffer\7f156832
+Node: Minibuffer File\7f159442
+Node: Minibuffer Edit\7f161247
+Node: Completion\7f164188
+Node: Completion Example\7f166119
+Node: Completion Commands\7f167214
+Node: Strict Completion\7f170190
+Node: Completion Options\7f171971
+Node: Minibuffer History\7f173479
+Node: Repetition\7f176663
+Node: M-x\7f179508
+Node: Help\7f184602
+Node: Help Summary\7f186012
+Node: Key Help\7f188798
+Node: Name Help\7f189757
+Node: Apropos\7f192402
+Node: Library Keywords\7f195521
+Node: Help Mode\7f197842
+Node: Misc Help\7f198339
+Node: Mark\7f201487
+Node: Setting Mark\7f203341
+Node: Using Region\7f206463
+Node: Marking Objects\7f207200
+Node: Mark Ring\7f209038
+Node: Mouse Selection\7f210754
+Node: Additional Mouse Operations\7f212761
+Node: Killing\7f216965
+Node: Yanking\7f222601
+Node: Kill Ring\7f223404
+Node: Appending Kills\7f225006
+Node: Earlier Kills\7f227043
+Node: Using X Selections\7f229656
+Node: X Clipboard Selection\7f230906
+Node: X Selection Commands\7f233083
+Node: X Cut Buffers\7f234169
+Node: Active Regions\7f235528
+Node: Accumulating Text\7f240108
+Node: Rectangles\7f243181
+Node: Registers\7f246700
+Node: RegPos\7f248154
+Node: RegText\7f249310
+Node: RegRect\7f250416
+Node: RegConfig\7f251295
+Node: RegNumbers\7f252235
+Node: RegFiles\7f252953
+Node: Bookmarks\7f253611
+Node: Display\7f256983
+Node: Scrolling\7f258478
+Node: Horizontal Scrolling\7f262621
+Node: Selective Display\7f263816
+Node: Display Vars\7f265035
+Node: Search\7f267713
+Node: Incremental Search\7f268906
+Node: Non-Incremental Search\7f277834
+Node: Word Search\7f279276
+Node: Regexp Search\7f280894
+Node: Regexps\7f283264
+Node: Search Case\7f297261
+Node: Replace\7f298042
+Node: Unconditional Replace\7f298990
+Node: Regexp Replace\7f300125
+Node: Replacement and Case\7f301060
+Node: Query Replace\7f302040
+Node: Other Repeating Search\7f305267
+Node: Fixit\7f306522
+Node: Kill Errors\7f307102
+Node: Transpose\7f308435
+Node: Fixing Case\7f310839
+Node: Spelling\7f311485
+Node: Files\7f312946
+Node: File Names\7f314256
+Node: Visiting\7f318593
+Node: Saving\7f325425
+Node: Backup\7f330348
+Node: Backup Names\7f331744
+Node: Backup Deletion\7f333227
+Node: Backup Copying\7f334377
+Node: Interlocking\7f336083
+Node: Reverting\7f340211
+Node: Auto Save\7f342123
+Node: Auto Save Files\7f343090
+Node: Auto Save Control\7f344931
+Node: Recover\7f346769
+Node: Version Control\7f347924
+Node: Concepts of VC\7f349962
+Node: Editing with VC\7f351572
+Node: Variables for Check-in/out\7f356828
+Node: Log Entries\7f358727
+Node: Change Logs and VC\7f359907
+Node: Old Versions\7f363174
+Node: VC Status\7f365177
+Node: Renaming and VC\7f366891
+Node: Snapshots\7f367570
+Node: Making Snapshots\7f368071
+Node: Snapshot Caveats\7f369364
+Node: Version Headers\7f371173
+Node: ListDir\7f373872
+Node: Comparing Files\7f375921
+Node: Dired\7f377454
+Node: Dired Enter\7f378125
+Node: Dired Edit\7f378950
+Node: Dired Deletion\7f380697
+Node: Dired Immed\7f383920
+Node: Misc File Ops\7f385196
+Node: Buffers\7f387684
+Node: Select Buffer\7f389842
+Node: List Buffers\7f391637
+Node: Misc Buffer\7f393395
+Node: Kill Buffer\7f395038
+Node: Several Buffers\7f396168
+Node: Windows\7f400035
+Node: Basic Window\7f400746
+Node: Split Window\7f402465
+Node: Other Window\7f404598
+Node: Pop Up Window\7f407029
+Node: Change Window\7f408534
+Node: Mule\7f411442
+Node: Mule Intro\7f412705
+Node: Language Environments\7f413721
+Node: Input Methods\7f415828
+Node: Select Input Method\7f419548
+Node: Coding Systems\7f421703
+Node: Recognize Coding\7f425889
+Node: Specify Coding\7f429215
+Node: Major Modes\7f434146
+Node: Choosing Modes\7f436365
+Node: Indentation\7f438755
+Node: Indentation Commands\7f440850
+Node: Tab Stops\7f443579
+Node: Just Spaces\7f445428
+Node: Text\7f446243
+Node: Text Mode\7f448226
+Node: Nroff Mode\7f450305
+Node: TeX Mode\7f451948
+Node: TeX Editing\7f454200
+Node: TeX Print\7f457634
+Node: Outline Mode\7f460853
+Node: Outline Format\7f462334
+Node: Outline Motion\7f465134
+Node: Outline Visibility\7f466687
+Node: Words\7f469608
+Node: Sentences\7f472555
+Node: Paragraphs\7f474751
+Node: Pages\7f477039
+Node: Filling\7f479639
+Node: Auto Fill\7f480210
+Node: Fill Commands\7f482357
+Node: Fill Prefix\7f484522
+Node: Case\7f486710
+Node: Programs\7f488738
+Node: Program Modes\7f491288
+Node: Lists\7f493520
+Node: Defuns\7f499360
+Node: Grinding\7f502013
+Node: Basic Indent\7f502641
+Node: Multi-line Indent\7f504662
+Node: Lisp Indent\7f506278
+Node: C Indent\7f509728
+Node: Matching\7f514968
+Node: Comments\7f516490
+Node: Balanced Editing\7f522942
+Node: Lisp Completion\7f523956
+Node: Documentation\7f524971
+Node: Change Log\7f526210
+Node: Tags\7f528788
+Node: Tag Syntax\7f530545
+Node: Create Tags Table\7f535245
+Node: Etags Regexps\7f539305
+Node: Select Tags Table\7f543963
+Node: Find Tag\7f547736
+Node: Tags Search\7f550700
+Node: List Tags\7f554156
+Node: Fortran\7f555185
+Node: Fortran Motion\7f556261
+Node: Fortran Indent\7f557081
+Node: ForIndent Commands\7f557766
+Node: ForIndent Num\7f558911
+Node: ForIndent Conv\7f560185
+Node: ForIndent Vars\7f560961
+Node: Fortran Comments\7f562129
+Node: Fortran Columns\7f565727
+Node: Fortran Abbrev\7f567150
+Node: Asm Mode\7f568059
+Node: Running\7f568611
+Node: Compilation\7f569580
+Node: Lisp Modes\7f574430
+Node: Lisp Libraries\7f575703
+Node: Loading\7f576257
+Node: Compiling Libraries\7f580717
+Node: Mocklisp\7f583608
+Node: Lisp Eval\7f584285
+Node: Lisp Debug\7f587925
+Node: Lisp Interaction\7f593352
+Node: External Lisp\7f594707
+Node: Packages\7f596781
+Node: Package Terminology\7f597700
+Node: Installing Packages\7f599310
+Node: Sumo\7f602230
+Node: Manually\7f603111
+Node: Automatically\7f604481
+Node: Which Packages\7f609044
+Node: Removing Packages\7f609853
+Node: Building Packages\7f610549
+Node: Local.rules File\7f613190
+Node: Creating Packages\7f615044
+Node: Available Packages\7f620082
+Node: Abbrevs\7f626797
+Node: Defining Abbrevs\7f628996
+Node: Expanding Abbrevs\7f631443
+Node: Editing Abbrevs\7f634145
+Node: Saving Abbrevs\7f636018
+Node: Dynamic Abbrevs\7f637973
+Node: Picture\7f639275
+Node: Basic Picture\7f641708
+Node: Insert in Picture\7f643993
+Node: Tabs in Picture\7f645415
+Node: Rectangles in Picture\7f646936
+Node: Sending Mail\7f648844
+Node: Mail Format\7f650555
+Node: Mail Headers\7f651905
+Node: Mail Mode\7f658313
+Node: Reading Mail\7f661926
+Node: Calendar/Diary\7f663501
+Node: Calendar Motion\7f665175
+Node: Calendar Unit Motion\7f666058
+Node: Move to Beginning or End\7f668381
+Node: Specified Dates\7f669514
+Node: Scroll Calendar\7f670402
+Node: Mark and Region\7f672193
+Node: General Calendar\7f674099
+Node: LaTeX Calendar\7f675707
+Node: Holidays\7f677721
+Node: Sunrise/Sunset\7f680823
+Node: Lunar Phases\7f683862
+Node: Other Calendars\7f685247
+Node: Calendar Systems\7f686734
+Node: To Other Calendar\7f689845
+Node: From Other Calendar\7f691836
+Node: Mayan Calendar\7f694141
+Node: Diary\7f697336
+Node: Diary Commands\7f699085
+Node: Format of Diary File\7f702408
+Node: Date Formats\7f705278
+Node: Adding to Diary\7f707852
+Node: Special Diary Entries\7f709483
+Node: Calendar Customization\7f714822
+Node: Calendar Customizing\7f715684
+Node: Holiday Customizing\7f718919
+Node: Date Display Format\7f725406
+Node: Time Display Format\7f726364
+Node: Daylight Savings\7f727502
+Node: Diary Customizing\7f730690
+Node: Hebrew/Islamic Entries\7f735311
+Node: Fancy Diary Display\7f738651
+Node: Included Diary Files\7f740567
+Node: Sexp Diary Entries\7f741548
+Node: Appt Customizing\7f746638
+Node: Sorting\7f747684
+Node: Shell\7f752490
+Node: Single Shell\7f753783
+Node: Interactive Shell\7f755397
+Node: Shell Mode\7f759162
+Node: Terminal emulator\7f761653
+Node: Term Mode\7f763962
+Node: Paging in Term\7f764876
+Node: Narrowing\7f765674
+Node: Hardcopy\7f767624
+Node: Recursive Edit\7f768596
+Node: Dissociated Press\7f771583
+Node: CONX\7f774146
+Node: Amusements\7f775170
+Node: Emulation\7f775650
+Node: Customization\7f777510
+Node: Minor Modes\7f779326
+Node: Variables\7f780958
+Node: Examining\7f782914
+Node: Easy Customization\7f784375
+Node: Customization Groups\7f785389
+Node: Changing an Option\7f788318
+Node: Face Customization\7f794588
+Node: Specific Customization\7f796352
+Node: Edit Options\7f798959
+Node: Locals\7f800543
+Node: File Variables\7f803722
+Node: Keyboard Macros\7f808272
+Node: Basic Kbd Macro\7f810443
+Node: Save Kbd Macro\7f812375
+Node: Kbd Macro Query\7f814033
+Node: Key Bindings\7f815975
+Node: Keymaps\7f816849
+Node: Rebinding\7f820699
+Node: Interactive Rebinding\7f821398
+Node: Programmatic Rebinding\7f823587
+Node: Key Bindings Using Strings\7f826394
+Node: Disabling\7f828021
+Node: Syntax\7f829800
+Node: Syntax Entry\7f830681
+Node: Syntax Change\7f834765
+Node: Init File\7f836934
+Node: Init Syntax\7f838398
+Node: Init Examples\7f840749
+Node: Terminal Init\7f844939
+Node: Audible Bell\7f846676
+Node: Faces\7f850107
+Node: Frame Components\7f854949
+Node: X Resources\7f855394
+Node: Geometry Resources\7f857053
+Node: Iconic Resources\7f859501
+Node: Resource List\7f859973
+Node: Face Resources\7f866480
+Node: Widgets\7f870157
+Node: Menubar Resources\7f871096
+Node: Quitting\7f872610
+Node: Lossage\7f875588
+Node: Stuck Recursive\7f876232
+Node: Screen Garbled\7f876938
+Node: Text Garbled\7f878072
+Node: Unasked-for Search\7f878711
+Node: Emergency Escape\7f879496
+Node: Total Frustration\7f881275
+Node: Bugs\7f881906
+Node: Glossary\7f891467
+Node: Manifesto\7f923121
+Node: Key Index\7f946598
+Node: Command Index\7f972525
+Node: Variable Index\7f1015111
+Node: Concept Index\7f1031197
 \1f
 End Tag Table
index b87fb89..576bd61 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -179,8 +179,11 @@ Packages
 
 * Packages::            Introduction to XEmacs Packages.
 * Package Terminology:: Understanding different kinds of packages.
-* Using Packages::      How to install and use packages.
+* Installing Packages:: How to install packages.
 * Building Packages::   Building packages from sources.
+* Local.rules File::    An important part of building packages.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
 
 Basic Editing Commands
 
@@ -599,7 +602,6 @@ authors' reputations.
 modification follow.
 
                          TERMS AND CONDITIONS
-
   1. This License Agreement applies to any program or other work which
      contains a notice placed by the copyright holder saying it may be
      distributed under the terms of this General Public License.  The
index 0c68a6c..e8f5cf6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 8e0ab08..bf640bd 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0233211..45c5285 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -111,6 +111,9 @@ normally include all functions and subroutines, and may also include
 global variables, data types, and anything else convenient.  Each name
 recorded is called a "tag".
 
+   The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser.  *Note : (ebrowse).
+
 * Menu:
 
 * Tag Syntax::         Tag syntax for various types of code and text files.
@@ -122,7 +125,7 @@ recorded is called a "tag".
 * List Tags::          Listing and finding tags defined in a file.
 
 \1f
-File: xemacs.info,  Node: Tag Syntax,  Next: Create Tags Table,  Prev: Tags,  Up: Tags
+File: xemacs.info,  Node: Tag Syntax,  Next: Create Tags Table,  Up: Tags
 
 Source File Tag Syntax
 ----------------------
@@ -179,8 +182,37 @@ Source File Tag Syntax
    Several other languages are also supported:
 
    * In Ada code, functions, procedures, packages, tasks, and types are
-     tags.  Use the `--packages-only' option to create tags for packages
-     only.
+     tags.  Use the `--packages-only' option to create tags for
+     packages only.
+
+     With Ada, it is possible to have the same name used for different
+     entity kinds (e.g. the same name for a procedure and a function).
+     Also, for things like packages, procedures and functions, there is
+     the spec (i.e. the interface) and the body (i.e. the
+     implementation).  To facilitate the choice to the user, a tag
+     value is appended with a qualifier:
+
+    function
+          `/f'
+
+    procedure
+          `/p'
+
+    package spec
+          `/s'
+
+    package body
+          `/b'
+
+    type
+          `/t'
+
+    task
+          `/k'
+
+     So, as an example, `M-x find-tag bidule/b' will go directly to the
+     body of the package BIDULE while `M-x find-tag bidule' will just
+     search for any tag BIDULE.
 
    * In assembler code, labels appearing at the beginning of a line,
      followed by a colon, are tags.
@@ -197,6 +229,8 @@ Source File Tag Syntax
 
    * In Fortran code, functions, subroutines and blockdata are tags.
 
+   * In makefiles, targets are tags.
+
    * In Objective C code, tags include Objective C definitions for
      classes, class categories, methods, and protocols.
 
@@ -207,7 +241,7 @@ Source File Tag Syntax
      `my' and `local' keywords.  Use `--globals' if you want to tag
      global variables.
 
-   * In Postscript code, the tags are the functions.
+   * In PostScript code, the tags are the functions.
 
    * In Prolog code, a tag name appears at the left margin.
 
@@ -1185,19 +1219,3 @@ Inferior Scheme mode
      The mode for an interactive session with an inferior Scheme
      process.
 
-\1f
-File: xemacs.info,  Node: Lisp Libraries,  Next: Lisp Eval,  Prev: Lisp Modes,  Up: Running
-
-Libraries of Lisp Code for Emacs
-================================
-
-   Lisp code for Emacs editing commands is stored in files whose names
-conventionally end in `.el'.  This ending tells Emacs to edit them in
-Emacs-Lisp mode (*note Lisp Modes::).
-
-* Menu:
-
-* Loading::            Loading libraries of Lisp code into Emacs for use.
-* Compiling Libraries:: Compiling a library makes it load and run faster.
-* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
-
index 739ba70..7e434aa 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,22 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Lisp Libraries,  Next: Lisp Eval,  Prev: Lisp Modes,  Up: Running
+
+Libraries of Lisp Code for Emacs
+================================
+
+   Lisp code for Emacs editing commands is stored in files whose names
+conventionally end in `.el'.  This ending tells Emacs to edit them in
+Emacs-Lisp mode (*note Lisp Modes::).
+
+* Menu:
+
+* Loading::            Loading libraries of Lisp code into Emacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
+
+\1f
 File: xemacs.info,  Node: Loading,  Next: Compiling Libraries,  Prev: Lisp Libraries,  Up: Lisp Libraries
 
 Loading Libraries
@@ -480,13 +496,17 @@ local needs with safe removal of unnecessary code.
 * Menu:
 
 * Package Terminology:: Understanding different kinds of packages.
-* Using Packages::      How to install and use packages.
-* Building Packages::   Building packages from sources.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from CVS sources.
+* Local.rules File::    This is an important file don't forget to create/edit it.
 * Creating Packages::   The basics.
-* Available Packages::  A brief, out-of-date, directory of packaged LISP.
+* Available Packages::  A brief directory of packaged LISP.
 
 \1f
-File: xemacs.info,  Node: Package Terminology,  Next: Using Packages,  Up: Packages
+File: xemacs.info,  Node: Package Terminology,  Next: Installing Packages,  Up: Packages
+
+Package Terminology:
+====================
 
 Package Flavors
 ---------------
@@ -500,13 +520,14 @@ Package Flavors
      collection of thematically related but otherwise independent lisp
      files.  These files are bundled together for download convenience
      and individual files may be deleted at will without any loss of
-     functionality.
+     functionality.  However, we would recommend that you follow this
+     rule of thumb: "When in doubt, don't delete".
 
 Package Distributions
 ---------------------
 
    XEmacs Lisp packages are distributed in two ways, depending on the
-intended use.  Binary Packages are for installers and end-users and may
+intended use.  Binary Packages are for installers and end-users that can
 be installed directly into an XEmacs package directory.  Source Packages
 are for developers and include all files necessary for rebuilding
 bytecompiled lisp and creating tarballs for distribution.
@@ -525,15 +546,21 @@ appropriate in regular packages) source code plus all of the files
 necessary to build distribution tarballs (Unix Tar format files,
 gzipped for space savings).
 
+   Currently, source packages are only available via CVS.  See
+<http://cvs.xemacs.org/> for details.
+
 \1f
-File: xemacs.info,  Node: Using Packages,  Next: Building Packages,  Prev: Package Terminology,  Up: Packages
+File: xemacs.info,  Node: Installing Packages,  Next: Building Packages,  Prev: Package Terminology,  Up: Packages
+
+Installing Packages:
+====================
 
 Getting Started
 ---------------
 
    When you first download XEmacs 21, you will usually first grab the
-"core distribution", a file called `xemacs-21.0.tar.gz'. (Replace the
-21.0 by the current version number.)  The core distribution contains
+"core distribution", a file called `xemacs-21.x.x.tar.gz'. (Replace the
+21.x.x by the current version number.)  The core distribution contains
 the sources of XEmacs and a minimal set of Emacs Lisp files, which are
 in the subdirectory named `lisp'.  This subdirectory used to contain
 all Emacs Lisp files distributed with XEmacs.  Now, to conserve disk
@@ -542,20 +569,20 @@ space, most non-essential packages were made optional.
 Choosing the Packages You Need
 ------------------------------
 
-   The available packages can currently be found in the same ftp
-directory where you grabbed the core distribution from, and are located
-in the subdirectory `packages/binary-packages'.  Package file names
-follow the naming convention `<package-name>-<version>-pkg.tar.gz'.
+   The *Note Available Packages:: can currently be found in the same
+ftp directory where you grabbed the core distribution from, and are
+located in the subdirectory `packages'.  Package file names follow the
+naming convention `<package-name>-<version>-pkg.tar.gz'.
 
    If you have EFS *Note (EFS)::, packages can be installed over the
 network.  Alternatively, if you have copies of the packages locally,
 you can install packages from a local disk or CDROM.
 
    The file `etc/PACKAGES' in the core distribution contains a list of
-the packages available at the time of the XEmacs release.  Packages are
-also listed on the `Options' menu under:
+the *Note Available Packages:: at the time of the XEmacs release.
+Packages are also listed on the `Options' menu under:
 
-             Options->Customize->Emacs->Packages
+             Options -> Customize -> Emacs -> Packages
 
    However, don't select any of these menu picks unless you actually
 want to install the given package (and have properly configured your
@@ -565,7 +592,7 @@ system to do so).
 they are installed, using the visual package browser and installer.
 You can access it via the menus:
 
-             Options->Manage Packages->List & Install
+             Options -> Manage Packages -> List & Install
 
    Or, you can get to it via the keyboard:
 
@@ -581,234 +608,316 @@ that you need `thingatpt', type:
 
      M-x package-get-package-provider RET thingatpt
 
-   which will return something like (fsf-compat "1.06"). You can the use
+   which will return something like (fsf-compat "1.08"). You can the use
 one of the methods above for installing the package you want.
 
 XEmacs and Installing Packages
 ------------------------------
 
-   Normally, packages are installed over the network, using EFS *Note
-(EFS)::.  However, you may not have network access, or you may already
-have some or all of the packages on a local disk, such as a CDROM.  If
-you want to install from a local disk, you must first tell XEmacs where
-to find the package binaries.  This is done by adding a line like the
-following to your init file:
+   There are three main ways to install packages:
 
-     (setq package-get-remote (cons (list nil "/my/path/to/package/binaries")
-                                    package-get-remote))
+* Menu:
 
-   *Note Init File::.
+* Sumo::              All at once, using the 'Sumo Tarball'.
+* Manually::          Using individual package tarballs.
+* Automatically::     Using the package tools from XEmacs.
+* Which Packages::    Which packages to install.
+* Removing Packages:: Removing packages.
 
-   Here, you'd change `/my/path/to/package/binaries' to be the path to
-your local package binaries.  Next, restart XEmacs, and you're ready to
-go (advanced users can just re-evaluate the sexp).
+   But regardless of the method you use to install packages, they can
+only be used by XEmacs after a restart.
 
-   If you are installing from a temporary, one-time directory, you can
-also add these directory names to `package-get-remote' using:
+\1f
+File: xemacs.info,  Node: Sumo,  Next: Manually,  Up: Installing Packages
 
-             M-x pui-add-install-directory
+Installing the Sumo Packages:
+=============================
 
-   Note, however, that any directories added using this function are not
-saved; this information will be lost when you quit XEmacs.
+   Those with little time, cheap connections and plenty of disk space
+can install all the packages at once using the sumo tarballs.  Download
+the file: `xemacs-sumo.tar.gz'
 
-   If you're going to install over the network, you only have to insure
-that EFS *Note (EFS):: works, and that it can get outside a firewall, if
-you happen to be behind one.  You shouldn't have to do anything else;
-XEmacs already knows where to go. However you can add your own mirrors
-to this list. See `package-get-remote'.
+   For an XEmacs compiled with Mule you also need:
+`xemacs-mule-sumo.tar.gz'
 
-   The easiest way to install a package is to use the visual package
-browser and installer, using the menu pick:
+   N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
 
-             Options->Manage Packages->List & Install
-   or
-             Options->Manage Packages->Using Custom->Select-> ...
+   Install them by:
 
-   You can also access it using the keyboard:
+   `cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET'
 
-     M-x pui-list-packages
+   Or, if you have GNU tar:
 
-   The visual package browser will then display a list of all packages.
-Help information will be displayed at the very bottom of the buffer; you
-may have to scroll down to see it.  You can also press `?' to get the
-same help.  From this buffer, you can tell the package status by the
-character in the first column:
+   `cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET'
 
-`-'
-     The package has not been installed.
+   As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
 
-`*'
-     The package has been installed, but a newer version is available.
-     The current version is out-of-date.
+\1f
+File: xemacs.info,  Node: Manually,  Next: Automatically,  Prev: Sumo,  Up: Installing Packages
 
-`+'
-     The package has been marked for installation/update.
+Manual Package Installation:
+============================
 
-   If there is no character in the first column, the package has been
-installed and is up-to-date.
+   Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form `name-<version>-pkg.tar.gz' and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy.
 
-   From here, you can select or unselect packages for installation using
-the <RET> key, the `Mouse-2' button or selecting "Select" from the
-(Popup) Menu.  Once you've finished selecting the packages, you can
-press the `x' key (or use the menu) to actually install the packages.
-Note that you will have to restart XEmacs for XEmacs to recognize any
-new packages.
+   Note: If you are upgrading packages already installed, it's best to
+remove the old package first *Note Removing Packages::.
 
-   Key summary:
+   For example if we are installing the `xemacs-base' package (version
+1.48):
 
-`?'
-     Display simple help.
+        mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+        cd $prefix/lib/xemacs/xemacs-packages RET
+        gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+     
+     Or if you have GNU tar, the last step can be:
+     
+        tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
 
-`<RET>'
-`<Mouse-2>'
-     Toggle between selecting and unselecting a package for
-     installation.
+   For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the `mule-base' package, version 1.37:
 
-`x'
-     Install selected packages.
+        mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+        cd $prefix/lib/xemacs/mule-packages RET
+        gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+     
+     Or if you have GNU tar, the last step can be:
+     
+        tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
 
-`<SPC>'
-     View, in the minibuffer, additional information about the package,
-     such as the package date (not the build date) and the package
-     author.  Moving the mouse over a package name will also do the
-     same thing.
+\1f
+File: xemacs.info,  Node: Automatically,  Next: Which Packages,  Prev: Manually,  Up: Installing Packages
 
-`v'
-     Toggle between verbose and non-verbose package display.
+Automatic Package Installation:
+===============================
 
-`g'
-     Refresh the package display.
+   XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
 
-`q'
-     Kill the package buffer.
+   Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages you
+need are:
+
+        efs          - To fetch the files from the FTP site or mirrors.
+        xemacs-base  - Needed by efs.
+     
+     and optionally:
+     
+        mule-base    - Needed if you want to use XEmacs with MULE.
 
-   Moving the mouse over a package will also cause additional
-information about the package to be displayed in the minibuffer.
+   After installing these by hand, fire up XEmacs and follow these
+steps.
 
-Other package installation interfaces
--------------------------------------
+   Note: The menus in XEmacs 21.2.x and up have changed slightly, so
+where I mention "Options -> Manage Packages", substitute "Tools ->
+Packages".
 
-   For an alternative package interface, you can select packages from
-the customize menus, under:
+  1. Choose a download site.  via menu: Options -> Manages Packages ->
+     Add Download Site via keyb: `M-x customize-variable RET
+     package-get-remote RET' (put in the details of remote host and
+     directory)
 
-             Options->Customize->Emacs->Packages-> ...
-   or
-             Options->Manage Packages->Using Custom->Select-> ...
+     If the package tarballs _AND_ the package-index file are in a
+     local directory, you can: `M-x pui-add-install-directory RET'
 
-   Set their state to on, and then do:
+  2. Obtain a list of packages and display the list in a buffer named
+     `*Packages*'.  menu: Options -> Manage Packages -> List & Install
+     keyb: `M-x pui-list-packages RET'
 
-             Options->Manage Packages->Using Custom->Update Packages
+     XEmacs will now connect to the remote site and download the latest
+     package-index file.  If you see an error about the package-index
+     entries not being PGP signed, you can safely ignore this because
+     PGP has not been integrated into the XEmacs package tools yet.
 
-   This will automatically retrieve the packages you have selected from
-the XEmacs ftp site or your local disk, and install them into XEmacs.
-Additionally it will update any packages you already have installed to
-the newest version.  Note that if a package is newly installed you will
-have to restart XEmacs for the change to take effect.
+     The visual package browser will then display a list of all
+     packages.  Help information will be displayed at the very bottom
+     of the buffer; you may have to scroll down to see it.  You can
+     also press `?' to get the same help.  From this buffer, you can
+     tell the package status by the character in the first column:
+
+    `-'
+          The package has not been installed.
+
+    `*'
+          The package has been installed, but a newer version is
+          available.  The current version is out-of-date.
+
+    `+'
+          The package has been marked for installation/update.
+
+     If there is no character in the first column, the package has been
+     installed and is up-to-date.
+
+     From here, you can select or unselect packages for installation
+     using the <RET> key, the `Mouse-2' button or selecting "Select"
+     from the (Popup) Menu.  Once you've finished selecting the
+     packages, you can press the `x' key (or use the menu) to actually
+     install the packages. Note that you will have to restart XEmacs
+     for XEmacs to recognize any new packages.
+
+     Key summary:
+
+    `?'
+          Display simple help.
+
+    `<RET>'
+    `<Mouse-2>'
+          Toggle between selecting and unselecting a package for
+          installation.
+
+    `x'
+          Install selected packages.
+
+    `<SPC>'
+          View, in the minibuffer, additional information about the
+          package, such as the package date (not the build date) and
+          the package author.  Moving the mouse over a package name
+          will also do the same thing.
+
+    `v'
+          Toggle between verbose and non-verbose package display.
+
+    `g'
+          Refresh the package display.
+
+    `q'
+          Kill the package buffer.
+
+     Moving the mouse over a package will also cause additional
+     information about the package to be displayed in the minibuffer.
+
+  3. Choose the packages you wish to install.  mouse: Click button 2 on
+     the package name.   keyb: `RET' on the package name
+
+  4. Make sure you have everything you need.  menu: Packages -> Add
+     Required keyb: `r'
+
+     XEmacs will now search for packages that are required by the ones
+     that you have chosen to install and offer to select those packages
+     also.
+
+     For novices and gurus alike, this step can save your bacon.  It's
+     easy to forget to install a critical package.
+
+  5. Download and install the packages.  menu: Packages ->
+     Install/Remove Selected keyb: `x'
 
    You can also install packages using a semi-manual interface:
 
      M-x package-get-all <return>
 
    Enter the name of the package (e.g., `prog-modes'), and XEmacs will
-search for the latest version (as listed in the lisp file
-`lisp/package-get-base.el'), and install it and any packages that it
+search for the latest version and install it and any packages that it
 depends upon.
 
-Manual Binary Package Installation
-----------------------------------
-
-   Pre-compiled, binary packages can be installed in either a system
-package directory (this is determined when XEmacs is compiled), or in
-one of the following subdirectories of your `$HOME' directory:
-
-     ~/.xemacs/mule-packages
-     ~/.xemacs/xemacs-packages
-
-   Packages in the former directory will only be found by a Mule-enabled
-XEmacs.
+\1f
+File: xemacs.info,  Node: Which Packages,  Next: Removing Packages,  Prev: Automatically,  Up: Installing Packages
 
-   XEmacs does not have to be running to install binary packages,
-although XEmacs will not know about any newly-installed packages until
-you restart XEmacs.  Note, however, that installing a newer version of a
-package while XEmacs is running could cause strange errors in XEmacs;
-it's best to exit XEmacs before upgrading an existing package.
+Which Packages to Install:
+==========================
 
-   To install binary packages manually:
+   This is difficult to say. When in doubt install a package. If you
+administrate a big site it might be a good idea to just install
+everything. A good minimal set of packages for XEmacs-latin1 would be
 
-  1. Download the package(s) that you want to install.  Each binary
-     package will typically be a gzip'd tarball.
+   xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time
 
-  2. Decide where to install the packages: in the system package
-     directory, or in `~/.xemacs/mule-packages' or
-     `~/.xemacs/xemacs-packages', respectively.  If you want to install
-     the packages in the system package directory, make sure you can
-     write into that directory.  If you want to install in your `$HOME'
-     directory, create the directory, `~/.xemacs/mule-packages' or
-     `~/.xemacs/xemacs-packages', respectively.
+   If you are using the XEmacs package tools, don't forget to do:
 
-  3. Next, `cd' to the directory under which you want to install the
-     package(s).
+       Packages -> Add Required
 
-  4. From this directory, uncompress and extract each of the gzip'd
-     tarballs that you downloaded in step 1.  Unix and Cygnus cygwin
-     users will typically do this using the commands:
+   To make sure you have everything that the packages you have chosen to
+install need.
 
-                  gunzip < package.tar.gz | tar xvf -
+   See also *Note Available Packages:: for further descriptions of the
+individual packages.
 
-     Above, replace `package.tar.gz' with the filename of the package
-     that you downloaded in step 1.
+\1f
+File: xemacs.info,  Node: Removing Packages,  Prev: Which Packages,  Up: Installing Packages
 
-     Of course, if you use GNU `tar', you could also use:
+Removing Packages:
+==================
 
-                  tar xvzf package.tar.gz
+   Because the exact files and their locations contained in a package
+may change it is recommended to remove a package first before
+installing a new version. In order to facilitate removal each package
+contains an `pgkinfo/MANIFEST.pkgname' file which list all the files
+belonging to the package.
 
-  5. That's it.  Quit and restart XEmacs to get it to recognize any new
-     or changed packages.
+   No need to panic, you don't have to go through the
+`pkinfo/MANIFEST.pkgname' and manually delete the files.  Instead, use
+`M-x package-admin-delete-binary-package RET'.
 
+   Note that the interactive package tools included with XEmacs already
+do this for you.
 
 \1f
-File: xemacs.info,  Node: Building Packages,  Next: Creating Packages,  Prev: Using Packages,  Up: Packages
+File: xemacs.info,  Node: Building Packages,  Next: Local.rules File,  Prev: Installing Packages,  Up: Packages
+
+Building Packages:
+==================
 
-   Source packages are available from the `packages/source-packages'
-subdirectory of your favorite XEmacs distribution site.  Alternatively,
-they are available via CVS from `cvs.xemacs.org'.  Look at
-`http://cvs.xemacs.org' for instructions.
+   Currently, source packages are only available via anonymous CVS.  See
+<http://cvs.xemacs.org/> for details of checking out the
+`xemacs-packages' module.
 
 Prerequisites for Building Source Packages
 ------------------------------------------
 
-   You must have GNU `cp', GNU `install' (or a BSD compatible `install'
-program) GNU `make' (3.75 or later preferred), `makeinfo' (1.68 from
-`texinfo-3.11' or later required), GNU `tar' and XEmacs 21.0.  The
-source packages will untar into a correct directory structure.  At the
-top level you must have `XEmacs.rules' and `package-compile.el'.  These
-files are available from the XEmacs FTP site from the same place you
-obtained your source package distributions.
+`GNU cp'
 
-What You Can Do With Source Packages
-------------------------------------
+`GNU ginstall'
+     (or a BSD compatible install program).
 
-   NB:  A global build operation doesn't exist yet as of 13 January
-1998.
+`GNU make'
+     (3.75 or later preferred).
 
-   Source packages are most useful for creating XEmacs package tarballs
-for installation into your own XEmacs installations or for distributing
-to others.
+`makeinfo'
+     (1.68 from texinfo-3.11 or later required).
 
-   Supported operations from `make' are:
+`GNU tar'
+     (or equivalent).
 
-`clean'
-     Remove all built files except `auto-autoloads.el' and
-     `custom-load.el'.
+`GNU gzip'
+     (or equivalent).
 
-`distclean'
-     Remove XEmacs backups as well as the files deleted by `make clean'.
+`A properly configured `Local.rules' file.'
+     *Note Local.rules File::.  And of course, XEmacs 21.0 or higher.
+
+What You Can Do With Source Packages
+------------------------------------
+
+   The packages CVS sources are most useful for creating XEmacs package
+tarballs for installation into your own XEmacs installations or for
+distributing to others.
+
+   Supported operations from `make' are:
 
 `all'
      Bytecompile all files, build and bytecompile byproduct files like
      `auto-autoloads.el' and `custom-load.el'.  Create info version of
      TeXinfo documentation if present.
 
+`bindist'
+     Does a `make all' as well as create a binary package tarball in the
+     staging directory.
+
+`install'
+     Bytecompile all files, build and bytecompile byproduct files like
+     `auto-autoloads.el' and `custom-load.el'.  Create info version of
+     TeXinfo documentation if present.  And install everything into the
+     staging directory.
+
 `srckit'
      Usually aliased to `srckit-std'.  This does a `make distclean' and
      creates a package source tarball in the staging directory.  This
@@ -829,8 +938,79 @@ to others.
      Runs the rules `srckit' followed by `binkit'.  This is primarily
      of use by XEmacs maintainers producing files for distribution.
 
+`clean'
+     Remove all built files except `auto-autoloads.el' and
+     `custom-load.el'.
+
+`distclean'
+     Remove all created files.
+
 \1f
-File: xemacs.info,  Node: Creating Packages,  Next: Available Packages,  Prev: Building Packages,  Up: Packages
+File: xemacs.info,  Node: Local.rules File,  Next: Creating Packages,  Prev: Building Packages,  Up: Packages
+
+The Local.rules File:
+=====================
+
+   This file is used when building and installing packages from source.
+In the top level of the CVS module, `xemacs-packages', contains the
+file, `Local.rules.template'.  Simply copy that to `Local.rules' and
+edit it to suit your needs.
+
+   These are the variables in 'Local.rules' that you will need to
+address.
+
+SYMLINK =
+     Set this to 't' if you want to do a "run in place".  Setting this
+     doesn't work well with 'make bindist'
+
+XEMACS_PACKAGES =
+     This is where you set the normal packages that you want to
+     install. eg:
+                XEMACS_PACKAGES = libs/xemacs-base comm/bbdb
+
+XEMACS_STAGING = ${XEMACS_PACKAGES_BASE}/../PACKAGES
+     Set this to where you want normal packages to be installed to.
+
+PACKAGE_INDEX = PACKAGE-INDEX
+     If you want the package-index file to have a different name,
+     change this.
+
+BUILD_WITHOUT_MULE =
+     Building from CVS defaults to building the Mule packages.  Set
+     this to 't' if you don't want/have Mule
+
+MULE_PACKAGES =
+     Same as for 'XEMACS_PACKAGES' except you list the Mule packages
+     you want to install here. eg:
+                MULE_PACKAGES = mule/mule-base mule/skk
+
+MULE_STAGING = ${XEMACS_PACKAGES_BASE}/../MULE-PACKAGES
+     Set this to where you want Mule packages installed to.  Note:
+     'make bindist' does not use this variable.
+
+XEMACS = XEMACS
+     If your XEmacs isn't in your path, change this.
+
+XEMACS_NATIVE_NT =
+     Set this to 't' if you are building on WinNT.
+
+INSTALL = INSTALL -C
+     The path to your BSD compatible install program.
+
+TAR = TAR
+     The path to your tar program
+
+BZIP2 =
+     If you want bzip2 tarballs, set this.
+
+MAKEINFO = MAKEINFO
+     The path to your makeinfo program
+
+\1f
+File: xemacs.info,  Node: Creating Packages,  Next: Available Packages,  Prev: Local.rules File,  Up: Packages
+
+Creating Packages:
+==================
 
    Creating a package from an existing Lisp library is not very
 difficult.
@@ -942,370 +1122,3 @@ toolbar, and are normally installed in `etc/PACKAGE_NAME'.  A few
 packages have needs beyond the basic templates.  See `XEmacs.rules' or
 a future revision of this manual for details.
 
-\1f
-File: xemacs.info,  Node: Available Packages,  Prev: Creating Packages,  Up: Packages
-
-   This section is surely out-of-date.  If you're sure that XEmacs is
-able to do something, but your installed XEmacs won't do it for you,
-it's probably in a package.  If you can't find it in this section,
-that's a bug--please report it.  It is very hard to keep this section
-up-to-date; your reports, comments, and questions will help a lot.
-
-   This data is up-to-date as of 10 February 1999.  (Ouch!  I told you!)
-
-Library Packages (libs)
------------------------
-
-   These packages are required to build and support most of the rest of
-XEmacs.  By design, xemacs-base is a `regular' package.  Use restraint
-when adding new files there as it is required by almost everything.
-
-`Sun'
-     Support for Sparcworks.
-
-`apel'
-     A Portable Emacs Library.  Used by XEmacs MIME support.
-
-`edebug'
-     A Lisp debugger.
-
-`dired'
-     The DIRectory EDitor is for manipulating, and running commands on
-     files in a directory.
-
-`efs'
-     Treat files on remote systems the same as local files.
-
-`mail-lib'
-     Fundamental lisp files for providing email support.
-
-`tooltalk'
-     Support for building with Tooltalk.
-
-`xemacs-base'
-     Fundamental XEmacs support.  Install this unless you wish a totally
-     naked XEmacs.
-
-`xemacs-devel'
-     XEmacs Lisp developer support.  This package contains utilities for
-     supporting Lisp development.  It is a single-file package so it
-     may be tailored.
-
-Communications Packages (comm)
-------------------------------
-
-   These packages provide support for various communications, primarily
-email and usenet.
-
-`footnote'
-     Footnoting in mail message editing modes.
-
-`gnats'
-     XEmacs bug reports.
-
-`gnus'
-     The Gnus Newsreader and Mailreader.
-
-`mailcrypt'
-     Support for messaging encryption with PGP.
-
-`mh-e'
-     Front end support for MH.
-
-`net-utils'
-     Miscellaneous Networking Utilities.  This is a single-file package
-     and files may be deleted at will.
-
-`ph'
-     Emacs implementation of the ph client to CCSO/qi directory servers.
-
-`rmail'
-     An obsolete Emacs mailer.  If you do not already use it don't
-     start.
-
-`supercite'
-     An Emacs citation tool.  Useful with all Emacs Mailers and
-     Newsreaders.
-
-`tm'
-     Emacs MIME support.
-
-`vm'
-     An Emacs mailer.
-
-`w3'
-     A Web browser.
-
-Games and Amusements (games)
-----------------------------
-
-`cookie'
-     Spook and Yow (Zippy quotes).
-
-`games'
-     Tetris, Sokoban, and Snake.
-
-`mine'
-     Minehunt.
-
-`misc-games'
-     Other amusements and diversions.
-
-Mule Support (mule)
--------------------
-
-`egg-its'
-     Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
-     XEmacs build.
-
-`leim'
-     Quail.  Used for everything other than English and Japanese.
-
-`locale'
-     Used for localized menubars (French and Japanese) and localized
-     splash screens (Japanese).
-
-`mule-base'
-     Basic Mule support.  Must be installed prior to building with Mule.
-
-`skk'
-     Another Japanese Language Input Method.  Can be used without a
-     separate process running as a dictionary server.
-
-Productivity Packages (oa)
---------------------------
-
-`calendar'
-     Calendar and diary support.
-
-`edit-utils'
-     Single file lisp packages for various XEmacs goodies.  Load this
-     and weed out the junk you don't want.
-
-`forms'
-     Forms editing support (obsolete, use the builtin Widget instead).
-
-`frame-icon'
-     Provide a WM icon based on major mode.
-
-`hm--html-menus'
-     HTML editing.
-
-`ispell'
-     Spell-checking with ispell.
-
-`pc'
-     PC style interface emulation.
-
-`psgml'
-     Validated HTML/SGML editing.
-
-`sgml'
-     SGML/Linuxdoc-SGML editing.
-
-`slider'
-     User interface tool.
-
-`speedbar'
-     ??? Document me.
-
-`strokes'
-     Mouse enhancement utility.
-
-`text-modes'
-     Various single file lisp packages for editing text files.
-
-`time'
-     Display time & date on the modeline.
-
-Operating System Utilities (os)
--------------------------------
-
-`eterm'
-     Terminal emulator.
-
-`igrep'
-     Enhanced front-end for Grep.
-
-`ilisp'
-     Front-end for Inferior Lisp.
-
-`os-utils'
-     Miscellaneous single-file O/S utilities, for printing, archiving,
-     compression, remote shells, etc.
-
-`view-process'
-     A Unix process browsing tool.
-
-Program Editing Support (prog)
-------------------------------
-
-`ada'
-     Ada language support.
-
-`c-support'
-     Basic single-file add-ons for editing C code.
-
-`cc-mode'
-     C, C++ and Java language support.
-
-`debug'
-     GUD, gdb, dbx debugging support.
-
-`ediff'
-     Interface over patch.
-
-`emerge'
-     Another interface over patch.
-
-`pcl-cvs'
-     CVS frontend.
-
-`prog-modes'
-     Miscellaneous Lisp libraries for various programming languages.
-
-`scheme'
-     Front-end support for Inferior Scheme.
-
-`sh-script'
-     Support for editing shell scripts.
-
-`vc'
-     Version control for free systems.
-
-`vc-cc'
-     Version control for ClearCase.
-
-`vhdl'
-     Support for VHDL.
-
-Word Processing (wp)
---------------------
-
-`auctex'
-     Basic TeX/LaTeX support.
-
-`crisp'
-     Crisp/Brief emulation.
-
-`edt'
-     DEC EDIT/EDT emulation.
-
-`texinfo'
-     XEmacs TeXinfo support.
-
-`textools'
-     Single-file TeX support.
-
-`tpu'
-     DEC EDIT/TPU support.
-
-`viper'
-     VI emulation support.
-
-\1f
-File: xemacs.info,  Node: Abbrevs,  Next: Picture,  Prev: Running,  Up: Top
-
-Abbrevs
-*******
-
-   An "abbrev" is a word which "expands" into some different text.
-Abbrevs are defined by the user to expand in specific ways.  For
-example, you might define `foo' as an abbrev expanding to `find outer
-otter'.  With this abbrev defined, you would be able to get `find outer
-otter ' into the buffer by typing `f o o <SPC>'.
-
-   Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
-Disabling Abbrev mode does not cause abbrev definitions to be discarded,
-but they do not expand until Abbrev mode is enabled again.  The command
-`M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
-turns Abbrev mode on if the argument is positive, off otherwise.  *Note
-Minor Modes::.  `abbrev-mode' is also a variable; Abbrev mode is on
-when the variable is non-`nil'.  The variable `abbrev-mode'
-automatically becomes local to the current buffer when it is set.
-
-   Abbrev definitions can be "mode-specific"--active only in one major
-mode.  Abbrevs can also have "global" definitions that are active in
-all major modes.  The same abbrev can have a global definition and
-various mode-specific definitions for different major modes.  A
-mode-specific definition for the current major mode overrides a global
-definition.
-
-   You can define Abbrevs interactively during an editing session.  You
-can also save lists of abbrev definitions in files and reload them in
-later sessions.  Some users keep extensive lists of abbrevs that they
-load in every session.
-
-   A second kind of abbreviation facility is called the "dynamic
-expansion".  Dynamic abbrev expansion happens only when you give an
-explicit command and the result of the expansion depends only on the
-current contents of the buffer.  *Note Dynamic Abbrevs::.
-
-* Menu:
-
-* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
-* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
-* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
-* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
-* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
-
-\1f
-File: xemacs.info,  Node: Defining Abbrevs,  Next: Expanding Abbrevs,  Prev: Abbrevs,  Up: Abbrevs
-
-Defining Abbrevs
-================
-
-`C-x a g'
-     Define an abbrev to expand into some text before point
-     (`add-global-abbrev').
-
-`C-x a l'
-     Similar, but define an abbrev available only in the current major
-     mode (`add-mode-abbrev').
-
-`C-x a i g'
-     Define a word in the buffer as an abbrev
-     (`inverse-add-global-abbrev').
-
-`C-x a i l'
-     Define a word in the buffer as a mode-specific abbrev
-     (`inverse-add-mode-abbrev').
-
-`M-x kill-all-abbrevs'
-     After this command, no abbrev definitions remain in effect.
-
-   The usual way to define an abbrev is to enter the text you want the
-abbrev to expand to, position point after it, and type `C-x a g'
-(`add-global-abbrev').  This reads the abbrev itself using the
-minibuffer, and then defines it as an abbrev for one or more words
-before point.  Use a numeric argument to say how many words before point
-should be taken as the expansion.  For example, to define the abbrev
-`foo' as in the example above, insert the text `find outer otter', then
-type
-`C-u 3 C-x a g f o o <RET>'.
-
-   An argument of zero to `C-x a g' means to use the contents of the
-region as the expansion of the abbrev being defined.
-
-   The command `C-x a l' (`add-mode-abbrev') is similar, but defines a
-mode-specific abbrev.  Mode-specific abbrevs are active only in a
-particular major mode.  `C-x a l' defines an abbrev for the major mode
-in effect at the time `C-x a l' is typed.  The arguments work the same
-way they do for `C-x a g'.
-
-   If the text of an abbrev you want is already in the buffer instead of
-the expansion, use command `C-x a i g' (`inverse-add-global-abbrev')
-instead of `C-x a g', or use `C-x a i l' (`inverse-add-mode-abbrev')
-instead of `C-x a l'.  These commands are called "inverse" because they
-invert the meaning of the argument found in the buffer and the argument
-read using the minibuffer.
-
-   To change the definition of an abbrev, just add the new definition.
-You will be asked to confirm if the abbrev has a prior definition.  To
-remove an abbrev definition, give a negative argument to `C-x a g' or
-`C-x a l'.  You must choose the command to specify whether to kill a
-global definition or a mode-specific definition for the current mode,
-since those two definitions are independent for one abbrev.
-
-   `M-x kill-all-abbrevs' removes all existing abbrev definitions.
-
index 5147bce..eca17ed 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,447 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Available Packages,  Prev: Creating Packages,  Up: Packages
+
+Available Packages:
+===================
+
+   This section lists the Lisp packages that are currently available
+from xemacs.org and it's mirrors.  If a particular package that you are
+looking for isn't here, please send a message to the XEmacs Beta list
+<xemacs-beta@xemacs.org>.
+
+   This data is up-to-date as of January 17, 2001.
+
+Library Packages (libs)
+-----------------------
+
+   These packages are required to build and support most of the rest of
+XEmacs.  By design, xemacs-base is a `regular' package.  Use restraint
+when adding new files there as it is required by almost everything.
+
+`Sun'
+     Support for Sparcworks.
+
+`apel'
+     A Portable Emacs Library.  Used by XEmacs MIME support.
+
+`dired'
+     The DIRectory EDitor is for manipulating, and running commands on
+     files in a directory.
+
+`edebug'
+     A Lisp debugger.
+
+`efs'
+     Treat files on remote systems the same as local files.
+
+`elib'
+     Portable Emacs Lisp utilities library.
+
+`fsf-compat'
+     FSF Emacs compatibility files.
+
+`mail-lib'
+     Fundamental lisp files for providing email support.
+
+`sounds-au'
+     XEmacs Sun sound files.
+
+`sounds-wav'
+     XEmacs Microsoft sound files.
+
+`tooltalk'
+     Support for building with Tooltalk.
+
+`xemacs-base'
+     Fundamental XEmacs support.  Install this unless you wish a totally
+     naked XEmacs.
+
+`xemacs-devel'
+     XEmacs Lisp developer support.  This package contains utilities for
+     supporting Lisp development.  It is a single-file package so it
+     may be tailored.
+
+Communications Packages (comm)
+------------------------------
+
+   These packages provide support for various communications, primarily
+email and usenet.
+
+`bbdb'
+     The Big Brother Data Base
+
+`eicq'
+     ICQ Client developed and tested on Linux x86; only supported on
+     that platform
+
+`eudc'
+     Emacs Unified Directory Client (LDAP, PH).
+
+`footnote'
+     Footnoting in mail message editing modes.
+
+`gnats'
+     XEmacs bug reports.
+
+`gnus'
+     The Gnus Newsreader and Mailreader.
+
+`mailcrypt'
+     Support for messaging encryption with PGP.
+
+`mew'
+     Messaging in an Emacs World.
+
+`mh-e'
+     Front end support for MH.
+
+`net-utils'
+     Miscellaneous Networking Utilities.  This is a single-file package
+     and files may be deleted at will.
+
+`rmail'
+     An obsolete Emacs mailer.  If you do not already use it don't
+     start.
+
+`supercite'
+     An Emacs citation tool.  Useful with all Emacs Mailers and
+     Newsreaders.
+
+`tm'
+     Emacs MIME support. Not needed for Gnus >= 5.8.0
+
+`vm'
+     An Emacs mailer.
+
+`w3'
+     A Web browser.
+
+`zenirc'
+     ZENIRC IRC Client.
+
+Games and Amusements (games)
+----------------------------
+
+   All work and no play...
+
+`cookie'
+     Spook and Yow (Zippy quotes).
+
+`games'
+     Tetris, Sokoban, and Snake.
+
+`mine'
+     Minehunt.
+
+`misc-games'
+     Other amusements and diversions.
+
+Mule Support (mule)
+-------------------
+
+   MULti-lingual Enhancement.  Support for world scripts such as Latin,
+Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.  To use these
+packages your XEmacs must be compiled with Mule support.
+
+`edict'
+     Lisp Interface to EDICT, Kanji Dictionary.
+
+`egg-its'
+     Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
+     XEmacs build.
+
+`leim'
+     Quail.  Used for everything other than English and Japanese.
+
+`locale'
+     Used for localized menubars (French and Japanese) and localized
+     splash screens (Japanese).
+
+`lookup'
+     Dictionary support. (This isn't an English dictionary program)
+
+`mule-base'
+     Basic Mule support.  Must be installed prior to building with Mule.
+
+`skk'
+     Another Japanese Language Input Method.  Can be used without a
+     separate process running as a dictionary server.
+
+Productivity Packages (oa)
+--------------------------
+
+   Things to make life a little easier.
+
+`calc'
+     Emacs calculator.
+
+`calendar'
+     Calendar and diary support.
+
+`edit-utils'
+     Single file lisp packages for various XEmacs goodies.  Load this
+     and weed out the junk you don't want.
+
+`forms'
+     Forms editing support (obsolete, use the built-in Widget instead).
+
+`frame-icon'
+     Provide a WM icon based on major mode.
+
+`hm--html-menus'
+     HTML editing.
+
+`ispell'
+     Spell-checking with ispell.
+
+`pc'
+     PC style interface emulation.
+
+`psgml'
+     Validated HTML/SGML editing.
+
+`sgml'
+     SGML/Linuxdoc-SGML editing.
+
+`slider'
+     User interface tool.
+
+`speedbar'
+     Provides a separate frame with convenient references.
+
+`strokes'
+     Mouse enhancement utility.
+
+`text-modes'
+     Various single file lisp packages for editing text files.
+
+`time'
+     Display time & date on the modeline.
+
+Operating System Utilities (os)
+-------------------------------
+
+   Tools for working with the operating system.
+
+`eshell'
+     Command shell implemented entirely in Emacs Lisp.
+
+`eterm'
+     Terminal emulator.
+
+`igrep'
+     Enhanced front-end for Grep.
+
+`ilisp'
+     Front-end for Inferior Lisp.
+
+`os-utils'
+     Miscellaneous single-file O/S utilities, for printing, archiving,
+     compression, remote shells, etc.
+
+`pcomplete'
+     Provides programmatic completion.
+
+`ps-print-nomule'
+     Old, but no-Mule safe ps-print.
+
+`view-process'
+     A Unix process browsing tool.
+
+Program Editing Support (prog)
+------------------------------
+
+   XEmacs supports a multitude of programming languages.  These
+packages will help your coding.
+
+`ada'
+     Ada language support.
+
+`c-support'
+     Basic single-file add-ons for editing C code.
+
+`cc-mode'
+     C, C++ and Java language support.
+
+`debug'
+     GUD, gdb, dbx debugging support.
+
+`ediff'
+     Interface over patch.
+
+`emerge'
+     Another interface over patch.
+
+`idlwave'
+     Editing and Shell mode for the Interactive Data Language.
+
+`jde'
+     Java language and development support.
+
+`pcl-cvs'
+     CVS frontend.
+
+`prog-modes'
+     Miscellaneous single-file lisp files for various programming
+     languages.
+
+`scheme'
+     Front-end support for Inferior Scheme.
+
+`semantic'
+     Semantic bovinator.
+
+`sh-script'
+     Support for editing shell scripts.
+
+`vc'
+     Version Control for Free systems.
+
+`vc-cc'
+     Version Control for ClearCase.  This package will shortly be
+     replaced with clearcase.el
+
+`vhdl'
+     Support for VHDL.
+
+Word Processing (wp)
+--------------------
+
+   Working with text.
+
+`auctex'
+     Basic TeX/LaTeX support.
+
+`crisp'
+     Crisp/Brief emulation.
+
+`edt'
+     DEC EDIT/EDT emulation.
+
+`reftex'
+     Emacs support for LaTeX cross-references, citations.
+
+`texinfo'
+     XEmacs TeXinfo support.
+
+`textools'
+     Single-file TeX support.
+
+`tpu'
+     DEC EDIT/TPU support.
+
+`viper'
+     VI emulation support.
+
+\1f
+File: xemacs.info,  Node: Abbrevs,  Next: Picture,  Prev: Running,  Up: Top
+
+Abbrevs
+*******
+
+   An "abbrev" is a word which "expands" into some different text.
+Abbrevs are defined by the user to expand in specific ways.  For
+example, you might define `foo' as an abbrev expanding to `find outer
+otter'.  With this abbrev defined, you would be able to get `find outer
+otter ' into the buffer by typing `f o o <SPC>'.
+
+   Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
+Disabling Abbrev mode does not cause abbrev definitions to be discarded,
+but they do not expand until Abbrev mode is enabled again.  The command
+`M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
+turns Abbrev mode on if the argument is positive, off otherwise.  *Note
+Minor Modes::.  `abbrev-mode' is also a variable; Abbrev mode is on
+when the variable is non-`nil'.  The variable `abbrev-mode'
+automatically becomes local to the current buffer when it is set.
+
+   Abbrev definitions can be "mode-specific"--active only in one major
+mode.  Abbrevs can also have "global" definitions that are active in
+all major modes.  The same abbrev can have a global definition and
+various mode-specific definitions for different major modes.  A
+mode-specific definition for the current major mode overrides a global
+definition.
+
+   You can define Abbrevs interactively during an editing session.  You
+can also save lists of abbrev definitions in files and reload them in
+later sessions.  Some users keep extensive lists of abbrevs that they
+load in every session.
+
+   A second kind of abbreviation facility is called the "dynamic
+expansion".  Dynamic abbrev expansion happens only when you give an
+explicit command and the result of the expansion depends only on the
+current contents of the buffer.  *Note Dynamic Abbrevs::.
+
+* Menu:
+
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
+
+\1f
+File: xemacs.info,  Node: Defining Abbrevs,  Next: Expanding Abbrevs,  Prev: Abbrevs,  Up: Abbrevs
+
+Defining Abbrevs
+================
+
+`C-x a g'
+     Define an abbrev to expand into some text before point
+     (`add-global-abbrev').
+
+`C-x a l'
+     Similar, but define an abbrev available only in the current major
+     mode (`add-mode-abbrev').
+
+`C-x a i g'
+     Define a word in the buffer as an abbrev
+     (`inverse-add-global-abbrev').
+
+`C-x a i l'
+     Define a word in the buffer as a mode-specific abbrev
+     (`inverse-add-mode-abbrev').
+
+`M-x kill-all-abbrevs'
+     After this command, no abbrev definitions remain in effect.
+
+   The usual way to define an abbrev is to enter the text you want the
+abbrev to expand to, position point after it, and type `C-x a g'
+(`add-global-abbrev').  This reads the abbrev itself using the
+minibuffer, and then defines it as an abbrev for one or more words
+before point.  Use a numeric argument to say how many words before point
+should be taken as the expansion.  For example, to define the abbrev
+`foo' as in the example above, insert the text `find outer otter', then
+type
+`C-u 3 C-x a g f o o <RET>'.
+
+   An argument of zero to `C-x a g' means to use the contents of the
+region as the expansion of the abbrev being defined.
+
+   The command `C-x a l' (`add-mode-abbrev') is similar, but defines a
+mode-specific abbrev.  Mode-specific abbrevs are active only in a
+particular major mode.  `C-x a l' defines an abbrev for the major mode
+in effect at the time `C-x a l' is typed.  The arguments work the same
+way they do for `C-x a g'.
+
+   If the text of an abbrev you want is already in the buffer instead of
+the expansion, use command `C-x a i g' (`inverse-add-global-abbrev')
+instead of `C-x a g', or use `C-x a i l' (`inverse-add-mode-abbrev')
+instead of `C-x a l'.  These commands are called "inverse" because they
+invert the meaning of the argument found in the buffer and the argument
+read using the minibuffer.
+
+   To change the definition of an abbrev, just add the new definition.
+You will be asked to confirm if the abbrev has a prior definition.  To
+remove an abbrev definition, give a negative argument to `C-x a g' or
+`C-x a l'.  You must choose the command to specify whether to kill a
+global definition or a mode-specific definition for the current mode,
+since those two definitions are independent for one abbrev.
+
+   `M-x kill-all-abbrevs' removes all existing abbrev definitions.
+
+\1f
 File: xemacs.info,  Node: Expanding Abbrevs,  Next: Editing Abbrevs,  Prev: Defining Abbrevs,  Up: Abbrevs
 
 Controlling Abbrev Expansion
@@ -938,310 +1379,3 @@ backward or forward.
    By default, weeks begin on Sunday.  To make them begin on Monday
 instead, set the variable `calendar-week-start-day' to 1.
 
-\1f
-File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
-
-Particular Dates
-................
-
-   Calendar mode provides commands for moving to a particular date
-specified in various ways.
-
-`g d'
-     Move point to specified date (`calendar-goto-date').
-
-`o'
-     Center calendar around specified month (`calendar-other-month').
-
-`.'
-     Move point to today's date (`calendar-goto-today').
-
-   `g d' (`calendar-goto-date') prompts for a year, a month, and a day
-of the month, and then moves to that date.  Because the calendar
-includes all dates from the beginning of the current era, you must type
-the year in its entirety; that is, type `1990', not `90'.
-
-   `o' (`calendar-other-month') prompts for a month and year, then
-centers the three-month calendar around that month.
-
-   You can return to today's date with `.' (`calendar-goto-today').
-
-\1f
-File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
-
-Scrolling the Calendar through Time
------------------------------------
-
-   The calendar display scrolls automatically through time when you
-move out of the visible portion.  You can also scroll it manually.
-Imagine that the calendar window contains a long strip of paper with
-the months on it.  Scrolling it means moving the strip so that new
-months become visible in the window.
-
-`C-x <'
-     Scroll calendar one month forward (`scroll-calendar-left').
-
-`C-x >'
-     Scroll calendar one month backward (`scroll-calendar-right').
-
-`C-v'
-`<NEXT>'
-     Scroll calendar three months forward
-     (`scroll-calendar-left-three-months').
-
-`M-v'
-`<PRIOR>'
-     Scroll calendar three months backward
-     (`scroll-calendar-right-three-months').
-
-   The most basic calendar scroll commands scroll by one month at a
-time.  This means that there are two months of overlap between the
-display before the command and the display after.  `C-x <' scrolls the
-calendar contents one month to the left; that is, it moves the display
-forward in time.  `C-x >' scrolls the contents to the right, which
-moves backwards in time.
-
-   The commands `C-v' and `M-v' scroll the calendar by an entire
-"screenful"--three months--in analogy with the usual meaning of these
-commands.  `C-v' makes later dates visible and `M-v' makes earlier
-dates visible.  These commands take a numeric argument as a repeat
-count; in particular, since `C-u' multiplies the next command by four,
-typing `C-u C-v' scrolls the calendar forward by a year and typing `C-u
-M-v' scrolls the calendar backward by a year.
-
-   The function keys <NEXT> and <PRIOR> are equivalent to `C-v' and
-`M-v', just as they are in other modes.
-
-\1f
-File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
-
-The Mark and the Region
------------------------
-
-   The concept of the mark applies to the calendar just as to any other
-buffer, but it marks a _date_, not a _position_ in the buffer.  The
-region consists of the days between the mark and point (including the
-starting and stopping dates).
-
-`C-SPC'
-     Set the mark to today's date (`calendar-set-mark').
-
-`C-@'
-     The same.
-
-`C-x C-x'
-     Interchange mark and point (`calendar-exchange-point-and-mark').
-
-`M-='
-     Display the number of days in the current region
-     (`calendar-count-days-region').
-
-   You set the mark in the calendar, as in any other buffer, by using
-`C-@' or `C-SPC' (`calendar-set-mark').  You return to the marked date
-with the command `C-x C-x' (`calendar-exchange-point-and-mark') which
-puts the mark where point was and point where mark was.  The calendar
-is scrolled as necessary, if the marked date was not visible on the
-screen.  This does not change the extent of the region.
-
-   To determine the number of days in the region, type `M-='
-(`calendar-count-days-region').  The numbers of days printed is
-_inclusive_; that is, it includes the days specified by mark and point.
-
-   The main use of the mark in the calendar is to remember dates that
-you may want to go back to.  To make this feature more useful, the mark
-ring (*note Mark Ring::) operates exactly as in other buffers:  Emacs
-remembers 16 previous locations of the mark.  To return to a marked
-date, type `C-u C-SPC' (or `C-u C-@'); this is the command
-`calendar-set-mark' given a numeric argument.  It moves point to where
-the mark was, restores the mark from the ring of former marks, and
-stores the previous point at the end of the mark ring.  So, repeated
-use of this command moves point through all the old marks on the ring,
-one by one.
-
-\1f
-File: xemacs.info,  Node: General Calendar,  Next: LaTeX Calendar,  Prev: Mark and Region,  Up: Calendar/Diary
-
-Miscellaneous Calendar Commands
--------------------------------
-
-`p d'
-     Display day-in-year (`calendar-print-day-of-year').
-
-`?'
-     Briefly describe calendar commands (`describe-calendar-mode').
-
-`C-c C-l'
-     Regenerate the calendar window (`redraw-calendar').
-
-`SPC'
-     Scroll the next window (`scroll-other-window').
-
-`q'
-     Exit from calendar (`exit-calendar').
-
-   If you want to know how many days have elapsed since the start of
-the year, or the number of days remaining in the year, type the `p d'
-command (`calendar-print-day-of-year').  This displays both of those
-numbers in the echo area.
-
-   To display a brief description of the calendar commands, type `?'
-(`describe-calendar-mode').  For a fuller description, type `C-h m'.
-
-   You can use `SPC' (`scroll-other-window') to scroll the other
-window.  This is handy when you display a list of holidays or diary
-entries in another window.
-
-   If the calendar window text gets corrupted, type `C-c C-l'
-(`redraw-calendar') to redraw it.  (This can only happen if you use
-non-Calendar-mode editing commands.)
-
-   In Calendar mode, you can use `SPC' (`scroll-other-window') to
-scroll the other window.  This is handy when you display a list of
-holidays or diary entries in another window.
-
-   To exit from the calendar, type `q' (`exit-calendar').  This buries
-all buffers related to the calendar, selecting other buffers.  (If a
-frame contains a dedicated calendar window, exiting from the calendar
-iconifies that frame.)
-
-\1f
-File: xemacs.info,  Node: LaTeX Calendar,  Next: Holidays,  Prev: General Calendar,  Up: Calendar/Diary
-
-LaTeX Calendar
-==============
-
-   The Calendar LaTeX commands produce a buffer of LaTeX code that
-prints as a calendar.  Depending on the command you use, the printed
-calendar covers the day, week, month or year that point is in.
-
-`t m'
-     Generate a one-month calendar (`cal-tex-cursor-month').
-
-`t M'
-     Generate a sideways-printing one-month calendar
-     (`cal-tex-cursor-month-landscape').
-
-`t d'
-     Generate a one-day calendar (`cal-tex-cursor-day').
-
-`t w 1'
-     Generate a one-page calendar for one week (`cal-tex-cursor-week').
-
-`t w 2'
-     Generate a two-page calendar for one week (`cal-tex-cursor-week2').
-
-`t w 3'
-     Generate an ISO-style calendar for one week
-     (`cal-tex-cursor-week-iso').
-
-`t w 4'
-     Generate a calendar for one Monday-starting week
-     (`cal-tex-cursor-week-monday').
-
-`t f w'
-     Generate a Filofax-style two-weeks-at-a-glance calendar
-     (`cal-tex-cursor-filofax-2week').
-
-`t f W'
-     Generate a Filofax-style one-week-at-a-glance calendar
-     (`cal-tex-cursor-filofax-week').
-
-`t y'
-     Generate a calendar for one year (`cal-tex-cursor-year').
-
-`t Y'
-     Generate a sideways-printing calendar for one year
-     (`cal-tex-cursor-year-landscape').
-
-`t f y'
-     Generate a Filofax-style calendar for one year
-     (`cal-tex-cursor-filofax-year').
-
-   Some of these commands print the calendar sideways (in "landscape
-mode"), so it can be wider than it is long.  Some of them use Filofax
-paper size (3.75in x 6.75in).  All of these commands accept a prefix
-argument which specifies how many days, weeks, months or years to print
-(starting always with the selected one).
-
-   If the variable `cal-tex-holidays' is non-`nil' (the default), then
-the printed calendars show the holidays in `calendar-holidays'.  If the
-variable `cal-tex-diary' is non-`nil' (the default is `nil'), diary
-entries are included also (in weekly and monthly calendars only).
-
-\1f
-File: xemacs.info,  Node: Holidays,  Next: Sunrise/Sunset,  Prev: LaTeX Calendar,  Up: Calendar/Diary
-
-Holidays
---------
-
-   The Emacs calendar knows about all major and many minor holidays,
-and can display them.
-
-`h'
-     Display holidays for the selected date
-     (`calendar-cursor-holidays').
-
-`Button2 Holidays'
-     Display any holidays for the date you click on.
-
-`x'
-     Mark holidays in the calendar window (`mark-calendar-holidays').
-
-`u'
-     Unmark calendar window (`calendar-unmark').
-
-`a'
-     List all holidays for the displayed three months in another window
-     (`list-calendar-holidays').
-
-`M-x holidays'
-     List all holidays for three months around today's date in another
-     window.
-
-`M-x list-holidays'
-     List holidays in another window for a specified range of years.
-
-   To see if any holidays fall on a given date, position point on that
-date in the calendar window and use the `h' command.  Alternatively,
-click on that date with `Button2' and then choose `Holidays' from the
-menu that appears.  Either way, this displays the holidays for that
-date, in the echo area if they fit there, otherwise in a separate
-window.
-
-   To view the distribution of holidays for all the dates shown in the
-calendar, use the `x' command.  This displays the dates that are
-holidays in a different face (or places a `*' after these dates, if
-display with multiple faces is not available). The command applies both
-to the currently visible months and to other months that subsequently
-become visible by scrolling.  To turn marking off and erase the current
-marks, type `u', which also erases any diary marks (*note Diary::).
-
-   To get even more detailed information, use the `a' command, which
-displays a separate buffer containing a list of all holidays in the
-current three-month range.  You can use <SPC> in the calendar window to
-scroll that list.
-
-   The command `M-x holidays' displays the list of holidays for the
-current month and the preceding and succeeding months; this works even
-if you don't have a calendar window.  If you want the list of holidays
-centered around a different month, use `C-u M-x holidays', which
-prompts for the month and year.
-
-   The holidays known to Emacs include United States holidays and the
-major Christian, Jewish, and Islamic holidays; also the solstices and
-equinoxes.
-
-   The command `M-x list-holidays' displays the list of holidays for a
-range of years.  This function asks you for the starting and stopping
-years, and allows you to choose all the holidays or one of several
-categories of holidays.  You can use this command even if you don't have
-a calendar window.
-
-   The dates used by Emacs for holidays are based on _current
-practice_, not historical fact.  Historically, for instance, the start
-of daylight savings time and even its existence have varied from year to
-year, but present United States law mandates that daylight savings time
-begins on the first Sunday in April.  When the daylight savings rules
-are set up for the United States, Emacs always uses the present
-definition, even though it is wrong for some prior years.
-
index 57f9bb7..82aa3f6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,313 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Specified Dates,  Prev: Move to Beginning or End,  Up: Calendar Motion
+
+Particular Dates
+................
+
+   Calendar mode provides commands for moving to a particular date
+specified in various ways.
+
+`g d'
+     Move point to specified date (`calendar-goto-date').
+
+`o'
+     Center calendar around specified month (`calendar-other-month').
+
+`.'
+     Move point to today's date (`calendar-goto-today').
+
+   `g d' (`calendar-goto-date') prompts for a year, a month, and a day
+of the month, and then moves to that date.  Because the calendar
+includes all dates from the beginning of the current era, you must type
+the year in its entirety; that is, type `1990', not `90'.
+
+   `o' (`calendar-other-month') prompts for a month and year, then
+centers the three-month calendar around that month.
+
+   You can return to today's date with `.' (`calendar-goto-today').
+
+\1f
+File: xemacs.info,  Node: Scroll Calendar,  Next: Mark and Region,  Prev: Calendar Motion,  Up: Calendar/Diary
+
+Scrolling the Calendar through Time
+-----------------------------------
+
+   The calendar display scrolls automatically through time when you
+move out of the visible portion.  You can also scroll it manually.
+Imagine that the calendar window contains a long strip of paper with
+the months on it.  Scrolling it means moving the strip so that new
+months become visible in the window.
+
+`C-x <'
+     Scroll calendar one month forward (`scroll-calendar-left').
+
+`C-x >'
+     Scroll calendar one month backward (`scroll-calendar-right').
+
+`C-v'
+`<NEXT>'
+     Scroll calendar three months forward
+     (`scroll-calendar-left-three-months').
+
+`M-v'
+`<PRIOR>'
+     Scroll calendar three months backward
+     (`scroll-calendar-right-three-months').
+
+   The most basic calendar scroll commands scroll by one month at a
+time.  This means that there are two months of overlap between the
+display before the command and the display after.  `C-x <' scrolls the
+calendar contents one month to the left; that is, it moves the display
+forward in time.  `C-x >' scrolls the contents to the right, which
+moves backwards in time.
+
+   The commands `C-v' and `M-v' scroll the calendar by an entire
+"screenful"--three months--in analogy with the usual meaning of these
+commands.  `C-v' makes later dates visible and `M-v' makes earlier
+dates visible.  These commands take a numeric argument as a repeat
+count; in particular, since `C-u' multiplies the next command by four,
+typing `C-u C-v' scrolls the calendar forward by a year and typing `C-u
+M-v' scrolls the calendar backward by a year.
+
+   The function keys <NEXT> and <PRIOR> are equivalent to `C-v' and
+`M-v', just as they are in other modes.
+
+\1f
+File: xemacs.info,  Node: Mark and Region,  Next: General Calendar,  Prev: Scroll Calendar,  Up: Calendar/Diary
+
+The Mark and the Region
+-----------------------
+
+   The concept of the mark applies to the calendar just as to any other
+buffer, but it marks a _date_, not a _position_ in the buffer.  The
+region consists of the days between the mark and point (including the
+starting and stopping dates).
+
+`C-SPC'
+     Set the mark to today's date (`calendar-set-mark').
+
+`C-@'
+     The same.
+
+`C-x C-x'
+     Interchange mark and point (`calendar-exchange-point-and-mark').
+
+`M-='
+     Display the number of days in the current region
+     (`calendar-count-days-region').
+
+   You set the mark in the calendar, as in any other buffer, by using
+`C-@' or `C-SPC' (`calendar-set-mark').  You return to the marked date
+with the command `C-x C-x' (`calendar-exchange-point-and-mark') which
+puts the mark where point was and point where mark was.  The calendar
+is scrolled as necessary, if the marked date was not visible on the
+screen.  This does not change the extent of the region.
+
+   To determine the number of days in the region, type `M-='
+(`calendar-count-days-region').  The numbers of days printed is
+_inclusive_; that is, it includes the days specified by mark and point.
+
+   The main use of the mark in the calendar is to remember dates that
+you may want to go back to.  To make this feature more useful, the mark
+ring (*note Mark Ring::) operates exactly as in other buffers:  Emacs
+remembers 16 previous locations of the mark.  To return to a marked
+date, type `C-u C-SPC' (or `C-u C-@'); this is the command
+`calendar-set-mark' given a numeric argument.  It moves point to where
+the mark was, restores the mark from the ring of former marks, and
+stores the previous point at the end of the mark ring.  So, repeated
+use of this command moves point through all the old marks on the ring,
+one by one.
+
+\1f
+File: xemacs.info,  Node: General Calendar,  Next: LaTeX Calendar,  Prev: Mark and Region,  Up: Calendar/Diary
+
+Miscellaneous Calendar Commands
+-------------------------------
+
+`p d'
+     Display day-in-year (`calendar-print-day-of-year').
+
+`?'
+     Briefly describe calendar commands (`describe-calendar-mode').
+
+`C-c C-l'
+     Regenerate the calendar window (`redraw-calendar').
+
+`SPC'
+     Scroll the next window (`scroll-other-window').
+
+`q'
+     Exit from calendar (`exit-calendar').
+
+   If you want to know how many days have elapsed since the start of
+the year, or the number of days remaining in the year, type the `p d'
+command (`calendar-print-day-of-year').  This displays both of those
+numbers in the echo area.
+
+   To display a brief description of the calendar commands, type `?'
+(`describe-calendar-mode').  For a fuller description, type `C-h m'.
+
+   You can use `SPC' (`scroll-other-window') to scroll the other
+window.  This is handy when you display a list of holidays or diary
+entries in another window.
+
+   If the calendar window text gets corrupted, type `C-c C-l'
+(`redraw-calendar') to redraw it.  (This can only happen if you use
+non-Calendar-mode editing commands.)
+
+   In Calendar mode, you can use `SPC' (`scroll-other-window') to
+scroll the other window.  This is handy when you display a list of
+holidays or diary entries in another window.
+
+   To exit from the calendar, type `q' (`exit-calendar').  This buries
+all buffers related to the calendar, selecting other buffers.  (If a
+frame contains a dedicated calendar window, exiting from the calendar
+iconifies that frame.)
+
+\1f
+File: xemacs.info,  Node: LaTeX Calendar,  Next: Holidays,  Prev: General Calendar,  Up: Calendar/Diary
+
+LaTeX Calendar
+==============
+
+   The Calendar LaTeX commands produce a buffer of LaTeX code that
+prints as a calendar.  Depending on the command you use, the printed
+calendar covers the day, week, month or year that point is in.
+
+`t m'
+     Generate a one-month calendar (`cal-tex-cursor-month').
+
+`t M'
+     Generate a sideways-printing one-month calendar
+     (`cal-tex-cursor-month-landscape').
+
+`t d'
+     Generate a one-day calendar (`cal-tex-cursor-day').
+
+`t w 1'
+     Generate a one-page calendar for one week (`cal-tex-cursor-week').
+
+`t w 2'
+     Generate a two-page calendar for one week (`cal-tex-cursor-week2').
+
+`t w 3'
+     Generate an ISO-style calendar for one week
+     (`cal-tex-cursor-week-iso').
+
+`t w 4'
+     Generate a calendar for one Monday-starting week
+     (`cal-tex-cursor-week-monday').
+
+`t f w'
+     Generate a Filofax-style two-weeks-at-a-glance calendar
+     (`cal-tex-cursor-filofax-2week').
+
+`t f W'
+     Generate a Filofax-style one-week-at-a-glance calendar
+     (`cal-tex-cursor-filofax-week').
+
+`t y'
+     Generate a calendar for one year (`cal-tex-cursor-year').
+
+`t Y'
+     Generate a sideways-printing calendar for one year
+     (`cal-tex-cursor-year-landscape').
+
+`t f y'
+     Generate a Filofax-style calendar for one year
+     (`cal-tex-cursor-filofax-year').
+
+   Some of these commands print the calendar sideways (in "landscape
+mode"), so it can be wider than it is long.  Some of them use Filofax
+paper size (3.75in x 6.75in).  All of these commands accept a prefix
+argument which specifies how many days, weeks, months or years to print
+(starting always with the selected one).
+
+   If the variable `cal-tex-holidays' is non-`nil' (the default), then
+the printed calendars show the holidays in `calendar-holidays'.  If the
+variable `cal-tex-diary' is non-`nil' (the default is `nil'), diary
+entries are included also (in weekly and monthly calendars only).
+
+\1f
+File: xemacs.info,  Node: Holidays,  Next: Sunrise/Sunset,  Prev: LaTeX Calendar,  Up: Calendar/Diary
+
+Holidays
+--------
+
+   The Emacs calendar knows about all major and many minor holidays,
+and can display them.
+
+`h'
+     Display holidays for the selected date
+     (`calendar-cursor-holidays').
+
+`Button2 Holidays'
+     Display any holidays for the date you click on.
+
+`x'
+     Mark holidays in the calendar window (`mark-calendar-holidays').
+
+`u'
+     Unmark calendar window (`calendar-unmark').
+
+`a'
+     List all holidays for the displayed three months in another window
+     (`list-calendar-holidays').
+
+`M-x holidays'
+     List all holidays for three months around today's date in another
+     window.
+
+`M-x list-holidays'
+     List holidays in another window for a specified range of years.
+
+   To see if any holidays fall on a given date, position point on that
+date in the calendar window and use the `h' command.  Alternatively,
+click on that date with `Button2' and then choose `Holidays' from the
+menu that appears.  Either way, this displays the holidays for that
+date, in the echo area if they fit there, otherwise in a separate
+window.
+
+   To view the distribution of holidays for all the dates shown in the
+calendar, use the `x' command.  This displays the dates that are
+holidays in a different face (or places a `*' after these dates, if
+display with multiple faces is not available). The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type `u', which also erases any diary marks (*note Diary::).
+
+   To get even more detailed information, use the `a' command, which
+displays a separate buffer containing a list of all holidays in the
+current three-month range.  You can use <SPC> in the calendar window to
+scroll that list.
+
+   The command `M-x holidays' displays the list of holidays for the
+current month and the preceding and succeeding months; this works even
+if you don't have a calendar window.  If you want the list of holidays
+centered around a different month, use `C-u M-x holidays', which
+prompts for the month and year.
+
+   The holidays known to Emacs include United States holidays and the
+major Christian, Jewish, and Islamic holidays; also the solstices and
+equinoxes.
+
+   The command `M-x list-holidays' displays the list of holidays for a
+range of years.  This function asks you for the starting and stopping
+years, and allows you to choose all the holidays or one of several
+categories of holidays.  You can use this command even if you don't have
+a calendar window.
+
+   The dates used by Emacs for holidays are based on _current
+practice_, not historical fact.  Historically, for instance, the start
+of daylight savings time and even its existence have varied from year to
+year, but present United States law mandates that daylight savings time
+begins on the first Sunday in April.  When the daylight savings rules
+are set up for the United States, Emacs always uses the present
+definition, even though it is wrong for some prior years.
+
+\1f
 File: xemacs.info,  Node: Sunrise/Sunset,  Next: Lunar Phases,  Prev: Holidays,  Up: Calendar/Diary
 
 Times of Sunrise and Sunset
@@ -937,276 +1244,3 @@ terminal.
 A similar normal hook, `today-invisible-calendar-hook' is run if the
 current date is _not_ visible in the window.
 
-\1f
-File: xemacs.info,  Node: Holiday Customizing,  Next: Date Display Format,  Prev: Calendar Customizing,  Up: Calendar Customization
-
-Customizing the Holidays
-........................
-
-   Emacs knows about holidays defined by entries on one of several
-lists.  You can customize these lists of holidays to your own needs,
-adding or deleting holidays.  The lists of holidays that Emacs uses are
-for general holidays (`general-holidays'), local holidays
-(`local-holidays'), Christian holidays (`christian-holidays'), Hebrew
-(Jewish) holidays (`hebrew-holidays'), Islamic (Moslem) holidays
-(`islamic-holidays'), and other holidays (`other-holidays').
-
-   The general holidays are, by default, holidays common throughout the
-United States.  To eliminate these holidays, set `general-holidays' to
-`nil'.
-
-   There are no default local holidays (but sites may supply some).  You
-can set the variable `local-holidays' to any list of holidays, as
-described below.
-
-   By default, Emacs does not include all the holidays of the religions
-that it knows, only those commonly found in secular calendars.  For a
-more extensive collection of religious holidays, you can set any (or
-all) of the variables `all-christian-calendar-holidays',
-`all-hebrew-calendar-holidays', or `all-islamic-calendar-holidays' to
-`t'.  If you want to eliminate the religious holidays, set any or all
-of the corresponding variables `christian-holidays', `hebrew-holidays',
-and `islamic-holidays' to `nil'.
-
-   You can set the variable `other-holidays' to any list of holidays.
-This list, normally empty, is intended for individual use.
-
-   Each of the lists (`general-holidays', `local-holidays',
-`christian-holidays', `hebrew-holidays', `islamic-holidays', and
-`other-holidays') is a list of "holiday forms", each holiday form
-describing a holiday (or sometimes a list of holidays).
-
-   Here is a table of the possible kinds of holiday form.  Day numbers
-and month numbers count starting from 1, but "dayname" numbers count
-Sunday as 0.  The element STRING is always the name of the holiday, as
-a string.
-
-`(holiday-fixed MONTH DAY STRING)'
-     A fixed date on the Gregorian calendar.  MONTH and DAY are
-     numbers, STRING is the name of the holiday.
-
-`(holiday-float MONTH DAYNAME K STRING)'
-     The Kth DAYNAME in MONTH on the Gregorian calendar (DAYNAME=0 for
-     Sunday, and so on); negative K means count back from the end of
-     the month.  STRING is the name of the holiday.
-
-`(holiday-hebrew MONTH DAY STRING)'
-     A fixed date on the Hebrew calendar.  MONTH and DAY are numbers,
-     STRING is the name of the holiday.
-
-`(holiday-islamic MONTH DAY STRING)'
-     A fixed date on the Islamic calendar.  MONTH and DAY are numbers,
-     STRING is the name of the holiday.
-
-`(holiday-julian MONTH DAY STRING)'
-     A fixed date on the Julian calendar.  MONTH and DAY are numbers,
-     STRING is the name of the holiday.
-
-`(holiday-sexp SEXP STRING)'
-     A date calculated by the Lisp expression SEXP.  The expression
-     should use the variable `year' to compute and return the date of a
-     holiday, or `nil' if the holiday doesn't happen this year.  The
-     value of SEXP must represent the date as a list of the form
-     `(MONTH DAY YEAR)'.  STRING is the name of the holiday.
-
-`(if CONDITION HOLIDAY-FORM &optional HOLIDAY-FORM)'
-     A holiday that happens only if CONDITION is true.
-
-`(FUNCTION [ARGS])'
-     A list of dates calculated by the function FUNCTION, called with
-     arguments ARGS.
-
-   For example, suppose you want to add Bastille Day, celebrated in
-France on July 14.  You can do this by adding the following line to
-your init file:
-
-     (setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
-
-   *Note Init File::.
-
-The holiday form `(holiday-fixed 7 14 "Bastille Day")' specifies the
-fourteenth day of the seventh month (July).
-
-   Many holidays occur on a specific day of the week, at a specific time
-of month.  Here is a holiday form describing Hurricane Supplication Day,
-celebrated in the Virgin Islands on the fourth Monday in August:
-
-     (holiday-float 8 1 4 "Hurricane Supplication Day")
-
-Here the 8 specifies August, the 1 specifies Monday (Sunday is 0,
-Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in
-the month (1 specifies the first occurrence, 2 the second occurrence,
--1 the last occurrence, -2 the second-to-last occurrence, and so on).
-
-   You can specify holidays that occur on fixed days of the Hebrew,
-Islamic, and Julian calendars too.  For example,
-
-     (setq other-holidays
-           '((holiday-hebrew 10 2 "Last day of Hanukkah")
-             (holiday-islamic 3 12 "Mohammed's Birthday")
-             (holiday-julian 4 2 "Jefferson's Birthday")))
-
-adds the last day of Hanukkah (since the Hebrew months are numbered with
-1 starting from Nisan), the Islamic feast celebrating Mohammed's
-birthday (since the Islamic months are numbered from 1 starting with
-Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the
-Julian calendar.
-
-   To include a holiday conditionally, use either Emacs Lisp's `if' or
-the `holiday-sexp' form.  For example, American presidential elections
-occur on the first Tuesday after the first Monday in November of years
-divisible by 4:
-
-     (holiday-sexp (if (= 0 (% year 4))
-                        (calendar-gregorian-from-absolute
-                      (1+ (calendar-dayname-on-or-before
-                            1 (+ 6 (calendar-absolute-from-gregorian
-                                     (list 11 1 year))))))
-                   "US Presidential Election"))
-
-or
-
-     (if (= 0 (% displayed-year 4))
-         (fixed 11
-                (extract-calendar-day
-                  (calendar-gregorian-from-absolute
-                    (1+ (calendar-dayname-on-or-before
-                          1 (+ 6 (calendar-absolute-from-gregorian
-                                   (list 11 1 displayed-year)))))))
-                "US Presidential Election"))
-
-   Some holidays just don't fit into any of these forms because special
-calculations are involved in their determination.  In such cases you
-must write a Lisp function to do the calculation.  To include eclipses,
-for example, add `(eclipses)' to `other-holidays' and write an Emacs
-Lisp function `eclipses' that returns a (possibly empty) list of the
-relevant Gregorian dates among the range visible in the calendar
-window, with descriptive strings, like this:
-
-     (((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
-
-\1f
-File: xemacs.info,  Node: Date Display Format,  Next: Time Display Format,  Prev: Holiday Customizing,  Up: Calendar Customization
-
-Date Display Format
-...................
-
-   You can customize the manner of displaying dates in the diary, in
-mode lines, and in messages by setting `calendar-date-display-form'.
-This variable holds a list of expressions that can involve the variables
-`month', `day', and `year', which are all numbers in string form, and
-`monthname' and `dayname', which are both alphabetic strings.  In the
-American style, the default value of this list is as follows:
-
-     ((if dayname (concat dayname ", ")) monthname " " day ", " year)
-
-while in the European style this value is the default:
-
-     ((if dayname (concat dayname ", ")) day " " monthname " " year)
-
-   + The ISO standard date representation is this:
-
-     (year "-" month "-" day)
-
-This specifies a typical American format:
-
-     (month "/" day "/" (substring year -2))
-
-\1f
-File: xemacs.info,  Node: Time Display Format,  Next: Daylight Savings,  Prev: Date Display Format,  Up: Calendar Customization
-
-Time Display Format
-...................
-
-   The calendar and diary by default display times of day in the
-conventional American style with the hours from 1 through 12, minutes,
-and either `am' or `pm'.  If you prefer the European style, also known
-in the US as military, in which the hours go from 00 to 23, you can
-alter the variable `calendar-time-display-form'.  This variable is a
-list of expressions that can involve the variables `12-hours',
-`24-hours', and `minutes', which are all numbers in string form, and
-`am-pm' and `time-zone', which are both alphabetic strings.  The
-default value of `calendar-time-display-form' is as follows:
-
-     (12-hours ":" minutes am-pm
-               (if time-zone " (") time-zone (if time-zone ")"))
-
-Here is a value that provides European style times:
-
-     (24-hours ":" minutes
-               (if time-zone " (") time-zone (if time-zone ")"))
-
-gives military-style times like `21:07 (UT)' if time zone names are
-defined, and times like `21:07' if they are not.
-
-\1f
-File: xemacs.info,  Node: Daylight Savings,  Next: Diary Customizing,  Prev: Time Display Format,  Up: Calendar Customization
-
-Daylight Savings Time
-.....................
-
-   Emacs understands the difference between standard time and daylight
-savings time--the times given for sunrise, sunset, solstices,
-equinoxes, and the phases of the moon take that into account.  The rules
-for daylight savings time vary from place to place and have also varied
-historically from year to year.  To do the job properly, Emacs needs to
-know which rules to use.
-
-   Some operating systems keep track of the rules that apply to the
-place where you are; on these systems, Emacs gets the information it
-needs from the system automatically.  If some or all of this
-information is missing, Emacs fills in the gaps with the rules
-currently used in Cambridge, Massachusetts.  If the resulting rules are
-not what you want, you can tell Emacs the rules to use by setting
-certain variables.
-
-   If the default choice of rules is not appropriate for your location,
-you can tell Emacs the rules to use by setting the variables
-`calendar-daylight-savings-starts' and
-`calendar-daylight-savings-ends'.  Their values should be Lisp
-expressions that refer to the variable `year', and evaluate to the
-Gregorian date on which daylight savings time starts or (respectively)
-ends, in the form of a list `(MONTH DAY YEAR)'.  The values should be
-`nil' if your area does not use daylight savings time.
-
-   Emacs uses these expressions to determine the starting date of
-daylight savings time for the holiday list  and for correcting times of
-day in the solar and lunar calculations.
-
-   The values for Cambridge, Massachusetts are as follows:
-
-     (calendar-nth-named-day 1 0 4 year)
-     (calendar-nth-named-day -1 0 10 year)
-
-That is, the first 0th day (Sunday) of the fourth month (April) in the
-year specified by `year', and the last Sunday of the tenth month
-(October) of that year.  If daylight savings time were changed to start
-on October 1, you would set `calendar-daylight-savings-starts' to this:
-
-     (list 10 1 year)
-
-   For a more complex example, suppose daylight savings time begins on
-the first of Nisan on the Hebrew calendar.  You should set
-`calendar-daylight-savings-starts' to this value:
-
-     (calendar-gregorian-from-absolute
-       (calendar-absolute-from-hebrew
-         (list 1 1 (+ year 3760))))
-
-because Nisan is the first month in the Hebrew calendar and the Hebrew
-year differs from the Gregorian year by 3760 at Nisan.
-
-   If there is no daylight savings time at your location, or if you want
-all times in standard time, set `calendar-daylight-savings-starts' and
-`calendar-daylight-savings-ends' to `nil'.
-
-   The variable `calendar-daylight-time-offset' specifies the
-difference between daylight savings time and standard time, measured in
-minutes.  The value for Cambridge, Massachusetts is 60.
-
-   The two variables `calendar-daylight-savings-starts-time' and
-`calendar-daylight-savings-ends-time' specify the number of minutes
-after midnight local time when the transition to and from daylight
-savings time should occur.  For Cambridge, Massachusetts both variables'
-values are 120.
-
index 4b02aad..60c77c2 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,279 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Holiday Customizing,  Next: Date Display Format,  Prev: Calendar Customizing,  Up: Calendar Customization
+
+Customizing the Holidays
+........................
+
+   Emacs knows about holidays defined by entries on one of several
+lists.  You can customize these lists of holidays to your own needs,
+adding or deleting holidays.  The lists of holidays that Emacs uses are
+for general holidays (`general-holidays'), local holidays
+(`local-holidays'), Christian holidays (`christian-holidays'), Hebrew
+(Jewish) holidays (`hebrew-holidays'), Islamic (Moslem) holidays
+(`islamic-holidays'), and other holidays (`other-holidays').
+
+   The general holidays are, by default, holidays common throughout the
+United States.  To eliminate these holidays, set `general-holidays' to
+`nil'.
+
+   There are no default local holidays (but sites may supply some).  You
+can set the variable `local-holidays' to any list of holidays, as
+described below.
+
+   By default, Emacs does not include all the holidays of the religions
+that it knows, only those commonly found in secular calendars.  For a
+more extensive collection of religious holidays, you can set any (or
+all) of the variables `all-christian-calendar-holidays',
+`all-hebrew-calendar-holidays', or `all-islamic-calendar-holidays' to
+`t'.  If you want to eliminate the religious holidays, set any or all
+of the corresponding variables `christian-holidays', `hebrew-holidays',
+and `islamic-holidays' to `nil'.
+
+   You can set the variable `other-holidays' to any list of holidays.
+This list, normally empty, is intended for individual use.
+
+   Each of the lists (`general-holidays', `local-holidays',
+`christian-holidays', `hebrew-holidays', `islamic-holidays', and
+`other-holidays') is a list of "holiday forms", each holiday form
+describing a holiday (or sometimes a list of holidays).
+
+   Here is a table of the possible kinds of holiday form.  Day numbers
+and month numbers count starting from 1, but "dayname" numbers count
+Sunday as 0.  The element STRING is always the name of the holiday, as
+a string.
+
+`(holiday-fixed MONTH DAY STRING)'
+     A fixed date on the Gregorian calendar.  MONTH and DAY are
+     numbers, STRING is the name of the holiday.
+
+`(holiday-float MONTH DAYNAME K STRING)'
+     The Kth DAYNAME in MONTH on the Gregorian calendar (DAYNAME=0 for
+     Sunday, and so on); negative K means count back from the end of
+     the month.  STRING is the name of the holiday.
+
+`(holiday-hebrew MONTH DAY STRING)'
+     A fixed date on the Hebrew calendar.  MONTH and DAY are numbers,
+     STRING is the name of the holiday.
+
+`(holiday-islamic MONTH DAY STRING)'
+     A fixed date on the Islamic calendar.  MONTH and DAY are numbers,
+     STRING is the name of the holiday.
+
+`(holiday-julian MONTH DAY STRING)'
+     A fixed date on the Julian calendar.  MONTH and DAY are numbers,
+     STRING is the name of the holiday.
+
+`(holiday-sexp SEXP STRING)'
+     A date calculated by the Lisp expression SEXP.  The expression
+     should use the variable `year' to compute and return the date of a
+     holiday, or `nil' if the holiday doesn't happen this year.  The
+     value of SEXP must represent the date as a list of the form
+     `(MONTH DAY YEAR)'.  STRING is the name of the holiday.
+
+`(if CONDITION HOLIDAY-FORM &optional HOLIDAY-FORM)'
+     A holiday that happens only if CONDITION is true.
+
+`(FUNCTION [ARGS])'
+     A list of dates calculated by the function FUNCTION, called with
+     arguments ARGS.
+
+   For example, suppose you want to add Bastille Day, celebrated in
+France on July 14.  You can do this by adding the following line to
+your init file:
+
+     (setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
+
+   *Note Init File::.
+
+The holiday form `(holiday-fixed 7 14 "Bastille Day")' specifies the
+fourteenth day of the seventh month (July).
+
+   Many holidays occur on a specific day of the week, at a specific time
+of month.  Here is a holiday form describing Hurricane Supplication Day,
+celebrated in the Virgin Islands on the fourth Monday in August:
+
+     (holiday-float 8 1 4 "Hurricane Supplication Day")
+
+Here the 8 specifies August, the 1 specifies Monday (Sunday is 0,
+Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in
+the month (1 specifies the first occurrence, 2 the second occurrence,
+-1 the last occurrence, -2 the second-to-last occurrence, and so on).
+
+   You can specify holidays that occur on fixed days of the Hebrew,
+Islamic, and Julian calendars too.  For example,
+
+     (setq other-holidays
+           '((holiday-hebrew 10 2 "Last day of Hanukkah")
+             (holiday-islamic 3 12 "Mohammed's Birthday")
+             (holiday-julian 4 2 "Jefferson's Birthday")))
+
+adds the last day of Hanukkah (since the Hebrew months are numbered with
+1 starting from Nisan), the Islamic feast celebrating Mohammed's
+birthday (since the Islamic months are numbered from 1 starting with
+Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the
+Julian calendar.
+
+   To include a holiday conditionally, use either Emacs Lisp's `if' or
+the `holiday-sexp' form.  For example, American presidential elections
+occur on the first Tuesday after the first Monday in November of years
+divisible by 4:
+
+     (holiday-sexp (if (= 0 (% year 4))
+                        (calendar-gregorian-from-absolute
+                      (1+ (calendar-dayname-on-or-before
+                            1 (+ 6 (calendar-absolute-from-gregorian
+                                     (list 11 1 year))))))
+                   "US Presidential Election"))
+
+or
+
+     (if (= 0 (% displayed-year 4))
+         (fixed 11
+                (extract-calendar-day
+                  (calendar-gregorian-from-absolute
+                    (1+ (calendar-dayname-on-or-before
+                          1 (+ 6 (calendar-absolute-from-gregorian
+                                   (list 11 1 displayed-year)))))))
+                "US Presidential Election"))
+
+   Some holidays just don't fit into any of these forms because special
+calculations are involved in their determination.  In such cases you
+must write a Lisp function to do the calculation.  To include eclipses,
+for example, add `(eclipses)' to `other-holidays' and write an Emacs
+Lisp function `eclipses' that returns a (possibly empty) list of the
+relevant Gregorian dates among the range visible in the calendar
+window, with descriptive strings, like this:
+
+     (((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
+
+\1f
+File: xemacs.info,  Node: Date Display Format,  Next: Time Display Format,  Prev: Holiday Customizing,  Up: Calendar Customization
+
+Date Display Format
+...................
+
+   You can customize the manner of displaying dates in the diary, in
+mode lines, and in messages by setting `calendar-date-display-form'.
+This variable holds a list of expressions that can involve the variables
+`month', `day', and `year', which are all numbers in string form, and
+`monthname' and `dayname', which are both alphabetic strings.  In the
+American style, the default value of this list is as follows:
+
+     ((if dayname (concat dayname ", ")) monthname " " day ", " year)
+
+while in the European style this value is the default:
+
+     ((if dayname (concat dayname ", ")) day " " monthname " " year)
+
+   + The ISO standard date representation is this:
+
+     (year "-" month "-" day)
+
+This specifies a typical American format:
+
+     (month "/" day "/" (substring year -2))
+
+\1f
+File: xemacs.info,  Node: Time Display Format,  Next: Daylight Savings,  Prev: Date Display Format,  Up: Calendar Customization
+
+Time Display Format
+...................
+
+   The calendar and diary by default display times of day in the
+conventional American style with the hours from 1 through 12, minutes,
+and either `am' or `pm'.  If you prefer the European style, also known
+in the US as military, in which the hours go from 00 to 23, you can
+alter the variable `calendar-time-display-form'.  This variable is a
+list of expressions that can involve the variables `12-hours',
+`24-hours', and `minutes', which are all numbers in string form, and
+`am-pm' and `time-zone', which are both alphabetic strings.  The
+default value of `calendar-time-display-form' is as follows:
+
+     (12-hours ":" minutes am-pm
+               (if time-zone " (") time-zone (if time-zone ")"))
+
+Here is a value that provides European style times:
+
+     (24-hours ":" minutes
+               (if time-zone " (") time-zone (if time-zone ")"))
+
+gives military-style times like `21:07 (UT)' if time zone names are
+defined, and times like `21:07' if they are not.
+
+\1f
+File: xemacs.info,  Node: Daylight Savings,  Next: Diary Customizing,  Prev: Time Display Format,  Up: Calendar Customization
+
+Daylight Savings Time
+.....................
+
+   Emacs understands the difference between standard time and daylight
+savings time--the times given for sunrise, sunset, solstices,
+equinoxes, and the phases of the moon take that into account.  The rules
+for daylight savings time vary from place to place and have also varied
+historically from year to year.  To do the job properly, Emacs needs to
+know which rules to use.
+
+   Some operating systems keep track of the rules that apply to the
+place where you are; on these systems, Emacs gets the information it
+needs from the system automatically.  If some or all of this
+information is missing, Emacs fills in the gaps with the rules
+currently used in Cambridge, Massachusetts.  If the resulting rules are
+not what you want, you can tell Emacs the rules to use by setting
+certain variables.
+
+   If the default choice of rules is not appropriate for your location,
+you can tell Emacs the rules to use by setting the variables
+`calendar-daylight-savings-starts' and
+`calendar-daylight-savings-ends'.  Their values should be Lisp
+expressions that refer to the variable `year', and evaluate to the
+Gregorian date on which daylight savings time starts or (respectively)
+ends, in the form of a list `(MONTH DAY YEAR)'.  The values should be
+`nil' if your area does not use daylight savings time.
+
+   Emacs uses these expressions to determine the starting date of
+daylight savings time for the holiday list  and for correcting times of
+day in the solar and lunar calculations.
+
+   The values for Cambridge, Massachusetts are as follows:
+
+     (calendar-nth-named-day 1 0 4 year)
+     (calendar-nth-named-day -1 0 10 year)
+
+That is, the first 0th day (Sunday) of the fourth month (April) in the
+year specified by `year', and the last Sunday of the tenth month
+(October) of that year.  If daylight savings time were changed to start
+on October 1, you would set `calendar-daylight-savings-starts' to this:
+
+     (list 10 1 year)
+
+   For a more complex example, suppose daylight savings time begins on
+the first of Nisan on the Hebrew calendar.  You should set
+`calendar-daylight-savings-starts' to this value:
+
+     (calendar-gregorian-from-absolute
+       (calendar-absolute-from-hebrew
+         (list 1 1 (+ year 3760))))
+
+because Nisan is the first month in the Hebrew calendar and the Hebrew
+year differs from the Gregorian year by 3760 at Nisan.
+
+   If there is no daylight savings time at your location, or if you want
+all times in standard time, set `calendar-daylight-savings-starts' and
+`calendar-daylight-savings-ends' to `nil'.
+
+   The variable `calendar-daylight-time-offset' specifies the
+difference between daylight savings time and standard time, measured in
+minutes.  The value for Cambridge, Massachusetts is 60.
+
+   The two variables `calendar-daylight-savings-starts-time' and
+`calendar-daylight-savings-ends-time' specify the number of minutes
+after midnight local time when the transition to and from daylight
+savings time should occur.  For Cambridge, Massachusetts both variables'
+values are 120.
+
+\1f
 File: xemacs.info,  Node: Diary Customizing,  Next: Hebrew/Islamic Entries,  Prev: Daylight Savings,  Up: Calendar Customization
 
 Customizing the Diary
@@ -932,246 +1205,3 @@ based on the value of the variable `lpr-switches'.  Its value should be
 a list of strings, each string a switch starting with `-'.  For
 example, the value could be `("-Pfoo")' to print on printer `foo'.
 
-\1f
-File: xemacs.info,  Node: Recursive Edit,  Next: Dissociated Press,  Prev: Hardcopy,  Up: Top
-
-Recursive Editing Levels
-========================
-
-   A "recursive edit" is a situation in which you are using XEmacs
-commands to perform arbitrary editing while in the middle of another
-XEmacs command.  For example, when you type `C-r' inside a
-`query-replace', you enter a recursive edit in which you can change the
-current buffer.  When you exit from the recursive edit, you go back to
-the `query-replace'.
-
-   "Exiting" a recursive edit means returning to the unfinished
-command, which continues execution.  For example, exiting the recursive
-edit requested by `C-r' in `query-replace' causes query replacing to
-resume.  Exiting is done with `C-M-c' (`exit-recursive-edit').
-
-   You can also "abort" a recursive edit.  This is like exiting, but
-also quits the unfinished command immediately.  Use the command `C-]'
-(`abort-recursive-edit') for this.  *Note Quitting::.
-
-   The mode line shows you when you are in a recursive edit by
-displaying square brackets around the parentheses that always surround
-the major and minor mode names.  Every window's mode line shows the
-square brackets, since XEmacs as a whole, rather than any particular
-buffer, is in a recursive edit.
-
-   It is possible to be in recursive edits within recursive edits.  For
-example, after typing `C-r' in a `query-replace', you might type a
-command that entered the debugger.  In such a case, two or more sets of
-square brackets appear in the mode line(s).  Exiting the inner
-recursive edit (here with the debugger `c' command) resumes the
-query-replace command where it called the debugger.  After the end of
-the query-replace command, you would be able to exit the first
-recursive edit.  Aborting exits only one level of recursive edit; it
-returns to the command level of the previous recursive edit.  You can
-then abort that one as well.
-
-   The command `M-x top-level' aborts all levels of recursive edits,
-returning immediately to the top level command reader.
-
-   The text you edit inside the recursive edit need not be the same text
-that you were editing at top level.  If the command that invokes the
-recursive edit selects a different buffer first, that is the buffer you
-will edit recursively.  You can switch buffers within the recursive edit
-in the normal manner (as long as the buffer-switching keys have not been
-rebound).  While you could theoretically do the rest of your editing
-inside the recursive edit, including visiting files, this could have
-surprising effects (such as stack overflow) from time to time.  It is
-best if you always exit or abort a recursive edit when you no longer
-need it.
-
-   In general, XEmacs tries to avoid using recursive edits.  It is
-usually preferable to allow users to switch among the possible editing
-modes in any order they like.  With recursive edits, the only way to get
-to another state is to go "back" to the state that the recursive edit
-was invoked from.
-
-\1f
-File: xemacs.info,  Node: Dissociated Press,  Next: CONX,  Prev: Recursive Edit,  Up: Top
-
-Dissociated Press
-=================
-
-   `M-x dissociated-press' is a command for scrambling a file of text
-either word by word or character by character.  Starting from a buffer
-of straight English, it produces extremely amusing output.  The input
-comes from the current XEmacs buffer.  Dissociated Press writes its
-output in a buffer named `*Dissociation*', and redisplays that buffer
-after every couple of lines (approximately) to facilitate reading it.
-
-   `dissociated-press' asks every so often whether to continue
-operating.  Answer `n' to stop it.  You can also stop at any time by
-typing `C-g'.  The dissociation output remains in the `*Dissociation*'
-buffer for you to copy elsewhere if you wish.
-
-   Dissociated Press operates by jumping at random from one point in the
-buffer to another.  In order to produce plausible output rather than
-gibberish, it insists on a certain amount of overlap between the end of
-one run of consecutive words or characters and the start of the next.
-That is, if it has just printed out `president' and then decides to
-jump to a different point in the file, it might spot the `ent' in
-`pentagon' and continue from there, producing `presidentagon'.  Long
-sample texts produce the best results.
-
-   A positive argument to `M-x dissociated-press' tells it to operate
-character by character, and specifies the number of overlap characters.
-A negative argument tells it to operate word by word and specifies the
-number of overlap words.  In this mode, whole words are treated as the
-elements to be permuted, rather than characters.  No argument is
-equivalent to an argument of two.  For your againformation, the output
-goes only into the buffer `*Dissociation*'.  The buffer you start with
-is not changed.
-
-   Dissociated Press produces nearly the same results as a Markov chain
-based on a frequency table constructed from the sample text.  It is,
-however, an independent, ignoriginal invention.  Dissociated Press
-techniquitously copies several consecutive characters from the sample
-between random choices, whereas a Markov chain would choose randomly for
-each word or character.  This makes for more plausible sounding results
-and runs faster.
-
-   It is a mustatement that too much use of Dissociated Press can be a
-developediment to your real work.  Sometimes to the point of outragedy.
-And keep dissociwords out of your documentation, if you want it to be
-well userenced and properbose.  Have fun.  Your buggestions are welcome.
-
-\1f
-File: xemacs.info,  Node: CONX,  Next: Amusements,  Prev: Dissociated Press,  Up: Top
-
-CONX
-====
-
-   Besides producing a file of scrambled text with Dissociated Press,
-you can generate random sentences by using CONX.
-
-`M-x conx'
-     Generate random sentences in the `*conx*' buffer.
-
-`M-x conx-buffer'
-     Absorb the text in the current buffer into the `conx' database.
-
-`M-x conx-init'
-     Forget the current word-frequency tree.
-
-`M-x conx-load'
-     Load a `conx' database that has been previously saved with `M-x
-     conx-save'.
-
-`M-x conx-region'
-     Absorb the text in the current buffer into the `conx' database.
-
-`M-x conx-save'
-     Save the current `conx' database to a file for future retrieval.
-
-   Copy text from a buffer using `M-x conx-buffer' or `M-x conx-region'
-and then type `M-x conx'.  Output is continuously generated until you
-type <^G>. You can save the `conx' database to a file with `M-x
-conx-save', which you can retrieve with `M-x conx-load'.  To clear the
-database, use `M-x conx-init'.
-
-\1f
-File: xemacs.info,  Node: Amusements,  Next: Emulation,  Prev: CONX,  Up: Top
-
-Other Amusements
-================
-
-   If you are a little bit bored, you can try `M-x hanoi'.  If you are
-considerably bored, give it a numeric argument.  If you are very, very
-bored, try an argument of 9.  Sit back and watch.
-
-   When you are frustrated, try the famous Eliza program.  Just do `M-x
-doctor'.  End each input by typing `RET' twice.
-
-   When you are feeling strange, type `M-x yow'.
-
-\1f
-File: xemacs.info,  Node: Emulation,  Next: Customization,  Prev: Amusements,  Up: Top
-
-Emulation
-=========
-
-   XEmacs can be programmed to emulate (more or less) most other
-editors.  Standard facilities can emulate these:
-
-Viper (a vi emulator)
-     In XEmacs, Viper is the preferred emulation of vi within XEmacs.
-     Viper is designed to allow you to take advantage of the best
-     features of XEmacs while still doing your basic editing in a
-     familiar, vi-like fashion.  Viper provides various different
-     levels of vi emulation, from a quite complete emulation that
-     allows almost no access to native XEmacs commands, to an "expert"
-     mode that combines the most useful vi commands with the most
-     useful XEmacs commands.
-
-     To start Viper, put the command
-
-          (viper-mode)
-
-     in your init file.  *Note Init File::.
-
-     Viper comes with a separate manual that is provided standard with
-     the XEmacs distribution.
-
-EDT (DEC VMS editor)
-     Turn on EDT emulation with `M-x edt-emulation-on'.  `M-x
-     edt-emulation-off' restores normal Emacs command bindings.
-
-     Most of the EDT emulation commands are keypad keys, and most
-     standard Emacs key bindings are still available.  The EDT
-     emulation rebindings are done in the global keymap, so there is no
-     problem switching buffers or major modes while in EDT emulation.
-
-Gosling Emacs
-     Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x
-     set-gosmacs-bindings'.  This redefines many keys, mostly on the
-     `C-x' and `ESC' prefixes, to work as they do in Gosmacs.  `M-x
-     set-gnu-bindings' returns to normal XEmacs by rebinding the same
-     keys to the definitions they had at the time `M-x
-     set-gosmacs-bindings' was done.
-
-     It is also possible to run Mocklisp code written for Gosling Emacs.
-     *Note Mocklisp::.
-
-\1f
-File: xemacs.info,  Node: Customization,  Next: Quitting,  Prev: Emulation,  Up: Top
-
-Customization
-*************
-
-   This chapter talks about various topics relevant to adapting the
-behavior of Emacs in minor ways.
-
-   All kinds of customization affect only the particular Emacs job that
-you do them in.  They are completely lost when you kill the Emacs job,
-and have no effect on other Emacs jobs you may run at the same time or
-later.  The only way an Emacs job can affect anything outside of it is
-by writing a file; in particular, the only way to make a customization
-`permanent' is to put something in your init file or other appropriate
-file to do the customization in each session.  *Note Init File::.
-
-* Menu:
-
-* Minor Modes::     Each minor mode is one feature you can turn on
-                     independently of any others.
-* Variables::       Many Emacs commands examine Emacs variables
-                     to decide what to do; by setting variables,
-                     you can control their functioning.
-* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
-                     to be replayed with a single command.
-* Key Bindings::    The keymaps say what command each key runs.
-                     By changing them, you can "redefine keys".
-* Syntax::          The syntax table controls how words and expressions
-                     are parsed.
-* Init File::       How to write common customizations in the init file.
-* Audible Bell::    Changing how Emacs sounds the bell.
-* Faces::           Changing the fonts and colors of a region of text.
-* Frame Components::  Controlling the presence and positions of the
-                     menubar, toolbars, and gutters.
-* X Resources::     X resources controlling various aspects of the
-                     behavior of XEmacs.
-
index a03c890..6648446 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,249 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Recursive Edit,  Next: Dissociated Press,  Prev: Hardcopy,  Up: Top
+
+Recursive Editing Levels
+========================
+
+   A "recursive edit" is a situation in which you are using XEmacs
+commands to perform arbitrary editing while in the middle of another
+XEmacs command.  For example, when you type `C-r' inside a
+`query-replace', you enter a recursive edit in which you can change the
+current buffer.  When you exit from the recursive edit, you go back to
+the `query-replace'.
+
+   "Exiting" a recursive edit means returning to the unfinished
+command, which continues execution.  For example, exiting the recursive
+edit requested by `C-r' in `query-replace' causes query replacing to
+resume.  Exiting is done with `C-M-c' (`exit-recursive-edit').
+
+   You can also "abort" a recursive edit.  This is like exiting, but
+also quits the unfinished command immediately.  Use the command `C-]'
+(`abort-recursive-edit') for this.  *Note Quitting::.
+
+   The mode line shows you when you are in a recursive edit by
+displaying square brackets around the parentheses that always surround
+the major and minor mode names.  Every window's mode line shows the
+square brackets, since XEmacs as a whole, rather than any particular
+buffer, is in a recursive edit.
+
+   It is possible to be in recursive edits within recursive edits.  For
+example, after typing `C-r' in a `query-replace', you might type a
+command that entered the debugger.  In such a case, two or more sets of
+square brackets appear in the mode line(s).  Exiting the inner
+recursive edit (here with the debugger `c' command) resumes the
+query-replace command where it called the debugger.  After the end of
+the query-replace command, you would be able to exit the first
+recursive edit.  Aborting exits only one level of recursive edit; it
+returns to the command level of the previous recursive edit.  You can
+then abort that one as well.
+
+   The command `M-x top-level' aborts all levels of recursive edits,
+returning immediately to the top level command reader.
+
+   The text you edit inside the recursive edit need not be the same text
+that you were editing at top level.  If the command that invokes the
+recursive edit selects a different buffer first, that is the buffer you
+will edit recursively.  You can switch buffers within the recursive edit
+in the normal manner (as long as the buffer-switching keys have not been
+rebound).  While you could theoretically do the rest of your editing
+inside the recursive edit, including visiting files, this could have
+surprising effects (such as stack overflow) from time to time.  It is
+best if you always exit or abort a recursive edit when you no longer
+need it.
+
+   In general, XEmacs tries to avoid using recursive edits.  It is
+usually preferable to allow users to switch among the possible editing
+modes in any order they like.  With recursive edits, the only way to get
+to another state is to go "back" to the state that the recursive edit
+was invoked from.
+
+\1f
+File: xemacs.info,  Node: Dissociated Press,  Next: CONX,  Prev: Recursive Edit,  Up: Top
+
+Dissociated Press
+=================
+
+   `M-x dissociated-press' is a command for scrambling a file of text
+either word by word or character by character.  Starting from a buffer
+of straight English, it produces extremely amusing output.  The input
+comes from the current XEmacs buffer.  Dissociated Press writes its
+output in a buffer named `*Dissociation*', and redisplays that buffer
+after every couple of lines (approximately) to facilitate reading it.
+
+   `dissociated-press' asks every so often whether to continue
+operating.  Answer `n' to stop it.  You can also stop at any time by
+typing `C-g'.  The dissociation output remains in the `*Dissociation*'
+buffer for you to copy elsewhere if you wish.
+
+   Dissociated Press operates by jumping at random from one point in the
+buffer to another.  In order to produce plausible output rather than
+gibberish, it insists on a certain amount of overlap between the end of
+one run of consecutive words or characters and the start of the next.
+That is, if it has just printed out `president' and then decides to
+jump to a different point in the file, it might spot the `ent' in
+`pentagon' and continue from there, producing `presidentagon'.  Long
+sample texts produce the best results.
+
+   A positive argument to `M-x dissociated-press' tells it to operate
+character by character, and specifies the number of overlap characters.
+A negative argument tells it to operate word by word and specifies the
+number of overlap words.  In this mode, whole words are treated as the
+elements to be permuted, rather than characters.  No argument is
+equivalent to an argument of two.  For your againformation, the output
+goes only into the buffer `*Dissociation*'.  The buffer you start with
+is not changed.
+
+   Dissociated Press produces nearly the same results as a Markov chain
+based on a frequency table constructed from the sample text.  It is,
+however, an independent, ignoriginal invention.  Dissociated Press
+techniquitously copies several consecutive characters from the sample
+between random choices, whereas a Markov chain would choose randomly for
+each word or character.  This makes for more plausible sounding results
+and runs faster.
+
+   It is a mustatement that too much use of Dissociated Press can be a
+developediment to your real work.  Sometimes to the point of outragedy.
+And keep dissociwords out of your documentation, if you want it to be
+well userenced and properbose.  Have fun.  Your buggestions are welcome.
+
+\1f
+File: xemacs.info,  Node: CONX,  Next: Amusements,  Prev: Dissociated Press,  Up: Top
+
+CONX
+====
+
+   Besides producing a file of scrambled text with Dissociated Press,
+you can generate random sentences by using CONX.
+
+`M-x conx'
+     Generate random sentences in the `*conx*' buffer.
+
+`M-x conx-buffer'
+     Absorb the text in the current buffer into the `conx' database.
+
+`M-x conx-init'
+     Forget the current word-frequency tree.
+
+`M-x conx-load'
+     Load a `conx' database that has been previously saved with `M-x
+     conx-save'.
+
+`M-x conx-region'
+     Absorb the text in the current buffer into the `conx' database.
+
+`M-x conx-save'
+     Save the current `conx' database to a file for future retrieval.
+
+   Copy text from a buffer using `M-x conx-buffer' or `M-x conx-region'
+and then type `M-x conx'.  Output is continuously generated until you
+type <^G>. You can save the `conx' database to a file with `M-x
+conx-save', which you can retrieve with `M-x conx-load'.  To clear the
+database, use `M-x conx-init'.
+
+\1f
+File: xemacs.info,  Node: Amusements,  Next: Emulation,  Prev: CONX,  Up: Top
+
+Other Amusements
+================
+
+   If you are a little bit bored, you can try `M-x hanoi'.  If you are
+considerably bored, give it a numeric argument.  If you are very, very
+bored, try an argument of 9.  Sit back and watch.
+
+   When you are frustrated, try the famous Eliza program.  Just do `M-x
+doctor'.  End each input by typing `RET' twice.
+
+   When you are feeling strange, type `M-x yow'.
+
+\1f
+File: xemacs.info,  Node: Emulation,  Next: Customization,  Prev: Amusements,  Up: Top
+
+Emulation
+=========
+
+   XEmacs can be programmed to emulate (more or less) most other
+editors.  Standard facilities can emulate these:
+
+Viper (a vi emulator)
+     In XEmacs, Viper is the preferred emulation of vi within XEmacs.
+     Viper is designed to allow you to take advantage of the best
+     features of XEmacs while still doing your basic editing in a
+     familiar, vi-like fashion.  Viper provides various different
+     levels of vi emulation, from a quite complete emulation that
+     allows almost no access to native XEmacs commands, to an "expert"
+     mode that combines the most useful vi commands with the most
+     useful XEmacs commands.
+
+     To start Viper, put the command
+
+          (viper-mode)
+
+     in your init file.  *Note Init File::.
+
+     Viper comes with a separate manual that is provided standard with
+     the XEmacs distribution.
+
+EDT (DEC VMS editor)
+     Turn on EDT emulation with `M-x edt-emulation-on'.  `M-x
+     edt-emulation-off' restores normal Emacs command bindings.
+
+     Most of the EDT emulation commands are keypad keys, and most
+     standard Emacs key bindings are still available.  The EDT
+     emulation rebindings are done in the global keymap, so there is no
+     problem switching buffers or major modes while in EDT emulation.
+
+Gosling Emacs
+     Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x
+     set-gosmacs-bindings'.  This redefines many keys, mostly on the
+     `C-x' and `ESC' prefixes, to work as they do in Gosmacs.  `M-x
+     set-gnu-bindings' returns to normal XEmacs by rebinding the same
+     keys to the definitions they had at the time `M-x
+     set-gosmacs-bindings' was done.
+
+     It is also possible to run Mocklisp code written for Gosling Emacs.
+     *Note Mocklisp::.
+
+\1f
+File: xemacs.info,  Node: Customization,  Next: Quitting,  Prev: Emulation,  Up: Top
+
+Customization
+*************
+
+   This chapter talks about various topics relevant to adapting the
+behavior of Emacs in minor ways.
+
+   All kinds of customization affect only the particular Emacs job that
+you do them in.  They are completely lost when you kill the Emacs job,
+and have no effect on other Emacs jobs you may run at the same time or
+later.  The only way an Emacs job can affect anything outside of it is
+by writing a file; in particular, the only way to make a customization
+`permanent' is to put something in your init file or other appropriate
+file to do the customization in each session.  *Note Init File::.
+
+* Menu:
+
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many Emacs commands examine Emacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how Emacs sounds the bell.
+* Faces::           Changing the fonts and colors of a region of text.
+* Frame Components::  Controlling the presence and positions of the
+                     menubar, toolbars, and gutters.
+* X Resources::     X resources controlling various aspects of the
+                     behavior of XEmacs.
+
+\1f
 File: xemacs.info,  Node: Minor Modes,  Next: Variables,  Up: Customization
 
 Minor Modes
@@ -898,285 +1141,3 @@ letters and hyphens.
                 before it can be executed.  This is done to protect
                 beginners from surprises.
 
-\1f
-File: xemacs.info,  Node: Keymaps,  Next: Rebinding,  Up: Key Bindings
-
-Keymaps
--------
-
-   The bindings between characters and command functions are recorded in
-data structures called "keymaps".  Emacs has many of these.  One, the
-"global" keymap, defines the meanings of the single-character keys that
-are defined regardless of major mode.  It is the value of the variable
-`global-map'.
-
-   Each major mode has another keymap, its "local keymap", which
-contains overriding definitions for the single-character keys that are
-redefined in that mode.  Each buffer records which local keymap is
-installed for it at any time, and the current buffer's local keymap is
-the only one that directly affects command execution.  The local keymaps
-for Lisp mode, C mode, and many other major modes always exist even when
-not in use.  They are the values of the variables `lisp-mode-map',
-`c-mode-map', and so on.  For less frequently used major modes, the
-local keymap is sometimes constructed only when the mode is used for the
-first time in a session, to save space.
-
-   There are local keymaps for the minibuffer, too; they contain various
-completion and exit commands.
-
-   * `minibuffer-local-map' is used for ordinary input (no completion).
-
-   * `minibuffer-local-ns-map' is similar, except that <SPC> exits just
-     like <RET>.  This is used mainly for Mocklisp compatibility.
-
-   * `minibuffer-local-completion-map' is for permissive completion.
-
-   * `minibuffer-local-must-match-map' is for strict completion and for
-     cautious completion.
-
-   * `repeat-complex-command-map' is for use in `C-x <ESC>'.
-
-   * `isearch-mode-map' contains the bindings of the special keys which
-     are bound in the pseudo-mode entered with `C-s' and `C-r'.
-
-   Finally, each prefix key has a keymap which defines the key sequences
-that start with it.  For example, `ctl-x-map' is the keymap used for
-characters following a `C-x'.
-
-   * `ctl-x-map' is the variable name for the map used for characters
-     that follow `C-x'.
-
-   * `help-map' is used for characters that follow `C-h'.
-
-   * `esc-map' is for characters that follow <ESC>. All Meta characters
-     are actually defined by this map.
-
-   * `ctl-x-4-map' is for characters that follow `C-x 4'.
-
-   * `mode-specific-map' is for characters that follow `C-c'.
-
-   The definition of a prefix key is the keymap to use for looking up
-the following character.  Sometimes the definition is actually a Lisp
-symbol whose function definition is the following character keymap.  The
-effect is the same, but it provides a command name for the prefix key
-that you can use as a description of what the prefix key is for.  Thus
-the binding of `C-x' is the symbol `Ctl-X-Prefix', whose function
-definition is the keymap for `C-x' commands, the value of `ctl-x-map'.
-
-   Prefix key definitions can appear in either the global map or a
-local map.  The definitions of `C-c', `C-x', `C-h', and <ESC> as prefix
-keys appear in the global map, so these prefix keys are always
-available.  Major modes can locally redefine a key as a prefix by
-putting a prefix key definition for it in the local map.
-
-   A mode can also put a prefix definition of a global prefix character
-such as `C-x' into its local map.  This is how major modes override the
-definitions of certain keys that start with `C-x'.  This case is
-special, because the local definition does not entirely replace the
-global one.  When both the global and local definitions of a key are
-other keymaps, the next character is looked up in both keymaps, with
-the local definition overriding the global one.  The character after the
-`C-x' is looked up in both the major mode's own keymap for redefined
-`C-x' commands and in `ctl-x-map'.  If the major mode's own keymap for
-`C-x' commands contains `nil', the definition from the global keymap
-for `C-x' commands is used.
-
-\1f
-File: xemacs.info,  Node: Rebinding,  Next: Disabling,  Prev: Keymaps,  Up: Key Bindings
-
-Changing Key Bindings
----------------------
-
-   You can redefine an Emacs key by changing its entry in a keymap.
-You can change the global keymap, in which case the change is effective
-in all major modes except those that have their own overriding local
-definitions for the same key.  Or you can change the current buffer's
-local map, which affects all buffers using the same major mode.
-
-* Menu:
-
-* Interactive Rebinding::      Changing Key Bindings Interactively
-* Programmatic Rebinding::     Changing Key Bindings Programmatically
-* Key Bindings Using Strings:: Using Strings for Changing Key Bindings
-
-\1f
-File: xemacs.info,  Node: Interactive Rebinding,  Next: Programmatic Rebinding,  Up: Rebinding
-
-Changing Key Bindings Interactively
-...................................
-
-`M-x global-set-key <RET> KEY CMD <RET>'
-     Defines KEY globally to run CMD.
-
-`M-x local-set-key <RET> KEYS CMD <RET>'
-     Defines KEY locally (in the major mode now in effect) to run CMD.
-
-`M-x local-unset-key <RET> KEYS <RET>'
-     Removes the local binding of KEY.
-
-   CMD is a symbol naming an interactively-callable function.
-
-   When called interactively, KEY is the next complete key sequence
-that you type.  When called as a function, KEY is a string, a vector of
-events, or a vector of key-description lists as described in the
-`define-key' function description.  The binding goes in the current
-buffer's local map, which is shared with other buffers in the same
-major mode.
-
-   The following example:
-
-     M-x global-set-key <RET> C-f next-line <RET>
-
-redefines `C-f' to move down a line.  The fact that CMD is read second
-makes it serve as a kind of confirmation for KEY.
-
-   These functions offer no way to specify a particular prefix keymap as
-the one to redefine in, but that is not necessary, as you can include
-prefixes in KEY.  KEY is read by reading characters one by one until
-they amount to a complete key (that is, not a prefix key).  Thus, if
-you type `C-f' for KEY, Emacs enters the minibuffer immediately to read
-CMD.  But if you type `C-x', another character is read; if that
-character is `4', another character is read, and so on.  For example,
-
-     M-x global-set-key <RET> C-x 4 $ spell-other-window <RET>
-
-redefines `C-x 4 $' to run the (fictitious) command
-`spell-other-window'.
-
-   The most general way to modify a keymap is the function
-`define-key', used in Lisp code (such as your init file).  `define-key'
-takes three arguments: the keymap, the key to modify in it, and the new
-definition.  *Note Init File::, for an example.
-`substitute-key-definition' is used similarly; it takes three
-arguments, an old definition, a new definition, and a keymap, and
-redefines in that keymap all keys that were previously defined with the
-old definition to have the new definition instead.
-
-\1f
-File: xemacs.info,  Node: Programmatic Rebinding,  Next: Key Bindings Using Strings,  Prev: Interactive Rebinding,  Up: Rebinding
-
-Changing Key Bindings Programmatically
-......................................
-
-   You can use the functions `global-set-key' and `define-key' to
-rebind keys under program control.
-
-``(global-set-key KEYS CMD)''
-     Defines KEYS globally to run CMD.
-
-``(define-key KEYMAP KEYS DEF)''
-     Defines KEYS to run DEF in the keymap KEYMAP.
-
-   KEYMAP is a keymap object.
-
-   KEYS is the sequence of keystrokes to bind.
-
-   DEF is anything that can be a key's definition:
-
-   * `nil', meaning key is undefined in this keymap
-
-   * A command, that is, a Lisp function suitable for interactive
-     calling
-
-   * A string or key sequence vector, which is treated as a keyboard
-     macro
-
-   * A keymap to define a prefix key
-
-   * A symbol so that when the key is looked up, the symbol stands for
-     its function definition, which should at that time be one of the
-     above, or another symbol whose function definition is used, and so
-     on
-
-   * A cons, `(string . defn)', meaning that DEFN is the definition
-     (DEFN should be a valid definition in its own right)
-
-   * A cons, `(keymap . char)', meaning use the definition of CHAR in
-     map KEYMAP
-
-   For backward compatibility, XEmacs allows you to specify key
-sequences as strings.  However, the preferred method is to use the
-representations of key sequences as vectors of keystrokes.  *Note
-Keystrokes::, for more information about the rules for constructing key
-sequences.
-
-   Emacs allows you to abbreviate representations for key sequences in
-most places where there is no ambiguity.  Here are some rules for
-abbreviation:
-
-   * The keysym by itself is equivalent to a list of just that keysym,
-     i.e., `f1' is equivalent to `(f1)'.
-
-   * A keystroke by itself is equivalent to a vector containing just
-     that keystroke, i.e.,  `(control a)' is equivalent to `[(control
-     a)]'.
-
-   * You can use ASCII codes for keysyms that have them. i.e., `65' is
-     equivalent to `A'. (This is not so much an abbreviation as an
-     alternate representation.)
-
-   Here are some examples of programmatically binding keys:
-
-
-     ;;;  Bind `my-command' to <f1>
-     (global-set-key 'f1 'my-command)
-     
-     ;;;  Bind `my-command' to Shift-f1
-     (global-set-key '(shift f1) 'my-command)
-     
-     ;;; Bind `my-command' to C-c Shift-f1
-     (global-set-key '[(control c) (shift f1)] 'my-command)
-     
-     ;;; Bind `my-command' to the middle mouse button.
-     (global-set-key 'button2 'my-command)
-     
-     ;;; Bind `my-command' to <META> <CTL> <Right Mouse Button>
-     ;;; in the keymap that is in force when you are running `dired'.
-     (define-key dired-mode-map '(meta control button3) 'my-command)
-
-\1f
-File: xemacs.info,  Node: Key Bindings Using Strings,  Prev: Programmatic Rebinding,  Up: Rebinding
-
-Using Strings for Changing Key Bindings
-.......................................
-
-   For backward compatibility, you can still use strings to represent
-key sequences.  Thus you can use commands like the following:
-
-     ;;; Bind `end-of-line' to C-f
-     (global-set-key "\C-f" 'end-of-line)
-
-   Note, however, that in some cases you may be binding more than one
-key sequence by using a single command.  This situation can arise
-because in ASCII, `C-i' and <TAB> have the same representation.
-Therefore, when Emacs sees:
-
-     (global-set-key "\C-i" 'end-of-line)
-
-   it is unclear whether the user intended to bind `C-i' or <TAB>.  The
-solution XEmacs adopts is to bind both of these key sequences.
-
-   After binding a command to two key sequences with a form like:
-
-             (define-key global-map "\^X\^I" 'command-1)
-
-   it is possible to redefine only one of those sequences like so:
-
-             (define-key global-map [(control x) (control i)] 'command-2)
-             (define-key global-map [(control x) tab] 'command-3)
-
-   This applies only when running under a window system.  If you are
-talking to Emacs through an ASCII-only channel, you do not get any of
-these features.
-
-   Here is a table of pairs of key sequences that behave in a similar
-fashion:
-
-             control h      backspace
-             control l      clear
-             control i      tab
-             control m      return
-             control j      linefeed
-             control [      escape
-             control @      control space
-
index ad966c0..5cadc3a 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,288 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Keymaps,  Next: Rebinding,  Up: Key Bindings
+
+Keymaps
+-------
+
+   The bindings between characters and command functions are recorded in
+data structures called "keymaps".  Emacs has many of these.  One, the
+"global" keymap, defines the meanings of the single-character keys that
+are defined regardless of major mode.  It is the value of the variable
+`global-map'.
+
+   Each major mode has another keymap, its "local keymap", which
+contains overriding definitions for the single-character keys that are
+redefined in that mode.  Each buffer records which local keymap is
+installed for it at any time, and the current buffer's local keymap is
+the only one that directly affects command execution.  The local keymaps
+for Lisp mode, C mode, and many other major modes always exist even when
+not in use.  They are the values of the variables `lisp-mode-map',
+`c-mode-map', and so on.  For less frequently used major modes, the
+local keymap is sometimes constructed only when the mode is used for the
+first time in a session, to save space.
+
+   There are local keymaps for the minibuffer, too; they contain various
+completion and exit commands.
+
+   * `minibuffer-local-map' is used for ordinary input (no completion).
+
+   * `minibuffer-local-ns-map' is similar, except that <SPC> exits just
+     like <RET>.  This is used mainly for Mocklisp compatibility.
+
+   * `minibuffer-local-completion-map' is for permissive completion.
+
+   * `minibuffer-local-must-match-map' is for strict completion and for
+     cautious completion.
+
+   * `repeat-complex-command-map' is for use in `C-x <ESC>'.
+
+   * `isearch-mode-map' contains the bindings of the special keys which
+     are bound in the pseudo-mode entered with `C-s' and `C-r'.
+
+   Finally, each prefix key has a keymap which defines the key sequences
+that start with it.  For example, `ctl-x-map' is the keymap used for
+characters following a `C-x'.
+
+   * `ctl-x-map' is the variable name for the map used for characters
+     that follow `C-x'.
+
+   * `help-map' is used for characters that follow `C-h'.
+
+   * `esc-map' is for characters that follow <ESC>. All Meta characters
+     are actually defined by this map.
+
+   * `ctl-x-4-map' is for characters that follow `C-x 4'.
+
+   * `mode-specific-map' is for characters that follow `C-c'.
+
+   The definition of a prefix key is the keymap to use for looking up
+the following character.  Sometimes the definition is actually a Lisp
+symbol whose function definition is the following character keymap.  The
+effect is the same, but it provides a command name for the prefix key
+that you can use as a description of what the prefix key is for.  Thus
+the binding of `C-x' is the symbol `Ctl-X-Prefix', whose function
+definition is the keymap for `C-x' commands, the value of `ctl-x-map'.
+
+   Prefix key definitions can appear in either the global map or a
+local map.  The definitions of `C-c', `C-x', `C-h', and <ESC> as prefix
+keys appear in the global map, so these prefix keys are always
+available.  Major modes can locally redefine a key as a prefix by
+putting a prefix key definition for it in the local map.
+
+   A mode can also put a prefix definition of a global prefix character
+such as `C-x' into its local map.  This is how major modes override the
+definitions of certain keys that start with `C-x'.  This case is
+special, because the local definition does not entirely replace the
+global one.  When both the global and local definitions of a key are
+other keymaps, the next character is looked up in both keymaps, with
+the local definition overriding the global one.  The character after the
+`C-x' is looked up in both the major mode's own keymap for redefined
+`C-x' commands and in `ctl-x-map'.  If the major mode's own keymap for
+`C-x' commands contains `nil', the definition from the global keymap
+for `C-x' commands is used.
+
+\1f
+File: xemacs.info,  Node: Rebinding,  Next: Disabling,  Prev: Keymaps,  Up: Key Bindings
+
+Changing Key Bindings
+---------------------
+
+   You can redefine an Emacs key by changing its entry in a keymap.
+You can change the global keymap, in which case the change is effective
+in all major modes except those that have their own overriding local
+definitions for the same key.  Or you can change the current buffer's
+local map, which affects all buffers using the same major mode.
+
+* Menu:
+
+* Interactive Rebinding::      Changing Key Bindings Interactively
+* Programmatic Rebinding::     Changing Key Bindings Programmatically
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings
+
+\1f
+File: xemacs.info,  Node: Interactive Rebinding,  Next: Programmatic Rebinding,  Up: Rebinding
+
+Changing Key Bindings Interactively
+...................................
+
+`M-x global-set-key <RET> KEY CMD <RET>'
+     Defines KEY globally to run CMD.
+
+`M-x local-set-key <RET> KEYS CMD <RET>'
+     Defines KEY locally (in the major mode now in effect) to run CMD.
+
+`M-x local-unset-key <RET> KEYS <RET>'
+     Removes the local binding of KEY.
+
+   CMD is a symbol naming an interactively-callable function.
+
+   When called interactively, KEY is the next complete key sequence
+that you type.  When called as a function, KEY is a string, a vector of
+events, or a vector of key-description lists as described in the
+`define-key' function description.  The binding goes in the current
+buffer's local map, which is shared with other buffers in the same
+major mode.
+
+   The following example:
+
+     M-x global-set-key <RET> C-f next-line <RET>
+
+redefines `C-f' to move down a line.  The fact that CMD is read second
+makes it serve as a kind of confirmation for KEY.
+
+   These functions offer no way to specify a particular prefix keymap as
+the one to redefine in, but that is not necessary, as you can include
+prefixes in KEY.  KEY is read by reading characters one by one until
+they amount to a complete key (that is, not a prefix key).  Thus, if
+you type `C-f' for KEY, Emacs enters the minibuffer immediately to read
+CMD.  But if you type `C-x', another character is read; if that
+character is `4', another character is read, and so on.  For example,
+
+     M-x global-set-key <RET> C-x 4 $ spell-other-window <RET>
+
+redefines `C-x 4 $' to run the (fictitious) command
+`spell-other-window'.
+
+   The most general way to modify a keymap is the function
+`define-key', used in Lisp code (such as your init file).  `define-key'
+takes three arguments: the keymap, the key to modify in it, and the new
+definition.  *Note Init File::, for an example.
+`substitute-key-definition' is used similarly; it takes three
+arguments, an old definition, a new definition, and a keymap, and
+redefines in that keymap all keys that were previously defined with the
+old definition to have the new definition instead.
+
+\1f
+File: xemacs.info,  Node: Programmatic Rebinding,  Next: Key Bindings Using Strings,  Prev: Interactive Rebinding,  Up: Rebinding
+
+Changing Key Bindings Programmatically
+......................................
+
+   You can use the functions `global-set-key' and `define-key' to
+rebind keys under program control.
+
+``(global-set-key KEYS CMD)''
+     Defines KEYS globally to run CMD.
+
+``(define-key KEYMAP KEYS DEF)''
+     Defines KEYS to run DEF in the keymap KEYMAP.
+
+   KEYMAP is a keymap object.
+
+   KEYS is the sequence of keystrokes to bind.
+
+   DEF is anything that can be a key's definition:
+
+   * `nil', meaning key is undefined in this keymap
+
+   * A command, that is, a Lisp function suitable for interactive
+     calling
+
+   * A string or key sequence vector, which is treated as a keyboard
+     macro
+
+   * A keymap to define a prefix key
+
+   * A symbol so that when the key is looked up, the symbol stands for
+     its function definition, which should at that time be one of the
+     above, or another symbol whose function definition is used, and so
+     on
+
+   * A cons, `(string . defn)', meaning that DEFN is the definition
+     (DEFN should be a valid definition in its own right)
+
+   * A cons, `(keymap . char)', meaning use the definition of CHAR in
+     map KEYMAP
+
+   For backward compatibility, XEmacs allows you to specify key
+sequences as strings.  However, the preferred method is to use the
+representations of key sequences as vectors of keystrokes.  *Note
+Keystrokes::, for more information about the rules for constructing key
+sequences.
+
+   Emacs allows you to abbreviate representations for key sequences in
+most places where there is no ambiguity.  Here are some rules for
+abbreviation:
+
+   * The keysym by itself is equivalent to a list of just that keysym,
+     i.e., `f1' is equivalent to `(f1)'.
+
+   * A keystroke by itself is equivalent to a vector containing just
+     that keystroke, i.e.,  `(control a)' is equivalent to `[(control
+     a)]'.
+
+   * You can use ASCII codes for keysyms that have them. i.e., `65' is
+     equivalent to `A'. (This is not so much an abbreviation as an
+     alternate representation.)
+
+   Here are some examples of programmatically binding keys:
+
+
+     ;;;  Bind `my-command' to <f1>
+     (global-set-key 'f1 'my-command)
+     
+     ;;;  Bind `my-command' to Shift-f1
+     (global-set-key '(shift f1) 'my-command)
+     
+     ;;; Bind `my-command' to C-c Shift-f1
+     (global-set-key '[(control c) (shift f1)] 'my-command)
+     
+     ;;; Bind `my-command' to the middle mouse button.
+     (global-set-key 'button2 'my-command)
+     
+     ;;; Bind `my-command' to <META> <CTL> <Right Mouse Button>
+     ;;; in the keymap that is in force when you are running `dired'.
+     (define-key dired-mode-map '(meta control button3) 'my-command)
+
+\1f
+File: xemacs.info,  Node: Key Bindings Using Strings,  Prev: Programmatic Rebinding,  Up: Rebinding
+
+Using Strings for Changing Key Bindings
+.......................................
+
+   For backward compatibility, you can still use strings to represent
+key sequences.  Thus you can use commands like the following:
+
+     ;;; Bind `end-of-line' to C-f
+     (global-set-key "\C-f" 'end-of-line)
+
+   Note, however, that in some cases you may be binding more than one
+key sequence by using a single command.  This situation can arise
+because in ASCII, `C-i' and <TAB> have the same representation.
+Therefore, when Emacs sees:
+
+     (global-set-key "\C-i" 'end-of-line)
+
+   it is unclear whether the user intended to bind `C-i' or <TAB>.  The
+solution XEmacs adopts is to bind both of these key sequences.
+
+   After binding a command to two key sequences with a form like:
+
+             (define-key global-map "\^X\^I" 'command-1)
+
+   it is possible to redefine only one of those sequences like so:
+
+             (define-key global-map [(control x) (control i)] 'command-2)
+             (define-key global-map [(control x) tab] 'command-3)
+
+   This applies only when running under a window system.  If you are
+talking to Emacs through an ASCII-only channel, you do not get any of
+these features.
+
+   Here is a table of pairs of key sequences that behave in a similar
+fashion:
+
+             control h      backspace
+             control l      clear
+             control i      tab
+             control m      return
+             control j      linefeed
+             control [      escape
+             control @      control space
+
+\1f
 File: xemacs.info,  Node: Disabling,  Prev: Rebinding,  Up: Key Bindings
 
 Disabling Commands
@@ -999,274 +1281,3 @@ Resource List
      resources are used to initialize the variables
      `x-pointer-foreground-color' and `x-pointer-background-color'.
 
-\1f
-File: xemacs.info,  Node: Face Resources,  Next: Widgets,  Prev: Resource List,  Up: X Resources
-
-Face Resources
---------------
-
-   The attributes of faces are also per-frame. They can be specified as:
-
-     Emacs.FACE_NAME.parameter: value
-
-or
-
-     Emacs*FRAME_NAME.FACE_NAME.parameter: value
-
-Faces accept the following resources:
-
-`attributeFont' (class `AttributeFont'): font-name
-     The font of this face.
-
-`attributeForeground' (class `AttributeForeground'): color-name
-`attributeBackground' (class `AttributeBackground'): color-name
-     The foreground and background colors of this face.
-
-`attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name
-     The name of an XBM file (or XPM file, if your version of Emacs
-     supports XPM), to use as a background stipple.
-
-`attributeUnderline' (class `AttributeUnderline'): boolean
-     Whether text in this face should be underlined.
-
-   All text is displayed in some face, defaulting to the face named
-`default'.  To set the font of normal text, use
-`Emacs*default.attributeFont'. To set it in the frame named `fred', use
-`Emacs*fred.default.attributeFont'.
-
-   These are the names of the predefined faces:
-
-`default'
-     Everything inherits from this.
-
-`bold'
-     If this is not specified in the resource database, Emacs tries to
-     find a bold version of the font of the default face.
-
-`italic'
-     If this is not specified in the resource database, Emacs tries to
-     find an italic version of the font of the default face.
-
-`bold-italic'
-     If this is not specified in the resource database, Emacs tries to
-     find a bold-italic version of the font of the default face.
-
-`modeline'
-     This is the face that the modeline is displayed in.  If not
-     specified in the resource database, it is determined from the
-     default face by reversing the foreground and background colors.
-
-`highlight'
-     This is the face that highlighted extents (for example, Info
-     cross-references and possible completions, when the mouse passes
-     over them) are displayed in.
-
-`left-margin'
-`right-margin'
-     These are the faces that the left and right annotation margins are
-     displayed in.
-
-`zmacs-region'
-     This is the face that mouse selections are displayed in.
-
-`isearch'
-     This is the face that the matched text being searched for is
-     displayed in.
-
-`info-node'
-     This is the face of info menu items.  If unspecified, it is copied
-     from `bold-italic'.
-
-`info-xref'
-     This is the face of info cross-references.  If unspecified, it is
-     copied from `bold'. (Note that, when the mouse passes over a
-     cross-reference, the cross-reference's face is determined from a
-     combination of the `info-xref' and `highlight' faces.)
-
-   Other packages might define their own faces; to see a list of all
-faces, use any of the interactive face-manipulation commands such as
-`set-face-font' and type `?' when you are prompted for the name of a
-face.
-
-   If the `bold', `italic', and `bold-italic' faces are not specified
-in the resource database, then XEmacs attempts to derive them from the
-font of the default face.  It can only succeed at this if you have
-specified the default font using the XLFD (X Logical Font Description)
-format, which looks like
-
-     *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
-
-If you use any of the other, less strict font name formats, some of
-which look like
-
-     lucidasanstypewriter-12
-     fixed
-     9x13
-
-   then XEmacs won't be able to guess the names of the bold and italic
-versions.  All X fonts can be referred to via XLFD-style names, so you
-should use those forms.  See the man pages for `X(1)', `xlsfonts(1)',
-and `xfontsel(1)'.
-
-\1f
-File: xemacs.info,  Node: Widgets,  Next: Menubar Resources,  Prev: Face Resources,  Up: X Resources
-
-Widgets
--------
-
-   There are several structural widgets between the terminal EmacsFrame
-widget and the top level ApplicationShell; the exact names and types of
-these widgets change from release to release (for example, they changed
-between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
-subject to further change in the future, so you should avoid mentioning
-them in your resource database.  The above-mentioned syntaxes should be
-forward- compatible.  As of 19.13, the exact widget hierarchy is as
-follows:
-
-     INVOCATION-NAME            "shell"       "container"     FRAME-NAME
-     x-emacs-application-class  "EmacsShell"  "EmacsManager"  "EmacsFrame"
-
-   where INVOCATION-NAME is the terminal component of the name of the
-XEmacs executable (usually `xemacs'), and `x-emacs-application-class'
-is generally `Emacs'.
-
-\1f
-File: xemacs.info,  Node: Menubar Resources,  Prev: Widgets,  Up: X Resources
-
-Menubar Resources
------------------
-
-   As the menubar is implemented as a widget which is not a part of
-XEmacs proper, it does not use the face mechanism for specifying fonts
-and colors: It uses whatever resources are appropriate to the type of
-widget which is used to implement it.
-
-   If Emacs was compiled to use only the Lucid Motif-lookalike menu
-widgets, then one way to specify the font of the menubar would be
-
-     Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
-
-   If both the Lucid Motif-lookalike menu widgets and X Font Sets are
-configured to allow multilingual menubars, then one uses
-
-     *menubar*FontSet:       -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
-                             -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
-
-   That would specify fonts for a Japanese menubar.  Specifying only one
-XLFD is acceptable; specifying more than one for a given registry
-(language) is also allowed.  When X Font Sets are configured, some .font
-resources (eg, menubars) are ignored in favor of the corresponding
-.fontSet resources.
-
-   If the Motif library is being used, then one would have to use
-
-     Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
-
-   because the Motif library uses the `fontList' resource name instead
-of `font', which has subtly different semantics.
-
-   The same is true of the scrollbars: They accept whichever resources
-are appropriate for the toolkit in use.
-
-\1f
-File: xemacs.info,  Node: Quitting,  Next: Lossage,  Prev: Customization,  Up: Top
-
-Quitting and Aborting
-=====================
-
-`C-g'
-     Quit.  Cancel running or partially typed command.
-
-`C-]'
-     Abort innermost recursive editing level and cancel the command
-     which invoked it (`abort-recursive-edit').
-
-`M-x top-level'
-     Abort all recursive editing levels that are currently executing.
-
-`C-x u'
-     Cancel an already-executed command, usually (`undo').
-
-   There are two ways of cancelling commands which are not finished
-executing: "quitting" with `C-g', and "aborting" with `C-]' or `M-x
-top-level'.  Quitting is cancelling a partially typed command or one
-which is already running.  Aborting is getting out of a recursive
-editing level and cancelling the command that invoked the recursive
-edit.
-
-   Quitting with `C-g' is used for getting rid of a partially typed
-command or a numeric argument that you don't want.  It also stops a
-running command in the middle in a relatively safe way, so you can use
-it if you accidentally start executing a command that takes a long
-time.  In particular, it is safe to quit out of killing; either your
-text will ALL still be there, or it will ALL be in the kill ring (or
-maybe both).  Quitting an incremental search does special things
-documented under searching; in general, it may take two successive
-`C-g' characters to get out of a search.  `C-g' works by setting the
-variable `quit-flag' to `t' the instant `C-g' is typed; Emacs Lisp
-checks this variable frequently and quits if it is non-`nil'.  `C-g' is
-only actually executed as a command if it is typed while Emacs is
-waiting for input.
-
-   If you quit twice in a row before the first `C-g' is recognized, you
-activate the "emergency escape" feature and return to the shell.  *Note
-Emergency Escape::.
-
-   You can use `C-]' (`abort-recursive-edit') to get out of a recursive
-editing level and cancel the command which invoked it.  Quitting with
-`C-g' does not do this, and could not do this because it is used to
-cancel a partially typed command within the recursive editing level.
-Both operations are useful.  For example, if you are in the Emacs
-debugger (*note Lisp Debug::) and have typed `C-u 8' to enter a numeric
-argument, you can cancel that argument with `C-g' and remain in the
-debugger.
-
-   The command `M-x top-level' is equivalent to "enough" `C-]' commands
-to get you out of all the levels of recursive edits that you are in.
-`C-]' only gets you out one level at a time, but `M-x top-level' goes
-out all levels at once.  Both `C-]' and `M-x top-level' are like all
-other commands and unlike `C-g' in that they are effective only when
-Emacs is ready for a command.  `C-]' is an ordinary key and has its
-meaning only because of its binding in the keymap.  *Note Recursive
-Edit::.
-
-   `C-x u' (`undo') is not strictly speaking a way of cancelling a
-command, but you can think of it as cancelling a command already
-finished executing.  *Note Undo::.
-
-\1f
-File: xemacs.info,  Node: Lossage,  Next: Bugs,  Prev: Quitting,  Up: Top
-
-Dealing With Emacs Trouble
-==========================
-
-   This section describes various conditions in which Emacs fails to
-work, and how to recognize them and correct them.
-
-* Menu:
-
-* Stuck Recursive::    `[...]' in mode line around the parentheses.
-* Screen Garbled::     Garbage on the screen.
-* Text Garbled::       Garbage in the text.
-* Unasked-for Search:: Spontaneous entry to incremental search.
-* Emergency Escape::   Emergency escape---
-                        What to do if Emacs stops responding.
-* Total Frustration::  When you are at your wits' end.
-
-\1f
-File: xemacs.info,  Node: Stuck Recursive,  Next: Screen Garbled,  Prev: Lossage,  Up: Lossage
-
-Recursive Editing Levels
-------------------------
-
-   Recursive editing levels are important and useful features of Emacs,
-but they can seem like malfunctions to the user who does not understand
-them.
-
-   If the mode line has square brackets `[...]' around the parentheses
-that contain the names of the major and minor modes, you have entered a
-recursive editing level.  If you did not do this on purpose, or if you
-don't understand what that means, you should just get out of the
-recursive editing level.  To do so, type `M-x top-level'.  This is
-called getting back to top level.  *Note Recursive Edit::.
-
index 4192a79..ff8b3f6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,6 +30,277 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
+File: xemacs.info,  Node: Face Resources,  Next: Widgets,  Prev: Resource List,  Up: X Resources
+
+Face Resources
+--------------
+
+   The attributes of faces are also per-frame. They can be specified as:
+
+     Emacs.FACE_NAME.parameter: value
+
+or
+
+     Emacs*FRAME_NAME.FACE_NAME.parameter: value
+
+Faces accept the following resources:
+
+`attributeFont' (class `AttributeFont'): font-name
+     The font of this face.
+
+`attributeForeground' (class `AttributeForeground'): color-name
+`attributeBackground' (class `AttributeBackground'): color-name
+     The foreground and background colors of this face.
+
+`attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name
+     The name of an XBM file (or XPM file, if your version of Emacs
+     supports XPM), to use as a background stipple.
+
+`attributeUnderline' (class `AttributeUnderline'): boolean
+     Whether text in this face should be underlined.
+
+   All text is displayed in some face, defaulting to the face named
+`default'.  To set the font of normal text, use
+`Emacs*default.attributeFont'. To set it in the frame named `fred', use
+`Emacs*fred.default.attributeFont'.
+
+   These are the names of the predefined faces:
+
+`default'
+     Everything inherits from this.
+
+`bold'
+     If this is not specified in the resource database, Emacs tries to
+     find a bold version of the font of the default face.
+
+`italic'
+     If this is not specified in the resource database, Emacs tries to
+     find an italic version of the font of the default face.
+
+`bold-italic'
+     If this is not specified in the resource database, Emacs tries to
+     find a bold-italic version of the font of the default face.
+
+`modeline'
+     This is the face that the modeline is displayed in.  If not
+     specified in the resource database, it is determined from the
+     default face by reversing the foreground and background colors.
+
+`highlight'
+     This is the face that highlighted extents (for example, Info
+     cross-references and possible completions, when the mouse passes
+     over them) are displayed in.
+
+`left-margin'
+`right-margin'
+     These are the faces that the left and right annotation margins are
+     displayed in.
+
+`zmacs-region'
+     This is the face that mouse selections are displayed in.
+
+`isearch'
+     This is the face that the matched text being searched for is
+     displayed in.
+
+`info-node'
+     This is the face of info menu items.  If unspecified, it is copied
+     from `bold-italic'.
+
+`info-xref'
+     This is the face of info cross-references.  If unspecified, it is
+     copied from `bold'. (Note that, when the mouse passes over a
+     cross-reference, the cross-reference's face is determined from a
+     combination of the `info-xref' and `highlight' faces.)
+
+   Other packages might define their own faces; to see a list of all
+faces, use any of the interactive face-manipulation commands such as
+`set-face-font' and type `?' when you are prompted for the name of a
+face.
+
+   If the `bold', `italic', and `bold-italic' faces are not specified
+in the resource database, then XEmacs attempts to derive them from the
+font of the default face.  It can only succeed at this if you have
+specified the default font using the XLFD (X Logical Font Description)
+format, which looks like
+
+     *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
+
+If you use any of the other, less strict font name formats, some of
+which look like
+
+     lucidasanstypewriter-12
+     fixed
+     9x13
+
+   then XEmacs won't be able to guess the names of the bold and italic
+versions.  All X fonts can be referred to via XLFD-style names, so you
+should use those forms.  See the man pages for `X(1)', `xlsfonts(1)',
+and `xfontsel(1)'.
+
+\1f
+File: xemacs.info,  Node: Widgets,  Next: Menubar Resources,  Prev: Face Resources,  Up: X Resources
+
+Widgets
+-------
+
+   There are several structural widgets between the terminal EmacsFrame
+widget and the top level ApplicationShell; the exact names and types of
+these widgets change from release to release (for example, they changed
+between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
+subject to further change in the future, so you should avoid mentioning
+them in your resource database.  The above-mentioned syntaxes should be
+forward- compatible.  As of 19.13, the exact widget hierarchy is as
+follows:
+
+     INVOCATION-NAME            "shell"       "container"     FRAME-NAME
+     x-emacs-application-class  "EmacsShell"  "EmacsManager"  "EmacsFrame"
+
+   where INVOCATION-NAME is the terminal component of the name of the
+XEmacs executable (usually `xemacs'), and `x-emacs-application-class'
+is generally `Emacs'.
+
+\1f
+File: xemacs.info,  Node: Menubar Resources,  Prev: Widgets,  Up: X Resources
+
+Menubar Resources
+-----------------
+
+   As the menubar is implemented as a widget which is not a part of
+XEmacs proper, it does not use the face mechanism for specifying fonts
+and colors: It uses whatever resources are appropriate to the type of
+widget which is used to implement it.
+
+   If Emacs was compiled to use only the Lucid Motif-lookalike menu
+widgets, then one way to specify the font of the menubar would be
+
+     Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
+
+   If both the Lucid Motif-lookalike menu widgets and X Font Sets are
+configured to allow multilingual menubars, then one uses
+
+     *menubar*FontSet:       -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
+                             -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
+
+   That would specify fonts for a Japanese menubar.  Specifying only one
+XLFD is acceptable; specifying more than one for a given registry
+(language) is also allowed.  When X Font Sets are configured, some .font
+resources (eg, menubars) are ignored in favor of the corresponding
+.fontSet resources.
+
+   If the Motif library is being used, then one would have to use
+
+     Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
+
+   because the Motif library uses the `fontList' resource name instead
+of `font', which has subtly different semantics.
+
+   The same is true of the scrollbars: They accept whichever resources
+are appropriate for the toolkit in use.
+
+\1f
+File: xemacs.info,  Node: Quitting,  Next: Lossage,  Prev: Customization,  Up: Top
+
+Quitting and Aborting
+=====================
+
+`C-g'
+     Quit.  Cancel running or partially typed command.
+
+`C-]'
+     Abort innermost recursive editing level and cancel the command
+     which invoked it (`abort-recursive-edit').
+
+`M-x top-level'
+     Abort all recursive editing levels that are currently executing.
+
+`C-x u'
+     Cancel an already-executed command, usually (`undo').
+
+   There are two ways of cancelling commands which are not finished
+executing: "quitting" with `C-g', and "aborting" with `C-]' or `M-x
+top-level'.  Quitting is cancelling a partially typed command or one
+which is already running.  Aborting is getting out of a recursive
+editing level and cancelling the command that invoked the recursive
+edit.
+
+   Quitting with `C-g' is used for getting rid of a partially typed
+command or a numeric argument that you don't want.  It also stops a
+running command in the middle in a relatively safe way, so you can use
+it if you accidentally start executing a command that takes a long
+time.  In particular, it is safe to quit out of killing; either your
+text will ALL still be there, or it will ALL be in the kill ring (or
+maybe both).  Quitting an incremental search does special things
+documented under searching; in general, it may take two successive
+`C-g' characters to get out of a search.  `C-g' works by setting the
+variable `quit-flag' to `t' the instant `C-g' is typed; Emacs Lisp
+checks this variable frequently and quits if it is non-`nil'.  `C-g' is
+only actually executed as a command if it is typed while Emacs is
+waiting for input.
+
+   If you quit twice in a row before the first `C-g' is recognized, you
+activate the "emergency escape" feature and return to the shell.  *Note
+Emergency Escape::.
+
+   You can use `C-]' (`abort-recursive-edit') to get out of a recursive
+editing level and cancel the command which invoked it.  Quitting with
+`C-g' does not do this, and could not do this because it is used to
+cancel a partially typed command within the recursive editing level.
+Both operations are useful.  For example, if you are in the Emacs
+debugger (*note Lisp Debug::) and have typed `C-u 8' to enter a numeric
+argument, you can cancel that argument with `C-g' and remain in the
+debugger.
+
+   The command `M-x top-level' is equivalent to "enough" `C-]' commands
+to get you out of all the levels of recursive edits that you are in.
+`C-]' only gets you out one level at a time, but `M-x top-level' goes
+out all levels at once.  Both `C-]' and `M-x top-level' are like all
+other commands and unlike `C-g' in that they are effective only when
+Emacs is ready for a command.  `C-]' is an ordinary key and has its
+meaning only because of its binding in the keymap.  *Note Recursive
+Edit::.
+
+   `C-x u' (`undo') is not strictly speaking a way of cancelling a
+command, but you can think of it as cancelling a command already
+finished executing.  *Note Undo::.
+
+\1f
+File: xemacs.info,  Node: Lossage,  Next: Bugs,  Prev: Quitting,  Up: Top
+
+Dealing With Emacs Trouble
+==========================
+
+   This section describes various conditions in which Emacs fails to
+work, and how to recognize them and correct them.
+
+* Menu:
+
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if Emacs stops responding.
+* Total Frustration::  When you are at your wits' end.
+
+\1f
+File: xemacs.info,  Node: Stuck Recursive,  Next: Screen Garbled,  Prev: Lossage,  Up: Lossage
+
+Recursive Editing Levels
+------------------------
+
+   Recursive editing levels are important and useful features of Emacs,
+but they can seem like malfunctions to the user who does not understand
+them.
+
+   If the mode line has square brackets `[...]' around the parentheses
+that contain the names of the major and minor modes, you have entered a
+recursive editing level.  If you did not do this on purpose, or if you
+don't understand what that means, you should just get out of the
+recursive editing level.  To do so, type `M-x top-level'.  This is
+called getting back to top level.  *Note Recursive Edit::.
+
+\1f
 File: xemacs.info,  Node: Screen Garbled,  Next: Text Garbled,  Prev: Stuck Recursive,  Up: Lossage
 
 Garbage on the Screen
@@ -333,785 +604,3 @@ net. You should also check the `FAQ' in `/pub/xemacs' on our anonymous
 FTP server. It provides some introductory information and help for
 initial configuration problems.
 
-\1f
-File: xemacs.info,  Node: Glossary,  Next: Manifesto,  Prev: Intro,  Up: Top
-
-Glossary
-********
-
-Abbrev
-     An abbrev is a text string which expands into a different text
-     string when present in the buffer.  For example, you might define
-     a short word as an abbrev for a long phrase that you want to insert
-     frequently.  *Note Abbrevs::.
-
-Aborting
-     Aborting means getting out of a recursive edit (q.v.).  You can use
-     the commands `C-]' and `M-x top-level' for this.  *Note Quitting::.
-
-Auto Fill mode
-     Auto Fill mode is a minor mode in which text you insert is
-     automatically broken into lines of fixed width.  *Note Filling::.
-
-Auto Saving
-     Auto saving means that Emacs automatically stores the contents of
-     an Emacs buffer in a specially-named file so the information will
-     not be lost if the buffer is lost due to a system error or user
-     error.  *Note Auto Save::.
-
-Backup File
-     A backup file records the contents that a file had before the
-     current editing session.  Emacs creates backup files automatically
-     to help you track down or cancel changes you later regret.  *Note
-     Backup::.
-
-Balance Parentheses
-     Emacs can balance parentheses manually or automatically.  Manual
-     balancing is done by the commands to move over balanced expressions
-     (*note Lists::).  Automatic balancing is done by blinking the
-     parenthesis that matches one just inserted (*note Matching Parens:
-     Matching.).
-
-Bind
-     To bind a key is to change its binding (q.v.).  *Note Rebinding::.
-
-Binding
-     A key gets its meaning in Emacs by having a binding which is a
-     command (q.v.), a Lisp function that is run when the key is typed.
-     *Note Binding: Commands.  Customization often involves rebinding a
-     character to a different command function.  The bindings of all
-     keys are recorded in the keymaps (q.v.).  *Note Keymaps::.
-
-Blank Lines
-     Blank lines are lines that contain only whitespace.  Emacs has
-     several commands for operating on the blank lines in a buffer.
-
-Buffer
-     The buffer is the basic editing unit; one buffer corresponds to one
-     piece of text being edited.  You can have several buffers, but at
-     any time you are editing only one, the `selected' buffer, though
-     several buffers can be visible when you are using multiple
-     windows.  *Note Buffers::.
-
-Buffer Selection History
-     Emacs keeps a buffer selection history which records how recently
-     each Emacs buffer was selected.  Emacs uses this list when
-     choosing a buffer to select.  *Note Buffers::.
-
-C-
-     `C' in the name of a character is an abbreviation for Control.
-     *Note C-: Keystrokes.
-
-C-M-
-     `C-M-' in the name of a character is an abbreviation for
-     Control-Meta.  *Note C-M-: Keystrokes.
-
-Case Conversion
-     Case conversion means changing text from upper case to lower case
-     or vice versa.  *Note Case::, for the commands for case conversion.
-
-Characters
-     Characters form the contents of an Emacs buffer; also, Emacs
-     commands are invoked by keys (q.v.), which are sequences of one or
-     more characters.  *Note Keystrokes::.
-
-Command
-     A command is a Lisp function specially defined to be able to serve
-     as a key binding in Emacs.  When you type a key (q.v.), Emacs
-     looks up its binding (q.v.) in the relevant keymaps (q.v.) to find
-     the command to run.  *Note Commands::.
-
-Command Name
-     A command name is the name of a Lisp symbol which is a command
-     (*note Commands::).  You can invoke any command by its name using
-     `M-x' (*note M-x::).
-
-Comments
-     A comment is text in a program which is intended only for the
-     people reading the program, and is marked specially so that it
-     will be ignored when the program is loaded or compiled.  Emacs
-     offers special commands for creating, aligning, and killing
-     comments.  *Note Comments::.
-
-Compilation
-     Compilation is the process of creating an executable program from
-     source code.  Emacs has commands for compiling files of Emacs Lisp
-     code (*note Lisp Libraries::) and programs in C and other languages
-     (*note Compilation::).
-
-Complete Key
-     A complete key is a character or sequence of characters which,
-     when typed by the user, fully specifies one action to be performed
-     by Emacs.  For example, `X' and `Control-f' and `Control-x m' are
-     keys.  Keys derive their meanings from being bound (q.v.) to
-     commands (q.v.).  Thus, `X' is conventionally bound to a command
-     to insert `X' in the buffer; `C-x m' is conventionally bound to a
-     command to begin composing a mail message. *Note Keystrokes::.
-
-Completion
-     When Emacs automatically fills an abbreviation for a name into the
-     entire name, that process is called completion.  Completion is
-     done for minibuffer (q.v.) arguments when the set of possible
-     valid inputs is known; for example, on command names, buffer
-     names, and file names.  Completion occurs when you type <TAB>,
-     <SPC>, or <RET>.  *Note Completion::.
-
-Continuation Line
-     When a line of text is longer than the width of the frame, it
-     takes up more than one screen line when displayed.  We say that the
-     text line is continued, and all screen lines used for it after the
-     first are called continuation lines.  *Note Continuation: Basic.
-
-Control-Character
-     ASCII characters with octal codes 0 through 037, and also code
-     0177, do not have graphic images assigned to them.  These are the
-     control characters.  Any control character can be typed by holding
-     down the <CTRL> key and typing some other character; some have
-     special keys on the keyboard.  <RET>, <TAB>, <ESC>, <LFD>, and
-     <DEL> are all control characters.  *Note Keystrokes::.
-
-Copyleft
-     A copyleft is a notice giving the public legal permission to
-     redistribute a program or other work of art.  Copylefts are used
-     by leftists to enrich the public just as copyrights are used by
-     rightists to gain power over the public.
-
-Current Buffer
-     The current buffer in Emacs is the Emacs buffer on which most
-     editing commands operate.  You can select any Emacs buffer as the
-     current one.  *Note Buffers::.
-
-Current Line
-     The line point is on (*note Point::).
-
-Current Paragraph
-     The paragraph that point is in.  If point is between paragraphs,
-     the current paragraph is the one that follows point.  *Note
-     Paragraphs::.
-
-Current Defun
-     The defun (q.v.) that point is in.  If point is between defuns, the
-     current defun is the one that follows point.  *Note Defuns::.
-
-Cursor
-     The cursor is the rectangle on the screen which indicates the
-     position called point (q.v.) at which insertion and deletion takes
-     place.  The cursor is on or under the character that follows
-     point.  Often people speak of `the cursor' when, strictly
-     speaking, they mean `point'.  *Note Cursor: Basic.
-
-Customization
-     Customization is making minor changes in the way Emacs works.  It
-     is often done by setting variables (*note Variables::) or by
-     rebinding keys (*note Keymaps::).
-
-Default Argument
-     The default for an argument is the value that is used if you do not
-     specify one.  When Emacs prompts you in the minibuffer for an
-     argument, the default argument is used if you just type <RET>.
-     *Note Minibuffer::.
-
-Default Directory
-     When you specify a file name that does not start with `/' or `~',
-     it is interpreted relative to the current buffer's default
-     directory.  *Note Default Directory: Minibuffer File.
-
-Defun
-     A defun is a list at the top level of parenthesis or bracket
-     structure in a program.  It is so named because most such lists in
-     Lisp programs are calls to the Lisp function `defun'.  *Note
-     Defuns::.
-
-<DEL>
-     The <DEL> character runs the command that deletes one character of
-     text.  *Note DEL: Basic.
-
-Deletion
-     Deleting text means erasing it without saving it.  Emacs deletes
-     text only when it is expected not to be worth saving (all
-     whitespace, or only one character).  The alternative is killing
-     (q.v.).  *Note Deletion: Killing.
-
-Deletion of Files
-     Deleting a file means removing it from the file system.  *Note
-     Misc File Ops::.
-
-Deletion of Messages
-     Deleting a message means flagging it to be eliminated from your
-     mail file.  Until the mail file is expunged, you can undo this by
-     undeleting the message.
-
-Deletion of Frames
-     When working under the multi-frame X-based version of XEmacs, you
-     can delete individual frames using the Close menu item from the
-     File menu.
-
-Deletion of Windows
-     When you delete a subwindow of an Emacs frame, you eliminate it
-     from the frame.  Other windows expand to use up the space.  The
-     deleted window can never come back, but no actual text is lost.
-     *Note Windows::.
-
-Directory
-     Files in the Unix file system are grouped into file directories.
-     *Note Directories: ListDir.
-
-Dired
-     Dired is the Emacs facility that displays the contents of a file
-     directory and allows you to "edit the directory", performing
-     operations on the files in the directory.  *Note Dired::.
-
-Disabled Command
-     A disabled command is one that you may not run without special
-     confirmation.  Commands are usually disabled because they are
-     confusing for beginning users.  *Note Disabling::.
-
-Dribble File
-     A file into which Emacs writes all the characters that the user
-     types on the keyboard.  Dribble files are used to make a record for
-     debugging Emacs bugs.  Emacs does not make a dribble file unless
-     you tell it to.  *Note Bugs::.
-
-Echo Area
-     The area at the bottom of the Emacs frame which is used for
-     echoing the arguments to commands, for asking questions, and for
-     printing brief messages (including error messages).  *Note Echo
-     Area::.
-
-Echoing
-     Echoing refers to acknowledging the receipt of commands by
-     displaying them (in the echo area).  Emacs never echoes
-     single-character keys; longer keys echo only if you pause while
-     typing them.
-
-Error
-     An error occurs when an Emacs command cannot execute in the current
-     circumstances.  When an error occurs, execution of the command
-     stops (unless the command has been programmed to do otherwise) and
-     Emacs reports the error by printing an error message (q.v.).
-     Type-ahead is discarded.  Then Emacs is ready to read another
-     editing command.
-
-Error Messages
-     Error messages are single lines of output printed by Emacs when the
-     user asks for something impossible to do (such as killing text
-     forward when point is at the end of the buffer).  They appear in
-     the echo area, accompanied by a beep.
-
-<ESC>
-     <ESC> is a character used as a prefix for typing Meta characters on
-     keyboards lacking a <META> key.  Unlike the <META> key (which,
-     like the <SHIFT> key, is held down while another character is
-     typed), the <ESC> key is pressed and released, and applies to the
-     next character typed.
-
-Fill Prefix
-     The fill prefix is a string that Emacs enters at the beginning of
-     each line when it performs filling.  It is not regarded as part of
-     the text to be filled.  *Note Filling::.
-
-Filling
-     Filling text means moving text from line to line so that all the
-     lines are approximately the same length.  *Note Filling::.
-
-Frame
-     When running Emacs on a TTY terminal, "frame" means the terminal's
-     screen.  When running Emacs under X, you can have multiple frames,
-     each corresponding to a top-level X window and each looking like
-     the screen on a TTY.  Each frame contains one or more
-     non-overlapping Emacs windows (possibly with associated
-     scrollbars, under X), an echo area, and (under X) possibly a
-     menubar, toolbar, and/or gutter.
-
-Global
-     Global means `independent of the current environment; in effect
-     throughout Emacs'.  It is the opposite of local (q.v.).  Examples
-     of the use of `global' appear below.
-
-Global Abbrev
-     A global definition of an abbrev (q.v.) is effective in all major
-     modes that do not have local (q.v.) definitions for the same
-     abbrev.  *Note Abbrevs::.
-
-Global Keymap
-     The global keymap (q.v.) contains key bindings that are in effect
-     unless local key bindings in a major mode's local keymap (q.v.)
-     override them.*Note Keymaps::.
-
-Global Substitution
-     Global substitution means replacing each occurrence of one string
-     by another string through a large amount of text.  *Note Replace::.
-
-Global Variable
-     The global value of a variable (q.v.) takes effect in all buffers
-     that do not have their own local (q.v.) values for the variable.
-     *Note Variables::.
-
-Graphic Character
-     Graphic characters are those assigned pictorial images rather than
-     just names.  All the non-Meta (q.v.) characters except for the
-     Control (q.v.) character are graphic characters.  These include
-     letters, digits, punctuation, and spaces; they do not include
-     <RET> or <ESC>.  In Emacs, typing a graphic character inserts that
-     character (in ordinary editing modes).  *Note Basic Editing: Basic.
-
-Grinding
-     Grinding means adjusting the indentation in a program to fit the
-     nesting structure.  *Note Grinding: Indentation.
-
-Hardcopy
-     Hardcopy means printed output.  Emacs has commands for making
-     printed listings of text in Emacs buffers.  *Note Hardcopy::.
-
-<HELP>
-     You can type <HELP> at any time to ask what options you have, or
-     to ask what any command does.  <HELP> is really `Control-h'.
-     *Note Help::.
-
-Inbox
-     An inbox is a file in which mail is delivered by the operating
-     system.  Some mail handlers transfers mail from inboxes to mail
-     files (q.v.) in which the mail is then stored permanently or until
-     explicitly deleted.
-
-Indentation
-     Indentation means blank space at the beginning of a line.  Most
-     programming languages have conventions for using indentation to
-     illuminate the structure of the program, and Emacs has special
-     features to help you set up the correct indentation.  *Note
-     Indentation::.
-
-Insertion
-     Insertion means copying text into the buffer, either from the
-     keyboard or from some other place in Emacs.
-
-Justification
-     Justification means adding extra spaces to lines of text to make
-     them come exactly to a specified width.  *Note Justification:
-     Filling.
-
-Keyboard Macros
-     Keyboard macros are a way of defining new Emacs commands from
-     sequences of existing ones, with no need to write a Lisp program.
-     *Note Keyboard Macros::.
-
-Key
-     A key is a sequence of characters that, when input to Emacs,
-     specify or begin to specify a single action for Emacs to perform.
-     That is, the sequence is considered a single unit.  If the key is
-     enough to specify one action, it is a complete key (q.v.); if it
-     is less than enough, it is a prefix key (q.v.).  *Note
-     Keystrokes::.
-
-Keymap
-     The keymap is the data structure that records the bindings (q.v.)
-     of keys to the commands that they run.  For example, the keymap
-     binds the character `C-n' to the command function `next-line'.
-     *Note Keymaps::.
-
-Kill Ring
-     The kill ring is the place where all text you have killed recently
-     is saved.  You can re-insert any of the killed text still in the
-     ring; this is called yanking (q.v.).  *Note Yanking::.
-
-Killing
-     Killing means erasing text and saving it on the kill ring so it
-     can be yanked (q.v.) later.  Some other systems call this
-     "cutting."  Most Emacs commands to erase text do killing, as
-     opposed to deletion (q.v.).  *Note Killing::.
-
-Killing Jobs
-     Killing a job (such as, an invocation of Emacs) means making it
-     cease to exist.  Any data within it, if not saved in a file, is
-     lost.  *Note Exiting::.
-
-List
-     A list is, approximately, a text string beginning with an open
-     parenthesis and ending with the matching close parenthesis.  In C
-     mode and other non-Lisp modes, groupings surrounded by other kinds
-     of matched delimiters appropriate to the language, such as braces,
-     are also considered lists.  Emacs has special commands for many
-     operations on lists.  *Note Lists::.
-
-Local
-     Local means `in effect only in a particular context'; the relevant
-     kind of context is a particular function execution, a particular
-     buffer, or a particular major mode.  Local is the opposite of
-     `global' (q.v.).  Specific uses of `local' in Emacs terminology
-     appear below.
-
-Local Abbrev
-     A local abbrev definition is effective only if a particular major
-     mode is selected.  In that major mode, it overrides any global
-     definition for the same abbrev.  *Note Abbrevs::.
-
-Local Keymap
-     A local keymap is used in a particular major mode; the key bindings
-     (q.v.) in the current local keymap override global bindings of the
-     same keys.  *Note Keymaps::.
-
-Local Variable
-     A local value of a variable (q.v.) applies to only one buffer.
-     *Note Locals::.
-
-M-
-     `M-' in the name of a character is an abbreviation for <META>, one
-     of the modifier keys that can accompany any character.  *Note
-     Keystrokes::.
-
-M-C-
-     `M-C-' in the name of a character is an abbreviation for
-     Control-Meta; it means the same thing as `C-M-'.  If your terminal
-     lacks a real <META> key, you type a Control-Meta character by
-     typing <ESC> and then typing the corresponding Control character.
-     *Note C-M-: Keystrokes.
-
-M-x
-     `M-x' is the key which is used to call an Emacs command by name.
-     You use it to call commands that are not bound to keys.  *Note
-     M-x::.
-
-Mail
-     Mail means messages sent from one user to another through the
-     computer system, to be read at the recipient's convenience.  Emacs
-     has commands for composing and sending mail, and for reading and
-     editing the mail you have received.  *Note Sending Mail::.
-
-Major Mode
-     The major modes are a mutually exclusive set of options each of
-     which configures Emacs for editing a certain sort of text.
-     Ideally, each programming language has its own major mode.  *Note
-     Major Modes::.
-
-Mark
-     The mark points to a position in the text.  It specifies one end
-     of the region (q.v.), point being the other end.  Many commands
-     operate on the whole region, that is, all the text from point to
-     the mark.  *Note Mark::.
-
-Mark Ring
-     The mark ring is used to hold several recent previous locations of
-     the mark, just in case you want to move back to them.  *Note Mark
-     Ring::.
-
-Message
-     See `mail'.
-
-Meta
-     Meta is the name of a modifier bit which a command character may
-     have.  It is present in a character if the character is typed with
-     the <META> key held down.  Such characters are given names that
-     start with `Meta-'.  For example, `Meta-<' is typed by holding down
-     <META> and at the same time typing `<' (which itself is done, on
-     most terminals, by holding down <SHIFT> and typing `,').  *Note
-     Meta: Keystrokes.
-
-Meta Character
-     A Meta character is one whose character code includes the Meta bit.
-
-Minibuffer
-     The minibuffer is the window that Emacs displays inside the echo
-     area (q.v.) when it prompts you for arguments to commands.  *Note
-     Minibuffer::.
-
-Minor Mode
-     A minor mode is an optional feature of Emacs which can be switched
-     on or off independent of the major mode.  Each minor mode has a
-     command to turn it on or off.  *Note Minor Modes::.
-
-Mode Line
-     The mode line is the line at the bottom of each text window (q.v.),
-     which gives status information on the buffer displayed in that
-     window.  *Note Mode Line::.
-
-Modified Buffer
-     A buffer (q.v.) is modified if its text has been changed since the
-     last time the buffer was saved (or since it was created, if it has
-     never been saved).  *Note Saving::.
-
-Moving Text
-     Moving text means erasing it from one place and inserting it in
-     another.  This is done by killing (q.v.) and then yanking (q.v.).
-     *Note Killing::.
-
-Named Mark
-     A named mark is a register (q.v.) in its role of recording a
-     location in text so that you can move point to that location.
-     *Note Registers::.
-
-Narrowing
-     Narrowing means creating a restriction (q.v.) that limits editing
-     in the current buffer to only a part of the text in the buffer.
-     Text outside that part is inaccessible to the user until the
-     boundaries are widened again, but it is still there, and saving
-     the file saves the invisible text.  *Note Narrowing::.
-
-Newline
-     <LFD> characters in the buffer terminate lines of text and are
-     called newlines.  *Note Newline: Keystrokes.
-
-Numeric Argument
-     A numeric argument is a number, specified before a command, to
-     change the effect of the command.  Often the numeric argument
-     serves as a repeat count.  *Note Arguments::.
-
-Option
-     An option is a variable (q.v.) that allows you to customize Emacs
-     by giving it a new value.  *Note Variables::.
-
-Overwrite Mode
-     Overwrite mode is a minor mode.  When it is enabled, ordinary text
-     characters replace the existing text after point rather than
-     pushing it to the right.  *Note Minor Modes::.
-
-Page
-     A page is a unit of text, delimited by formfeed characters (ASCII
-     Control-L, code 014) coming at the beginning of a line.  Some Emacs
-     commands are provided for moving over and operating on pages.
-     *Note Pages::.
-
-Paragraphs
-     Paragraphs are the medium-size unit of English text.  There are
-     special Emacs commands for moving over and operating on paragraphs.
-     *Note Paragraphs::.
-
-Parsing
-     We say that Emacs parses words or expressions in the text being
-     edited.  Really, all it knows how to do is find the other end of a
-     word or expression.  *Note Syntax::.
-
-Point
-     Point is the place in the buffer at which insertion and deletion
-     occur.  Point is considered to be between two characters, not at
-     one character.  The terminal's cursor (q.v.) indicates the
-     location of point.  *Note Point: Basic.
-
-Prefix Key
-     A prefix key is a key (q.v.) whose sole function is to introduce a
-     set of multi-character keys.  `Control-x' is an example of a prefix
-     key; any two-character sequence starting with `C-x' is also a
-     legitimate key.  *Note Keystrokes::.
-
-Prompt
-     A prompt is text printed to ask the user for input.  Printing a
-     prompt is called prompting.  Emacs prompts always appear in the
-     echo area (q.v.).  One kind of prompting happens when the
-     minibuffer is used to read an argument (*note Minibuffer::); the
-     echoing which happens when you pause in the middle of typing a
-     multi-character key is also a kind of prompting (*note Echo
-     Area::).
-
-Quitting
-     Quitting means cancelling a partially typed command or a running
-     command, using `C-g'.  *Note Quitting::.
-
-Quoting
-     Quoting means depriving a character of its usual special
-     significance.  In Emacs this is usually done with `Control-q'.
-     What constitutes special significance depends on the context and
-     on convention.  For example, an "ordinary" character as an Emacs
-     command inserts itself; so in this context, a special character is
-     any character that does not normally insert itself (such as <DEL>,
-     for example), and quoting it makes it insert itself as if it were
-     not special.  Not all contexts allow quoting.  *Note Quoting:
-     Basic.
-
-Read-only Buffer
-     A read-only buffer is one whose text you are not allowed to change.
-     Normally Emacs makes buffers read-only when they contain text which
-     has a special significance to Emacs, such as Dired buffers.
-     Visiting a file that is write-protected also makes a read-only
-     buffer.  *Note Buffers::.
-
-Recursive Editing Level
-     A recursive editing level is a state in which part of the
-     execution of a command involves asking the user to edit some text.
-     This text may or may not be the same as the text to which the
-     command was applied.  The mode line indicates recursive editing
-     levels with square brackets (`[' and `]').  *Note Recursive Edit::.
-
-Redisplay
-     Redisplay is the process of correcting the image on the screen to
-     correspond to changes that have been made in the text being edited.
-     *Note Redisplay: Frame.
-
-Regexp
-     See `regular expression'.
-
-Region
-     The region is the text between point (q.v.) and the mark (q.v.).
-     Many commands operate on the text of the region.  *Note Region:
-     Mark.
-
-Registers
-     Registers are named slots in which text or buffer positions or
-     rectangles can be saved for later use.  *Note Registers::.
-
-Regular Expression
-     A regular expression is a pattern that can match various text
-     strings; for example, `l[0-9]+' matches `l' followed by one or more
-     digits.  *Note Regexps::.
-
-Replacement
-     See `global substitution'.
-
-Restriction
-     A buffer's restriction is the amount of text, at the beginning or
-     the end of the buffer, that is temporarily invisible and
-     inaccessible.  Giving a buffer a nonzero amount of restriction is
-     called narrowing (q.v.).  *Note Narrowing::.
-
-<RET>
-     <RET> is the character than runs the command to insert a newline
-     into the text.  It is also used to terminate most arguments read
-     in the minibuffer (q.v.).  *Note Return: Keystrokes.
-
-Saving
-     Saving a buffer means copying its text into the file that was
-     visited (q.v.) in that buffer.  To actually change a file you have
-     edited in Emacs, you have to save it.  *Note Saving::.
-
-Scrolling
-     Scrolling means shifting the text in the Emacs window to make a
-     different part of the buffer visible.  *Note Scrolling: Display.
-
-Searching
-     Searching means moving point to the next occurrence of a specified
-     string.  *Note Search::.
-
-Selecting
-     Selecting a buffer means making it the current (q.v.) buffer.
-     *Note Selecting: Buffers.
-
-Self-documentation
-     Self-documentation is the feature of Emacs which can tell you what
-     any command does, or can give you a list of all commands related
-     to a topic you specify.  You ask for self-documentation with the
-     help character, `C-h'.  *Note Help::.
-
-Sentences
-     Emacs has commands for moving by or killing by sentences.  *Note
-     Sentences::.
-
-Sexp
-     An sexp (short for `s-expression,' itself short for `symbolic
-     expression') is the basic syntactic unit of Lisp in its textual
-     form: either a list, or Lisp atom.  Many Emacs commands operate on
-     sexps.  The term `sexp' is generalized to languages other than
-     Lisp to mean a syntactically recognizable expression.  *Note
-     Sexps: Lists.
-
-Simultaneous Editing
-     Simultaneous editing means two users modifying the same file at
-     once.  If simultaneous editing is not detected, you may lose your
-     work.  Emacs detects all cases of simultaneous editing and warns
-     the user to investigate them.  *Note Simultaneous Editing:
-     Interlocking.
-
-String
-     A string is a kind of Lisp data object which contains a sequence of
-     characters.  Many Emacs variables are intended to have strings as
-     values.  The Lisp syntax for a string consists of the characters in
-     the string with a `"' before and another `"' after. Write a `"'
-     that is part of the string as `\"' and a `\' that is part of the
-     string as `\\'.  You can include all other characters, including
-     newline, just by writing them inside the string. You can also
-     include escape sequences as in C, such as `\n' for newline or
-     `\241' using an octal character code.
-
-String Substitution
-     See `global substitution'.
-
-Syntax Table
-     The syntax table tells Emacs which characters are part of a word,
-     which characters balance each other like parentheses, etc.  *Note
-     Syntax::.
-
-Tag Table
-     A tag table is a file that serves as an index to the function
-     definitions in one or more other files.  *Note Tags::.
-
-Termscript File
-     A termscript file contains a record of all characters Emacs sent to
-     the terminal.  It is used for tracking down bugs in Emacs
-     redisplay.  Emacs does not make a termscript file unless
-     explicitly instructed to do so.  *Note Bugs::.
-
-Text
-     Text has two meanings (*note Text::):
-
-        * Data consisting of a sequence of characters, as opposed to
-          binary numbers, images, graphics commands, executable
-          programs, and the like.  The contents of an Emacs buffer are
-          always text in this sense.
-
-        * Data consisting of written human language, as opposed to
-          programs, or something that follows the stylistic conventions
-          of human language.
-
-Top Level
-     Top level is the normal state of Emacs, in which you are editing
-     the text of the file you have visited.  You are at top level
-     whenever you are not in a recursive editing level (q.v.) or the
-     minibuffer (q.v.), and not in the middle of a command.  You can
-     get back to top level by aborting (q.v.) and quitting (q.v.).
-     *Note Quitting::.
-
-Transposition
-     Transposing two units of text means putting each one into the place
-     formerly occupied by the other.  There are Emacs commands to
-     transpose two adjacent characters, words, sexps (q.v.), or lines
-     (*note Transpose::).
-
-Truncation
-     Truncating text lines in the display means leaving out any text on
-     a line that does not fit within the right margin of the window
-     displaying it.  See also `continuation line'.  *Note Truncation:
-     Basic.
-
-Undoing
-     Undoing means making your previous editing go in reverse, bringing
-     back the text that existed earlier in the editing session.  *Note
-     Undo::.
-
-Variable
-     A variable is Lisp object that can store an arbitrary value.
-     Emacs uses some variables for internal purposes, and has others
-     (known as `options' (q.v.)) you can set to control the behavior of
-     Emacs.  The variables used in Emacs that you are likely to be
-     interested in are listed in the Variables Index of this manual.
-     *Note Variables::, for information on variables.
-
-Visiting
-     Visiting a file means loading its contents into a buffer (q.v.)
-     where they can be edited.  *Note Visiting::.
-
-Whitespace
-     Whitespace is any run of consecutive formatting characters (spaces,
-     tabs, newlines, and backspaces).
-
-Widening
-     Widening is removing any restriction (q.v.) on the current buffer;
-     it is the opposite of narrowing (q.v.).  *Note Narrowing::.
-
-Window
-     Emacs divides the frame into one or more windows, each of which can
-     display the contents of one buffer (q.v.) at any time.  *Note
-     Frame::, for basic information on how Emacs uses the frame.  *Note
-     Windows::, for commands to control the use of windows. Note that if
-     you are running Emacs under X, terminology can be confusing: Each
-     Emacs frame occupies a separate X window and can, in turn, be
-     divided into different subwindows.
-
-Word Abbrev
-     Synonymous with `abbrev'.
-
-Word Search
-     Word search is searching for a sequence of words, considering the
-     punctuation between them as insignificant.  *Note Word Search::.
-
-Yanking
-     Yanking means reinserting text previously killed.  It can be used
-     to undo a mistaken kill, or for copying or moving text.  Some other
-     systems call this "pasting".  *Note Yanking::.
-
index f2754c1..466cf65 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9ce962e..a3b119f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,954 +30,784 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Manifesto,  Next: Key Index,  Prev: Glossary,  Up: Top
-
-The GNU Manifesto
-*****************
-
-What's GNU?  GNU's Not Unix!
-============================
-
-   GNU, which stands for GNU's Not Unix, is the name for the complete
-Unix-compatible software system which I am writing so that I can give it
-away free to everyone who can use it.  Several other volunteers are
-helping me.  Contributions of time, money, programs, and equipment are
-greatly needed.
-
-   So far we have an Emacs text editor with Lisp for writing editor
-commands, a source level debugger, a yacc-compatible parser generator,
-a linker, and around 35 utilities.  A shell (command interpreter) is
-nearly completed.  A new portable optimizing C compiler has compiled
-itself and may be released this year.  An initial kernel exists, but
-many more features are needed to emulate Unix.  When the kernel and
-compiler are finished, it will be possible to distribute a GNU system
-suitable for program development.  We will use TeX as our text
-formatter, but an nroff is being worked on.  We will use the free,
-portable X window system as well.  After this we will add a portable
-Common Lisp, an Empire game, a spreadsheet, and hundreds of other
-things, plus online documentation.  We hope to supply, eventually,
-everything useful that normally comes with a Unix system, and more.
-
-   GNU will be able to run Unix programs, but will not be identical to
-Unix.  We will make all improvements that are convenient, based on our
-experience with other operating systems.  In particular, we plan to
-have longer filenames, file version numbers, a crashproof file system,
-filename completion perhaps, terminal-independent display support, and
-perhaps eventually a Lisp-based window system through which several
-Lisp programs and ordinary Unix programs can share a screen.  Both C
-and Lisp will be available as system programming languages.  We will
-try to support UUCP, MIT Chaosnet, and Internet protocols for
-communication.
-
-   GNU is aimed initially at machines in the 68000/16000 class with
-virtual memory, because they are the easiest machines to make it run
-on.  The extra effort to make it run on smaller machines will be left
-to someone who wants to use it on them.
-
-   To avoid horrible confusion, please pronounce the `G' in the word
-`GNU' when it is the name of this project.
-
-Why I Must Write GNU
-====================
-
-   I consider that the golden rule requires that if I like a program I
-must share it with other people who like it.  Software sellers want to
-divide the users and conquer them, making each user agree not to share
-with others.  I refuse to break solidarity with other users in this
-way.  I cannot in good conscience sign a nondisclosure agreement or a
-software license agreement.  For years I worked within the Artificial
-Intelligence Lab to resist such tendencies and other inhospitalities,
-but eventually they had gone too far: I could not remain in an
-institution where such things are done for me against my will.
-
-   So that I can continue to use computers without dishonor, I have
-decided to put together a sufficient body of free software so that I
-will be able to get along without any software that is not free.  I
-have resigned from the AI lab to deny MIT any legal excuse to prevent
-me from giving GNU away.
-
-Why GNU Will Be Compatible With Unix
-====================================
-
-   Unix is not my ideal system, but it is not too bad.  The essential
-features of Unix seem to be good ones, and I think I can fill in what
-Unix lacks without spoiling them.  And a system compatible with Unix
-would be convenient for many other people to adopt.
-
-How GNU Will Be Available
-=========================
-
-   GNU is not in the public domain.  Everyone will be permitted to
-modify and redistribute GNU, but no distributor will be allowed to
-restrict its further redistribution.  That is to say, proprietary
-modifications will not be allowed.  I want to make sure that all
-versions of GNU remain free.
-
-Why Many Other Programmers Want to Help
-=======================================
-
-   I have found many other programmers who are excited about GNU and
-want to help.
-
-   Many programmers are unhappy about the commercialization of system
-software.  It may enable them to make more money, but it requires them
-to feel in conflict with other programmers in general rather than feel
-as comrades.  The fundamental act of friendship among programmers is the
-sharing of programs; marketing arrangements now typically used
-essentially forbid programmers to treat others as friends.  The
-purchaser of software must choose between friendship and obeying the
-law.  Naturally, many decide that friendship is more important.  But
-those who believe in law often do not feel at ease with either choice.
-They become cynical and think that programming is just a way of making
-money.
-
-   By working on and using GNU rather than proprietary programs, we can
-be hospitable to everyone and obey the law.  In addition, GNU serves as
-an example to inspire and a banner to rally others to join us in
-sharing.  This can give us a feeling of harmony which is impossible if
-we use software that is not free.  For about half the programmers I
-talk to, this is an important happiness that money cannot replace.
-
-How You Can Contribute
-======================
-
-   I am asking computer manufacturers for donations of machines and
-money.  I'm asking individuals for donations of programs and work.
-
-   One consequence you can expect if you donate machines is that GNU
-will run on them at an early date.  The machines should be complete,
-ready-to-use systems, approved for use in a residential area, and not
-in need of sophisticated cooling or power.
-
-   I have found very many programmers eager to contribute part-time
-work for GNU.  For most projects, such part-time distributed work would
-be very hard to coordinate; the independently-written parts would not
-work together.  But for the particular task of replacing Unix, this
-problem is absent.  A complete Unix system contains hundreds of utility
-programs, each of which is documented separately.  Most interface
-specifications are fixed by Unix compatibility.  If each contributor
-can write a compatible replacement for a single Unix utility, and make
-it work properly in place of the original on a Unix system, then these
-utilities will work right when put together.  Even allowing for Murphy
-to create a few unexpected problems, assembling these components will
-be a feasible task.  (The kernel will require closer communication and
-will be worked on by a small, tight group.)
-
-   If I get donations of money, I may be able to hire a few people full
-or part time.  The salary won't be high by programmers' standards, but
-I'm looking for people for whom building community spirit is as
-important as making money.  I view this as a way of enabling dedicated
-people to devote their full energies to working on GNU by sparing them
-the need to make a living in another way.
-
-Why All Computer Users Will Benefit
-===================================
-
-   Once GNU is written, everyone will be able to obtain good system
-software free, just like air.
-
-   This means much more than just saving everyone the price of a Unix
-license.  It means that much wasteful duplication of system programming
-effort will be avoided.  This effort can go instead into advancing the
-state of the art.
-
-   Complete system sources will be available to everyone.  As a result,
-a user who needs changes in the system will always be free to make them
-himself, or hire any available programmer or company to make them for
-him.  Users will no longer be at the mercy of one programmer or company
-which owns the sources and is in sole position to make changes.
-
-   Schools will be able to provide a much more educational environment
-by encouraging all students to study and improve the system code.
-Harvard's computer lab used to have the policy that no program could be
-installed on the system if its sources were not on public display, and
-upheld it by actually refusing to install certain programs.  I was very
-much inspired by this.
-
-   Finally, the overhead of considering who owns the system software
-and what one is or is not entitled to do with it will be lifted.
-
-   Arrangements to make people pay for using a program, including
-licensing of copies, always incur a tremendous cost to society through
-the cumbersome mechanisms necessary to figure out how much (that is,
-which programs) a person must pay for.  And only a police state can
-force everyone to obey them.  Consider a space station where air must
-be manufactured at great cost: charging each breather per liter of air
-may be fair, but wearing the metered gas mask all day and all night is
-intolerable even if everyone can afford to pay the air bill.  And the
-TV cameras everywhere to see if you ever take the mask off are
-outrageous.  It's better to support the air plant with a head tax and
-chuck the masks.
-
-   Copying all or parts of a program is as natural to a programmer as
-breathing, and as productive.  It ought to be as free.
-
-Some Easily Rebutted Objections to GNU's Goals
-==============================================
-
-     "Nobody will use it if it is free, because that means they can't
-     rely on any support."
-
-     "You have to charge for the program to pay for providing the
-     support."
-
-   If people would rather pay for GNU plus service than get GNU free
-without service, a company to provide just service to people who have
-obtained GNU free ought to be profitable.
-
-   We must distinguish between support in the form of real programming
-work and mere handholding.  The former is something one cannot rely on
-from a software vendor.  If your problem is not shared by enough
-people, the vendor will tell you to get lost.
-
-   If your business needs to be able to rely on support, the only way
-is to have all the necessary sources and tools.  Then you can hire any
-available person to fix your problem; you are not at the mercy of any
-individual.  With Unix, the price of sources puts this out of
-consideration for most businesses.  With GNU this will be easy.  It is
-still possible for there to be no available competent person, but this
-problem cannot be blamed on distribution arrangements.  GNU does not
-eliminate all the world's problems, only some of them.
-
-   Meanwhile, the users who know nothing about computers need
-handholding: doing things for them which they could easily do
-themselves but don't know how.
-
-   Such services could be provided by companies that sell just
-hand-holding and repair service.  If it is true that users would rather
-spend money and get a product with service, they will also be willing
-to buy the service having got the product free.  The service companies
-will compete in quality and price; users will not be tied to any
-particular one.  Meanwhile, those of us who don't need the service
-should be able to use the program without paying for the service.
-
-     "You cannot reach many people without advertising, and you must
-     charge for the program to support that."
-
-     "It's no use advertising a program people can get free."
-
-   There are various forms of free or very cheap publicity that can be
-used to inform numbers of computer users about something like GNU.  But
-it may be true that one can reach more microcomputer users with
-advertising.  If this is really so, a business which advertises the
-service of copying and mailing GNU for a fee ought to be successful
-enough to pay for its advertising and more.  This way, only the users
-who benefit from the advertising pay for it.
-
-   On the other hand, if many people get GNU from their friends, and
-such companies don't succeed, this will show that advertising was not
-really necessary to spread GNU.  Why is it that free market advocates
-don't want to let the free market decide this?
-
-     "My company needs a proprietary operating system to get a
-     competitive edge."
-
-   GNU will remove operating system software from the realm of
-competition.  You will not be able to get an edge in this area, but
-neither will your competitors be able to get an edge over you.  You and
-they will compete in other areas, while benefitting mutually in this
-one.  If your business is selling an operating system, you will not
-like GNU, but that's tough on you.  If your business is something else,
-GNU can save you from being pushed into the expensive business of
-selling operating systems.
-
-   I would like to see GNU development supported by gifts from many
-manufacturers and users, reducing the cost to each.
-
-     "Don't programmers deserve a reward for their creativity?"
-
-   If anything deserves a reward, it is social contribution.
-Creativity can be a social contribution, but only in so far as society
-is free to use the results.  If programmers deserve to be rewarded for
-creating innovative programs, by the same token they deserve to be
-punished if they restrict the use of these programs.
-
-     "Shouldn't a programmer be able to ask for a reward for his
-     creativity?"
-
-   There is nothing wrong with wanting pay for work, or seeking to
-maximize one's income, as long as one does not use means that are
-destructive.  But the means customary in the field of software today
-are based on destruction.
-
-   Extracting money from users of a program by restricting their use of
-it is destructive because the restrictions reduce the amount and the
-ways that the program can be used.  This reduces the amount of wealth
-that humanity derives from the program.  When there is a deliberate
-choice to restrict, the harmful consequences are deliberate destruction.
-
-   The reason a good citizen does not use such destructive means to
-become wealthier is that, if everyone did so, we would all become
-poorer from the mutual destructiveness.  This is Kantian ethics; or,
-the Golden Rule.  Since I do not like the consequences that result if
-everyone hoards information, I am required to consider it wrong for one
-to do so.  Specifically, the desire to be rewarded for one's creativity
-does not justify depriving the world in general of all or part of that
-creativity.
-
-     "Won't programmers starve?"
-
-   I could answer that nobody is forced to be a programmer.  Most of us
-cannot manage to get any money for standing on the street and making
-faces.  But we are not, as a result, condemned to spend our lives
-standing on the street making faces, and starving.  We do something
-else.
-
-   But that is the wrong answer because it accepts the questioner's
-implicit assumption: that without ownership of software, programmers
-cannot possibly be paid a cent.  Supposedly it is all or nothing.
-
-   The real reason programmers will not starve is that it will still be
-possible for them to get paid for programming; just not paid as much as
-now.
-
-   Restricting copying is not the only basis for business in software.
-It is the most common basis because it brings in the most money.  If it
-were prohibited, or rejected by the customer, software business would
-move to other bases of organization which are now used less often.
-There are always numerous ways to organize any kind of business.
-
-   Probably programming will not be as lucrative on the new basis as it
-is now.  But that is not an argument against the change.  It is not
-considered an injustice that sales clerks make the salaries that they
-now do.  If programmers made the same, that would not be an injustice
-either.  (In practice they would still make considerably more than
-that.)
-
-     "Don't people have a right to control how their creativity is
-     used?"
-
-   "Control over the use of one's ideas" really constitutes control over
-other people's lives; and it is usually used to make their lives more
-difficult.
-
-   People who have studied the issue of intellectual property rights
-carefully (such as lawyers) say that there is no intrinsic right to
-intellectual property.  The kinds of supposed intellectual property
-rights that the government recognizes were created by specific acts of
-legislation for specific purposes.
-
-   For example, the patent system was established to encourage
-inventors to disclose the details of their inventions.  Its purpose was
-to help society rather than to help inventors.  At the time, the life
-span of 17 years for a patent was short compared with the rate of
-advance of the state of the art.  Since patents are an issue only among
-manufacturers, for whom the cost and effort of a license agreement are
-small compared with setting up production, the patents often do not do
-much harm.  They do not obstruct most individuals who use patented
-products.
-
-   The idea of copyright did not exist in ancient times, when authors
-frequently copied other authors at length in works of non-fiction.  This
-practice was useful, and is the only way many authors' works have
-survived even in part.  The copyright system was created expressly for
-the purpose of encouraging authorship.  In the domain for which it was
-invented--books, which could be copied economically only on a printing
-press--it did little harm, and did not obstruct most of the individuals
-who read the books.
-
-   All intellectual property rights are just licenses granted by society
-because it was thought, rightly or wrongly, that society as a whole
-would benefit by granting them.  But in any particular situation, we
-have to ask: are we really better off granting such license?  What kind
-of act are we licensing a person to do?
-
-   The case of programs today is very different from that of books a
-hundred years ago.  The fact that the easiest way to copy a program is
-from one neighbor to another, the fact that a program has both source
-code and object code which are distinct, and the fact that a program is
-used rather than read and enjoyed, combine to create a situation in
-which a person who enforces a copyright is harming society as a whole
-both materially and spiritually; in which a person should not do so
-regardless of whether the law enables him to.
-
-     "Competition makes things get done better."
-
-   The paradigm of competition is a race: by rewarding the winner, we
-encourage everyone to run faster.  When capitalism really works this
-way, it does a good job; but its defenders are wrong in assuming it
-always works this way.  If the runners forget why the reward is offered
-and become intent on winning, no matter how, they may find other
-strategies--such as, attacking other runners.  If the runners get into
-a fist fight, they will all finish late.
-
-   Proprietary and secret software is the moral equivalent of runners
-in a fist fight.  Sad to say, the only referee we've got does not seem
-to object to fights; he just regulates them ("For every ten yards you
-run, you can fire one shot").  He really ought to break them up, and
-penalize runners for even trying to fight.
-
-     "Won't everyone stop programming without a monetary incentive?"
-
-   Actually, many people will program with absolutely no monetary
-incentive.  Programming has an irresistible fascination for some
-people, usually the people who are best at it.  There is no shortage of
-professional musicians who keep at it even though they have no hope of
-making a living that way.
-
-   But really this question, though commonly asked, is not appropriate
-to the situation.  Pay for programmers will not disappear, only become
-less.  So the right question is, will anyone program with a reduced
-monetary incentive?  My experience shows that they will.
-
-   For more than ten years, many of the world's best programmers worked
-at the Artificial Intelligence Lab for far less money than they could
-have had anywhere else.  They got many kinds of non-monetary rewards:
-fame and appreciation, for example.  And creativity is also fun, a
-reward in itself.
-
-   Then most of them left when offered a chance to do the same
-interesting work for a lot of money.
-
-   What the facts show is that people will program for reasons other
-than riches; but if given a chance to make a lot of money as well, they
-will come to expect and demand it.  Low-paying organizations do poorly
-in competition with high-paying ones, but they do not have to do badly
-if the high-paying ones are banned.
-
-     "We need the programmers desperately.  If they demand that we stop
-     helping our neighbors, we have to obey."
-
-   You're never so desperate that you have to obey this sort of demand.
-Remember: millions for defense, but not a cent for tribute!
-
-     "Programmers need to make a living somehow."
-
-   In the short run, this is true.  However, there are plenty of ways
-that programmers could make a living without selling the right to use a
-program.  This way is customary now because it brings programmers and
-businessmen the most money, not because it is the only way to make a
-living.  It is easy to find other ways if you want to find them.  Here
-are a number of examples.
-
-   A manufacturer introducing a new computer will pay for the porting of
-operating systems onto the new hardware.
-
-   The sale of teaching, hand-holding, and maintenance services could
-also employ programmers.
-
-   People with new ideas could distribute programs as freeware and ask
-for donations from satisfied users or sell hand-holding services.  I
-have met people who are already working this way successfully.
-
-   Users with related needs can form users' groups and pay dues.  A
-group would contract with programming companies to write programs that
-the group's members would like to use.
-
-   All sorts of development can be funded with a Software Tax:
-
-     Suppose everyone who buys a computer has to pay a certain percent
-     of the price as a software tax.  The government gives this to an
-     agency like the NSF to spend on software development.
-
-     But if the computer buyer makes a donation to software development
-     himself, he can take a credit against the tax.  He can donate to
-     the project of his own choosing--often, chosen because he hopes to
-     use the results when
-
-     it is done.  He can take a credit for any amount of donation up to
-     the total tax he had to pay.
-
-     The total tax rate could be decided by a vote of the payers of the
-     tax, weighted according to the amount they will be taxed on.
-
-     The consequences:
-
-        * The computer-using community supports software development.
-
-        * This community decides what level of support is needed.
-
-        * Users who care which projects their share is spent on can
-          choose this for themselves.
-
-   In the long run, making programs free is a step toward the
-post-scarcity world, where nobody will have to work very hard just to
-make a living.  People will be free to devote themselves to activities
-that are fun, such as programming, after spending the necessary ten
-hours a week on required tasks such as legislation, family counseling,
-robot repair, and asteroid prospecting.  There will be no need to be
-able to make a living from programming.
-
-   We have already greatly reduced the amount of work that the whole
-society must do for its actual productivity, but only a little of this
-has translated itself into leisure for workers because much
-nonproductive activity is required to accompany productive activity.
-The main causes of this are bureaucracy and isometric struggles against
-competition.  Free software will greatly reduce these drains in the
-area of software production.  We must do this, in order for technical
-gains in productivity to translate into less work for us.
-
-\1f
-File: xemacs.info,  Node: Key Index,  Next: Command Index,  Prev: Manifesto,  Up: Top
-
-Key (Character) Index
-*********************
-
-* Menu:
-
-* ! (query-replace):                     Query Replace.
-* " (TeX mode):                          TeX Editing.
-* , (query-replace):                     Query Replace.
-* . (Calendar mode):                     Specified Dates.
-* . (query-replace):                     Query Replace.
-* ? (Calendar mode):                     General Calendar.
-* ^ (query-replace):                     Query Replace.
-* a (Calendar mode):                     Holidays.
-* BS:                                    Inserting Text.
-* button1:                               Intro to Keystrokes.
-* button1up:                             Intro to Keystrokes.
-* button2:                               Intro to Keystrokes.
-* button2up:                             Intro to Keystrokes.
-* button3:                               Intro to Keystrokes.
-* button3up:                             Intro to Keystrokes.
-* C-<:                                   Setting Mark.
-* C->:                                   Setting Mark.
-* C-@ (Calendar mode):                   Mark and Region.
-* C-\:                                   Select Input Method.
-* C-] <1>:                               Quitting.
-* C-]:                                   Recursive Edit.
-* C-_:                                   Undo.
-* C-a:                                   Moving Point.
-* C-a (Calendar mode):                   Move to Beginning or End.
-* C-b:                                   Moving Point.
-* C-b (Calendar mode):                   Calendar Unit Motion.
-* C-c:                                   Key Sequences.
-* C-c ' (Picture mode):                  Insert in Picture.
-* C-c . (Picture mode):                  Insert in Picture.
-* C-c / (Picture mode):                  Insert in Picture.
-* C-c ; (Fortran mode):                  Fortran Comments.
-* C-c < (Picture mode):                  Insert in Picture.
-* C-c > (Picture mode):                  Insert in Picture.
-* C-c \ (Picture mode):                  Insert in Picture.
-* C-c ^ (Picture mode):                  Insert in Picture.
-* C-c ` (Picture mode):                  Insert in Picture.
-* C-c C-\ (Shell mode):                  Shell Mode.
-* C-c C-b (Outline mode):                Outline Motion.
-* C-c C-b (Picture mode):                Insert in Picture.
-* C-c C-b (TeX mode):                    TeX Print.
-* C-c C-c (Edit Abbrevs):                Editing Abbrevs.
-* C-c C-c (Edit Tab Stops):              Tab Stops.
-* C-c C-c (Mail mode):                   Mail Mode.
-* C-c C-c (Occur mode):                  Other Repeating Search.
-* C-c C-c (Shell mode):                  Shell Mode.
-* C-c C-d (Picture mode):                Basic Picture.
-* C-c C-d (Shell mode):                  Shell Mode.
-* C-c C-f (LaTeX mode):                  TeX Editing.
-* C-c C-f (Outline mode):                Outline Motion.
-* C-c C-f (Picture mode):                Insert in Picture.
-* C-c C-f C-c (Mail mode):               Mail Mode.
-* C-c C-f C-s (Mail mode):               Mail Mode.
-* C-c C-f C-t (Mail mode):               Mail Mode.
-* C-c C-h (Outline mode):                Outline Visibility.
-* C-c C-i (Outline mode):                Outline Visibility.
-* C-c C-j (Term mode):                   Term Mode.
-* C-c C-k (Picture mode):                Rectangles in Picture.
-* C-c C-k (Term mode):                   Term Mode.
-* C-c C-k (TeX mode):                    TeX Print.
-* C-c C-l (Calendar mode):               General Calendar.
-* C-c C-l (TeX mode):                    TeX Print.
-* C-c C-n (Fortran mode):                Fortran Motion.
-* C-c C-n (Outline mode):                Outline Motion.
-* C-c C-o (Shell mode):                  Shell Mode.
-* C-c C-p (Fortran mode):                Fortran Motion.
-* C-c C-p (Outline mode):                Outline Motion.
-* C-c C-p (TeX mode):                    TeX Print.
-* C-c C-q (Mail mode):                   Mail Mode.
-* C-c C-q (Term mode):                   Paging in Term.
-* C-c C-q (TeX mode):                    TeX Print.
-* C-c C-r (Fortran mode):                Fortran Columns.
-* C-c C-r (Shell mode):                  Shell Mode.
-* C-c C-r (TeX mode):                    TeX Print.
-* C-c C-s (Mail mode):                   Mail Mode.
-* C-c C-s (Outline mode):                Outline Visibility.
-* C-c C-u (Outline mode):                Outline Motion.
-* C-c C-u (Shell mode):                  Shell Mode.
-* C-c C-w (Fortran mode):                Fortran Columns.
-* C-c C-w (Mail mode):                   Mail Mode.
-* C-c C-w (Picture mode):                Rectangles in Picture.
-* C-c C-w (Shell mode):                  Shell Mode.
-* C-c C-x (Picture mode):                Rectangles in Picture.
-* C-c C-y (Mail mode):                   Mail Mode.
-* C-c C-y (Picture mode):                Rectangles in Picture.
-* C-c C-y (Shell mode):                  Shell Mode.
-* C-c C-z (Shell mode):                  Shell Mode.
-* C-c TAB (Picture mode):                Tabs in Picture.
-* C-c { (TeX mode):                      TeX Editing.
-* C-c } (TeX mode):                      TeX Editing.
-* C-d:                                   Killing.
-* C-d (Shell mode):                      Shell Mode.
-* C-e:                                   Moving Point.
-* C-e (Calendar mode):                   Move to Beginning or End.
-* C-END:                                 Moving Point.
-* C-f:                                   Moving Point.
-* C-f (Calendar mode):                   Calendar Unit Motion.
-* C-g <1>:                               Quitting.
-* C-g:                                   Minibuffer.
-* C-g (isearch-mode):                    Incremental Search.
-* C-h <1>:                               Help.
-* C-h:                                   Key Sequences.
-* C-h A:                                 Apropos.
-* C-h b:                                 Misc Help.
-* C-h C:                                 Coding Systems.
-* C-h c:                                 Key Help.
-* C-h C-\:                               Select Input Method.
-* C-h C-c:                               Misc Help.
-* C-h C-d:                               Misc Help.
-* C-h C-f:                               Misc Help.
-* C-h C-h:                               Help.
-* C-h C-k:                               Misc Help.
-* C-h C-w:                               Misc Help.
-* C-h f:                                 Documentation.
-* C-h F:                                 Misc Help.
-* C-h f:                                 Name Help.
-* C-h h:                                 Mule Intro.
-* C-h I:                                 Select Input Method.
-* C-h i:                                 Misc Help.
-* C-h k:                                 Key Help.
-* C-h L:                                 Language Environments.
-* C-h l:                                 Misc Help.
-* C-h m:                                 Misc Help.
-* C-h n:                                 Misc Help.
-* C-h p:                                 Library Keywords.
-* C-h s:                                 Syntax Change.
-* C-h t <1>:                             Misc Help.
-* C-h t:                                 Basic.
-* C-h v <1>:                             Examining.
-* C-h v <2>:                             Documentation.
-* C-h v:                                 Name Help.
-* C-h w:                                 Name Help.
-* C-HOME:                                Moving Point.
-* C-k:                                   Killing.
-* C-l <1>:                               Scrolling.
-* C-l:                                   Moving Point.
-* C-l (query-replace):                   Query Replace.
-* C-LEFT:                                Moving Point.
-* C-M-@ <1>:                             Lists.
-* C-M-@:                                 Marking Objects.
-* C-M-\ <1>:                             Multi-line Indent.
-* C-M-\:                                 Indentation Commands.
-* C-M-a:                                 Defuns.
-* C-M-a (Fortran mode):                  Fortran Motion.
-* C-M-b:                                 Lists.
-* C-M-c:                                 Recursive Edit.
-* C-M-d:                                 Lists.
-* C-M-e:                                 Defuns.
-* C-M-e (Fortran mode):                  Fortran Motion.
-* C-M-f:                                 Lists.
-* C-M-h <1>:                             Defuns.
-* C-M-h:                                 Marking Objects.
-* C-M-h (Fortran mode):                  Fortran Motion.
-* C-M-k <1>:                             Lists.
-* C-M-k:                                 Killing.
-* C-M-n:                                 Lists.
-* C-M-o:                                 Indentation Commands.
-* C-M-p:                                 Lists.
-* C-M-q:                                 Multi-line Indent.
-* C-M-q (Fortran mode):                  ForIndent Commands.
-* C-M-t <1>:                             Lists.
-* C-M-t:                                 Transpose.
-* C-M-u:                                 Lists.
-* C-M-v <1>:                             Other Window.
-* C-M-v:                                 Minibuffer Edit.
-* C-M-w:                                 Appending Kills.
-* C-M-x <1>:                             External Lisp.
-* C-M-x:                                 Lisp Eval.
-* C-n:                                   Moving Point.
-* C-n (Calendar mode):                   Calendar Unit Motion.
-* C-o:                                   Blank Lines.
-* C-p:                                   Moving Point.
-* C-p (Calendar mode):                   Calendar Unit Motion.
-* C-q:                                   Inserting Text.
-* C-q (isearch-mode):                    Incremental Search.
-* C-r:                                   Incremental Search.
-* C-r (isearch-mode):                    Incremental Search.
-* C-r (query-replace):                   Query Replace.
-* C-RIGHT:                               Moving Point.
-* C-s:                                   Incremental Search.
-* C-s (isearch-mode):                    Incremental Search.
-* C-SPC:                                 Setting Mark.
-* C-SPC (Calendar mode):                 Mark and Region.
-* C-t <1>:                               Transpose.
-* C-t:                                   Moving Point.
-* C-u:                                   Arguments.
-* C-u - C-x ;:                           Comments.
-* C-u C-@:                               Mark Ring.
-* C-u C-SPC:                             Mark Ring.
-* C-u C-x v v:                           Editing with VC.
-* C-u TAB:                               Multi-line Indent.
-* C-v <1>:                               Scrolling.
-* C-v:                                   Moving Point.
-* C-v (Calendar mode):                   Scroll Calendar.
-* C-w:                                   Killing.
-* C-w (isearch-mode):                    Incremental Search.
-* C-w (query-replace):                   Query Replace.
-* C-x:                                   Key Sequences.
-* C-x $:                                 Selective Display.
-* C-x (:                                 Basic Kbd Macro.
-* C-x ):                                 Basic Kbd Macro.
-* C-x .:                                 Fill Prefix.
-* C-x 0:                                 Change Window.
-* C-x 1:                                 Change Window.
-* C-x 2:                                 Split Window.
-* C-x 3:                                 Split Window.
-* C-x 4:                                 Pop Up Window.
-* C-x 4 .:                               Find Tag.
-* C-x 4 b:                               Select Buffer.
-* C-x 4 d:                               Dired Enter.
-* C-x 4 f:                               Visiting.
-* C-x 4 m:                               Sending Mail.
-* C-x 5 b:                               Select Buffer.
-* C-x 5 C-f:                             Visiting.
-* C-x ;:                                 Comments.
-* C-x <:                                 Horizontal Scrolling.
-* C-x < (Calendar mode):                 Scroll Calendar.
-* C-x =:                                 Position Info.
-* C-x >:                                 Horizontal Scrolling.
-* C-x > (Calendar mode):                 Scroll Calendar.
-* C-x [:                                 Pages.
-* C-x [ (Calendar mode):                 Calendar Unit Motion.
-* C-x ]:                                 Pages.
-* C-x ] (Calendar mode):                 Calendar Unit Motion.
-* C-x ^:                                 Change Window.
-* C-x `:                                 Compilation.
-* C-x a g:                               Defining Abbrevs.
-* C-x a i g:                             Defining Abbrevs.
-* C-x a i l:                             Defining Abbrevs.
-* C-x a l:                               Defining Abbrevs.
-* C-x b:                                 Select Buffer.
-* C-x C-b:                               List Buffers.
-* C-x C-c:                               Exiting.
-* C-x C-d:                               ListDir.
-* C-x C-e:                               Lisp Eval.
-* C-x C-l:                               Case.
-* C-x C-o <1>:                           Killing.
-* C-x C-o:                               Blank Lines.
-* C-x C-p <1>:                           Pages.
-* C-x C-p:                               Marking Objects.
-* C-x C-q:                               Misc Buffer.
-* C-x C-q (version control):             Editing with VC.
-* C-x C-s:                               Saving.
-* C-x C-t:                               Transpose.
-* C-x C-u:                               Case.
-* C-x C-v:                               Visiting.
-* C-x C-w:                               Saving.
-* C-x C-x:                               Setting Mark.
-* C-x C-x (Calendar mode):               Mark and Region.
-* C-x d:                                 Dired Enter.
-* C-x DEL <1>:                           Sentences.
-* C-x DEL <2>:                           Kill Errors.
-* C-x DEL:                               Killing.
-* C-x e:                                 Basic Kbd Macro.
-* C-x ESC ESC:                           Repetition.
-* C-x f:                                 Fill Commands.
-* C-x h:                                 Marking Objects.
-* C-x k:                                 Kill Buffer.
-* C-x l:                                 Pages.
-* C-x m:                                 Sending Mail.
-* C-x n n:                               Narrowing.
-* C-x n w:                               Narrowing.
-* C-x o:                                 Other Window.
-* C-x q:                                 Kbd Macro Query.
-* C-x r +:                               RegNumbers.
-* C-x r b:                               Bookmarks.
-* C-x r g:                               RegText.
-* C-x r i:                               RegText.
-* C-x r j:                               RegPos.
-* C-x r l:                               Bookmarks.
-* C-x r m:                               Bookmarks.
-* C-x r n:                               RegNumbers.
-* C-x r r:                               RegRect.
-* C-x r s:                               RegText.
-* C-x r SPC:                             RegPos.
-* C-x r w:                               RegConfig.
-* C-x RET:                               Mule Intro.
-* C-x RET c:                             Specify Coding.
-* C-x RET C-\:                           Select Input Method.
-* C-x RET f:                             Specify Coding.
-* C-x RET k:                             Specify Coding.
-* C-x RET p:                             Specify Coding.
-* C-x RET t:                             Specify Coding.
-* C-x s:                                 Saving.
-* C-x TAB:                               Indentation Commands.
-* C-x u:                                 Undo.
-* C-x v =:                               Old Versions.
-* C-x v a:                               Change Logs and VC.
-* C-x v c:                               Editing with VC.
-* C-x v d:                               VC Status.
-* C-x v h:                               Version Headers.
-* C-x v i:                               Editing with VC.
-* C-x v l:                               VC Status.
-* C-x v r:                               Making Snapshots.
-* C-x v s:                               Making Snapshots.
-* C-x v u:                               Editing with VC.
-* C-x v ~:                               Old Versions.
-* C-x }:                                 Change Window.
-* C-y:                                   Kill Ring.
-* C-y (isearch-mode):                    Incremental Search.
-* C-z:                                   Exiting.
-* control key:                           Intro to Keystrokes.
-* d (Calendar mode):                     Diary Commands.
-* DEL <1>:                               Program Modes.
-* DEL <2>:                               Major Modes.
-* DEL <3>:                               Kill Errors.
-* DEL:                                   Killing.
-* DEL (isearch-mode):                    Incremental Search.
-* DEL (query-replace):                   Query Replace.
-* DOWN:                                  Moving Point.
-* END:                                   Moving Point.
-* ESC <1>:                               Meta Key.
-* ESC:                                   Key Sequences.
-* ESC (query-replace):                   Query Replace.
-* F1:                                    Help.
-* g CHAR (Calendar mode):                From Other Calendar.
-* g d (Calendar mode):                   Specified Dates.
-* g m l (Calendar mode):                 Mayan Calendar.
-* h (Calendar mode):                     Holidays.
-* Help:                                  Help.
-* HOME:                                  Moving Point.
-* hyper key <1>:                         Super and Hyper Keys.
-* hyper key <2>:                         Representing Keystrokes.
-* hyper key:                             Intro to Keystrokes.
-* i a (Calendar mode):                   Special Diary Entries.
-* i b (Calendar mode):                   Special Diary Entries.
-* i c (Calendar mode):                   Special Diary Entries.
-* i d (Calendar mode):                   Adding to Diary.
-* i m (Calendar mode):                   Adding to Diary.
-* i w (Calendar mode):                   Adding to Diary.
-* i y (Calendar mode):                   Adding to Diary.
-* LEFT:                                  Moving Point.
-* LFD <1>:                               Basic Indent.
-* LFD <2>:                               Major Modes.
-* LFD:                                   String Key Sequences.
-* LFD (TeX mode):                        TeX Editing.
-* m (Calendar mode):                     Diary Commands.
-* M (Calendar mode):                     Lunar Phases.
-* M-!:                                   Single Shell.
-* M-$:                                   Spelling.
-* M-%:                                   Query Replace.
-* M-':                                   Expanding Abbrevs.
-* M-(:                                   Balanced Editing.
-* M-):                                   Balanced Editing.
-* M-,:                                   Tags Search.
-* M--:                                   Arguments.
-* M-- M-c:                               Fixing Case.
-* M-- M-l:                               Fixing Case.
-* M-- M-u:                               Fixing Case.
-* M-.:                                   Find Tag.
-* M-/:                                   Dynamic Abbrevs.
-* M-1:                                   Arguments.
-* M-;:                                   Comments.
-* M-<:                                   Moving Point.
-* M-< (Calendar mode):                   Move to Beginning or End.
-* M-=:                                   Position Info.
-* M-= (Calendar mode):                   Mark and Region.
-* M->:                                   Moving Point.
-* M-> (Calendar mode):                   Move to Beginning or End.
-* M-?:                                   Nroff Mode.
-* M-@ <1>:                               Words.
-* M-@:                                   Marking Objects.
-* M-[:                                   Paragraphs.
-* M-\ <1>:                               Indentation Commands.
-* M-\:                                   Killing.
-* M-]:                                   Paragraphs.
-* M-^ <1>:                               Indentation Commands.
-* M-^:                                   Killing.
-* M-a:                                   Sentences.
-* M-a (Calendar mode):                   Move to Beginning or End.
-* M-b:                                   Words.
-* M-c:                                   Case.
-* M-C-r:                                 Regexp Search.
-* M-C-s:                                 Regexp Search.
-* M-d <1>:                               Words.
-* M-d:                                   Killing.
-* M-DEL <1>:                             Words.
-* M-DEL <2>:                             Kill Errors.
-* M-DEL:                                 Killing.
-* M-e:                                   Sentences.
-* M-e (Calendar mode):                   Move to Beginning or End.
-* M-ESC:                                 Lisp Eval.
-* M-f:                                   Words.
-* M-g:                                   Fill Commands.
-* M-h <1>:                               Paragraphs.
-* M-h:                                   Marking Objects.
-* M-i:                                   Tab Stops.
-* M-k <1>:                               Sentences.
-* M-k:                                   Killing.
-* M-l:                                   Case.
-* M-LFD:                                 Comments.
-* M-LFD (Fortran mode):                  ForIndent Commands.
-* M-m:                                   Indentation Commands.
-* M-n <1>:                               Nroff Mode.
-* M-n:                                   Repetition.
-* M-n (isearch-mode):                    Incremental Search.
-* M-n (minibuffer history):              Minibuffer History.
-* M-n (Shell mode):                      Shell Mode.
-* M-p <1>:                               Nroff Mode.
-* M-p:                                   Repetition.
-* M-p (isearch-mode):                    Incremental Search.
-* M-p (minibuffer history):              Minibuffer History.
-* M-p (Shell mode):                      Shell Mode.
-* M-q:                                   Fill Commands.
-* M-r:                                   Moving Point.
-* M-r (minibuffer history):              Minibuffer History.
-* M-s:                                   Fill Commands.
-* M-s (minibuffer history):              Minibuffer History.
-* M-SPC:                                 Killing.
-* M-t <1>:                               Words.
-* M-t:                                   Transpose.
-* M-TAB <1>:                             Tabs in Picture.
-* M-TAB:                                 Lisp Completion.
-* M-TAB (customization buffer):          Changing an Option.
-* M-TAB (isearch-mode):                  Incremental Search.
-* M-u:                                   Case.
-* M-v <1>:                               Scrolling.
-* M-v:                                   Moving Point.
-* M-v (Calendar mode):                   Scroll Calendar.
-* M-w:                                   Kill Ring.
-* M-x:                                   M-x.
-* M-y:                                   Earlier Kills.
-* M-z:                                   Killing.
-* M-{ (Calendar mode):                   Calendar Unit Motion.
-* M-|:                                   Single Shell.
-* M-} (Calendar mode):                   Calendar Unit Motion.
-* M-~:                                   Saving.
-* META:                                  Meta Key.
-* meta key:                              Intro to Keystrokes.
-* next:                                  Scrolling.
-* o (Calendar mode):                     Specified Dates.
-* p (Calendar mode):                     To Other Calendar.
-* p d (Calendar mode):                   General Calendar.
-* pgdn:                                  Scrolling.
-* PGDN:                                  Moving Point.
-* pgup:                                  Scrolling.
-* PGUP:                                  Moving Point.
-* prior:                                 Scrolling.
-* q (Calendar mode):                     General Calendar.
-* RET:                                   Inserting Text.
-* RET (isearch-mode):                    Incremental Search.
-* RET (Shell mode):                      Shell Mode.
-* RIGHT:                                 Moving Point.
-* s (Calendar mode):                     Diary Commands.
-* S (Calendar mode):                     Sunrise/Sunset.
-* S-TAB (customization buffer):          Changing an Option.
-* shift key:                             Intro to Keystrokes.
-* SPC:                                   Completion Commands.
-* SPC (Calendar mode):                   General Calendar.
-* SPC (query-replace):                   Query Replace.
-* super key <1>:                         Super and Hyper Keys.
-* super key <2>:                         Representing Keystrokes.
-* super key:                             Intro to Keystrokes.
-* t (Calendar mode):                     LaTeX Calendar.
-* TAB <1>:                               Basic Indent.
-* TAB <2>:                               Text Mode.
-* TAB <3>:                               Indentation.
-* TAB <4>:                               Major Modes.
-* TAB <5>:                               Completion Example.
-* TAB:                                   String Key Sequences.
-* TAB (customization buffer):            Changing an Option.
-* TAB (Shell mode):                      Shell Mode.
-* u (Calendar mode) <1>:                 Diary Commands.
-* u (Calendar mode):                     Holidays.
-* UP:                                    Moving Point.
-* x (Calendar mode):                     Holidays.
+File: xemacs.info,  Node: Glossary,  Next: Manifesto,  Prev: Intro,  Up: Top
+
+Glossary
+********
+
+Abbrev
+     An abbrev is a text string which expands into a different text
+     string when present in the buffer.  For example, you might define
+     a short word as an abbrev for a long phrase that you want to insert
+     frequently.  *Note Abbrevs::.
+
+Aborting
+     Aborting means getting out of a recursive edit (q.v.).  You can use
+     the commands `C-]' and `M-x top-level' for this.  *Note Quitting::.
+
+Auto Fill mode
+     Auto Fill mode is a minor mode in which text you insert is
+     automatically broken into lines of fixed width.  *Note Filling::.
+
+Auto Saving
+     Auto saving means that Emacs automatically stores the contents of
+     an Emacs buffer in a specially-named file so the information will
+     not be lost if the buffer is lost due to a system error or user
+     error.  *Note Auto Save::.
+
+Backup File
+     A backup file records the contents that a file had before the
+     current editing session.  Emacs creates backup files automatically
+     to help you track down or cancel changes you later regret.  *Note
+     Backup::.
+
+Balance Parentheses
+     Emacs can balance parentheses manually or automatically.  Manual
+     balancing is done by the commands to move over balanced expressions
+     (*note Lists::).  Automatic balancing is done by blinking the
+     parenthesis that matches one just inserted (*note Matching Parens:
+     Matching.).
+
+Bind
+     To bind a key is to change its binding (q.v.).  *Note Rebinding::.
+
+Binding
+     A key gets its meaning in Emacs by having a binding which is a
+     command (q.v.), a Lisp function that is run when the key is typed.
+     *Note Binding: Commands.  Customization often involves rebinding a
+     character to a different command function.  The bindings of all
+     keys are recorded in the keymaps (q.v.).  *Note Keymaps::.
+
+Blank Lines
+     Blank lines are lines that contain only whitespace.  Emacs has
+     several commands for operating on the blank lines in a buffer.
+
+Buffer
+     The buffer is the basic editing unit; one buffer corresponds to one
+     piece of text being edited.  You can have several buffers, but at
+     any time you are editing only one, the `selected' buffer, though
+     several buffers can be visible when you are using multiple
+     windows.  *Note Buffers::.
+
+Buffer Selection History
+     Emacs keeps a buffer selection history which records how recently
+     each Emacs buffer was selected.  Emacs uses this list when
+     choosing a buffer to select.  *Note Buffers::.
+
+C-
+     `C' in the name of a character is an abbreviation for Control.
+     *Note C-: Keystrokes.
+
+C-M-
+     `C-M-' in the name of a character is an abbreviation for
+     Control-Meta.  *Note C-M-: Keystrokes.
+
+Case Conversion
+     Case conversion means changing text from upper case to lower case
+     or vice versa.  *Note Case::, for the commands for case conversion.
+
+Characters
+     Characters form the contents of an Emacs buffer; also, Emacs
+     commands are invoked by keys (q.v.), which are sequences of one or
+     more characters.  *Note Keystrokes::.
+
+Command
+     A command is a Lisp function specially defined to be able to serve
+     as a key binding in Emacs.  When you type a key (q.v.), Emacs
+     looks up its binding (q.v.) in the relevant keymaps (q.v.) to find
+     the command to run.  *Note Commands::.
+
+Command Name
+     A command name is the name of a Lisp symbol which is a command
+     (*note Commands::).  You can invoke any command by its name using
+     `M-x' (*note M-x::).
+
+Comments
+     A comment is text in a program which is intended only for the
+     people reading the program, and is marked specially so that it
+     will be ignored when the program is loaded or compiled.  Emacs
+     offers special commands for creating, aligning, and killing
+     comments.  *Note Comments::.
+
+Compilation
+     Compilation is the process of creating an executable program from
+     source code.  Emacs has commands for compiling files of Emacs Lisp
+     code (*note Lisp Libraries::) and programs in C and other languages
+     (*note Compilation::).
+
+Complete Key
+     A complete key is a character or sequence of characters which,
+     when typed by the user, fully specifies one action to be performed
+     by Emacs.  For example, `X' and `Control-f' and `Control-x m' are
+     keys.  Keys derive their meanings from being bound (q.v.) to
+     commands (q.v.).  Thus, `X' is conventionally bound to a command
+     to insert `X' in the buffer; `C-x m' is conventionally bound to a
+     command to begin composing a mail message. *Note Keystrokes::.
+
+Completion
+     When Emacs automatically fills an abbreviation for a name into the
+     entire name, that process is called completion.  Completion is
+     done for minibuffer (q.v.) arguments when the set of possible
+     valid inputs is known; for example, on command names, buffer
+     names, and file names.  Completion occurs when you type <TAB>,
+     <SPC>, or <RET>.  *Note Completion::.
+
+Continuation Line
+     When a line of text is longer than the width of the frame, it
+     takes up more than one screen line when displayed.  We say that the
+     text line is continued, and all screen lines used for it after the
+     first are called continuation lines.  *Note Continuation: Basic.
+
+Control-Character
+     ASCII characters with octal codes 0 through 037, and also code
+     0177, do not have graphic images assigned to them.  These are the
+     control characters.  Any control character can be typed by holding
+     down the <CTRL> key and typing some other character; some have
+     special keys on the keyboard.  <RET>, <TAB>, <ESC>, <LFD>, and
+     <DEL> are all control characters.  *Note Keystrokes::.
+
+Copyleft
+     A copyleft is a notice giving the public legal permission to
+     redistribute a program or other work of art.  Copylefts are used
+     by leftists to enrich the public just as copyrights are used by
+     rightists to gain power over the public.
+
+Current Buffer
+     The current buffer in Emacs is the Emacs buffer on which most
+     editing commands operate.  You can select any Emacs buffer as the
+     current one.  *Note Buffers::.
+
+Current Line
+     The line point is on (*note Point::).
+
+Current Paragraph
+     The paragraph that point is in.  If point is between paragraphs,
+     the current paragraph is the one that follows point.  *Note
+     Paragraphs::.
+
+Current Defun
+     The defun (q.v.) that point is in.  If point is between defuns, the
+     current defun is the one that follows point.  *Note Defuns::.
+
+Cursor
+     The cursor is the rectangle on the screen which indicates the
+     position called point (q.v.) at which insertion and deletion takes
+     place.  The cursor is on or under the character that follows
+     point.  Often people speak of `the cursor' when, strictly
+     speaking, they mean `point'.  *Note Cursor: Basic.
+
+Customization
+     Customization is making minor changes in the way Emacs works.  It
+     is often done by setting variables (*note Variables::) or by
+     rebinding keys (*note Keymaps::).
+
+Default Argument
+     The default for an argument is the value that is used if you do not
+     specify one.  When Emacs prompts you in the minibuffer for an
+     argument, the default argument is used if you just type <RET>.
+     *Note Minibuffer::.
+
+Default Directory
+     When you specify a file name that does not start with `/' or `~',
+     it is interpreted relative to the current buffer's default
+     directory.  *Note Default Directory: Minibuffer File.
+
+Defun
+     A defun is a list at the top level of parenthesis or bracket
+     structure in a program.  It is so named because most such lists in
+     Lisp programs are calls to the Lisp function `defun'.  *Note
+     Defuns::.
+
+<DEL>
+     The <DEL> character runs the command that deletes one character of
+     text.  *Note DEL: Basic.
+
+Deletion
+     Deleting text means erasing it without saving it.  Emacs deletes
+     text only when it is expected not to be worth saving (all
+     whitespace, or only one character).  The alternative is killing
+     (q.v.).  *Note Deletion: Killing.
+
+Deletion of Files
+     Deleting a file means removing it from the file system.  *Note
+     Misc File Ops::.
+
+Deletion of Messages
+     Deleting a message means flagging it to be eliminated from your
+     mail file.  Until the mail file is expunged, you can undo this by
+     undeleting the message.
+
+Deletion of Frames
+     When working under the multi-frame X-based version of XEmacs, you
+     can delete individual frames using the Close menu item from the
+     File menu.
+
+Deletion of Windows
+     When you delete a subwindow of an Emacs frame, you eliminate it
+     from the frame.  Other windows expand to use up the space.  The
+     deleted window can never come back, but no actual text is lost.
+     *Note Windows::.
+
+Directory
+     Files in the Unix file system are grouped into file directories.
+     *Note Directories: ListDir.
+
+Dired
+     Dired is the Emacs facility that displays the contents of a file
+     directory and allows you to "edit the directory", performing
+     operations on the files in the directory.  *Note Dired::.
+
+Disabled Command
+     A disabled command is one that you may not run without special
+     confirmation.  Commands are usually disabled because they are
+     confusing for beginning users.  *Note Disabling::.
+
+Dribble File
+     A file into which Emacs writes all the characters that the user
+     types on the keyboard.  Dribble files are used to make a record for
+     debugging Emacs bugs.  Emacs does not make a dribble file unless
+     you tell it to.  *Note Bugs::.
+
+Echo Area
+     The area at the bottom of the Emacs frame which is used for
+     echoing the arguments to commands, for asking questions, and for
+     printing brief messages (including error messages).  *Note Echo
+     Area::.
+
+Echoing
+     Echoing refers to acknowledging the receipt of commands by
+     displaying them (in the echo area).  Emacs never echoes
+     single-character keys; longer keys echo only if you pause while
+     typing them.
+
+Error
+     An error occurs when an Emacs command cannot execute in the current
+     circumstances.  When an error occurs, execution of the command
+     stops (unless the command has been programmed to do otherwise) and
+     Emacs reports the error by printing an error message (q.v.).
+     Type-ahead is discarded.  Then Emacs is ready to read another
+     editing command.
+
+Error Messages
+     Error messages are single lines of output printed by Emacs when the
+     user asks for something impossible to do (such as killing text
+     forward when point is at the end of the buffer).  They appear in
+     the echo area, accompanied by a beep.
+
+<ESC>
+     <ESC> is a character used as a prefix for typing Meta characters on
+     keyboards lacking a <META> key.  Unlike the <META> key (which,
+     like the <SHIFT> key, is held down while another character is
+     typed), the <ESC> key is pressed and released, and applies to the
+     next character typed.
+
+Fill Prefix
+     The fill prefix is a string that Emacs enters at the beginning of
+     each line when it performs filling.  It is not regarded as part of
+     the text to be filled.  *Note Filling::.
+
+Filling
+     Filling text means moving text from line to line so that all the
+     lines are approximately the same length.  *Note Filling::.
+
+Frame
+     When running Emacs on a TTY terminal, "frame" means the terminal's
+     screen.  When running Emacs under X, you can have multiple frames,
+     each corresponding to a top-level X window and each looking like
+     the screen on a TTY.  Each frame contains one or more
+     non-overlapping Emacs windows (possibly with associated
+     scrollbars, under X), an echo area, and (under X) possibly a
+     menubar, toolbar, and/or gutter.
+
+Global
+     Global means `independent of the current environment; in effect
+     throughout Emacs'.  It is the opposite of local (q.v.).  Examples
+     of the use of `global' appear below.
+
+Global Abbrev
+     A global definition of an abbrev (q.v.) is effective in all major
+     modes that do not have local (q.v.) definitions for the same
+     abbrev.  *Note Abbrevs::.
+
+Global Keymap
+     The global keymap (q.v.) contains key bindings that are in effect
+     unless local key bindings in a major mode's local keymap (q.v.)
+     override them.*Note Keymaps::.
+
+Global Substitution
+     Global substitution means replacing each occurrence of one string
+     by another string through a large amount of text.  *Note Replace::.
+
+Global Variable
+     The global value of a variable (q.v.) takes effect in all buffers
+     that do not have their own local (q.v.) values for the variable.
+     *Note Variables::.
+
+Graphic Character
+     Graphic characters are those assigned pictorial images rather than
+     just names.  All the non-Meta (q.v.) characters except for the
+     Control (q.v.) character are graphic characters.  These include
+     letters, digits, punctuation, and spaces; they do not include
+     <RET> or <ESC>.  In Emacs, typing a graphic character inserts that
+     character (in ordinary editing modes).  *Note Basic Editing: Basic.
+
+Grinding
+     Grinding means adjusting the indentation in a program to fit the
+     nesting structure.  *Note Grinding: Indentation.
+
+Hardcopy
+     Hardcopy means printed output.  Emacs has commands for making
+     printed listings of text in Emacs buffers.  *Note Hardcopy::.
+
+<HELP>
+     You can type <HELP> at any time to ask what options you have, or
+     to ask what any command does.  <HELP> is really `Control-h'.
+     *Note Help::.
+
+Inbox
+     An inbox is a file in which mail is delivered by the operating
+     system.  Some mail handlers transfers mail from inboxes to mail
+     files (q.v.) in which the mail is then stored permanently or until
+     explicitly deleted.
+
+Indentation
+     Indentation means blank space at the beginning of a line.  Most
+     programming languages have conventions for using indentation to
+     illuminate the structure of the program, and Emacs has special
+     features to help you set up the correct indentation.  *Note
+     Indentation::.
+
+Insertion
+     Insertion means copying text into the buffer, either from the
+     keyboard or from some other place in Emacs.
+
+Justification
+     Justification means adding extra spaces to lines of text to make
+     them come exactly to a specified width.  *Note Justification:
+     Filling.
+
+Keyboard Macros
+     Keyboard macros are a way of defining new Emacs commands from
+     sequences of existing ones, with no need to write a Lisp program.
+     *Note Keyboard Macros::.
+
+Key
+     A key is a sequence of characters that, when input to Emacs,
+     specify or begin to specify a single action for Emacs to perform.
+     That is, the sequence is considered a single unit.  If the key is
+     enough to specify one action, it is a complete key (q.v.); if it
+     is less than enough, it is a prefix key (q.v.).  *Note
+     Keystrokes::.
+
+Keymap
+     The keymap is the data structure that records the bindings (q.v.)
+     of keys to the commands that they run.  For example, the keymap
+     binds the character `C-n' to the command function `next-line'.
+     *Note Keymaps::.
+
+Kill Ring
+     The kill ring is the place where all text you have killed recently
+     is saved.  You can re-insert any of the killed text still in the
+     ring; this is called yanking (q.v.).  *Note Yanking::.
+
+Killing
+     Killing means erasing text and saving it on the kill ring so it
+     can be yanked (q.v.) later.  Some other systems call this
+     "cutting."  Most Emacs commands to erase text do killing, as
+     opposed to deletion (q.v.).  *Note Killing::.
+
+Killing Jobs
+     Killing a job (such as, an invocation of Emacs) means making it
+     cease to exist.  Any data within it, if not saved in a file, is
+     lost.  *Note Exiting::.
+
+List
+     A list is, approximately, a text string beginning with an open
+     parenthesis and ending with the matching close parenthesis.  In C
+     mode and other non-Lisp modes, groupings surrounded by other kinds
+     of matched delimiters appropriate to the language, such as braces,
+     are also considered lists.  Emacs has special commands for many
+     operations on lists.  *Note Lists::.
+
+Local
+     Local means `in effect only in a particular context'; the relevant
+     kind of context is a particular function execution, a particular
+     buffer, or a particular major mode.  Local is the opposite of
+     `global' (q.v.).  Specific uses of `local' in Emacs terminology
+     appear below.
+
+Local Abbrev
+     A local abbrev definition is effective only if a particular major
+     mode is selected.  In that major mode, it overrides any global
+     definition for the same abbrev.  *Note Abbrevs::.
+
+Local Keymap
+     A local keymap is used in a particular major mode; the key bindings
+     (q.v.) in the current local keymap override global bindings of the
+     same keys.  *Note Keymaps::.
+
+Local Variable
+     A local value of a variable (q.v.) applies to only one buffer.
+     *Note Locals::.
+
+M-
+     `M-' in the name of a character is an abbreviation for <META>, one
+     of the modifier keys that can accompany any character.  *Note
+     Keystrokes::.
+
+M-C-
+     `M-C-' in the name of a character is an abbreviation for
+     Control-Meta; it means the same thing as `C-M-'.  If your terminal
+     lacks a real <META> key, you type a Control-Meta character by
+     typing <ESC> and then typing the corresponding Control character.
+     *Note C-M-: Keystrokes.
+
+M-x
+     `M-x' is the key which is used to call an Emacs command by name.
+     You use it to call commands that are not bound to keys.  *Note
+     M-x::.
+
+Mail
+     Mail means messages sent from one user to another through the
+     computer system, to be read at the recipient's convenience.  Emacs
+     has commands for composing and sending mail, and for reading and
+     editing the mail you have received.  *Note Sending Mail::.
+
+Major Mode
+     The major modes are a mutually exclusive set of options each of
+     which configures Emacs for editing a certain sort of text.
+     Ideally, each programming language has its own major mode.  *Note
+     Major Modes::.
+
+Mark
+     The mark points to a position in the text.  It specifies one end
+     of the region (q.v.), point being the other end.  Many commands
+     operate on the whole region, that is, all the text from point to
+     the mark.  *Note Mark::.
+
+Mark Ring
+     The mark ring is used to hold several recent previous locations of
+     the mark, just in case you want to move back to them.  *Note Mark
+     Ring::.
+
+Message
+     See `mail'.
+
+Meta
+     Meta is the name of a modifier bit which a command character may
+     have.  It is present in a character if the character is typed with
+     the <META> key held down.  Such characters are given names that
+     start with `Meta-'.  For example, `Meta-<' is typed by holding down
+     <META> and at the same time typing `<' (which itself is done, on
+     most terminals, by holding down <SHIFT> and typing `,').  *Note
+     Meta: Keystrokes.
+
+Meta Character
+     A Meta character is one whose character code includes the Meta bit.
+
+Minibuffer
+     The minibuffer is the window that Emacs displays inside the echo
+     area (q.v.) when it prompts you for arguments to commands.  *Note
+     Minibuffer::.
+
+Minor Mode
+     A minor mode is an optional feature of Emacs which can be switched
+     on or off independent of the major mode.  Each minor mode has a
+     command to turn it on or off.  *Note Minor Modes::.
+
+Mode Line
+     The mode line is the line at the bottom of each text window (q.v.),
+     which gives status information on the buffer displayed in that
+     window.  *Note Mode Line::.
+
+Modified Buffer
+     A buffer (q.v.) is modified if its text has been changed since the
+     last time the buffer was saved (or since it was created, if it has
+     never been saved).  *Note Saving::.
+
+Moving Text
+     Moving text means erasing it from one place and inserting it in
+     another.  This is done by killing (q.v.) and then yanking (q.v.).
+     *Note Killing::.
+
+Named Mark
+     A named mark is a register (q.v.) in its role of recording a
+     location in text so that you can move point to that location.
+     *Note Registers::.
+
+Narrowing
+     Narrowing means creating a restriction (q.v.) that limits editing
+     in the current buffer to only a part of the text in the buffer.
+     Text outside that part is inaccessible to the user until the
+     boundaries are widened again, but it is still there, and saving
+     the file saves the invisible text.  *Note Narrowing::.
+
+Newline
+     <LFD> characters in the buffer terminate lines of text and are
+     called newlines.  *Note Newline: Keystrokes.
+
+Numeric Argument
+     A numeric argument is a number, specified before a command, to
+     change the effect of the command.  Often the numeric argument
+     serves as a repeat count.  *Note Arguments::.
+
+Option
+     An option is a variable (q.v.) that allows you to customize Emacs
+     by giving it a new value.  *Note Variables::.
+
+Overwrite Mode
+     Overwrite mode is a minor mode.  When it is enabled, ordinary text
+     characters replace the existing text after point rather than
+     pushing it to the right.  *Note Minor Modes::.
+
+Page
+     A page is a unit of text, delimited by formfeed characters (ASCII
+     Control-L, code 014) coming at the beginning of a line.  Some Emacs
+     commands are provided for moving over and operating on pages.
+     *Note Pages::.
+
+Paragraphs
+     Paragraphs are the medium-size unit of English text.  There are
+     special Emacs commands for moving over and operating on paragraphs.
+     *Note Paragraphs::.
+
+Parsing
+     We say that Emacs parses words or expressions in the text being
+     edited.  Really, all it knows how to do is find the other end of a
+     word or expression.  *Note Syntax::.
+
+Point
+     Point is the place in the buffer at which insertion and deletion
+     occur.  Point is considered to be between two characters, not at
+     one character.  The terminal's cursor (q.v.) indicates the
+     location of point.  *Note Point: Basic.
+
+Prefix Key
+     A prefix key is a key (q.v.) whose sole function is to introduce a
+     set of multi-character keys.  `Control-x' is an example of a prefix
+     key; any two-character sequence starting with `C-x' is also a
+     legitimate key.  *Note Keystrokes::.
+
+Prompt
+     A prompt is text printed to ask the user for input.  Printing a
+     prompt is called prompting.  Emacs prompts always appear in the
+     echo area (q.v.).  One kind of prompting happens when the
+     minibuffer is used to read an argument (*note Minibuffer::); the
+     echoing which happens when you pause in the middle of typing a
+     multi-character key is also a kind of prompting (*note Echo
+     Area::).
+
+Quitting
+     Quitting means cancelling a partially typed command or a running
+     command, using `C-g'.  *Note Quitting::.
+
+Quoting
+     Quoting means depriving a character of its usual special
+     significance.  In Emacs this is usually done with `Control-q'.
+     What constitutes special significance depends on the context and
+     on convention.  For example, an "ordinary" character as an Emacs
+     command inserts itself; so in this context, a special character is
+     any character that does not normally insert itself (such as <DEL>,
+     for example), and quoting it makes it insert itself as if it were
+     not special.  Not all contexts allow quoting.  *Note Quoting:
+     Basic.
+
+Read-only Buffer
+     A read-only buffer is one whose text you are not allowed to change.
+     Normally Emacs makes buffers read-only when they contain text which
+     has a special significance to Emacs, such as Dired buffers.
+     Visiting a file that is write-protected also makes a read-only
+     buffer.  *Note Buffers::.
+
+Recursive Editing Level
+     A recursive editing level is a state in which part of the
+     execution of a command involves asking the user to edit some text.
+     This text may or may not be the same as the text to which the
+     command was applied.  The mode line indicates recursive editing
+     levels with square brackets (`[' and `]').  *Note Recursive Edit::.
+
+Redisplay
+     Redisplay is the process of correcting the image on the screen to
+     correspond to changes that have been made in the text being edited.
+     *Note Redisplay: Frame.
+
+Regexp
+     See `regular expression'.
+
+Region
+     The region is the text between point (q.v.) and the mark (q.v.).
+     Many commands operate on the text of the region.  *Note Region:
+     Mark.
+
+Registers
+     Registers are named slots in which text or buffer positions or
+     rectangles can be saved for later use.  *Note Registers::.
+
+Regular Expression
+     A regular expression is a pattern that can match various text
+     strings; for example, `l[0-9]+' matches `l' followed by one or more
+     digits.  *Note Regexps::.
+
+Replacement
+     See `global substitution'.
+
+Restriction
+     A buffer's restriction is the amount of text, at the beginning or
+     the end of the buffer, that is temporarily invisible and
+     inaccessible.  Giving a buffer a nonzero amount of restriction is
+     called narrowing (q.v.).  *Note Narrowing::.
+
+<RET>
+     <RET> is the character than runs the command to insert a newline
+     into the text.  It is also used to terminate most arguments read
+     in the minibuffer (q.v.).  *Note Return: Keystrokes.
+
+Saving
+     Saving a buffer means copying its text into the file that was
+     visited (q.v.) in that buffer.  To actually change a file you have
+     edited in Emacs, you have to save it.  *Note Saving::.
+
+Scrolling
+     Scrolling means shifting the text in the Emacs window to make a
+     different part of the buffer visible.  *Note Scrolling: Display.
+
+Searching
+     Searching means moving point to the next occurrence of a specified
+     string.  *Note Search::.
+
+Selecting
+     Selecting a buffer means making it the current (q.v.) buffer.
+     *Note Selecting: Buffers.
+
+Self-documentation
+     Self-documentation is the feature of Emacs which can tell you what
+     any command does, or can give you a list of all commands related
+     to a topic you specify.  You ask for self-documentation with the
+     help character, `C-h'.  *Note Help::.
+
+Sentences
+     Emacs has commands for moving by or killing by sentences.  *Note
+     Sentences::.
+
+Sexp
+     An sexp (short for `s-expression,' itself short for `symbolic
+     expression') is the basic syntactic unit of Lisp in its textual
+     form: either a list, or Lisp atom.  Many Emacs commands operate on
+     sexps.  The term `sexp' is generalized to languages other than
+     Lisp to mean a syntactically recognizable expression.  *Note
+     Sexps: Lists.
+
+Simultaneous Editing
+     Simultaneous editing means two users modifying the same file at
+     once.  If simultaneous editing is not detected, you may lose your
+     work.  Emacs detects all cases of simultaneous editing and warns
+     the user to investigate them.  *Note Simultaneous Editing:
+     Interlocking.
+
+String
+     A string is a kind of Lisp data object which contains a sequence of
+     characters.  Many Emacs variables are intended to have strings as
+     values.  The Lisp syntax for a string consists of the characters in
+     the string with a `"' before and another `"' after. Write a `"'
+     that is part of the string as `\"' and a `\' that is part of the
+     string as `\\'.  You can include all other characters, including
+     newline, just by writing them inside the string. You can also
+     include escape sequences as in C, such as `\n' for newline or
+     `\241' using an octal character code.
+
+String Substitution
+     See `global substitution'.
+
+Syntax Table
+     The syntax table tells Emacs which characters are part of a word,
+     which characters balance each other like parentheses, etc.  *Note
+     Syntax::.
+
+Tag Table
+     A tag table is a file that serves as an index to the function
+     definitions in one or more other files.  *Note Tags::.
+
+Termscript File
+     A termscript file contains a record of all characters Emacs sent to
+     the terminal.  It is used for tracking down bugs in Emacs
+     redisplay.  Emacs does not make a termscript file unless
+     explicitly instructed to do so.  *Note Bugs::.
+
+Text
+     Text has two meanings (*note Text::):
+
+        * Data consisting of a sequence of characters, as opposed to
+          binary numbers, images, graphics commands, executable
+          programs, and the like.  The contents of an Emacs buffer are
+          always text in this sense.
+
+        * Data consisting of written human language, as opposed to
+          programs, or something that follows the stylistic conventions
+          of human language.
+
+Top Level
+     Top level is the normal state of Emacs, in which you are editing
+     the text of the file you have visited.  You are at top level
+     whenever you are not in a recursive editing level (q.v.) or the
+     minibuffer (q.v.), and not in the middle of a command.  You can
+     get back to top level by aborting (q.v.) and quitting (q.v.).
+     *Note Quitting::.
+
+Transposition
+     Transposing two units of text means putting each one into the place
+     formerly occupied by the other.  There are Emacs commands to
+     transpose two adjacent characters, words, sexps (q.v.), or lines
+     (*note Transpose::).
+
+Truncation
+     Truncating text lines in the display means leaving out any text on
+     a line that does not fit within the right margin of the window
+     displaying it.  See also `continuation line'.  *Note Truncation:
+     Basic.
+
+Undoing
+     Undoing means making your previous editing go in reverse, bringing
+     back the text that existed earlier in the editing session.  *Note
+     Undo::.
+
+Variable
+     A variable is Lisp object that can store an arbitrary value.
+     Emacs uses some variables for internal purposes, and has others
+     (known as `options' (q.v.)) you can set to control the behavior of
+     Emacs.  The variables used in Emacs that you are likely to be
+     interested in are listed in the Variables Index of this manual.
+     *Note Variables::, for information on variables.
+
+Visiting
+     Visiting a file means loading its contents into a buffer (q.v.)
+     where they can be edited.  *Note Visiting::.
+
+Whitespace
+     Whitespace is any run of consecutive formatting characters (spaces,
+     tabs, newlines, and backspaces).
+
+Widening
+     Widening is removing any restriction (q.v.) on the current buffer;
+     it is the opposite of narrowing (q.v.).  *Note Narrowing::.
+
+Window
+     Emacs divides the frame into one or more windows, each of which can
+     display the contents of one buffer (q.v.) at any time.  *Note
+     Frame::, for basic information on how Emacs uses the frame.  *Note
+     Windows::, for commands to control the use of windows. Note that if
+     you are running Emacs under X, terminology can be confusing: Each
+     Emacs frame occupies a separate X window and can, in turn, be
+     divided into different subwindows.
+
+Word Abbrev
+     Synonymous with `abbrev'.
+
+Word Search
+     Word search is searching for a sequence of words, considering the
+     punctuation between them as insignificant.  *Note Word Search::.
+
+Yanking
+     Yanking means reinserting text previously killed.  It can be used
+     to undo a mistaken kill, or for copying or moving text.  Some other
+     systems call this "pasting".  *Note Yanking::.
 
index fe8b724..f55fcc1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,766 +30,954 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Command Index,  Next: Variable Index,  Prev: Key Index,  Up: Top
+File: xemacs.info,  Node: Manifesto,  Next: Key Index,  Prev: Glossary,  Up: Top
 
-Command and Function Index
-**************************
+The GNU Manifesto
+*****************
+
+What's GNU?  GNU's Not Unix!
+============================
+
+   GNU, which stands for GNU's Not Unix, is the name for the complete
+Unix-compatible software system which I am writing so that I can give it
+away free to everyone who can use it.  Several other volunteers are
+helping me.  Contributions of time, money, programs, and equipment are
+greatly needed.
+
+   So far we have an Emacs text editor with Lisp for writing editor
+commands, a source level debugger, a yacc-compatible parser generator,
+a linker, and around 35 utilities.  A shell (command interpreter) is
+nearly completed.  A new portable optimizing C compiler has compiled
+itself and may be released this year.  An initial kernel exists, but
+many more features are needed to emulate Unix.  When the kernel and
+compiler are finished, it will be possible to distribute a GNU system
+suitable for program development.  We will use TeX as our text
+formatter, but an nroff is being worked on.  We will use the free,
+portable X window system as well.  After this we will add a portable
+Common Lisp, an Empire game, a spreadsheet, and hundreds of other
+things, plus online documentation.  We hope to supply, eventually,
+everything useful that normally comes with a Unix system, and more.
+
+   GNU will be able to run Unix programs, but will not be identical to
+Unix.  We will make all improvements that are convenient, based on our
+experience with other operating systems.  In particular, we plan to
+have longer filenames, file version numbers, a crashproof file system,
+filename completion perhaps, terminal-independent display support, and
+perhaps eventually a Lisp-based window system through which several
+Lisp programs and ordinary Unix programs can share a screen.  Both C
+and Lisp will be available as system programming languages.  We will
+try to support UUCP, MIT Chaosnet, and Internet protocols for
+communication.
+
+   GNU is aimed initially at machines in the 68000/16000 class with
+virtual memory, because they are the easiest machines to make it run
+on.  The extra effort to make it run on smaller machines will be left
+to someone who wants to use it on them.
+
+   To avoid horrible confusion, please pronounce the `G' in the word
+`GNU' when it is the name of this project.
+
+Why I Must Write GNU
+====================
+
+   I consider that the golden rule requires that if I like a program I
+must share it with other people who like it.  Software sellers want to
+divide the users and conquer them, making each user agree not to share
+with others.  I refuse to break solidarity with other users in this
+way.  I cannot in good conscience sign a nondisclosure agreement or a
+software license agreement.  For years I worked within the Artificial
+Intelligence Lab to resist such tendencies and other inhospitalities,
+but eventually they had gone too far: I could not remain in an
+institution where such things are done for me against my will.
+
+   So that I can continue to use computers without dishonor, I have
+decided to put together a sufficient body of free software so that I
+will be able to get along without any software that is not free.  I
+have resigned from the AI lab to deny MIT any legal excuse to prevent
+me from giving GNU away.
+
+Why GNU Will Be Compatible With Unix
+====================================
+
+   Unix is not my ideal system, but it is not too bad.  The essential
+features of Unix seem to be good ones, and I think I can fill in what
+Unix lacks without spoiling them.  And a system compatible with Unix
+would be convenient for many other people to adopt.
+
+How GNU Will Be Available
+=========================
+
+   GNU is not in the public domain.  Everyone will be permitted to
+modify and redistribute GNU, but no distributor will be allowed to
+restrict its further redistribution.  That is to say, proprietary
+modifications will not be allowed.  I want to make sure that all
+versions of GNU remain free.
+
+Why Many Other Programmers Want to Help
+=======================================
+
+   I have found many other programmers who are excited about GNU and
+want to help.
+
+   Many programmers are unhappy about the commercialization of system
+software.  It may enable them to make more money, but it requires them
+to feel in conflict with other programmers in general rather than feel
+as comrades.  The fundamental act of friendship among programmers is the
+sharing of programs; marketing arrangements now typically used
+essentially forbid programmers to treat others as friends.  The
+purchaser of software must choose between friendship and obeying the
+law.  Naturally, many decide that friendship is more important.  But
+those who believe in law often do not feel at ease with either choice.
+They become cynical and think that programming is just a way of making
+money.
+
+   By working on and using GNU rather than proprietary programs, we can
+be hospitable to everyone and obey the law.  In addition, GNU serves as
+an example to inspire and a banner to rally others to join us in
+sharing.  This can give us a feeling of harmony which is impossible if
+we use software that is not free.  For about half the programmers I
+talk to, this is an important happiness that money cannot replace.
+
+How You Can Contribute
+======================
+
+   I am asking computer manufacturers for donations of machines and
+money.  I'm asking individuals for donations of programs and work.
+
+   One consequence you can expect if you donate machines is that GNU
+will run on them at an early date.  The machines should be complete,
+ready-to-use systems, approved for use in a residential area, and not
+in need of sophisticated cooling or power.
+
+   I have found very many programmers eager to contribute part-time
+work for GNU.  For most projects, such part-time distributed work would
+be very hard to coordinate; the independently-written parts would not
+work together.  But for the particular task of replacing Unix, this
+problem is absent.  A complete Unix system contains hundreds of utility
+programs, each of which is documented separately.  Most interface
+specifications are fixed by Unix compatibility.  If each contributor
+can write a compatible replacement for a single Unix utility, and make
+it work properly in place of the original on a Unix system, then these
+utilities will work right when put together.  Even allowing for Murphy
+to create a few unexpected problems, assembling these components will
+be a feasible task.  (The kernel will require closer communication and
+will be worked on by a small, tight group.)
+
+   If I get donations of money, I may be able to hire a few people full
+or part time.  The salary won't be high by programmers' standards, but
+I'm looking for people for whom building community spirit is as
+important as making money.  I view this as a way of enabling dedicated
+people to devote their full energies to working on GNU by sparing them
+the need to make a living in another way.
+
+Why All Computer Users Will Benefit
+===================================
+
+   Once GNU is written, everyone will be able to obtain good system
+software free, just like air.
+
+   This means much more than just saving everyone the price of a Unix
+license.  It means that much wasteful duplication of system programming
+effort will be avoided.  This effort can go instead into advancing the
+state of the art.
+
+   Complete system sources will be available to everyone.  As a result,
+a user who needs changes in the system will always be free to make them
+himself, or hire any available programmer or company to make them for
+him.  Users will no longer be at the mercy of one programmer or company
+which owns the sources and is in sole position to make changes.
+
+   Schools will be able to provide a much more educational environment
+by encouraging all students to study and improve the system code.
+Harvard's computer lab used to have the policy that no program could be
+installed on the system if its sources were not on public display, and
+upheld it by actually refusing to install certain programs.  I was very
+much inspired by this.
+
+   Finally, the overhead of considering who owns the system software
+and what one is or is not entitled to do with it will be lifted.
+
+   Arrangements to make people pay for using a program, including
+licensing of copies, always incur a tremendous cost to society through
+the cumbersome mechanisms necessary to figure out how much (that is,
+which programs) a person must pay for.  And only a police state can
+force everyone to obey them.  Consider a space station where air must
+be manufactured at great cost: charging each breather per liter of air
+may be fair, but wearing the metered gas mask all day and all night is
+intolerable even if everyone can afford to pay the air bill.  And the
+TV cameras everywhere to see if you ever take the mask off are
+outrageous.  It's better to support the air plant with a head tax and
+chuck the masks.
+
+   Copying all or parts of a program is as natural to a programmer as
+breathing, and as productive.  It ought to be as free.
+
+Some Easily Rebutted Objections to GNU's Goals
+==============================================
+
+     "Nobody will use it if it is free, because that means they can't
+     rely on any support."
+
+     "You have to charge for the program to pay for providing the
+     support."
+
+   If people would rather pay for GNU plus service than get GNU free
+without service, a company to provide just service to people who have
+obtained GNU free ought to be profitable.
+
+   We must distinguish between support in the form of real programming
+work and mere handholding.  The former is something one cannot rely on
+from a software vendor.  If your problem is not shared by enough
+people, the vendor will tell you to get lost.
+
+   If your business needs to be able to rely on support, the only way
+is to have all the necessary sources and tools.  Then you can hire any
+available person to fix your problem; you are not at the mercy of any
+individual.  With Unix, the price of sources puts this out of
+consideration for most businesses.  With GNU this will be easy.  It is
+still possible for there to be no available competent person, but this
+problem cannot be blamed on distribution arrangements.  GNU does not
+eliminate all the world's problems, only some of them.
+
+   Meanwhile, the users who know nothing about computers need
+handholding: doing things for them which they could easily do
+themselves but don't know how.
+
+   Such services could be provided by companies that sell just
+hand-holding and repair service.  If it is true that users would rather
+spend money and get a product with service, they will also be willing
+to buy the service having got the product free.  The service companies
+will compete in quality and price; users will not be tied to any
+particular one.  Meanwhile, those of us who don't need the service
+should be able to use the program without paying for the service.
+
+     "You cannot reach many people without advertising, and you must
+     charge for the program to support that."
+
+     "It's no use advertising a program people can get free."
+
+   There are various forms of free or very cheap publicity that can be
+used to inform numbers of computer users about something like GNU.  But
+it may be true that one can reach more microcomputer users with
+advertising.  If this is really so, a business which advertises the
+service of copying and mailing GNU for a fee ought to be successful
+enough to pay for its advertising and more.  This way, only the users
+who benefit from the advertising pay for it.
+
+   On the other hand, if many people get GNU from their friends, and
+such companies don't succeed, this will show that advertising was not
+really necessary to spread GNU.  Why is it that free market advocates
+don't want to let the free market decide this?
+
+     "My company needs a proprietary operating system to get a
+     competitive edge."
+
+   GNU will remove operating system software from the realm of
+competition.  You will not be able to get an edge in this area, but
+neither will your competitors be able to get an edge over you.  You and
+they will compete in other areas, while benefitting mutually in this
+one.  If your business is selling an operating system, you will not
+like GNU, but that's tough on you.  If your business is something else,
+GNU can save you from being pushed into the expensive business of
+selling operating systems.
+
+   I would like to see GNU development supported by gifts from many
+manufacturers and users, reducing the cost to each.
+
+     "Don't programmers deserve a reward for their creativity?"
+
+   If anything deserves a reward, it is social contribution.
+Creativity can be a social contribution, but only in so far as society
+is free to use the results.  If programmers deserve to be rewarded for
+creating innovative programs, by the same token they deserve to be
+punished if they restrict the use of these programs.
+
+     "Shouldn't a programmer be able to ask for a reward for his
+     creativity?"
+
+   There is nothing wrong with wanting pay for work, or seeking to
+maximize one's income, as long as one does not use means that are
+destructive.  But the means customary in the field of software today
+are based on destruction.
+
+   Extracting money from users of a program by restricting their use of
+it is destructive because the restrictions reduce the amount and the
+ways that the program can be used.  This reduces the amount of wealth
+that humanity derives from the program.  When there is a deliberate
+choice to restrict, the harmful consequences are deliberate destruction.
+
+   The reason a good citizen does not use such destructive means to
+become wealthier is that, if everyone did so, we would all become
+poorer from the mutual destructiveness.  This is Kantian ethics; or,
+the Golden Rule.  Since I do not like the consequences that result if
+everyone hoards information, I am required to consider it wrong for one
+to do so.  Specifically, the desire to be rewarded for one's creativity
+does not justify depriving the world in general of all or part of that
+creativity.
+
+     "Won't programmers starve?"
+
+   I could answer that nobody is forced to be a programmer.  Most of us
+cannot manage to get any money for standing on the street and making
+faces.  But we are not, as a result, condemned to spend our lives
+standing on the street making faces, and starving.  We do something
+else.
+
+   But that is the wrong answer because it accepts the questioner's
+implicit assumption: that without ownership of software, programmers
+cannot possibly be paid a cent.  Supposedly it is all or nothing.
+
+   The real reason programmers will not starve is that it will still be
+possible for them to get paid for programming; just not paid as much as
+now.
+
+   Restricting copying is not the only basis for business in software.
+It is the most common basis because it brings in the most money.  If it
+were prohibited, or rejected by the customer, software business would
+move to other bases of organization which are now used less often.
+There are always numerous ways to organize any kind of business.
+
+   Probably programming will not be as lucrative on the new basis as it
+is now.  But that is not an argument against the change.  It is not
+considered an injustice that sales clerks make the salaries that they
+now do.  If programmers made the same, that would not be an injustice
+either.  (In practice they would still make considerably more than
+that.)
+
+     "Don't people have a right to control how their creativity is
+     used?"
+
+   "Control over the use of one's ideas" really constitutes control over
+other people's lives; and it is usually used to make their lives more
+difficult.
+
+   People who have studied the issue of intellectual property rights
+carefully (such as lawyers) say that there is no intrinsic right to
+intellectual property.  The kinds of supposed intellectual property
+rights that the government recognizes were created by specific acts of
+legislation for specific purposes.
+
+   For example, the patent system was established to encourage
+inventors to disclose the details of their inventions.  Its purpose was
+to help society rather than to help inventors.  At the time, the life
+span of 17 years for a patent was short compared with the rate of
+advance of the state of the art.  Since patents are an issue only among
+manufacturers, for whom the cost and effort of a license agreement are
+small compared with setting up production, the patents often do not do
+much harm.  They do not obstruct most individuals who use patented
+products.
+
+   The idea of copyright did not exist in ancient times, when authors
+frequently copied other authors at length in works of non-fiction.  This
+practice was useful, and is the only way many authors' works have
+survived even in part.  The copyright system was created expressly for
+the purpose of encouraging authorship.  In the domain for which it was
+invented--books, which could be copied economically only on a printing
+press--it did little harm, and did not obstruct most of the individuals
+who read the books.
+
+   All intellectual property rights are just licenses granted by society
+because it was thought, rightly or wrongly, that society as a whole
+would benefit by granting them.  But in any particular situation, we
+have to ask: are we really better off granting such license?  What kind
+of act are we licensing a person to do?
+
+   The case of programs today is very different from that of books a
+hundred years ago.  The fact that the easiest way to copy a program is
+from one neighbor to another, the fact that a program has both source
+code and object code which are distinct, and the fact that a program is
+used rather than read and enjoyed, combine to create a situation in
+which a person who enforces a copyright is harming society as a whole
+both materially and spiritually; in which a person should not do so
+regardless of whether the law enables him to.
+
+     "Competition makes things get done better."
+
+   The paradigm of competition is a race: by rewarding the winner, we
+encourage everyone to run faster.  When capitalism really works this
+way, it does a good job; but its defenders are wrong in assuming it
+always works this way.  If the runners forget why the reward is offered
+and become intent on winning, no matter how, they may find other
+strategies--such as, attacking other runners.  If the runners get into
+a fist fight, they will all finish late.
+
+   Proprietary and secret software is the moral equivalent of runners
+in a fist fight.  Sad to say, the only referee we've got does not seem
+to object to fights; he just regulates them ("For every ten yards you
+run, you can fire one shot").  He really ought to break them up, and
+penalize runners for even trying to fight.
+
+     "Won't everyone stop programming without a monetary incentive?"
+
+   Actually, many people will program with absolutely no monetary
+incentive.  Programming has an irresistible fascination for some
+people, usually the people who are best at it.  There is no shortage of
+professional musicians who keep at it even though they have no hope of
+making a living that way.
+
+   But really this question, though commonly asked, is not appropriate
+to the situation.  Pay for programmers will not disappear, only become
+less.  So the right question is, will anyone program with a reduced
+monetary incentive?  My experience shows that they will.
+
+   For more than ten years, many of the world's best programmers worked
+at the Artificial Intelligence Lab for far less money than they could
+have had anywhere else.  They got many kinds of non-monetary rewards:
+fame and appreciation, for example.  And creativity is also fun, a
+reward in itself.
+
+   Then most of them left when offered a chance to do the same
+interesting work for a lot of money.
+
+   What the facts show is that people will program for reasons other
+than riches; but if given a chance to make a lot of money as well, they
+will come to expect and demand it.  Low-paying organizations do poorly
+in competition with high-paying ones, but they do not have to do badly
+if the high-paying ones are banned.
+
+     "We need the programmers desperately.  If they demand that we stop
+     helping our neighbors, we have to obey."
+
+   You're never so desperate that you have to obey this sort of demand.
+Remember: millions for defense, but not a cent for tribute!
+
+     "Programmers need to make a living somehow."
+
+   In the short run, this is true.  However, there are plenty of ways
+that programmers could make a living without selling the right to use a
+program.  This way is customary now because it brings programmers and
+businessmen the most money, not because it is the only way to make a
+living.  It is easy to find other ways if you want to find them.  Here
+are a number of examples.
+
+   A manufacturer introducing a new computer will pay for the porting of
+operating systems onto the new hardware.
+
+   The sale of teaching, hand-holding, and maintenance services could
+also employ programmers.
+
+   People with new ideas could distribute programs as freeware and ask
+for donations from satisfied users or sell hand-holding services.  I
+have met people who are already working this way successfully.
+
+   Users with related needs can form users' groups and pay dues.  A
+group would contract with programming companies to write programs that
+the group's members would like to use.
+
+   All sorts of development can be funded with a Software Tax:
+
+     Suppose everyone who buys a computer has to pay a certain percent
+     of the price as a software tax.  The government gives this to an
+     agency like the NSF to spend on software development.
+
+     But if the computer buyer makes a donation to software development
+     himself, he can take a credit against the tax.  He can donate to
+     the project of his own choosing--often, chosen because he hopes to
+     use the results when
+
+     it is done.  He can take a credit for any amount of donation up to
+     the total tax he had to pay.
+
+     The total tax rate could be decided by a vote of the payers of the
+     tax, weighted according to the amount they will be taxed on.
+
+     The consequences:
+
+        * The computer-using community supports software development.
+
+        * This community decides what level of support is needed.
+
+        * Users who care which projects their share is spent on can
+          choose this for themselves.
+
+   In the long run, making programs free is a step toward the
+post-scarcity world, where nobody will have to work very hard just to
+make a living.  People will be free to devote themselves to activities
+that are fun, such as programming, after spending the necessary ten
+hours a week on required tasks such as legislation, family counseling,
+robot repair, and asteroid prospecting.  There will be no need to be
+able to make a living from programming.
+
+   We have already greatly reduced the amount of work that the whole
+society must do for its actual productivity, but only a little of this
+has translated itself into leisure for workers because much
+nonproductive activity is required to accompany productive activity.
+The main causes of this are bureaucracy and isometric struggles against
+competition.  Free software will greatly reduce these drains in the
+area of software production.  We must do this, in order for technical
+gains in productivity to translate into less work for us.
+
+\1f
+File: xemacs.info,  Node: Key Index,  Next: Command Index,  Prev: Manifesto,  Up: Top
+
+Key (Character) Index
+*********************
 
 * Menu:
 
-* abbrev-mode <1>:                       Minor Modes.
-* abbrev-mode:                           Abbrevs.
-* abbrev-prefix-mark:                    Expanding Abbrevs.
-* abort-recursive-edit <1>:              Quitting.
-* abort-recursive-edit:                  Recursive Edit.
-* add-change-log-entry:                  Change Log.
-* add-global-abbrev:                     Defining Abbrevs.
-* add-menu:                              Menu Customization.
-* add-menu-item:                         Menu Customization.
-* add-mode-abbrev:                       Defining Abbrevs.
-* add-name-to-file:                      Misc File Ops.
-* american-calendar:                     Date Formats.
-* append-next-kill:                      Appending Kills.
-* append-to-buffer:                      Accumulating Text.
-* append-to-file <1>:                    Misc File Ops.
-* append-to-file:                        Accumulating Text.
-* apropos:                               Apropos.
-* apropos-documentation:                 Apropos.
-* apropos-value:                         Apropos.
-* ask-user-about-lock:                   Interlocking.
-* auto-fill-mode <1>:                    Minor Modes.
-* auto-fill-mode:                        Auto Fill.
-* auto-save-mode:                        Auto Save Control.
-* back-to-indentation:                   Indentation Commands.
-* backward-char:                         Moving Point.
-* backward-delete-char-untabify:         Program Modes.
-* backward-kill-sentence <1>:            Sentences.
-* backward-kill-sentence <2>:            Kill Errors.
-* backward-kill-sentence:                Killing.
-* backward-kill-word <1>:                Words.
-* backward-kill-word <2>:                Kill Errors.
-* backward-kill-word:                    Killing.
-* backward-list:                         Lists.
-* backward-or-forward-delete-char:       Inserting Text.
-* backward-page:                         Pages.
-* backward-paragraph:                    Paragraphs.
-* backward-sentence:                     Sentences.
-* backward-sexp:                         Lists.
-* backward-text-line:                    Nroff Mode.
-* backward-up-list:                      Lists.
-* backward-word:                         Words.
-* batch-byte-compile:                    Compiling Libraries.
-* beginning-of-buffer:                   Moving Point.
-* beginning-of-defun:                    Defuns.
-* beginning-of-fortran-subprogram:       Fortran Motion.
-* beginning-of-line:                     Moving Point.
-* bookmark-delete:                       Bookmarks.
-* bookmark-insert:                       Bookmarks.
-* bookmark-insert-location:              Bookmarks.
-* bookmark-jump:                         Bookmarks.
-* bookmark-load:                         Bookmarks.
-* bookmark-save:                         Bookmarks.
-* bookmark-set:                          Bookmarks.
-* bookmark-write:                        Bookmarks.
-* buffer-menu:                           Several Buffers.
-* byte-compile-and-load-file:            Compiling Libraries.
-* byte-compile-buffer:                   Compiling Libraries.
-* byte-compile-file:                     Compiling Libraries.
-* byte-recompile-directory:              Compiling Libraries.
-* c-indent-line:                         Basic Indent.
-* calendar:                              Calendar/Diary.
-* calendar-backward-day:                 Calendar Unit Motion.
-* calendar-backward-month:               Calendar Unit Motion.
-* calendar-backward-week:                Calendar Unit Motion.
-* calendar-beginning-of-month:           Move to Beginning or End.
-* calendar-beginning-of-week:            Move to Beginning or End.
-* calendar-beginning-of-year:            Move to Beginning or End.
-* calendar-count-days-region:            Mark and Region.
-* calendar-cursor-holidays:              Holidays.
-* calendar-end-of-month:                 Move to Beginning or End.
-* calendar-end-of-week:                  Move to Beginning or End.
-* calendar-end-of-year:                  Move to Beginning or End.
-* calendar-exchange-point-and-mark:      Mark and Region.
-* calendar-forward-day:                  Calendar Unit Motion.
-* calendar-forward-month:                Calendar Unit Motion.
-* calendar-forward-week:                 Calendar Unit Motion.
-* calendar-forward-year:                 Calendar Unit Motion.
-* calendar-goto-astro-day-number:        From Other Calendar.
-* calendar-goto-chinese-date:            From Other Calendar.
-* calendar-goto-coptic-date:             From Other Calendar.
-* calendar-goto-date:                    Specified Dates.
-* calendar-goto-ethiopic-date:           From Other Calendar.
-* calendar-goto-french-date:             From Other Calendar.
-* calendar-goto-hebrew-date:             From Other Calendar.
-* calendar-goto-islamic-date:            From Other Calendar.
-* calendar-goto-iso-date:                From Other Calendar.
-* calendar-goto-julian-date:             From Other Calendar.
-* calendar-goto-mayan-long-count-date:   Mayan Calendar.
-* calendar-goto-persian-date:            From Other Calendar.
-* calendar-goto-today:                   Specified Dates.
-* calendar-mark-today:                   Calendar Customizing.
-* calendar-next-calendar-round-date:     Mayan Calendar.
-* calendar-next-haab-date:               Mayan Calendar.
-* calendar-next-tzolkin-date:            Mayan Calendar.
-* calendar-other-month:                  Specified Dates.
-* calendar-phases-of-moon:               Lunar Phases.
-* calendar-previous-haab-date:           Mayan Calendar.
-* calendar-previous-tzolkin-date:        Mayan Calendar.
-* calendar-print-astro-day-number:       To Other Calendar.
-* calendar-print-chinese-date:           To Other Calendar.
-* calendar-print-coptic-date:            To Other Calendar.
-* calendar-print-day-of-year:            General Calendar.
-* calendar-print-ethiopic-date:          To Other Calendar.
-* calendar-print-french-date:            To Other Calendar.
-* calendar-print-hebrew-date:            To Other Calendar.
-* calendar-print-islamic-date:           To Other Calendar.
-* calendar-print-iso-date:               To Other Calendar.
-* calendar-print-julian-date:            To Other Calendar.
-* calendar-print-mayan-date:             To Other Calendar.
-* calendar-print-persian-date:           To Other Calendar.
-* calendar-set-mark:                     Mark and Region.
-* calendar-star-date:                    Calendar Customizing.
-* calendar-sunrise-sunset:               Sunrise/Sunset.
-* calendar-unmark <1>:                   Diary Commands.
-* calendar-unmark:                       Holidays.
-* call-last-kbd-macro:                   Basic Kbd Macro.
-* cancel-debug-on-entry:                 Lisp Debug.
-* capitalize-word <1>:                   Case.
-* capitalize-word:                       Fixing Case.
-* center-line:                           Fill Commands.
-* choose-completion:                     Completion Commands.
-* clear-rectangle:                       Rectangles.
-* comint-delchar-or-maybe-eof:           Shell Mode.
-* comint-dynamic-complete:               Shell Mode.
-* comint-next-input:                     Shell Mode.
-* comint-previous-input:                 Shell Mode.
-* command-apropos:                       Apropos.
-* compare-windows <1>:                   Other Window.
-* compare-windows:                       Comparing Files.
-* compile:                               Compilation.
-* compile-defun:                         Defuns.
-* convert-mocklisp-buffer:               Mocklisp.
-* conx:                                  CONX.
-* conx-buffer:                           CONX.
-* conx-init:                             CONX.
-* conx-load:                             CONX.
-* conx-region:                           CONX.
-* conx-save:                             CONX.
-* copy-file:                             Misc File Ops.
-* copy-last-shell-input:                 Shell Mode.
-* copy-rectangle-to-register:            RegRect.
-* copy-region-as-kill:                   Kill Ring.
-* copy-to-buffer:                        Accumulating Text.
-* copy-to-register:                      RegText.
-* count-lines-page:                      Pages.
-* count-lines-region:                    Position Info.
-* count-matches:                         Other Repeating Search.
-* count-text-lines:                      Nroff Mode.
-* customize:                             Easy Customization.
-* customize-apropos:                     Specific Customization.
-* customize-browse:                      Customization Groups.
-* customize-customized:                  Specific Customization.
-* customize-face:                        Specific Customization.
-* customize-group:                       Specific Customization.
-* customize-option:                      Specific Customization.
-* customize-saved:                       Specific Customization.
-* dabbrev-expand:                        Dynamic Abbrevs.
-* debug:                                 Lisp Debug.
-* debug-on-entry:                        Lisp Debug.
-* default-value:                         Locals.
-* define-abbrevs:                        Saving Abbrevs.
-* define-key <1>:                        Programmatic Rebinding.
-* define-key:                            Interactive Rebinding.
-* delete-backward-char <1>:              Kill Errors.
-* delete-backward-char:                  Killing.
-* delete-blank-lines <1>:                Killing.
-* delete-blank-lines:                    Blank Lines.
-* delete-char <1>:                       Basic Picture.
-* delete-char:                           Killing.
-* delete-file:                           Misc File Ops.
-* delete-horizontal-space <1>:           Indentation Commands.
-* delete-horizontal-space:               Killing.
-* delete-indentation <1>:                Indentation Commands.
-* delete-indentation:                    Killing.
-* delete-matching-lines:                 Other Repeating Search.
-* delete-menu-item:                      Menu Customization.
-* delete-non-matching-lines:             Other Repeating Search.
-* delete-other-windows:                  Change Window.
-* delete-rectangle:                      Rectangles.
-* delete-window:                         Change Window.
-* describe-bindings:                     Misc Help.
-* describe-calendar-mode:                General Calendar.
-* describe-coding-system:                Coding Systems.
-* describe-copying:                      Misc Help.
-* describe-distribution:                 Misc Help.
-* describe-function <1>:                 Documentation.
-* describe-function:                     Name Help.
-* describe-input-method:                 Select Input Method.
-* describe-key:                          Key Help.
-* describe-key-briefly:                  Key Help.
-* describe-language-environment:         Language Environments.
-* describe-mode:                         Misc Help.
-* describe-no-warranty:                  Misc Help.
-* describe-syntax:                       Syntax Change.
-* describe-variable <1>:                 Examining.
-* describe-variable <2>:                 Documentation.
-* describe-variable:                     Name Help.
-* diary:                                 Diary Commands.
-* diary-anniversary <1>:                 Sexp Diary Entries.
-* diary-anniversary:                     Special Diary Entries.
-* diary-astro-day-number:                Sexp Diary Entries.
-* diary-block:                           Special Diary Entries.
-* diary-cyclic <1>:                      Sexp Diary Entries.
-* diary-cyclic:                          Special Diary Entries.
-* diary-day-of-year:                     Sexp Diary Entries.
-* diary-float:                           Special Diary Entries.
-* diary-french-date:                     Sexp Diary Entries.
-* diary-hebrew-date:                     Sexp Diary Entries.
-* diary-islamic-date:                    Sexp Diary Entries.
-* diary-iso-date:                        Sexp Diary Entries.
-* diary-julian-date:                     Sexp Diary Entries.
-* diary-mail-entries:                    Diary Commands.
-* diary-mayan-date:                      Sexp Diary Entries.
-* diary-omer:                            Sexp Diary Entries.
-* diary-parasha:                         Sexp Diary Entries.
-* diary-phases-of-moon:                  Sexp Diary Entries.
-* diary-rosh-hodesh:                     Sexp Diary Entries.
-* diary-sabbath-candles:                 Sexp Diary Entries.
-* diary-sunrise-sunset:                  Sexp Diary Entries.
-* diary-yahrzeit:                        Sexp Diary Entries.
-* diff:                                  Comparing Files.
-* diff-backup:                           Comparing Files.
-* digit-argument:                        Arguments.
-* dired:                                 Dired Enter.
-* dired-other-window <1>:                Pop Up Window.
-* dired-other-window:                    Dired Enter.
-* disable-command:                       Disabling.
-* disable-menu-item:                     Menu Customization.
-* disassemble:                           Compiling Libraries.
-* display-time:                          Mode Line.
-* dissociated-press:                     Dissociated Press.
-* do-auto-save:                          Auto Save Control.
-* doctor:                                Total Frustration.
-* down-list:                             Lists.
-* downcase-region:                       Case.
-* downcase-word <1>:                     Case.
-* downcase-word:                         Fixing Case.
-* edit-abbrevs:                          Editing Abbrevs.
-* edit-abbrevs-redefine:                 Editing Abbrevs.
-* edit-options:                          Edit Options.
-* edit-picture:                          Picture.
-* edit-tab-stops <1>:                    Text Mode.
-* edit-tab-stops:                        Tab Stops.
-* edit-tab-stops-note-changes:           Tab Stops.
-* edt-emulation-off:                     Emulation.
-* edt-emulation-on:                      Emulation.
-* electric-nroff-mode:                   Nroff Mode.
-* emacs-lisp-mode:                       Lisp Eval.
-* emacs-version:                         Bugs.
-* enable-command:                        Disabling.
-* enable-menu-item:                      Menu Customization.
-* end-kbd-macro:                         Basic Kbd Macro.
-* end-of-buffer:                         Moving Point.
-* end-of-defun:                          Defuns.
-* end-of-fortran-subprogram:             Fortran Motion.
-* end-of-line:                           Moving Point.
-* enlarge-window:                        Change Window.
-* enlarge-window-horizontally:           Change Window.
-* european-calendar:                     Date Formats.
-* eval-current-buffer:                   Lisp Eval.
-* eval-defun:                            Lisp Eval.
-* eval-expression:                       Lisp Eval.
-* eval-last-sexp:                        Lisp Eval.
-* eval-region:                           Lisp Eval.
-* exchange-point-and-mark:               Setting Mark.
-* execute-extended-command:              M-x.
-* exit-calendar:                         General Calendar.
-* exit-recursive-edit:                   Recursive Edit.
-* expand-abbrev:                         Expanding Abbrevs.
-* expand-region-abbrevs:                 Expanding Abbrevs.
-* fancy-diary-display:                   Fancy Diary Display.
-* fill-individual-paragraphs:            Fill Prefix.
-* fill-paragraph:                        Fill Commands.
-* fill-region:                           Fill Commands.
-* fill-region-as-paragraph:              Fill Commands.
-* find-alternate-file:                   Visiting.
-* find-file:                             Visiting.
-* find-file-other-frame <1>:             Visiting.
-* find-file-other-frame:                 XEmacs under X.
-* find-file-other-window <1>:            Pop Up Window.
-* find-file-other-window:                Visiting.
-* find-tag:                              Find Tag.
-* find-tag-other-window <1>:             Find Tag.
-* find-tag-other-window:                 Pop Up Window.
-* find-this-file:                        Visiting.
-* find-this-file-other-window:           Visiting.
-* finder-by-keyword:                     Library Keywords.
-* fortran-column-ruler:                  Fortran Columns.
-* fortran-comment-region:                Fortran Comments.
-* fortran-indent-line:                   ForIndent Commands.
-* fortran-indent-subprogram:             ForIndent Commands.
-* fortran-mode:                          Fortran.
-* fortran-next-statement:                Fortran Motion.
-* fortran-previous-statement:            Fortran Motion.
-* fortran-split-line:                    ForIndent Commands.
-* fortran-window-create:                 Fortran Columns.
-* forward-char:                          Moving Point.
-* forward-list:                          Lists.
-* forward-page:                          Pages.
-* forward-paragraph:                     Paragraphs.
-* forward-sentence:                      Sentences.
-* forward-sexp:                          Lists.
-* forward-text-line:                     Nroff Mode.
-* forward-word:                          Words.
-* frame-configuration-to-register:       RegConfig.
-* global-set-key <1>:                    Programmatic Rebinding.
-* global-set-key:                        Interactive Rebinding.
-* goto-char:                             Moving Point.
-* goto-line:                             Moving Point.
-* hanoi:                                 Amusements.
-* help-command:                          Help.
-* help-for-help:                         Help.
-* help-with-tutorial <1>:                Misc Help.
-* help-with-tutorial:                    Basic.
-* hide-body:                             Outline Visibility.
-* hide-entry:                            Outline Visibility.
-* hide-leaves:                           Outline Visibility.
-* hide-subtree:                          Outline Visibility.
-* holidays:                              Holidays.
-* include-other-diary-files:             Included Diary Files.
-* increment-register:                    RegNumbers.
-* indent-c-exp:                          Multi-line Indent.
-* indent-for-comment:                    Comments.
-* indent-new-comment-line:               Comments.
-* indent-region <1>:                     Multi-line Indent.
-* indent-region:                         Indentation Commands.
-* indent-relative:                       Indentation Commands.
-* indent-rigidly:                        Indentation Commands.
-* indent-sexp:                           Multi-line Indent.
-* indented-text-mode:                    Text Mode.
-* info:                                  Misc Help.
-* Info-elisp-ref:                        Misc Help.
-* Info-goto-emacs-command-node:          Misc Help.
-* insert-abbrevs:                        Saving Abbrevs.
-* insert-anniversary-diary-entry:        Special Diary Entries.
-* insert-block-diary-entry:              Special Diary Entries.
-* insert-cyclic-diary-entry:             Special Diary Entries.
-* insert-diary-entry:                    Adding to Diary.
-* insert-file:                           Misc File Ops.
-* insert-hebrew-diary-entry:             Hebrew/Islamic Entries.
-* insert-islamic-diary-entry:            Hebrew/Islamic Entries.
-* insert-kbd-macro:                      Save Kbd Macro.
-* insert-monthly-diary-entry:            Adding to Diary.
-* insert-monthly-hebrew-diary-entry:     Hebrew/Islamic Entries.
-* insert-monthly-islamic-diary-entry:    Hebrew/Islamic Entries.
-* insert-parentheses:                    Balanced Editing.
-* insert-register:                       RegText.
-* insert-weekly-diary-entry:             Adding to Diary.
-* insert-yearly-diary-entry:             Adding to Diary.
-* insert-yearly-hebrew-diary-entry:      Hebrew/Islamic Entries.
-* insert-yearly-islamic-diary-entry:     Hebrew/Islamic Entries.
-* interactive:                           M-x.
-* interrupt-shell-subjob:                Shell Mode.
-* inverse-add-global-abbrev:             Defining Abbrevs.
-* inverse-add-mode-abbrev:               Defining Abbrevs.
-* invert-face:                           Faces.
-* isearch-abort:                         Incremental Search.
-* isearch-backward:                      Incremental Search.
-* isearch-backward-regexp:               Regexp Search.
-* isearch-complete:                      Incremental Search.
-* isearch-delete-char:                   Incremental Search.
-* isearch-exit:                          Incremental Search.
-* isearch-forward:                       Incremental Search.
-* isearch-forward-regexp:                Regexp Search.
-* isearch-quote-char:                    Incremental Search.
-* isearch-repeat-backward:               Incremental Search.
-* isearch-repeat-forward:                Incremental Search.
-* isearch-ring-advance:                  Incremental Search.
-* isearch-ring-retreat:                  Incremental Search.
-* isearch-yank-line:                     Incremental Search.
-* isearch-yank-word:                     Incremental Search.
-* jump-to-register <1>:                  Split Window.
-* jump-to-register:                      RegPos.
-* just-one-space:                        Killing.
-* kbd-macro-query:                       Kbd Macro Query.
-* kill-all-abbrevs:                      Defining Abbrevs.
-* kill-buffer:                           Kill Buffer.
-* kill-comment:                          Comments.
-* kill-compilation:                      Compilation.
-* kill-line:                             Killing.
-* kill-local-variable:                   Locals.
-* kill-output-from-shell:                Shell Mode.
-* kill-rectangle:                        Rectangles.
-* kill-region:                           Killing.
-* kill-sentence <1>:                     Sentences.
-* kill-sentence:                         Killing.
-* kill-sexp <1>:                         Lists.
-* kill-sexp:                             Killing.
-* kill-some-buffers:                     Kill Buffer.
-* kill-word <1>:                         Words.
-* kill-word:                             Killing.
-* latex-mode:                            TeX Mode.
-* LaTeX-mode:                            TeX Mode.
-* lisp-complete-symbol:                  Lisp Completion.
-* lisp-indent-line:                      Basic Indent.
-* lisp-interaction-mode:                 Lisp Interaction.
-* lisp-mode:                             External Lisp.
-* lisp-send-defun:                       External Lisp.
-* list-abbrevs:                          Editing Abbrevs.
-* list-bookmarks:                        Bookmarks.
-* list-buffers:                          List Buffers.
-* list-calendar-holidays:                Holidays.
-* list-coding-systems:                   Coding Systems.
-* list-command-history:                  Repetition.
-* list-directory:                        ListDir.
-* list-hebrew-diary-entries:             Hebrew/Islamic Entries.
-* list-holidays:                         Holidays.
-* list-input-methods:                    Select Input Method.
-* list-islamic-diary-entries:            Hebrew/Islamic Entries.
-* list-matching-lines:                   Other Repeating Search.
-* list-options:                          Edit Options.
-* list-tags:                             List Tags.
-* list-yahrzeit-dates:                   From Other Calendar.
-* load:                                  Loading.
-* load-default-sounds:                   Audible Bell.
-* load-file:                             Loading.
-* load-library <1>:                      Loading.
-* load-library:                          Startup Paths.
-* load-sound-file:                       Audible Bell.
-* local-set-key:                         Interactive Rebinding.
-* local-unset-key:                       Interactive Rebinding.
-* locate-library:                        Loading.
-* lpr-buffer:                            Hardcopy.
-* lpr-region:                            Hardcopy.
-* mail:                                  Sending Mail.
-* mail-cc:                               Mail Mode.
-* mail-fill-yanked-message:              Mail Mode.
-* mail-interactive-insert-alias:         Mail Headers.
-* mail-other-window <1>:                 Sending Mail.
-* mail-other-window:                     Pop Up Window.
-* mail-send:                             Mail Mode.
-* mail-send-and-exit:                    Mail Mode.
-* mail-signature:                        Mail Mode.
-* mail-subject:                          Mail Mode.
-* mail-to:                               Mail Mode.
-* mail-yank-original:                    Mail Mode.
-* make-directory:                        File Names.
-* make-face-bold:                        Faces.
-* make-face-bold-italic:                 Faces.
-* make-face-italic:                      Faces.
-* make-face-larger:                      Faces.
-* make-face-smaller:                     Faces.
-* make-face-unbold:                      Faces.
-* make-face-unitalic:                    Faces.
-* make-frame:                            XEmacs under X.
-* make-local-variable:                   Locals.
-* make-obsolete:                         Compiling Libraries.
-* make-symbolic-link:                    Misc File Ops.
-* make-variable-buffer-local:            Locals.
-* manual-entry:                          Documentation.
-* mark-beginning-of-buffer:              Setting Mark.
-* mark-calendar-holidays:                Holidays.
-* mark-defun <1>:                        Defuns.
-* mark-defun:                            Marking Objects.
-* mark-diary-entries:                    Diary Commands.
-* mark-end-of-buffer:                    Setting Mark.
-* mark-fortran-subprogram:               Fortran Motion.
-* mark-hebrew-diary-entries:             Hebrew/Islamic Entries.
-* mark-included-diary-files:             Included Diary Files.
-* mark-islamic-diary-entries:            Hebrew/Islamic Entries.
-* mark-page <1>:                         Pages.
-* mark-page:                             Marking Objects.
-* mark-paragraph <1>:                    Paragraphs.
-* mark-paragraph:                        Marking Objects.
-* mark-sexp <1>:                         Lists.
-* mark-sexp:                             Marking Objects.
-* mark-whole-buffer:                     Marking Objects.
-* mark-word <1>:                         Words.
-* mark-word:                             Marking Objects.
-* minibuffer-complete:                   Completion Example.
-* minibuffer-complete-word:              Completion Commands.
-* modify-syntax-entry:                   Syntax Change.
-* mouse-choose-completion:               Completion Commands.
-* mouse-del-char:                        Additional Mouse Operations.
-* mouse-delete-window:                   Additional Mouse Operations.
-* mouse-keep-one-window:                 Additional Mouse Operations.
-* mouse-kill-line:                       Additional Mouse Operations.
-* mouse-line-length:                     Additional Mouse Operations.
-* mouse-scroll:                          Additional Mouse Operations.
-* mouse-select:                          Additional Mouse Operations.
-* mouse-select-and-split:                Additional Mouse Operations.
-* mouse-set-mark:                        Additional Mouse Operations.
-* mouse-set-point:                       Additional Mouse Operations.
-* mouse-track:                           Additional Mouse Operations.
-* mouse-track-adjust:                    Additional Mouse Operations.
-* mouse-track-and-copy-to-cutbuffer:     Additional Mouse Operations.
-* mouse-track-delete-and-insert:         Additional Mouse Operations.
-* move-over-close-and-reindent:          Balanced Editing.
-* move-to-window-line:                   Moving Point.
-* name-last-kbd-macro:                   Save Kbd Macro.
-* narrow-to-region:                      Narrowing.
-* negative-argument:                     Arguments.
-* newline:                               Inserting Text.
-* newline-and-indent:                    Basic Indent.
-* next-complex-command:                  Repetition.
-* next-error:                            Compilation.
-* next-history-element:                  Minibuffer History.
-* next-line:                             Moving Point.
-* next-list-mode-item:                   Completion Commands.
-* next-matching-history-element:         Minibuffer History.
-* not-modified:                          Saving.
-* nroff-mode:                            Nroff Mode.
-* number-to-register:                    RegNumbers.
-* occur:                                 Other Repeating Search.
-* open-dribble-file:                     Bugs.
-* open-line:                             Blank Lines.
-* open-rectangle:                        Rectangles.
-* open-termscript:                       Bugs.
-* other-window:                          Other Window.
-* other-window-any-frame:                Other Window.
-* outline-backward-same-level:           Outline Motion.
-* outline-forward-same-level:            Outline Motion.
-* outline-next-visible-heading:          Outline Motion.
-* outline-previous-visible-heading:      Outline Motion.
-* outline-up-heading:                    Outline Motion.
-* overwrite-mode:                        Minor Modes.
-* phases-of-moon:                        Lunar Phases.
-* picture-backward-clear-column:         Basic Picture.
-* picture-backward-column:               Basic Picture.
-* picture-clear-column:                  Basic Picture.
-* picture-clear-line:                    Basic Picture.
-* picture-clear-rectangle:               Rectangles in Picture.
-* picture-clear-rectangle-to-register:   Rectangles in Picture.
-* picture-forward-column:                Basic Picture.
-* picture-motion:                        Insert in Picture.
-* picture-motion-reverse:                Insert in Picture.
-* picture-move-down:                     Basic Picture.
-* picture-move-up:                       Basic Picture.
-* picture-movement-down:                 Insert in Picture.
-* picture-movement-left:                 Insert in Picture.
-* picture-movement-ne:                   Insert in Picture.
-* picture-movement-nw:                   Insert in Picture.
-* picture-movement-right:                Insert in Picture.
-* picture-movement-se:                   Insert in Picture.
-* picture-movement-sw:                   Insert in Picture.
-* picture-movement-up:                   Insert in Picture.
-* picture-newline:                       Basic Picture.
-* picture-open-line:                     Basic Picture.
-* picture-set-tab-stops:                 Tabs in Picture.
-* picture-tab:                           Tabs in Picture.
-* picture-tab-search:                    Tabs in Picture.
-* picture-yank-rectangle:                Rectangles in Picture.
-* picture-yank-rectangle-from-register:  Rectangles in Picture.
-* plain-TeX-mode:                        TeX Mode.
-* plain-tex-mode:                        TeX Mode.
-* play-sound:                            Audible Bell.
-* point-to-register:                     RegPos.
-* prefer-coding-system:                  Recognize Coding.
-* prepend-to-buffer:                     Accumulating Text.
-* previous-complex-command:              Repetition.
-* previous-history-element:              Minibuffer History.
-* previous-line:                         Moving Point.
-* previous-list-mode-item:               Completion Commands.
-* previous-matching-history-element:     Minibuffer History.
-* print-buffer:                          Hardcopy.
-* print-diary-entries <1>:               Diary Customizing.
-* print-diary-entries:                   Diary Commands.
-* print-region:                          Hardcopy.
-* quail-set-keyboard-layout:             Select Input Method.
-* query-replace:                         Query Replace.
-* query-replace-regexp:                  Query Replace.
-* quietly-read-abbrev-file:              Saving Abbrevs.
-* quit-shell-subjob:                     Shell Mode.
-* quoted-insert:                         Inserting Text.
-* re-search-backward:                    Regexp Search.
-* re-search-forward:                     Regexp Search.
-* read-abbrev-file:                      Saving Abbrevs.
-* read-key-sequence:                     Representing Keystrokes.
-* recenter <1>:                          Scrolling.
-* recenter:                              Moving Point.
-* recover-file:                          Recover.
-* redraw-calendar:                       General Calendar.
-* relabel-menu-item:                     Menu Customization.
-* remove-directory:                      File Names.
-* rename-buffer:                         Misc Buffer.
-* rename-file:                           Misc File Ops.
-* repeat-complex-command:                Repetition.
-* replace-regexp:                        Unconditional Replace.
-* replace-string:                        Unconditional Replace.
-* revert-buffer:                         Reverting.
-* run-lisp:                              External Lisp.
-* save-buffer:                           Saving.
-* save-buffers-kill-emacs:               Exiting.
-* save-some-buffers:                     Saving.
-* scroll-calendar-left:                  Scroll Calendar.
-* scroll-calendar-left-three-months:     Scroll Calendar.
-* scroll-calendar-right:                 Scroll Calendar.
-* scroll-calendar-right-three-months:    Scroll Calendar.
-* scroll-down:                           Scrolling.
-* scroll-left:                           Horizontal Scrolling.
-* scroll-other-window <1>:               General Calendar.
-* scroll-other-window:                   Other Window.
-* scroll-right:                          Horizontal Scrolling.
-* scroll-up:                             Scrolling.
-* search-backward:                       Non-Incremental Search.
-* search-forward:                        Non-Incremental Search.
-* select-input-method:                   Select Input Method.
-* self-insert:                           Inserting Text.
-* send-shell-input:                      Shell Mode.
-* set-buffer-file-coding-system:         Specify Coding.
-* set-buffer-process-coding-system:      Specify Coding.
-* set-comment-column:                    Comments.
-* set-default-file-modes:                Interlocking.
-* set-face-background:                   Faces.
-* set-face-background-pixmap:            Faces.
-* set-face-font:                         Faces.
-* set-face-foreground:                   Faces.
-* set-face-underline-p:                  Faces.
-* set-fill-column:                       Fill Commands.
-* set-fill-prefix:                       Fill Prefix.
-* set-gnu-bindings:                      Emulation.
-* set-goal-column:                       Moving Point.
-* set-gosmacs-bindings:                  Emulation.
-* set-keyboard-coding-system:            Specify Coding.
-* set-language-environment:              Language Environments.
-* set-mark-command:                      Setting Mark.
-* set-selective-display:                 Selective Display.
-* set-terminal-coding-system:            Specify Coding.
-* set-variable:                          Examining.
-* set-visited-file-name:                 Saving.
-* setq-default:                          Locals.
-* shell:                                 Interactive Shell.
-* shell-command:                         Single Shell.
-* shell-command-on-region:               Single Shell.
-* shell-send-eof:                        Shell Mode.
-* show-all:                              Outline Visibility.
-* show-all-diary-entries:                Diary Commands.
-* show-branches:                         Outline Visibility.
-* show-children:                         Outline Visibility.
-* show-entry:                            Outline Visibility.
-* show-output-from-shell:                Shell Mode.
-* show-subtree:                          Outline Visibility.
-* simple-diary-display:                  Fancy Diary Display.
-* sort-columns:                          Sorting.
-* sort-diary-entries:                    Fancy Diary Display.
-* sort-fields:                           Sorting.
-* sort-lines:                            Sorting.
-* sort-numeric-fields:                   Sorting.
-* sort-pages:                            Sorting.
-* sort-paragraphs:                       Sorting.
-* spell-buffer:                          Spelling.
-* spell-region:                          Spelling.
-* spell-string:                          Spelling.
-* spell-word:                            Spelling.
-* split-line:                            Indentation Commands.
-* split-window-horizontally:             Split Window.
-* split-window-vertically:               Split Window.
-* start-kbd-macro:                       Basic Kbd Macro.
-* stop-shell-subjob:                     Shell Mode.
-* substitute-key-definition:             Interactive Rebinding.
-* sunrise-sunset:                        Sunrise/Sunset.
-* suspend-emacs:                         Exiting.
-* switch-to-buffer:                      Select Buffer.
-* switch-to-buffer-other-frame <1>:      Select Buffer.
-* switch-to-buffer-other-frame:          XEmacs under X.
-* switch-to-buffer-other-window <1>:     Pop Up Window.
-* switch-to-buffer-other-window:         Select Buffer.
-* switch-to-completions:                 Completion Commands.
-* switch-to-other-buffer:                Select Buffer.
-* tab-to-tab-stop <1>:                   Text Mode.
-* tab-to-tab-stop:                       Tab Stops.
-* tabify:                                Just Spaces.
-* tags-apropos:                          List Tags.
-* tags-loop-continue:                    Tags Search.
-* tags-query-replace:                    Tags Search.
-* tags-search:                           Tags Search.
-* term:                                  Terminal emulator.
-* term-line-mode:                        Term Mode.
-* term-pager-toggle:                     Paging in Term.
-* tex-buffer:                            TeX Print.
-* tex-close-latex-block:                 TeX Editing.
-* tex-insert-braces:                     TeX Editing.
-* tex-insert-quote:                      TeX Editing.
-* tex-kill-job:                          TeX Print.
-* tex-mode:                              TeX Mode.
-* TeX-mode:                              TeX Mode.
-* tex-print:                             TeX Print.
-* tex-recenter-output-buffer:            TeX Print.
-* tex-region:                            TeX Print.
-* tex-show-print-queue:                  TeX Print.
-* tex-terminate-paragraph:               TeX Editing.
-* text-mode:                             Text Mode.
-* toggle-input-method:                   Select Input Method.
-* toggle-read-only:                      Misc Buffer.
-* top-level <1>:                         Quitting.
-* top-level:                             Recursive Edit.
-* transpose-chars <1>:                   Transpose.
-* transpose-chars:                       Moving Point.
-* transpose-lines:                       Transpose.
-* transpose-sexps <1>:                   Lists.
-* transpose-sexps:                       Transpose.
-* transpose-words <1>:                   Words.
-* transpose-words:                       Transpose.
-* undo:                                  Undo.
-* unexpand-abbrev:                       Expanding Abbrevs.
-* universal-argument:                    Arguments.
-* universal-coding-system-argument:      Specify Coding.
-* untabify:                              Just Spaces.
-* up-list:                               TeX Editing.
-* upcase-region:                         Case.
-* upcase-word <1>:                       Case.
-* upcase-word:                           Fixing Case.
-* validate-tex-buffer:                   TeX Editing.
-* vc-cancel-version:                     Editing with VC.
-* vc-create-snapshot:                    Making Snapshots.
-* vc-diff:                               Old Versions.
-* vc-directory:                          VC Status.
-* vc-insert-headers:                     Version Headers.
-* vc-next-action:                        Editing with VC.
-* vc-print-log:                          VC Status.
-* vc-register:                           Editing with VC.
-* vc-rename-file:                        Renaming and VC.
-* vc-retrieve-snapshot:                  Making Snapshots.
-* vc-revert-buffer:                      Editing with VC.
-* vc-update-change-log:                  Change Logs and VC.
-* vc-version-other-window:               Old Versions.
-* view-buffer:                           Misc Buffer.
-* view-diary-entries:                    Diary Commands.
-* view-emacs-news:                       Misc Help.
-* view-file:                             Misc File Ops.
-* view-hello-file:                       Mule Intro.
-* view-lossage:                          Misc Help.
-* view-register:                         Registers.
-* visit-tags-table:                      Select Tags Table.
-* what-cursor-position:                  Position Info.
-* what-line:                             Position Info.
-* what-page:                             Position Info.
-* where-is:                              Name Help.
-* widen:                                 Narrowing.
-* widget-backward:                       Changing an Option.
-* widget-complete:                       Changing an Option.
-* widget-forward:                        Changing an Option.
-* window-configuration-to-register <1>:  Split Window.
-* window-configuration-to-register:      RegConfig.
-* word-search-backward:                  Word Search.
-* word-search-forward:                   Word Search.
-* write-abbrev-file:                     Saving Abbrevs.
-* write-file:                            Saving.
-* x-copy-primary-selection:              X Selection Commands.
-* x-create-frame:                        X Resources.
-* x-delete-primary-selection:            X Selection Commands.
-* x-insert-selection:                    X Selection Commands.
-* x-kill-primary-selection:              X Selection Commands.
-* x-mouse-kill:                          X Selection Commands.
-* x-own-secondary-selection:             X Selection Commands.
-* x-own-selection:                       X Selection Commands.
-* x-set-point-and-insert-selection:      X Selection Commands.
-* xemacs-local-faq:                      Misc Help.
-* Yank:                                  Kill Ring.
-* yank-pop:                              Earlier Kills.
-* yank-rectangle:                        Rectangles.
-* yow:                                   Amusements.
-* zap-to-char:                           Killing.
-* zmacs-activate-region:                 Active Regions.
-* zmacs-deactivate-region:               Active Regions.
+* ! (query-replace):                     Query Replace.
+* " (TeX mode):                          TeX Editing.
+* , (query-replace):                     Query Replace.
+* . (Calendar mode):                     Specified Dates.
+* . (query-replace):                     Query Replace.
+* ? (Calendar mode):                     General Calendar.
+* ^ (query-replace):                     Query Replace.
+* a (Calendar mode):                     Holidays.
+* BS:                                    Inserting Text.
+* button1:                               Intro to Keystrokes.
+* button1up:                             Intro to Keystrokes.
+* button2:                               Intro to Keystrokes.
+* button2up:                             Intro to Keystrokes.
+* button3:                               Intro to Keystrokes.
+* button3up:                             Intro to Keystrokes.
+* C-<:                                   Setting Mark.
+* C->:                                   Setting Mark.
+* C-@ (Calendar mode):                   Mark and Region.
+* C-\:                                   Select Input Method.
+* C-] <1>:                               Quitting.
+* C-]:                                   Recursive Edit.
+* C-_:                                   Undo.
+* C-a:                                   Moving Point.
+* C-a (Calendar mode):                   Move to Beginning or End.
+* C-b:                                   Moving Point.
+* C-b (Calendar mode):                   Calendar Unit Motion.
+* C-c:                                   Key Sequences.
+* C-c ' (Picture mode):                  Insert in Picture.
+* C-c . (Picture mode):                  Insert in Picture.
+* C-c / (Picture mode):                  Insert in Picture.
+* C-c ; (Fortran mode):                  Fortran Comments.
+* C-c < (Picture mode):                  Insert in Picture.
+* C-c > (Picture mode):                  Insert in Picture.
+* C-c \ (Picture mode):                  Insert in Picture.
+* C-c ^ (Picture mode):                  Insert in Picture.
+* C-c ` (Picture mode):                  Insert in Picture.
+* C-c C-\ (Shell mode):                  Shell Mode.
+* C-c C-b (Outline mode):                Outline Motion.
+* C-c C-b (Picture mode):                Insert in Picture.
+* C-c C-b (TeX mode):                    TeX Print.
+* C-c C-c (Edit Abbrevs):                Editing Abbrevs.
+* C-c C-c (Edit Tab Stops):              Tab Stops.
+* C-c C-c (Mail mode):                   Mail Mode.
+* C-c C-c (Occur mode):                  Other Repeating Search.
+* C-c C-c (Shell mode):                  Shell Mode.
+* C-c C-d (Picture mode):                Basic Picture.
+* C-c C-d (Shell mode):                  Shell Mode.
+* C-c C-f (LaTeX mode):                  TeX Editing.
+* C-c C-f (Outline mode):                Outline Motion.
+* C-c C-f (Picture mode):                Insert in Picture.
+* C-c C-f C-c (Mail mode):               Mail Mode.
+* C-c C-f C-s (Mail mode):               Mail Mode.
+* C-c C-f C-t (Mail mode):               Mail Mode.
+* C-c C-h (Outline mode):                Outline Visibility.
+* C-c C-i (Outline mode):                Outline Visibility.
+* C-c C-j (Term mode):                   Term Mode.
+* C-c C-k (Picture mode):                Rectangles in Picture.
+* C-c C-k (Term mode):                   Term Mode.
+* C-c C-k (TeX mode):                    TeX Print.
+* C-c C-l (Calendar mode):               General Calendar.
+* C-c C-l (TeX mode):                    TeX Print.
+* C-c C-n (Fortran mode):                Fortran Motion.
+* C-c C-n (Outline mode):                Outline Motion.
+* C-c C-o (Shell mode):                  Shell Mode.
+* C-c C-p (Fortran mode):                Fortran Motion.
+* C-c C-p (Outline mode):                Outline Motion.
+* C-c C-p (TeX mode):                    TeX Print.
+* C-c C-q (Mail mode):                   Mail Mode.
+* C-c C-q (Term mode):                   Paging in Term.
+* C-c C-q (TeX mode):                    TeX Print.
+* C-c C-r (Fortran mode):                Fortran Columns.
+* C-c C-r (Shell mode):                  Shell Mode.
+* C-c C-r (TeX mode):                    TeX Print.
+* C-c C-s (Mail mode):                   Mail Mode.
+* C-c C-s (Outline mode):                Outline Visibility.
+* C-c C-u (Outline mode):                Outline Motion.
+* C-c C-u (Shell mode):                  Shell Mode.
+* C-c C-w (Fortran mode):                Fortran Columns.
+* C-c C-w (Mail mode):                   Mail Mode.
+* C-c C-w (Picture mode):                Rectangles in Picture.
+* C-c C-w (Shell mode):                  Shell Mode.
+* C-c C-x (Picture mode):                Rectangles in Picture.
+* C-c C-y (Mail mode):                   Mail Mode.
+* C-c C-y (Picture mode):                Rectangles in Picture.
+* C-c C-y (Shell mode):                  Shell Mode.
+* C-c C-z (Shell mode):                  Shell Mode.
+* C-c TAB (Picture mode):                Tabs in Picture.
+* C-c { (TeX mode):                      TeX Editing.
+* C-c } (TeX mode):                      TeX Editing.
+* C-d:                                   Killing.
+* C-d (Shell mode):                      Shell Mode.
+* C-e:                                   Moving Point.
+* C-e (Calendar mode):                   Move to Beginning or End.
+* C-END:                                 Moving Point.
+* C-f:                                   Moving Point.
+* C-f (Calendar mode):                   Calendar Unit Motion.
+* C-g <1>:                               Quitting.
+* C-g:                                   Minibuffer.
+* C-g (isearch-mode):                    Incremental Search.
+* C-h <1>:                               Help.
+* C-h:                                   Key Sequences.
+* C-h A:                                 Apropos.
+* C-h b:                                 Misc Help.
+* C-h C:                                 Coding Systems.
+* C-h c:                                 Key Help.
+* C-h C-\:                               Select Input Method.
+* C-h C-c:                               Misc Help.
+* C-h C-d:                               Misc Help.
+* C-h C-f:                               Misc Help.
+* C-h C-h:                               Help.
+* C-h C-k:                               Misc Help.
+* C-h C-w:                               Misc Help.
+* C-h f:                                 Documentation.
+* C-h F:                                 Misc Help.
+* C-h f:                                 Name Help.
+* C-h h:                                 Mule Intro.
+* C-h I:                                 Select Input Method.
+* C-h i:                                 Misc Help.
+* C-h k:                                 Key Help.
+* C-h L:                                 Language Environments.
+* C-h l:                                 Misc Help.
+* C-h m:                                 Misc Help.
+* C-h n:                                 Misc Help.
+* C-h p:                                 Library Keywords.
+* C-h s:                                 Syntax Change.
+* C-h t <1>:                             Misc Help.
+* C-h t:                                 Basic.
+* C-h v <1>:                             Examining.
+* C-h v <2>:                             Documentation.
+* C-h v:                                 Name Help.
+* C-h w:                                 Name Help.
+* C-HOME:                                Moving Point.
+* C-k:                                   Killing.
+* C-l <1>:                               Scrolling.
+* C-l:                                   Moving Point.
+* C-l (query-replace):                   Query Replace.
+* C-LEFT:                                Moving Point.
+* C-M-@ <1>:                             Lists.
+* C-M-@:                                 Marking Objects.
+* C-M-\ <1>:                             Multi-line Indent.
+* C-M-\:                                 Indentation Commands.
+* C-M-a:                                 Defuns.
+* C-M-a (Fortran mode):                  Fortran Motion.
+* C-M-b:                                 Lists.
+* C-M-c:                                 Recursive Edit.
+* C-M-d:                                 Lists.
+* C-M-e:                                 Defuns.
+* C-M-e (Fortran mode):                  Fortran Motion.
+* C-M-f:                                 Lists.
+* C-M-h <1>:                             Defuns.
+* C-M-h:                                 Marking Objects.
+* C-M-h (Fortran mode):                  Fortran Motion.
+* C-M-k <1>:                             Lists.
+* C-M-k:                                 Killing.
+* C-M-n:                                 Lists.
+* C-M-o:                                 Indentation Commands.
+* C-M-p:                                 Lists.
+* C-M-q:                                 Multi-line Indent.
+* C-M-q (Fortran mode):                  ForIndent Commands.
+* C-M-t <1>:                             Lists.
+* C-M-t:                                 Transpose.
+* C-M-u:                                 Lists.
+* C-M-v <1>:                             Other Window.
+* C-M-v:                                 Minibuffer Edit.
+* C-M-w:                                 Appending Kills.
+* C-M-x <1>:                             External Lisp.
+* C-M-x:                                 Lisp Eval.
+* C-n:                                   Moving Point.
+* C-n (Calendar mode):                   Calendar Unit Motion.
+* C-o:                                   Blank Lines.
+* C-p:                                   Moving Point.
+* C-p (Calendar mode):                   Calendar Unit Motion.
+* C-q:                                   Inserting Text.
+* C-q (isearch-mode):                    Incremental Search.
+* C-r:                                   Incremental Search.
+* C-r (isearch-mode):                    Incremental Search.
+* C-r (query-replace):                   Query Replace.
+* C-RIGHT:                               Moving Point.
+* C-s:                                   Incremental Search.
+* C-s (isearch-mode):                    Incremental Search.
+* C-SPC:                                 Setting Mark.
+* C-SPC (Calendar mode):                 Mark and Region.
+* C-t <1>:                               Transpose.
+* C-t:                                   Moving Point.
+* C-u:                                   Arguments.
+* C-u - C-x ;:                           Comments.
+* C-u C-@:                               Mark Ring.
+* C-u C-SPC:                             Mark Ring.
+* C-u C-x v v:                           Editing with VC.
+* C-u TAB:                               Multi-line Indent.
+* C-v <1>:                               Scrolling.
+* C-v:                                   Moving Point.
+* C-v (Calendar mode):                   Scroll Calendar.
+* C-w:                                   Killing.
+* C-w (isearch-mode):                    Incremental Search.
+* C-w (query-replace):                   Query Replace.
+* C-x:                                   Key Sequences.
+* C-x $:                                 Selective Display.
+* C-x (:                                 Basic Kbd Macro.
+* C-x ):                                 Basic Kbd Macro.
+* C-x .:                                 Fill Prefix.
+* C-x 0:                                 Change Window.
+* C-x 1:                                 Change Window.
+* C-x 2:                                 Split Window.
+* C-x 3:                                 Split Window.
+* C-x 4:                                 Pop Up Window.
+* C-x 4 .:                               Find Tag.
+* C-x 4 b:                               Select Buffer.
+* C-x 4 d:                               Dired Enter.
+* C-x 4 f:                               Visiting.
+* C-x 4 m:                               Sending Mail.
+* C-x 5 b:                               Select Buffer.
+* C-x 5 C-f:                             Visiting.
+* C-x ;:                                 Comments.
+* C-x <:                                 Horizontal Scrolling.
+* C-x < (Calendar mode):                 Scroll Calendar.
+* C-x =:                                 Position Info.
+* C-x >:                                 Horizontal Scrolling.
+* C-x > (Calendar mode):                 Scroll Calendar.
+* C-x [:                                 Pages.
+* C-x [ (Calendar mode):                 Calendar Unit Motion.
+* C-x ]:                                 Pages.
+* C-x ] (Calendar mode):                 Calendar Unit Motion.
+* C-x ^:                                 Change Window.
+* C-x `:                                 Compilation.
+* C-x a g:                               Defining Abbrevs.
+* C-x a i g:                             Defining Abbrevs.
+* C-x a i l:                             Defining Abbrevs.
+* C-x a l:                               Defining Abbrevs.
+* C-x b:                                 Select Buffer.
+* C-x C-b:                               List Buffers.
+* C-x C-c:                               Exiting.
+* C-x C-d:                               ListDir.
+* C-x C-e:                               Lisp Eval.
+* C-x C-l:                               Case.
+* C-x C-o <1>:                           Killing.
+* C-x C-o:                               Blank Lines.
+* C-x C-p <1>:                           Pages.
+* C-x C-p:                               Marking Objects.
+* C-x C-q:                               Misc Buffer.
+* C-x C-q (version control):             Editing with VC.
+* C-x C-s:                               Saving.
+* C-x C-t:                               Transpose.
+* C-x C-u:                               Case.
+* C-x C-v:                               Visiting.
+* C-x C-w:                               Saving.
+* C-x C-x:                               Setting Mark.
+* C-x C-x (Calendar mode):               Mark and Region.
+* C-x d:                                 Dired Enter.
+* C-x DEL <1>:                           Sentences.
+* C-x DEL <2>:                           Kill Errors.
+* C-x DEL:                               Killing.
+* C-x e:                                 Basic Kbd Macro.
+* C-x ESC ESC:                           Repetition.
+* C-x f:                                 Fill Commands.
+* C-x h:                                 Marking Objects.
+* C-x k:                                 Kill Buffer.
+* C-x l:                                 Pages.
+* C-x m:                                 Sending Mail.
+* C-x n n:                               Narrowing.
+* C-x n w:                               Narrowing.
+* C-x o:                                 Other Window.
+* C-x q:                                 Kbd Macro Query.
+* C-x r +:                               RegNumbers.
+* C-x r b:                               Bookmarks.
+* C-x r g:                               RegText.
+* C-x r i:                               RegText.
+* C-x r j:                               RegPos.
+* C-x r l:                               Bookmarks.
+* C-x r m:                               Bookmarks.
+* C-x r n:                               RegNumbers.
+* C-x r r:                               RegRect.
+* C-x r s:                               RegText.
+* C-x r SPC:                             RegPos.
+* C-x r w:                               RegConfig.
+* C-x RET:                               Mule Intro.
+* C-x RET c:                             Specify Coding.
+* C-x RET C-\:                           Select Input Method.
+* C-x RET f:                             Specify Coding.
+* C-x RET k:                             Specify Coding.
+* C-x RET p:                             Specify Coding.
+* C-x RET t:                             Specify Coding.
+* C-x s:                                 Saving.
+* C-x TAB:                               Indentation Commands.
+* C-x u:                                 Undo.
+* C-x v =:                               Old Versions.
+* C-x v a:                               Change Logs and VC.
+* C-x v c:                               Editing with VC.
+* C-x v d:                               VC Status.
+* C-x v h:                               Version Headers.
+* C-x v i:                               Editing with VC.
+* C-x v l:                               VC Status.
+* C-x v r:                               Making Snapshots.
+* C-x v s:                               Making Snapshots.
+* C-x v u:                               Editing with VC.
+* C-x v ~:                               Old Versions.
+* C-x }:                                 Change Window.
+* C-y:                                   Kill Ring.
+* C-y (isearch-mode):                    Incremental Search.
+* C-z:                                   Exiting.
+* control key:                           Intro to Keystrokes.
+* d (Calendar mode):                     Diary Commands.
+* DEL <1>:                               Program Modes.
+* DEL <2>:                               Major Modes.
+* DEL <3>:                               Kill Errors.
+* DEL:                                   Killing.
+* DEL (isearch-mode):                    Incremental Search.
+* DEL (query-replace):                   Query Replace.
+* DOWN:                                  Moving Point.
+* END:                                   Moving Point.
+* ESC <1>:                               Meta Key.
+* ESC:                                   Key Sequences.
+* ESC (query-replace):                   Query Replace.
+* F1:                                    Help.
+* g CHAR (Calendar mode):                From Other Calendar.
+* g d (Calendar mode):                   Specified Dates.
+* g m l (Calendar mode):                 Mayan Calendar.
+* h (Calendar mode):                     Holidays.
+* Help:                                  Help.
+* HOME:                                  Moving Point.
+* hyper key <1>:                         Super and Hyper Keys.
+* hyper key <2>:                         Representing Keystrokes.
+* hyper key:                             Intro to Keystrokes.
+* i a (Calendar mode):                   Special Diary Entries.
+* i b (Calendar mode):                   Special Diary Entries.
+* i c (Calendar mode):                   Special Diary Entries.
+* i d (Calendar mode):                   Adding to Diary.
+* i m (Calendar mode):                   Adding to Diary.
+* i w (Calendar mode):                   Adding to Diary.
+* i y (Calendar mode):                   Adding to Diary.
+* LEFT:                                  Moving Point.
+* LFD <1>:                               Basic Indent.
+* LFD <2>:                               Major Modes.
+* LFD:                                   String Key Sequences.
+* LFD (TeX mode):                        TeX Editing.
+* m (Calendar mode):                     Diary Commands.
+* M (Calendar mode):                     Lunar Phases.
+* M-!:                                   Single Shell.
+* M-$:                                   Spelling.
+* M-%:                                   Query Replace.
+* M-':                                   Expanding Abbrevs.
+* M-(:                                   Balanced Editing.
+* M-):                                   Balanced Editing.
+* M-,:                                   Tags Search.
+* M--:                                   Arguments.
+* M-- M-c:                               Fixing Case.
+* M-- M-l:                               Fixing Case.
+* M-- M-u:                               Fixing Case.
+* M-.:                                   Find Tag.
+* M-/:                                   Dynamic Abbrevs.
+* M-1:                                   Arguments.
+* M-;:                                   Comments.
+* M-<:                                   Moving Point.
+* M-< (Calendar mode):                   Move to Beginning or End.
+* M-=:                                   Position Info.
+* M-= (Calendar mode):                   Mark and Region.
+* M->:                                   Moving Point.
+* M-> (Calendar mode):                   Move to Beginning or End.
+* M-?:                                   Nroff Mode.
+* M-@ <1>:                               Words.
+* M-@:                                   Marking Objects.
+* M-[:                                   Paragraphs.
+* M-\ <1>:                               Indentation Commands.
+* M-\:                                   Killing.
+* M-]:                                   Paragraphs.
+* M-^ <1>:                               Indentation Commands.
+* M-^:                                   Killing.
+* M-a:                                   Sentences.
+* M-a (Calendar mode):                   Move to Beginning or End.
+* M-b:                                   Words.
+* M-c:                                   Case.
+* M-C-r:                                 Regexp Search.
+* M-C-s:                                 Regexp Search.
+* M-d <1>:                               Words.
+* M-d:                                   Killing.
+* M-DEL <1>:                             Words.
+* M-DEL <2>:                             Kill Errors.
+* M-DEL:                                 Killing.
+* M-e:                                   Sentences.
+* M-e (Calendar mode):                   Move to Beginning or End.
+* M-ESC:                                 Lisp Eval.
+* M-f:                                   Words.
+* M-g:                                   Fill Commands.
+* M-h <1>:                               Paragraphs.
+* M-h:                                   Marking Objects.
+* M-i:                                   Tab Stops.
+* M-k <1>:                               Sentences.
+* M-k:                                   Killing.
+* M-l:                                   Case.
+* M-LFD:                                 Comments.
+* M-LFD (Fortran mode):                  ForIndent Commands.
+* M-m:                                   Indentation Commands.
+* M-n <1>:                               Nroff Mode.
+* M-n:                                   Repetition.
+* M-n (isearch-mode):                    Incremental Search.
+* M-n (minibuffer history):              Minibuffer History.
+* M-n (Shell mode):                      Shell Mode.
+* M-p <1>:                               Nroff Mode.
+* M-p:                                   Repetition.
+* M-p (isearch-mode):                    Incremental Search.
+* M-p (minibuffer history):              Minibuffer History.
+* M-p (Shell mode):                      Shell Mode.
+* M-q:                                   Fill Commands.
+* M-r:                                   Moving Point.
+* M-r (minibuffer history):              Minibuffer History.
+* M-s:                                   Fill Commands.
+* M-s (minibuffer history):              Minibuffer History.
+* M-SPC:                                 Killing.
+* M-t <1>:                               Words.
+* M-t:                                   Transpose.
+* M-TAB <1>:                             Tabs in Picture.
+* M-TAB:                                 Lisp Completion.
+* M-TAB (customization buffer):          Changing an Option.
+* M-TAB (isearch-mode):                  Incremental Search.
+* M-u:                                   Case.
+* M-v <1>:                               Scrolling.
+* M-v:                                   Moving Point.
+* M-v (Calendar mode):                   Scroll Calendar.
+* M-w:                                   Kill Ring.
+* M-x:                                   M-x.
+* M-y:                                   Earlier Kills.
+* M-z:                                   Killing.
+* M-{ (Calendar mode):                   Calendar Unit Motion.
+* M-|:                                   Single Shell.
+* M-} (Calendar mode):                   Calendar Unit Motion.
+* M-~:                                   Saving.
+* META:                                  Meta Key.
+* meta key:                              Intro to Keystrokes.
+* next:                                  Scrolling.
+* o (Calendar mode):                     Specified Dates.
+* p (Calendar mode):                     To Other Calendar.
+* p d (Calendar mode):                   General Calendar.
+* pgdn:                                  Scrolling.
+* PGDN:                                  Moving Point.
+* pgup:                                  Scrolling.
+* PGUP:                                  Moving Point.
+* prior:                                 Scrolling.
+* q (Calendar mode):                     General Calendar.
+* RET:                                   Inserting Text.
+* RET (isearch-mode):                    Incremental Search.
+* RET (Shell mode):                      Shell Mode.
+* RIGHT:                                 Moving Point.
+* s (Calendar mode):                     Diary Commands.
+* S (Calendar mode):                     Sunrise/Sunset.
+* S-TAB (customization buffer):          Changing an Option.
+* shift key:                             Intro to Keystrokes.
+* SPC:                                   Completion Commands.
+* SPC (Calendar mode):                   General Calendar.
+* SPC (query-replace):                   Query Replace.
+* super key <1>:                         Super and Hyper Keys.
+* super key <2>:                         Representing Keystrokes.
+* super key:                             Intro to Keystrokes.
+* t (Calendar mode):                     LaTeX Calendar.
+* TAB <1>:                               Basic Indent.
+* TAB <2>:                               Text Mode.
+* TAB <3>:                               Indentation.
+* TAB <4>:                               Major Modes.
+* TAB <5>:                               Completion Example.
+* TAB:                                   String Key Sequences.
+* TAB (customization buffer):            Changing an Option.
+* TAB (Shell mode):                      Shell Mode.
+* u (Calendar mode) <1>:                 Diary Commands.
+* u (Calendar mode):                     Holidays.
+* UP:                                    Moving Point.
+* x (Calendar mode):                     Holidays.
 
index e5b56b3..62d8003 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -30,812 +30,766 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \1f
-File: xemacs.info,  Node: Variable Index,  Next: Concept Index,  Prev: Command Index,  Up: Top
+File: xemacs.info,  Node: Command Index,  Next: Variable Index,  Prev: Key Index,  Up: Top
 
-Variable Index
-**************
+Command and Function Index
+**************************
 
 * Menu:
 
-* abbrev-all-caps:                       Expanding Abbrevs.
-* abbrev-file-name:                      Saving Abbrevs.
+* abbrev-mode <1>:                       Minor Modes.
 * abbrev-mode:                           Abbrevs.
-* after-load-alist:                      Loading.
-* after-save-hook:                       Saving.
-* all-christian-calendar-holidays:       Holiday Customizing.
-* all-hebrew-calendar-holidays:          Holiday Customizing.
-* all-islamic-calendar-holidays:         Holiday Customizing.
-* appt-audible:                          Appt Customizing.
-* appt-display-duration:                 Appt Customizing.
-* appt-display-mode-line:                Appt Customizing.
-* appt-message-warning-time:             Appt Customizing.
-* appt-msg-window:                       Appt Customizing.
-* appt-visible:                          Appt Customizing.
-* apropos-do-all:                        Apropos.
-* auto-fill-inhibit-regexp:              Fill Commands.
-* auto-lower-frame:                      XEmacs under X.
-* auto-mode-alist:                       Choosing Modes.
-* auto-raise-frame:                      XEmacs under X.
-* auto-save-default:                     Auto Save Control.
-* auto-save-interval:                    Auto Save Control.
-* auto-save-timeout:                     Auto Save Control.
-* auto-save-visited-file-name:           Auto Save Files.
-* backup-by-copying:                     Backup Copying.
-* backup-by-copying-when-linked:         Backup Copying.
-* backup-by-copying-when-mismatch:       Backup Copying.
-* bell-volume:                           Audible Bell.
-* blink-matching-paren:                  Matching.
-* blink-matching-paren-distance:         Matching.
-* bookmark-save-flag:                    Bookmarks.
-* bookmark-search-size:                  Bookmarks.
-* buffer-file-coding-system:             Recognize Coding.
-* buffer-file-name:                      Visiting.
-* buffer-file-truename:                  Visiting.
-* buffer-read-only:                      Misc Buffer.
-* buffer-tag-table:                      Find Tag.
-* c-argdecl-indent:                      C Indent.
-* c-auto-newline:                        C Indent.
-* c-brace-imaginary-offset:              C Indent.
-* c-brace-offset:                        C Indent.
-* c-continued-statement-offset:          C Indent.
-* c-indent-level:                        C Indent.
-* c-label-offset:                        C Indent.
-* c-mode-hook:                           Program Modes.
-* c-mode-map:                            Keymaps.
-* c-tab-always-indent:                   C Indent.
-* calendar-date-display-form:            Date Display Format.
-* calendar-daylight-savings-ends:        Daylight Savings.
-* calendar-daylight-savings-ends-time:   Daylight Savings.
-* calendar-daylight-savings-starts:      Daylight Savings.
-* calendar-daylight-time-offset:         Daylight Savings.
-* calendar-daylight-time-zone-name:      Sunrise/Sunset.
-* calendar-holiday-marker:               Calendar Customizing.
-* calendar-holidays:                     Holiday Customizing.
-* calendar-latitude:                     Sunrise/Sunset.
-* calendar-load-hook:                    Calendar Customizing.
-* calendar-location-name:                Sunrise/Sunset.
-* calendar-longitude:                    Sunrise/Sunset.
-* calendar-standard-time-zone-name:      Sunrise/Sunset.
-* calendar-time-display-form:            Time Display Format.
-* calendar-time-zone:                    Sunrise/Sunset.
-* calendar-today-marker:                 Calendar Customizing.
-* calendar-week-start-day:               Move to Beginning or End.
-* case-fold-search <1>:                  Replacement and Case.
-* case-fold-search:                      Search Case.
-* case-replace:                          Replacement and Case.
-* christian-holidays:                    Holiday Customizing.
-* coding:                                Recognize Coding.
-* command-history:                       Repetition.
-* command-line-args:                     Command Switches.
-* comment-column:                        Comments.
-* comment-end:                           Comments.
-* comment-indent-hook:                   Comments.
-* comment-line-start:                    Fortran Comments.
-* comment-line-start-skip:               Fortran Comments.
-* comment-multi-line:                    Comments.
-* comment-start:                         Comments.
-* comment-start-skip:                    Comments.
-* compare-ignore-case:                   Comparing Files.
-* compile-command:                       Compilation.
-* completion-auto-help:                  Completion Options.
-* completion-ignored-extensions:         Completion Options.
-* create-frame-hook:                     XEmacs under X.
-* ctl-arrow:                             Display Vars.
-* ctl-x-map:                             Keymaps.
-* current-input-method:                  Select Input Method.
-* data-directory:                        Startup Paths.
-* data-directory-list:                   Startup Paths.
-* debug-on-error:                        Lisp Debug.
-* debug-on-quit:                         Lisp Debug.
-* default-buffer-file-coding-system:     Specify Coding.
-* default-directory:                     File Names.
-* default-directory-alist:               File Names.
-* default-frame-alist:                   XEmacs under X.
-* default-input-method:                  Select Input Method.
-* default-major-mode:                    Choosing Modes.
-* delete-auto-save-files:                Auto Save Files.
-* delete-old-versions:                   Backup Deletion.
-* describe-function-show-arglist:        Name Help.
-* diary-date-forms:                      Diary Customizing.
-* diary-display-hook:                    Fancy Diary Display.
-* diary-entry-marker:                    Calendar Customizing.
-* diary-file:                            Format of Diary File.
-* diary-list-include-blanks:             Fancy Diary Display.
-* diary-mail-days:                       Diary Commands.
-* diff-switches:                         Comparing Files.
-* dired-kept-versions:                   Dired Deletion.
-* dired-listing-switches:                Dired Enter.
-* display-buffer-function:               Pop Up Window.
-* doc-directory:                         Startup Paths.
-* echo-keystrokes:                       Display Vars.
-* emacs-lisp-mode-hook:                  Program Modes.
-* emacs-roots:                           Startup Paths.
-* EMACSDATA:                             Startup Paths.
-* EMACSLOADPATH:                         Startup Paths.
-* EMACSPATH:                             Startup Paths.
-* enable-local-variables:                File Variables.
-* enable-recursive-minibuffers:          Minibuffer Edit.
-* esc-map:                               Keymaps.
-* european-calendar-style:               Date Formats.
-* exec-directory:                        Startup Paths.
-* exec-path:                             Startup Paths.
-* explicit-shell-file-name:              Interactive Shell.
-* file-coding-system-alist:              Recognize Coding.
-* file-name-coding-system:               Specify Coding.
-* fill-column:                           Fill Commands.
-* fill-prefix:                           Fill Prefix.
-* find-file-compare-truenames:           Visiting.
-* find-file-hooks:                       Visiting.
-* find-file-not-found-hooks:             Visiting.
-* find-file-run-dired:                   Visiting.
-* find-file-use-truenames:               Visiting.
-* fortran-check-all-num-for-matching-do: ForIndent Vars.
-* fortran-comment-indent-char:           Fortran Comments.
-* fortran-comment-indent-style:          Fortran Comments.
-* fortran-comment-line-column:           Fortran Comments.
-* fortran-comment-region:                Fortran Comments.
-* fortran-continuation-char:             ForIndent Conv.
-* fortran-continuation-indent:           ForIndent Vars.
-* fortran-do-indent:                     ForIndent Vars.
-* fortran-electric-line-number:          ForIndent Num.
-* fortran-if-indent:                     ForIndent Vars.
-* fortran-line-number-indent:            ForIndent Num.
-* fortran-minimum-statement-indent:      ForIndent Vars.
-* frame-icon-title-format <1>:           Command Switches.
-* frame-icon-title-format:               XEmacs under X.
-* frame-title-format <1>:                Command Switches.
-* frame-title-format:                    XEmacs under X.
-* general-holidays:                      Holiday Customizing.
-* global-map:                            Keymaps.
-* hebrew-holidays:                       Holiday Customizing.
-* help-map:                              Keymaps.
-* holidays-in-diary-buffer:              Diary Customizing.
-* indent-tabs-mode:                      Just Spaces.
-* Info-directory-list:                   Startup Paths.
-* INFOPATH:                              Startup Paths.
-* initial-calendar-window-hook:          Calendar Customizing.
-* initial-major-mode:                    Entering Emacs.
-* input-method-highlight-flag:           Input Methods.
-* input-method-verbose-flag:             Input Methods.
-* input-ring-size:                       Interactive Shell.
-* insert-default-directory <1>:          File Names.
-* insert-default-directory:              Minibuffer File.
-* isearch-mode-map:                      Keymaps.
-* islamic-holidays:                      Holiday Customizing.
-* kept-new-versions:                     Backup Deletion.
-* kept-old-versions:                     Backup Deletion.
-* keyboard-translate-table:              Intro to Keystrokes.
-* kill-ring-max:                         Earlier Kills.
-* LaTeX-mode-hook:                       TeX Print.
-* lisp-body-indention:                   Lisp Indent.
-* lisp-directory:                        Startup Paths.
-* lisp-indent-offset:                    Lisp Indent.
-* lisp-interaction-mode-hook:            Program Modes.
-* lisp-mode-hook:                        Program Modes.
-* lisp-mode-map:                         Keymaps.
-* list-diary-entries-hook:               Included Diary Files.
-* list-directory-brief-switches:         ListDir.
-* list-directory-verbose-switches:       ListDir.
-* load-path <1>:                         Loading.
-* load-path:                             Startup Paths.
-* local-holidays:                        Holiday Customizing.
-* lpr-switches:                          Hardcopy.
-* mail-abbrev-mailrc-file:               Mail Headers.
-* mail-abbrev-mode-regexp:               Mail Headers.
-* mail-alias-separator-string:           Mail Headers.
-* mail-archive-file-name:                Mail Headers.
-* mail-header-separator:                 Mail Format.
-* mail-mode-hook:                        Mail Mode.
-* make-backup-files:                     Backup.
-* make-tags-files-invisible:             Find Tag.
-* mark-diary-entries-hook:               Included Diary Files.
-* mark-diary-entries-in-calendar:        Calendar Customizing.
-* mark-holidays-in-calendar:             Calendar Customizing.
-* mark-ring:                             Mark Ring.
-* mark-ring-max:                         Mark Ring.
-* meta-flag:                             Meta Key.
-* minibuffer-confirm-incomplete <1>:     Completion Options.
-* minibuffer-confirm-incomplete:         Minibuffer Edit.
-* minibuffer-local-completion-map:       Keymaps.
-* minibuffer-local-map:                  Keymaps.
-* minibuffer-local-must-match-map:       Keymaps.
-* minibuffer-local-ns-map:               Keymaps.
-* mode-line-inverse-video:               Mode Line.
-* modeline-pointer-glyph:                Mouse Selection.
-* muddle-mode-hook:                      Program Modes.
-* next-line-add-newlines:                Moving Point.
-* next-screen-context-lines:             Scrolling.
-* no-redraw-on-reenter:                  Display Vars.
-* nongregorian-diary-listing-hook:       Hebrew/Islamic Entries.
-* nongregorian-diary-marking-hook:       Hebrew/Islamic Entries.
-* nontext-pointer-glyph:                 Mouse Selection.
-* nroff-mode-hook:                       Nroff Mode.
-* number-of-diary-entries:               Diary Customizing.
-* other-holidays:                        Holiday Customizing.
-* outline-mode-hook:                     Outline Mode.
-* outline-regexp:                        Outline Format.
-* page-delimiter:                        Pages.
-* paragraph-separate:                    Paragraphs.
-* paragraph-start:                       Paragraphs.
-* parse-sexp-ignore-comments:            Syntax Entry.
-* PATH:                                  Startup Paths.
-* picture-mode-hook:                     Picture.
-* picture-tab-chars:                     Tabs in Picture.
-* plain-TeX-mode-hook:                   TeX Print.
-* print-diary-entries-hook:              Diary Customizing.
-* repeat-complex-command-map:            Keymaps.
-* require-final-newline:                 Saving.
-* save-abbrevs:                          Saving Abbrevs.
-* scheme-mode-hook:                      Program Modes.
-* scroll-conservatively:                 Scrolling.
-* scroll-step:                           Scrolling.
-* search-slow-speed:                     Incremental Search.
-* search-slow-window-lines:              Incremental Search.
-* selective-display-ellipses <1>:        Outline Visibility.
-* selective-display-ellipses:            Display Vars.
-* sentence-end:                          Sentences.
-* shell-cd-regexp:                       Interactive Shell.
-* shell-file-name:                       Single Shell.
-* shell-popd-regexp:                     Interactive Shell.
-* shell-prompt-pattern:                  Shell Mode.
-* shell-pushd-regexp:                    Interactive Shell.
-* sound-alist:                           Audible Bell.
-* tab-stop-list:                         Tab Stops.
-* tab-width:                             Display Vars.
-* tag-mark-stack-max:                    Find Tag.
-* tag-table-alist <1>:                   Find Tag.
-* tag-table-alist:                       Select Tags Table.
-* tags-always-build-completion-table:    Select Tags Table.
-* tags-build-completion-table:           Find Tag.
-* tags-file-name <1>:                    Find Tag.
-* tags-file-name:                        Select Tags Table.
-* term-file-prefix:                      Terminal Init.
-* term-setup-hook:                       Terminal Init.
-* TeX-mode-hook:                         TeX Print.
-* text-mode-hook:                        Text Mode.
-* text-pointer-glyph:                    Mouse Selection.
-* today-invisible-calendar-hook:         Calendar Customizing.
-* today-visible-calendar-hook:           Calendar Customizing.
-* track-eol:                             Moving Point.
-* truncate-lines:                        Continuation Lines.
-* truncate-partial-width-windows:        Split Window.
-* vc-command-messages:                   Variables for Check-in/out.
-* vc-comment-alist:                      Version Headers.
-* vc-default-back-end:                   Editing with VC.
-* vc-header-alist:                       Version Headers.
-* vc-initial-comment:                    Editing with VC.
-* vc-keep-workfiles:                     Editing with VC.
-* vc-log-mode-hook:                      Log Entries.
-* vc-make-backup-files:                  Editing with VC.
-* vc-mistrust-permissions:               Variables for Check-in/out.
-* vc-path:                               Variables for Check-in/out.
-* vc-static-header-alist:                Version Headers.
-* vc-suppress-confirm:                   Variables for Check-in/out.
-* version-control:                       Backup Names.
-* view-calendar-holidays-initially:      Calendar Customizing.
-* view-diary-entries-initially:          Calendar Customizing.
-* window-min-height:                     Change Window.
-* window-min-width:                      Change Window.
-* write-file-hooks:                      Saving.
-* x-frame-defaults:                      XEmacs under X.
-* zmacs-region-stays:                    Active Regions.
-* zmacs-regions:                         Active Regions.
-
-\1f
-File: xemacs.info,  Node: Concept Index,  Next: Frame,  Prev: Variable Index,  Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* $ in regexp:                           Regexps.
-* ( in regexp:                           Regexps.
-* ) in regexp:                           Regexps.
-* * in regexp:                           Regexps.
-* *? in regexp:                          Regexps.
-* + in regexp:                           Regexps.
-* +? in regexp:                          Regexps.
-* . in regexp:                           Regexps.
-* .mailrc file:                          Mail Headers.
-* // in file name:                       Minibuffer File.
-* ? in regexp:                           Regexps.
-* ?? in regexp:                          Regexps.
-* [ in regexp:                           Regexps.
-* \ in regexp:                           Regexps.
-* \' in regexp:                          Regexps.
-* \(?: in regexp:                        Regexps.
-* \< in regexp:                          Regexps.
-* \= in regexp:                          Regexps.
-* \> in regexp:                          Regexps.
-* \` in regexp:                          Regexps.
-* \B in regexp:                          Regexps.
-* \b in regexp:                          Regexps.
-* \S in regexp:                          Regexps.
-* \s in regexp:                          Regexps.
-* \W in regexp:                          Regexps.
-* \w in regexp:                          Regexps.
-* \{n,m\} in regexp:                     Regexps.
-* ] in regexp:                           Regexps.
-* ^ in regexp:                           Regexps.
-* Abbrev mode:                           Minor Modes.
-* abbrevs:                               Abbrevs.
-* aborting:                              Quitting.
-* accumulating text:                     Accumulating Text.
-* active fields (customization buffer):  Customization Groups.
-* active regions:                        Active Regions.
-* adding menu items:                     Menu Customization.
-* adding menus:                          Menu Customization.
-* againformation:                        Dissociated Press.
-* Apps menu <1>:                         Apps Menu.
-* Apps menu:                             Pull-down Menus.
+* abbrev-prefix-mark:                    Expanding Abbrevs.
+* abort-recursive-edit <1>:              Quitting.
+* abort-recursive-edit:                  Recursive Edit.
+* add-change-log-entry:                  Change Log.
+* add-global-abbrev:                     Defining Abbrevs.
+* add-menu:                              Menu Customization.
+* add-menu-item:                         Menu Customization.
+* add-mode-abbrev:                       Defining Abbrevs.
+* add-name-to-file:                      Misc File Ops.
+* american-calendar:                     Date Formats.
+* append-next-kill:                      Appending Kills.
+* append-to-buffer:                      Accumulating Text.
+* append-to-file <1>:                    Misc File Ops.
+* append-to-file:                        Accumulating Text.
 * apropos:                               Apropos.
-* architecture-specific directories:     Startup Paths.
-* arguments (from shell):                Command Switches.
-* arrow keys:                            Moving Point.
-* ASCII:                                 Intro to Keystrokes.
-* Asm mode:                              Asm Mode.
-* astronomical day numbers:              Calendar Systems.
-* audible bell, changing:                Audible Bell.
-* Auto Delete Selection menu item:       Options Menu.
-* Auto Fill mode <1>:                    Minor Modes.
-* Auto Fill mode <2>:                    Comments.
-* Auto Fill mode:                        Auto Fill.
-* Auto-Save mode:                        Auto Save.
-* autoload:                              Loading.
-* backup file:                           Backup.
-* batch mode:                            Command Switches.
-* beginning of line in regexp:           Regexps.
-* bell, changing:                        Audible Bell.
-* binary packages:                       Package Terminology.
-* binding:                               Commands.
-* blank lines <1>:                       Comments.
-* blank lines:                           Blank Lines.
-* body lines (Outline mode):             Outline Format.
-* bold font:                             Face Customization.
-* bookmarks:                             Bookmarks.
-* boredom:                               Amusements.
-* buffer:                                Frame.
-* buffer menu:                           Several Buffers.
-* buffers:                               Buffers.
-* Buffers menu <1>:                      Buffers Menu.
-* Buffers menu:                          Pull-down Menus.
-* Buffers Menu Length... menu item:      Options Menu.
-* Buffers Sub-Menus menu item:           Options Menu.
-* buggestion:                            Dissociated Press.
-* bugs:                                  Bugs.
-* byte code:                             Compiling Libraries.
-* C:                                     Programs.
-* C mode:                                Program Modes.
+* apropos-documentation:                 Apropos.
+* apropos-value:                         Apropos.
+* ask-user-about-lock:                   Interlocking.
+* auto-fill-mode <1>:                    Minor Modes.
+* auto-fill-mode:                        Auto Fill.
+* auto-save-mode:                        Auto Save Control.
+* back-to-indentation:                   Indentation Commands.
+* backward-char:                         Moving Point.
+* backward-delete-char-untabify:         Program Modes.
+* backward-kill-sentence <1>:            Sentences.
+* backward-kill-sentence <2>:            Kill Errors.
+* backward-kill-sentence:                Killing.
+* backward-kill-word <1>:                Words.
+* backward-kill-word <2>:                Kill Errors.
+* backward-kill-word:                    Killing.
+* backward-list:                         Lists.
+* backward-or-forward-delete-char:       Inserting Text.
+* backward-page:                         Pages.
+* backward-paragraph:                    Paragraphs.
+* backward-sentence:                     Sentences.
+* backward-sexp:                         Lists.
+* backward-text-line:                    Nroff Mode.
+* backward-up-list:                      Lists.
+* backward-word:                         Words.
+* batch-byte-compile:                    Compiling Libraries.
+* beginning-of-buffer:                   Moving Point.
+* beginning-of-defun:                    Defuns.
+* beginning-of-fortran-subprogram:       Fortran Motion.
+* beginning-of-line:                     Moving Point.
+* bookmark-delete:                       Bookmarks.
+* bookmark-insert:                       Bookmarks.
+* bookmark-insert-location:              Bookmarks.
+* bookmark-jump:                         Bookmarks.
+* bookmark-load:                         Bookmarks.
+* bookmark-save:                         Bookmarks.
+* bookmark-set:                          Bookmarks.
+* bookmark-write:                        Bookmarks.
+* buffer-menu:                           Several Buffers.
+* byte-compile-and-load-file:            Compiling Libraries.
+* byte-compile-buffer:                   Compiling Libraries.
+* byte-compile-file:                     Compiling Libraries.
+* byte-recompile-directory:              Compiling Libraries.
+* c-indent-line:                         Basic Indent.
 * calendar:                              Calendar/Diary.
-* calendar and LaTeX:                    LaTeX Calendar.
-* calendar, first day of week:           Move to Beginning or End.
-* candle lighting times:                 Sexp Diary Entries.
-* case conversion <1>:                   Case.
-* case conversion:                       Fixing Case.
-* Case Sensitive Search menu item:       Options Menu.
-* centering:                             Fill Commands.
-* change log:                            Change Log.
-* changing buffers:                      Select Buffer.
-* changing menu items:                   Menu Customization.
-* character set:                         Intro to Keystrokes.
-* character set (in regexp):             Regexps.
-* checking in files:                     Concepts of VC.
-* checking out files:                    Concepts of VC.
-* Chinese:                               Mule.
-* Chinese calendar:                      Calendar Systems.
-* Clear menu item:                       Edit Menu.
-* clipboard selections:                  X Clipboard Selection.
-* coding systems:                        Coding Systems.
-* command <1>:                           Key Bindings.
-* command:                               Commands.
-* command history:                       Repetition.
-* command line arguments:                Command Switches.
-* command name:                          Key Bindings.
-* comments:                              Comments.
-* comparing files:                       Comparing Files.
-* compilation errors:                    Compilation.
-* compiling files:                       Compilation.
-* completion:                            Completion.
-* completion (symbol names):             Lisp Completion.
-* continuation line:                     Continuation Lines.
-* Control-Meta:                          Lists.
-* Coptic calendar:                       Calendar Systems.
-* Copy menu item:                        Edit Menu.
-* copying files:                         Misc File Ops.
-* copying text <1>:                      Accumulating Text.
-* copying text:                          Yanking.
-* core distribution:                     Using Packages.
-* crashes:                               Auto Save.
-* creating directories:                  File Names.
-* creating files:                        Visiting.
-* current buffer:                        Buffers.
-* current stack frame:                   Lisp Debug.
-* cursor <1>:                            Inserting Text.
-* cursor:                                Point.
-* cursor motion:                         Moving Point.
-* customization <1>:                     Customization.
-* customization <2>:                     Lisp Indent.
-* customization:                         Commands.
-* customization buffer:                  Easy Customization.
-* customization groups:                  Customization Groups.
-* customizing faces:                     Face Customization.
-* cut buffers:                           X Selection Commands.
-* Cut menu item:                         Edit Menu.
-* cutting:                               Killing.
-* day of year:                           General Calendar.
-* daylight savings time:                 Daylight Savings.
-* debugger:                              Lisp Debug.
-* default argument:                      Minibuffer.
-* defuns:                                Defuns.
-* Delete Frame menu item:                File Menu.
-* deleting blank lines:                  Blank Lines.
-* deleting characters and lines:         Erasing.
-* deleting menu items:                   Menu Customization.
-* deletion <1>:                          Killing.
-* deletion:                              Inserting Text.
-* deletion (of files) <1>:               Misc File Ops.
-* deletion (of files):                   Dired.
-* diary:                                 Diary.
-* diary buffer:                          Fancy Diary Display.
-* diary file:                            Format of Diary File.
-* ding:                                  Audible Bell.
-* directories:                           Startup Paths.
-* directory hierarchies:                 Startup Paths.
-* directory listing:                     ListDir.
-* Dired:                                 Dired.
-* disabled command:                      Disabling.
-* disabling menu items:                  Menu Customization.
-* Distribution:                          License.
+* calendar-backward-day:                 Calendar Unit Motion.
+* calendar-backward-month:               Calendar Unit Motion.
+* calendar-backward-week:                Calendar Unit Motion.
+* calendar-beginning-of-month:           Move to Beginning or End.
+* calendar-beginning-of-week:            Move to Beginning or End.
+* calendar-beginning-of-year:            Move to Beginning or End.
+* calendar-count-days-region:            Mark and Region.
+* calendar-cursor-holidays:              Holidays.
+* calendar-end-of-month:                 Move to Beginning or End.
+* calendar-end-of-week:                  Move to Beginning or End.
+* calendar-end-of-year:                  Move to Beginning or End.
+* calendar-exchange-point-and-mark:      Mark and Region.
+* calendar-forward-day:                  Calendar Unit Motion.
+* calendar-forward-month:                Calendar Unit Motion.
+* calendar-forward-week:                 Calendar Unit Motion.
+* calendar-forward-year:                 Calendar Unit Motion.
+* calendar-goto-astro-day-number:        From Other Calendar.
+* calendar-goto-chinese-date:            From Other Calendar.
+* calendar-goto-coptic-date:             From Other Calendar.
+* calendar-goto-date:                    Specified Dates.
+* calendar-goto-ethiopic-date:           From Other Calendar.
+* calendar-goto-french-date:             From Other Calendar.
+* calendar-goto-hebrew-date:             From Other Calendar.
+* calendar-goto-islamic-date:            From Other Calendar.
+* calendar-goto-iso-date:                From Other Calendar.
+* calendar-goto-julian-date:             From Other Calendar.
+* calendar-goto-mayan-long-count-date:   Mayan Calendar.
+* calendar-goto-persian-date:            From Other Calendar.
+* calendar-goto-today:                   Specified Dates.
+* calendar-mark-today:                   Calendar Customizing.
+* calendar-next-calendar-round-date:     Mayan Calendar.
+* calendar-next-haab-date:               Mayan Calendar.
+* calendar-next-tzolkin-date:            Mayan Calendar.
+* calendar-other-month:                  Specified Dates.
+* calendar-phases-of-moon:               Lunar Phases.
+* calendar-previous-haab-date:           Mayan Calendar.
+* calendar-previous-tzolkin-date:        Mayan Calendar.
+* calendar-print-astro-day-number:       To Other Calendar.
+* calendar-print-chinese-date:           To Other Calendar.
+* calendar-print-coptic-date:            To Other Calendar.
+* calendar-print-day-of-year:            General Calendar.
+* calendar-print-ethiopic-date:          To Other Calendar.
+* calendar-print-french-date:            To Other Calendar.
+* calendar-print-hebrew-date:            To Other Calendar.
+* calendar-print-islamic-date:           To Other Calendar.
+* calendar-print-iso-date:               To Other Calendar.
+* calendar-print-julian-date:            To Other Calendar.
+* calendar-print-mayan-date:             To Other Calendar.
+* calendar-print-persian-date:           To Other Calendar.
+* calendar-set-mark:                     Mark and Region.
+* calendar-star-date:                    Calendar Customizing.
+* calendar-sunrise-sunset:               Sunrise/Sunset.
+* calendar-unmark <1>:                   Diary Commands.
+* calendar-unmark:                       Holidays.
+* call-last-kbd-macro:                   Basic Kbd Macro.
+* cancel-debug-on-entry:                 Lisp Debug.
+* capitalize-word <1>:                   Case.
+* capitalize-word:                       Fixing Case.
+* center-line:                           Fill Commands.
+* choose-completion:                     Completion Commands.
+* clear-rectangle:                       Rectangles.
+* comint-delchar-or-maybe-eof:           Shell Mode.
+* comint-dynamic-complete:               Shell Mode.
+* comint-next-input:                     Shell Mode.
+* comint-previous-input:                 Shell Mode.
+* command-apropos:                       Apropos.
+* compare-windows <1>:                   Other Window.
+* compare-windows:                       Comparing Files.
+* compile:                               Compilation.
+* compile-defun:                         Defuns.
+* convert-mocklisp-buffer:               Mocklisp.
+* conx:                                  CONX.
+* conx-buffer:                           CONX.
+* conx-init:                             CONX.
+* conx-load:                             CONX.
+* conx-region:                           CONX.
+* conx-save:                             CONX.
+* copy-file:                             Misc File Ops.
+* copy-last-shell-input:                 Shell Mode.
+* copy-rectangle-to-register:            RegRect.
+* copy-region-as-kill:                   Kill Ring.
+* copy-to-buffer:                        Accumulating Text.
+* copy-to-register:                      RegText.
+* count-lines-page:                      Pages.
+* count-lines-region:                    Position Info.
+* count-matches:                         Other Repeating Search.
+* count-text-lines:                      Nroff Mode.
+* customize:                             Easy Customization.
+* customize-apropos:                     Specific Customization.
+* customize-browse:                      Customization Groups.
+* customize-customized:                  Specific Customization.
+* customize-face:                        Specific Customization.
+* customize-group:                       Specific Customization.
+* customize-option:                      Specific Customization.
+* customize-saved:                       Specific Customization.
+* dabbrev-expand:                        Dynamic Abbrevs.
+* debug:                                 Lisp Debug.
+* debug-on-entry:                        Lisp Debug.
+* default-value:                         Locals.
+* define-abbrevs:                        Saving Abbrevs.
+* define-key <1>:                        Programmatic Rebinding.
+* define-key:                            Interactive Rebinding.
+* delete-backward-char <1>:              Kill Errors.
+* delete-backward-char:                  Killing.
+* delete-blank-lines <1>:                Killing.
+* delete-blank-lines:                    Blank Lines.
+* delete-char <1>:                       Basic Picture.
+* delete-char:                           Killing.
+* delete-file:                           Misc File Ops.
+* delete-horizontal-space <1>:           Indentation Commands.
+* delete-horizontal-space:               Killing.
+* delete-indentation <1>:                Indentation Commands.
+* delete-indentation:                    Killing.
+* delete-matching-lines:                 Other Repeating Search.
+* delete-menu-item:                      Menu Customization.
+* delete-non-matching-lines:             Other Repeating Search.
+* delete-other-windows:                  Change Window.
+* delete-rectangle:                      Rectangles.
+* delete-window:                         Change Window.
+* describe-bindings:                     Misc Help.
+* describe-calendar-mode:                General Calendar.
+* describe-coding-system:                Coding Systems.
+* describe-copying:                      Misc Help.
+* describe-distribution:                 Misc Help.
+* describe-function <1>:                 Documentation.
+* describe-function:                     Name Help.
+* describe-input-method:                 Select Input Method.
+* describe-key:                          Key Help.
+* describe-key-briefly:                  Key Help.
+* describe-language-environment:         Language Environments.
+* describe-mode:                         Misc Help.
+* describe-no-warranty:                  Misc Help.
+* describe-syntax:                       Syntax Change.
+* describe-variable <1>:                 Examining.
+* describe-variable <2>:                 Documentation.
+* describe-variable:                     Name Help.
+* diary:                                 Diary Commands.
+* diary-anniversary <1>:                 Sexp Diary Entries.
+* diary-anniversary:                     Special Diary Entries.
+* diary-astro-day-number:                Sexp Diary Entries.
+* diary-block:                           Special Diary Entries.
+* diary-cyclic <1>:                      Sexp Diary Entries.
+* diary-cyclic:                          Special Diary Entries.
+* diary-day-of-year:                     Sexp Diary Entries.
+* diary-float:                           Special Diary Entries.
+* diary-french-date:                     Sexp Diary Entries.
+* diary-hebrew-date:                     Sexp Diary Entries.
+* diary-islamic-date:                    Sexp Diary Entries.
+* diary-iso-date:                        Sexp Diary Entries.
+* diary-julian-date:                     Sexp Diary Entries.
+* diary-mail-entries:                    Diary Commands.
+* diary-mayan-date:                      Sexp Diary Entries.
+* diary-omer:                            Sexp Diary Entries.
+* diary-parasha:                         Sexp Diary Entries.
+* diary-phases-of-moon:                  Sexp Diary Entries.
+* diary-rosh-hodesh:                     Sexp Diary Entries.
+* diary-sabbath-candles:                 Sexp Diary Entries.
+* diary-sunrise-sunset:                  Sexp Diary Entries.
+* diary-yahrzeit:                        Sexp Diary Entries.
+* diff:                                  Comparing Files.
+* diff-backup:                           Comparing Files.
+* digit-argument:                        Arguments.
+* dired:                                 Dired Enter.
+* dired-other-window <1>:                Pop Up Window.
+* dired-other-window:                    Dired Enter.
+* disable-command:                       Disabling.
+* disable-menu-item:                     Menu Customization.
+* disassemble:                           Compiling Libraries.
+* display-time:                          Mode Line.
+* dissociated-press:                     Dissociated Press.
+* do-auto-save:                          Auto Save Control.
 * doctor:                                Total Frustration.
-* double slash in file name:             Minibuffer File.
-* drastic changes:                       Reverting.
-* dribble file:                          Bugs.
-* early package hierarchies:             Startup Paths.
-* echo area:                             Echo Area.
-* Edit menu <1>:                         Edit Menu.
-* Edit menu:                             Pull-down Menus.
-* editable fields (customization buffer): Customization Groups.
-* editing level, recursive <1>:          Quitting.
-* editing level, recursive:              Recursive Edit.
-* EDT:                                   Emulation.
-* Eliza:                                 Total Frustration.
-* Emacs initialization file:             Init File.
-* Emacs-Lisp mode:                       Lisp Eval.
-* enabling menu items:                   Menu Customization.
-* encoding of characters:                Mule.
-* End Macro Recording menu item:         Edit Menu.
-* entering XEmacs:                       Entering Emacs.
-* environment:                           Single Shell.
-* erasing characters and lines:          Erasing.
-* error log:                             Compilation.
-* etags program:                         Create Tags Table.
-* Ethiopic calendar:                     Calendar Systems.
-* Execute Last Macro menu item:          Edit Menu.
-* Exit Emacs menu item:                  File Menu.
-* exiting <1>:                           Recursive Edit.
-* exiting:                               Exiting.
-* expansion (of abbrevs):                Abbrevs.
-* expression:                            Lists.
-* file dates:                            Interlocking.
-* file directory:                        ListDir.
-* File menu <1>:                         File Menu.
-* File menu:                             Pull-down Menus.
-* file names:                            File Names.
-* file protection:                       Interlocking.
-* files <1>:                             Visiting.
-* files <2>:                             Files.
-* files:                                 Basic Files.
-* fill prefix:                           Fill Prefix.
-* filling:                               Filling.
-* Font menu item:                        Options Menu.
-* fonts and faces:                       Face Customization.
-* formfeed:                              Pages.
-* Fortran mode:                          Fortran.
-* frame:                                 Frame.
-* French Revolutionary calendar:         Calendar Systems.
-* function <1>:                          Key Bindings.
-* function:                              Commands.
-* General Public License:                License.
-* getting help with keys:                Basic Help.
-* global keymap:                         Keymaps.
-* global substitution:                   Replace.
-* graphic characters:                    Inserting Text.
-* Greek:                                 Mule.
-* Gregorian calendar:                    Other Calendars.
-* grinding:                              Grinding.
-* hardcopy:                              Hardcopy.
-* header (TeX mode):                     TeX Print.
-* headers (of mail message):             Mail Headers.
-* heading lines (Outline mode):          Outline Format.
-* Hebrew calendar:                       Calendar Systems.
-* help:                                  Help.
-* Help menu <1>:                         Help Menu.
-* Help menu:                             Pull-down Menus.
-* hierarchies:                           Startup Paths.
-* history of commands:                   Repetition.
-* history of minibuffer input:           Minibuffer History.
-* holiday forms:                         Holiday Customizing.
+* down-list:                             Lists.
+* downcase-region:                       Case.
+* downcase-word <1>:                     Case.
+* downcase-word:                         Fixing Case.
+* edit-abbrevs:                          Editing Abbrevs.
+* edit-abbrevs-redefine:                 Editing Abbrevs.
+* edit-options:                          Edit Options.
+* edit-picture:                          Picture.
+* edit-tab-stops <1>:                    Text Mode.
+* edit-tab-stops:                        Tab Stops.
+* edit-tab-stops-note-changes:           Tab Stops.
+* edt-emulation-off:                     Emulation.
+* edt-emulation-on:                      Emulation.
+* electric-nroff-mode:                   Nroff Mode.
+* emacs-lisp-mode:                       Lisp Eval.
+* emacs-version:                         Bugs.
+* enable-command:                        Disabling.
+* enable-menu-item:                      Menu Customization.
+* end-kbd-macro:                         Basic Kbd Macro.
+* end-of-buffer:                         Moving Point.
+* end-of-defun:                          Defuns.
+* end-of-fortran-subprogram:             Fortran Motion.
+* end-of-line:                           Moving Point.
+* enlarge-window:                        Change Window.
+* enlarge-window-horizontally:           Change Window.
+* european-calendar:                     Date Formats.
+* eval-current-buffer:                   Lisp Eval.
+* eval-defun:                            Lisp Eval.
+* eval-expression:                       Lisp Eval.
+* eval-last-sexp:                        Lisp Eval.
+* eval-region:                           Lisp Eval.
+* exchange-point-and-mark:               Setting Mark.
+* execute-extended-command:              M-x.
+* exit-calendar:                         General Calendar.
+* exit-recursive-edit:                   Recursive Edit.
+* expand-abbrev:                         Expanding Abbrevs.
+* expand-region-abbrevs:                 Expanding Abbrevs.
+* fancy-diary-display:                   Fancy Diary Display.
+* fill-individual-paragraphs:            Fill Prefix.
+* fill-paragraph:                        Fill Commands.
+* fill-region:                           Fill Commands.
+* fill-region-as-paragraph:              Fill Commands.
+* find-alternate-file:                   Visiting.
+* find-file:                             Visiting.
+* find-file-other-frame <1>:             Visiting.
+* find-file-other-frame:                 XEmacs under X.
+* find-file-other-window <1>:            Pop Up Window.
+* find-file-other-window:                Visiting.
+* find-tag:                              Find Tag.
+* find-tag-other-window <1>:             Find Tag.
+* find-tag-other-window:                 Pop Up Window.
+* find-this-file:                        Visiting.
+* find-this-file-other-window:           Visiting.
+* finder-by-keyword:                     Library Keywords.
+* fortran-column-ruler:                  Fortran Columns.
+* fortran-comment-region:                Fortran Comments.
+* fortran-indent-line:                   ForIndent Commands.
+* fortran-indent-subprogram:             ForIndent Commands.
+* fortran-mode:                          Fortran.
+* fortran-next-statement:                Fortran Motion.
+* fortran-previous-statement:            Fortran Motion.
+* fortran-split-line:                    ForIndent Commands.
+* fortran-window-create:                 Fortran Columns.
+* forward-char:                          Moving Point.
+* forward-list:                          Lists.
+* forward-page:                          Pages.
+* forward-paragraph:                     Paragraphs.
+* forward-sentence:                      Sentences.
+* forward-sexp:                          Lists.
+* forward-text-line:                     Nroff Mode.
+* forward-word:                          Words.
+* frame-configuration-to-register:       RegConfig.
+* global-set-key <1>:                    Programmatic Rebinding.
+* global-set-key:                        Interactive Rebinding.
+* goto-char:                             Moving Point.
+* goto-line:                             Moving Point.
+* hanoi:                                 Amusements.
+* help-command:                          Help.
+* help-for-help:                         Help.
+* help-with-tutorial <1>:                Misc Help.
+* help-with-tutorial:                    Basic.
+* hide-body:                             Outline Visibility.
+* hide-entry:                            Outline Visibility.
+* hide-leaves:                           Outline Visibility.
+* hide-subtree:                          Outline Visibility.
 * holidays:                              Holidays.
-* horizontal scrolling:                  Horizontal Scrolling.
-* Icomplete mode:                        Completion Options.
-* ignoriginal:                           Dissociated Press.
-* indentation <1>:                       Comments.
-* indentation <2>:                       Grinding.
-* indentation:                           Indentation.
-* inferior process:                      Compilation.
-* Info:                                  Misc Help.
-* init file:                             Init File.
-* input methods:                         Input Methods.
-* Insert File... menu item:              File Menu.
-* inserting blank lines:                 Blank Lines.
-* insertion:                             Inserting Text.
-* international scripts:                 Mule.
-* interval operator (in regexps):        Etags Regexps.
-* invisible lines:                       Outline Mode.
-* IPA:                                   Mule.
-* Islamic calendar:                      Calendar Systems.
-* ISO commercial calendar:               Calendar Systems.
-* italic font:                           Face Customization.
-* Japanese:                              Mule.
-* Julian calendar:                       Calendar Systems.
-* Julian day numbers:                    Calendar Systems.
-* justification:                         Fill Commands.
-* key rebinding, permanent:              Init File.
-* key rebinding, this session:           Rebinding.
-* keyboard macros:                       Keyboard Macros.
-* keycode:                               Super and Hyper Keys.
-* keymap <1>:                            Keymaps.
-* keymap:                                Commands.
-* keystroke:                             Intro to Keystrokes.
-* keysym:                                Intro to Keystrokes.
-* keysyms:                               Super and Hyper Keys.
-* Kill Buffer menu item:                 File Menu.
-* kill ring:                             Yanking.
-* killing:                               Killing.
-* killing characters and lines:          Erasing.
-* killing Emacs:                         Exiting.
-* Korean:                                Mule.
-* language environments:                 Language Environments.
-* last package hierarchies:              Startup Paths.
-* late package hierarchies:              Startup Paths.
-* LaTeX:                                 TeX Mode.
-* leaving Emacs:                         Exiting.
-* libraries:                             Lisp Libraries.
-* license to copy XEmacs:                License.
-* line number:                           Position Info.
-* line wrapping:                         Continuation Lines.
-* Lisp:                                  Programs.
-* Lisp mode:                             Program Modes.
-* list:                                  Lists.
-* loading libraries:                     Loading.
-* loading Lisp code:                     Lisp Libraries.
-* local keymap:                          Keymaps.
-* local variables:                       Locals.
-* local variables in files:              File Variables.
-* locking and version control:           Concepts of VC.
-* log entry:                             Editing with VC.
-* mail <1>:                              Reading Mail.
+* include-other-diary-files:             Included Diary Files.
+* increment-register:                    RegNumbers.
+* indent-c-exp:                          Multi-line Indent.
+* indent-for-comment:                    Comments.
+* indent-new-comment-line:               Comments.
+* indent-region <1>:                     Multi-line Indent.
+* indent-region:                         Indentation Commands.
+* indent-relative:                       Indentation Commands.
+* indent-rigidly:                        Indentation Commands.
+* indent-sexp:                           Multi-line Indent.
+* indented-text-mode:                    Text Mode.
+* info:                                  Misc Help.
+* Info-elisp-ref:                        Misc Help.
+* Info-goto-emacs-command-node:          Misc Help.
+* insert-abbrevs:                        Saving Abbrevs.
+* insert-anniversary-diary-entry:        Special Diary Entries.
+* insert-block-diary-entry:              Special Diary Entries.
+* insert-cyclic-diary-entry:             Special Diary Entries.
+* insert-diary-entry:                    Adding to Diary.
+* insert-file:                           Misc File Ops.
+* insert-hebrew-diary-entry:             Hebrew/Islamic Entries.
+* insert-islamic-diary-entry:            Hebrew/Islamic Entries.
+* insert-kbd-macro:                      Save Kbd Macro.
+* insert-monthly-diary-entry:            Adding to Diary.
+* insert-monthly-hebrew-diary-entry:     Hebrew/Islamic Entries.
+* insert-monthly-islamic-diary-entry:    Hebrew/Islamic Entries.
+* insert-parentheses:                    Balanced Editing.
+* insert-register:                       RegText.
+* insert-weekly-diary-entry:             Adding to Diary.
+* insert-yearly-diary-entry:             Adding to Diary.
+* insert-yearly-hebrew-diary-entry:      Hebrew/Islamic Entries.
+* insert-yearly-islamic-diary-entry:     Hebrew/Islamic Entries.
+* interactive:                           M-x.
+* interrupt-shell-subjob:                Shell Mode.
+* inverse-add-global-abbrev:             Defining Abbrevs.
+* inverse-add-mode-abbrev:               Defining Abbrevs.
+* invert-face:                           Faces.
+* isearch-abort:                         Incremental Search.
+* isearch-backward:                      Incremental Search.
+* isearch-backward-regexp:               Regexp Search.
+* isearch-complete:                      Incremental Search.
+* isearch-delete-char:                   Incremental Search.
+* isearch-exit:                          Incremental Search.
+* isearch-forward:                       Incremental Search.
+* isearch-forward-regexp:                Regexp Search.
+* isearch-quote-char:                    Incremental Search.
+* isearch-repeat-backward:               Incremental Search.
+* isearch-repeat-forward:                Incremental Search.
+* isearch-ring-advance:                  Incremental Search.
+* isearch-ring-retreat:                  Incremental Search.
+* isearch-yank-line:                     Incremental Search.
+* isearch-yank-word:                     Incremental Search.
+* jump-to-register <1>:                  Split Window.
+* jump-to-register:                      RegPos.
+* just-one-space:                        Killing.
+* kbd-macro-query:                       Kbd Macro Query.
+* kill-all-abbrevs:                      Defining Abbrevs.
+* kill-buffer:                           Kill Buffer.
+* kill-comment:                          Comments.
+* kill-compilation:                      Compilation.
+* kill-line:                             Killing.
+* kill-local-variable:                   Locals.
+* kill-output-from-shell:                Shell Mode.
+* kill-rectangle:                        Rectangles.
+* kill-region:                           Killing.
+* kill-sentence <1>:                     Sentences.
+* kill-sentence:                         Killing.
+* kill-sexp <1>:                         Lists.
+* kill-sexp:                             Killing.
+* kill-some-buffers:                     Kill Buffer.
+* kill-word <1>:                         Words.
+* kill-word:                             Killing.
+* latex-mode:                            TeX Mode.
+* LaTeX-mode:                            TeX Mode.
+* lisp-complete-symbol:                  Lisp Completion.
+* lisp-indent-line:                      Basic Indent.
+* lisp-interaction-mode:                 Lisp Interaction.
+* lisp-mode:                             External Lisp.
+* lisp-send-defun:                       External Lisp.
+* list-abbrevs:                          Editing Abbrevs.
+* list-bookmarks:                        Bookmarks.
+* list-buffers:                          List Buffers.
+* list-calendar-holidays:                Holidays.
+* list-coding-systems:                   Coding Systems.
+* list-command-history:                  Repetition.
+* list-directory:                        ListDir.
+* list-hebrew-diary-entries:             Hebrew/Islamic Entries.
+* list-holidays:                         Holidays.
+* list-input-methods:                    Select Input Method.
+* list-islamic-diary-entries:            Hebrew/Islamic Entries.
+* list-matching-lines:                   Other Repeating Search.
+* list-options:                          Edit Options.
+* list-tags:                             List Tags.
+* list-yahrzeit-dates:                   From Other Calendar.
+* load:                                  Loading.
+* load-default-sounds:                   Audible Bell.
+* load-file:                             Loading.
+* load-library <1>:                      Loading.
+* load-library:                          Startup Paths.
+* load-sound-file:                       Audible Bell.
+* local-set-key:                         Interactive Rebinding.
+* local-unset-key:                       Interactive Rebinding.
+* locate-library:                        Loading.
+* lpr-buffer:                            Hardcopy.
+* lpr-region:                            Hardcopy.
 * mail:                                  Sending Mail.
-* major modes:                           Major Modes.
-* make:                                  Compilation.
-* manuals, on-line:                      Misc Help.
-* mark:                                  Mark.
-* mark ring <1>:                         Mark and Region.
-* mark ring:                             Mark Ring.
-* Markov chain:                          Dissociated Press.
-* master file:                           Concepts of VC.
-* matching parentheses:                  Matching.
-* Mayan calendar:                        Calendar Systems.
-* Mayan calendar round:                  Mayan Calendar.
-* Mayan haab calendar:                   Mayan Calendar.
-* Mayan long count:                      Mayan Calendar.
-* Mayan tzolkin calendar:                Mayan Calendar.
-* menus <1>:                             Change Window.
-* menus:                                 Pull-down Menus.
-* message <1>:                           Reading Mail.
-* message:                               Sending Mail.
-* Meta:                                  Words.
-* minibuffer <1>:                        Keymaps.
-* minibuffer <2>:                        M-x.
-* minibuffer:                            Minibuffer.
-* minibuffer history:                    Minibuffer History.
-* minor modes:                           Minor Modes.
-* mistakes, correcting <1>:              Fixit.
-* mistakes, correcting:                  Undo.
-* mocklisp:                              Mocklisp.
-* mode hook:                             Program Modes.
-* mode line <1>:                         Minor Modes.
-* mode line:                             Mode Line.
-* mode, Term:                            Term Mode.
-* modified (buffer):                     Visiting.
-* modifier key:                          Intro to Keystrokes.
-* modifier mapping:                      Super and Hyper Keys.
-* moon, phases of:                       Lunar Phases.
-* mouse operations:                      Additional Mouse Operations.
-* mouse selection:                       Mouse Selection.
-* movement:                              Moving Point.
-* moving inside the calendar:            Calendar Motion.
-* moving point:                          Moving Point.
-* moving text:                           Yanking.
-* moving the cursor:                     Moving Point.
-* MULE:                                  Mule.
-* multi-frame XEmacs:                    XEmacs under X.
-* multibyte characters:                  Mule.
-* named configurations (RCS):            Snapshot Caveats.
-* narrowing:                             Narrowing.
-* New Frame menu item:                   File Menu.
+* mail-cc:                               Mail Mode.
+* mail-fill-yanked-message:              Mail Mode.
+* mail-interactive-insert-alias:         Mail Headers.
+* mail-other-window <1>:                 Sending Mail.
+* mail-other-window:                     Pop Up Window.
+* mail-send:                             Mail Mode.
+* mail-send-and-exit:                    Mail Mode.
+* mail-signature:                        Mail Mode.
+* mail-subject:                          Mail Mode.
+* mail-to:                               Mail Mode.
+* mail-yank-original:                    Mail Mode.
+* make-directory:                        File Names.
+* make-face-bold:                        Faces.
+* make-face-bold-italic:                 Faces.
+* make-face-italic:                      Faces.
+* make-face-larger:                      Faces.
+* make-face-smaller:                     Faces.
+* make-face-unbold:                      Faces.
+* make-face-unitalic:                    Faces.
+* make-frame:                            XEmacs under X.
+* make-local-variable:                   Locals.
+* make-obsolete:                         Compiling Libraries.
+* make-symbolic-link:                    Misc File Ops.
+* make-variable-buffer-local:            Locals.
+* manual-entry:                          Documentation.
+* mark-beginning-of-buffer:              Setting Mark.
+* mark-calendar-holidays:                Holidays.
+* mark-defun <1>:                        Defuns.
+* mark-defun:                            Marking Objects.
+* mark-diary-entries:                    Diary Commands.
+* mark-end-of-buffer:                    Setting Mark.
+* mark-fortran-subprogram:               Fortran Motion.
+* mark-hebrew-diary-entries:             Hebrew/Islamic Entries.
+* mark-included-diary-files:             Included Diary Files.
+* mark-islamic-diary-entries:            Hebrew/Islamic Entries.
+* mark-page <1>:                         Pages.
+* mark-page:                             Marking Objects.
+* mark-paragraph <1>:                    Paragraphs.
+* mark-paragraph:                        Marking Objects.
+* mark-sexp <1>:                         Lists.
+* mark-sexp:                             Marking Objects.
+* mark-whole-buffer:                     Marking Objects.
+* mark-word <1>:                         Words.
+* mark-word:                             Marking Objects.
+* minibuffer-complete:                   Completion Example.
+* minibuffer-complete-word:              Completion Commands.
+* modify-syntax-entry:                   Syntax Change.
+* mouse-choose-completion:               Completion Commands.
+* mouse-del-char:                        Additional Mouse Operations.
+* mouse-delete-window:                   Additional Mouse Operations.
+* mouse-keep-one-window:                 Additional Mouse Operations.
+* mouse-kill-line:                       Additional Mouse Operations.
+* mouse-line-length:                     Additional Mouse Operations.
+* mouse-scroll:                          Additional Mouse Operations.
+* mouse-select:                          Additional Mouse Operations.
+* mouse-select-and-split:                Additional Mouse Operations.
+* mouse-set-mark:                        Additional Mouse Operations.
+* mouse-set-point:                       Additional Mouse Operations.
+* mouse-track:                           Additional Mouse Operations.
+* mouse-track-adjust:                    Additional Mouse Operations.
+* mouse-track-and-copy-to-cutbuffer:     Additional Mouse Operations.
+* mouse-track-delete-and-insert:         Additional Mouse Operations.
+* move-over-close-and-reindent:          Balanced Editing.
+* move-to-window-line:                   Moving Point.
+* name-last-kbd-macro:                   Save Kbd Macro.
+* narrow-to-region:                      Narrowing.
+* negative-argument:                     Arguments.
 * newline:                               Inserting Text.
-* non-incremental search:                Non-Incremental Search.
-* nroff:                                 Nroff Mode.
-* numeric arguments:                     Arguments.
-* omer count:                            Sexp Diary Entries.
-* on-line manuals:                       Misc Help.
-* Open File, New Frame... menu item:     File Menu.
-* Open File... menu item:                File Menu.
-* option <1>:                            Examining.
-* option:                                Variables.
-* Options menu <1>:                      Options Menu.
-* Options menu:                          Pull-down Menus.
-* other editors:                         Emulation.
-* outlines:                              Outline Mode.
-* outragedy:                             Dissociated Press.
-* Overstrike menu item:                  Options Menu.
-* Overwrite mode:                        Minor Modes.
-* package hierarchies:                   Startup Paths.
-* package path:                          Startup Paths.
-* packages:                              Packages.
-* page number:                           Position Info.
-* pages:                                 Pages.
-* paragraphs:                            Paragraphs.
-* parasha, weekly:                       Sexp Diary Entries.
-* Paren Highlighting menu item:          Options Menu.
-* parentheses:                           Matching.
-* Paste menu item:                       Edit Menu.
-* pasting:                               Yanking.
-* path:                                  Startup Paths.
-* paths:                                 Startup Paths.
-* per-buffer variables:                  Locals.
-* Persian calendar:                      Calendar Systems.
-* phases of the moon:                    Lunar Phases.
-* pictures:                              Picture.
-* point <1>:                             Inserting Text.
-* point:                                 Point.
-* pointer face:                          Mouse Selection.
-* pointer shapes:                        Mouse Selection.
-* prefix key sequence:                   Key Sequences.
-* presidentagon:                         Dissociated Press.
-* primary selections:                    X Selection Commands.
-* Print Buffer menu item:                File Menu.
-* prompt:                                Minibuffer.
-* properbose:                            Dissociated Press.
-* Pull-down Menus <1>:                   Change Window.
-* Pull-down Menus:                       Pull-down Menus.
-* query replace:                         Query Replace.
-* quitting:                              Quitting.
-* quitting (in search):                  Incremental Search.
-* quitting Emacs:                        Exiting.
-* quoting:                               Inserting Text.
-* random sentences:                      CONX.
-* RCS:                                   Concepts of VC.
-* Read Only menu item:                   Options Menu.
-* read-only buffer:                      Misc Buffer.
-* rebinding keys, permanently:           Init File.
-* rebinding keys, this session:          Rebinding.
-* rectangle <1>:                         Rectangles in Picture.
-* rectangle:                             RegRect.
-* rectangles:                            Rectangles.
-* recursive editing level <1>:           Quitting.
-* recursive editing level:               Recursive Edit.
-* redefining keys:                       Key Bindings Using Strings.
-* regexp:                                Regexp Search.
-* regexp alternative:                    Regexps.
-* regexp grouping:                       Regexps.
-* region <1>:                            Case.
-* region:                                Mark.
-* registered file:                       Concepts of VC.
-* registers:                             Registers.
-* regular expression:                    Regexp Search.
-* regular packages:                      Package Terminology.
-* removing directories:                  File Names.
-* replacement:                           Replace.
-* restriction:                           Narrowing.
-* Revert Buffer menu item:               File Menu.
-* root of a hierarchy:                   Startup Paths.
-* rosh hodesh:                           Sexp Diary Entries.
-* Russian:                               Mule.
-* Save Buffer As ... menu item:          File Menu.
-* Save Buffer menu item:                 File Menu.
-* Save Options:                          Options Menu.
-* saving:                                Visiting.
-* saving option value:                   Changing an Option.
-* SCCS:                                  Concepts of VC.
-* Scheme mode:                           Program Modes.
-* scrolling:                             Scrolling.
-* scrolling in the calendar:             Scroll Calendar.
-* searching:                             Search.
-* selected buffer:                       Buffers.
-* selected window:                       Basic Window.
-* selective display:                     Outline Mode.
-* self-documentation:                    Help.
-* sentences:                             Sentences.
-* setting option value:                  Changing an Option.
-* setting variables:                     Examining.
-* sexp:                                  Lists.
-* sexp diary entries:                    Sexp Diary Entries.
-* shell commands:                        Shell.
-* Shell mode:                            Shell Mode.
-* shift modifier:                        Representing Keystrokes.
-* shrinking XEmacs frame:                Exiting.
-* simultaneous editing:                  Interlocking.
-* single-file packages:                  Package Terminology.
-* site-specific directories:             Startup Paths.
-* Size menu item:                        Options Menu.
-* slashes repeated in file name:         Minibuffer File.
-* snapshots and version control:         Snapshots.
-* sorting:                               Sorting.
-* sorting diary entries:                 Fancy Diary Display.
-* source packages:                       Package Terminology.
-* spelling:                              Spelling.
-* Split Frame:                           File Menu.
-* Start Macro Recording menu item:       Edit Menu.
-* starting XEmacs:                       Entering Emacs.
-* startup paths:                         Startup Paths.
-* string substitution:                   Replace.
-* subshell:                              Shell.
-* subtree (Outline mode):                Outline Visibility.
-* sunrise and sunset:                    Sunrise/Sunset.
-* suspending:                            Exiting.
-* switching buffers:                     Select Buffer.
-* Syntax Highlighting menu item:         Options Menu.
-* syntax table <1>:                      Syntax.
-* syntax table:                          Words.
-* tags table:                            Tags.
-* Teach Extended Commands menu item:     Options Menu.
-* techniquitous:                         Dissociated Press.
-* television:                            Appending Kills.
-* Term mode:                             Term Mode.
-* termscript file:                       Bugs.
-* TeX:                                   TeX Mode.
-* text:                                  Text.
-* Text mode:                             Text Mode.
-* Tools menu <1>:                        Tools Menu.
-* Tools menu:                            Pull-down Menus.
-* top level:                             Mode Line.
-* transposition <1>:                     Lists.
-* transposition <2>:                     Words.
-* transposition:                         Transpose.
-* truncation:                            Continuation Lines.
-* typos:                                 Fixit.
-* Un-split (Keep Others):                File Menu.
-* Un-split (Keep This):                  File Menu.
+* newline-and-indent:                    Basic Indent.
+* next-complex-command:                  Repetition.
+* next-error:                            Compilation.
+* next-history-element:                  Minibuffer History.
+* next-line:                             Moving Point.
+* next-list-mode-item:                   Completion Commands.
+* next-matching-history-element:         Minibuffer History.
+* not-modified:                          Saving.
+* nroff-mode:                            Nroff Mode.
+* number-to-register:                    RegNumbers.
+* occur:                                 Other Repeating Search.
+* open-dribble-file:                     Bugs.
+* open-line:                             Blank Lines.
+* open-rectangle:                        Rectangles.
+* open-termscript:                       Bugs.
+* other-window:                          Other Window.
+* other-window-any-frame:                Other Window.
+* outline-backward-same-level:           Outline Motion.
+* outline-forward-same-level:            Outline Motion.
+* outline-next-visible-heading:          Outline Motion.
+* outline-previous-visible-heading:      Outline Motion.
+* outline-up-heading:                    Outline Motion.
+* overwrite-mode:                        Minor Modes.
+* phases-of-moon:                        Lunar Phases.
+* picture-backward-clear-column:         Basic Picture.
+* picture-backward-column:               Basic Picture.
+* picture-clear-column:                  Basic Picture.
+* picture-clear-line:                    Basic Picture.
+* picture-clear-rectangle:               Rectangles in Picture.
+* picture-clear-rectangle-to-register:   Rectangles in Picture.
+* picture-forward-column:                Basic Picture.
+* picture-motion:                        Insert in Picture.
+* picture-motion-reverse:                Insert in Picture.
+* picture-move-down:                     Basic Picture.
+* picture-move-up:                       Basic Picture.
+* picture-movement-down:                 Insert in Picture.
+* picture-movement-left:                 Insert in Picture.
+* picture-movement-ne:                   Insert in Picture.
+* picture-movement-nw:                   Insert in Picture.
+* picture-movement-right:                Insert in Picture.
+* picture-movement-se:                   Insert in Picture.
+* picture-movement-sw:                   Insert in Picture.
+* picture-movement-up:                   Insert in Picture.
+* picture-newline:                       Basic Picture.
+* picture-open-line:                     Basic Picture.
+* picture-set-tab-stops:                 Tabs in Picture.
+* picture-tab:                           Tabs in Picture.
+* picture-tab-search:                    Tabs in Picture.
+* picture-yank-rectangle:                Rectangles in Picture.
+* picture-yank-rectangle-from-register:  Rectangles in Picture.
+* plain-TeX-mode:                        TeX Mode.
+* plain-tex-mode:                        TeX Mode.
+* play-sound:                            Audible Bell.
+* point-to-register:                     RegPos.
+* prefer-coding-system:                  Recognize Coding.
+* prepend-to-buffer:                     Accumulating Text.
+* previous-complex-command:              Repetition.
+* previous-history-element:              Minibuffer History.
+* previous-line:                         Moving Point.
+* previous-list-mode-item:               Completion Commands.
+* previous-matching-history-element:     Minibuffer History.
+* print-buffer:                          Hardcopy.
+* print-diary-entries <1>:               Diary Customizing.
+* print-diary-entries:                   Diary Commands.
+* print-region:                          Hardcopy.
+* quail-set-keyboard-layout:             Select Input Method.
+* query-replace:                         Query Replace.
+* query-replace-regexp:                  Query Replace.
+* quietly-read-abbrev-file:              Saving Abbrevs.
+* quit-shell-subjob:                     Shell Mode.
+* quoted-insert:                         Inserting Text.
+* re-search-backward:                    Regexp Search.
+* re-search-forward:                     Regexp Search.
+* read-abbrev-file:                      Saving Abbrevs.
+* read-key-sequence:                     Representing Keystrokes.
+* recenter <1>:                          Scrolling.
+* recenter:                              Moving Point.
+* recover-file:                          Recover.
+* redraw-calendar:                       General Calendar.
+* relabel-menu-item:                     Menu Customization.
+* remove-directory:                      File Names.
+* rename-buffer:                         Misc Buffer.
+* rename-file:                           Misc File Ops.
+* repeat-complex-command:                Repetition.
+* replace-regexp:                        Unconditional Replace.
+* replace-string:                        Unconditional Replace.
+* revert-buffer:                         Reverting.
+* run-lisp:                              External Lisp.
+* save-buffer:                           Saving.
+* save-buffers-kill-emacs:               Exiting.
+* save-some-buffers:                     Saving.
+* scroll-calendar-left:                  Scroll Calendar.
+* scroll-calendar-left-three-months:     Scroll Calendar.
+* scroll-calendar-right:                 Scroll Calendar.
+* scroll-calendar-right-three-months:    Scroll Calendar.
+* scroll-down:                           Scrolling.
+* scroll-left:                           Horizontal Scrolling.
+* scroll-other-window <1>:               General Calendar.
+* scroll-other-window:                   Other Window.
+* scroll-right:                          Horizontal Scrolling.
+* scroll-up:                             Scrolling.
+* search-backward:                       Non-Incremental Search.
+* search-forward:                        Non-Incremental Search.
+* select-input-method:                   Select Input Method.
+* self-insert:                           Inserting Text.
+* send-shell-input:                      Shell Mode.
+* set-buffer-file-coding-system:         Specify Coding.
+* set-buffer-process-coding-system:      Specify Coding.
+* set-comment-column:                    Comments.
+* set-default-file-modes:                Interlocking.
+* set-face-background:                   Faces.
+* set-face-background-pixmap:            Faces.
+* set-face-font:                         Faces.
+* set-face-foreground:                   Faces.
+* set-face-underline-p:                  Faces.
+* set-fill-column:                       Fill Commands.
+* set-fill-prefix:                       Fill Prefix.
+* set-gnu-bindings:                      Emulation.
+* set-goal-column:                       Moving Point.
+* set-gosmacs-bindings:                  Emulation.
+* set-keyboard-coding-system:            Specify Coding.
+* set-language-environment:              Language Environments.
+* set-mark-command:                      Setting Mark.
+* set-selective-display:                 Selective Display.
+* set-terminal-coding-system:            Specify Coding.
+* set-variable:                          Examining.
+* set-visited-file-name:                 Saving.
+* setq-default:                          Locals.
+* shell:                                 Interactive Shell.
+* shell-command:                         Single Shell.
+* shell-command-on-region:               Single Shell.
+* shell-send-eof:                        Shell Mode.
+* show-all:                              Outline Visibility.
+* show-all-diary-entries:                Diary Commands.
+* show-branches:                         Outline Visibility.
+* show-children:                         Outline Visibility.
+* show-entry:                            Outline Visibility.
+* show-output-from-shell:                Shell Mode.
+* show-subtree:                          Outline Visibility.
+* simple-diary-display:                  Fancy Diary Display.
+* sort-columns:                          Sorting.
+* sort-diary-entries:                    Fancy Diary Display.
+* sort-fields:                           Sorting.
+* sort-lines:                            Sorting.
+* sort-numeric-fields:                   Sorting.
+* sort-pages:                            Sorting.
+* sort-paragraphs:                       Sorting.
+* spell-buffer:                          Spelling.
+* spell-region:                          Spelling.
+* spell-string:                          Spelling.
+* spell-word:                            Spelling.
+* split-line:                            Indentation Commands.
+* split-window-horizontally:             Split Window.
+* split-window-vertically:               Split Window.
+* start-kbd-macro:                       Basic Kbd Macro.
+* stop-shell-subjob:                     Shell Mode.
+* substitute-key-definition:             Interactive Rebinding.
+* sunrise-sunset:                        Sunrise/Sunset.
+* suspend-emacs:                         Exiting.
+* switch-to-buffer:                      Select Buffer.
+* switch-to-buffer-other-frame <1>:      Select Buffer.
+* switch-to-buffer-other-frame:          XEmacs under X.
+* switch-to-buffer-other-window <1>:     Pop Up Window.
+* switch-to-buffer-other-window:         Select Buffer.
+* switch-to-completions:                 Completion Commands.
+* switch-to-other-buffer:                Select Buffer.
+* tab-to-tab-stop <1>:                   Text Mode.
+* tab-to-tab-stop:                       Tab Stops.
+* tabify:                                Just Spaces.
+* tags-apropos:                          List Tags.
+* tags-loop-continue:                    Tags Search.
+* tags-query-replace:                    Tags Search.
+* tags-search:                           Tags Search.
+* term:                                  Terminal emulator.
+* term-line-mode:                        Term Mode.
+* term-pager-toggle:                     Paging in Term.
+* tex-buffer:                            TeX Print.
+* tex-close-latex-block:                 TeX Editing.
+* tex-insert-braces:                     TeX Editing.
+* tex-insert-quote:                      TeX Editing.
+* tex-kill-job:                          TeX Print.
+* tex-mode:                              TeX Mode.
+* TeX-mode:                              TeX Mode.
+* tex-print:                             TeX Print.
+* tex-recenter-output-buffer:            TeX Print.
+* tex-region:                            TeX Print.
+* tex-show-print-queue:                  TeX Print.
+* tex-terminate-paragraph:               TeX Editing.
+* text-mode:                             Text Mode.
+* toggle-input-method:                   Select Input Method.
+* toggle-read-only:                      Misc Buffer.
+* top-level <1>:                         Quitting.
+* top-level:                             Recursive Edit.
+* transpose-chars <1>:                   Transpose.
+* transpose-chars:                       Moving Point.
+* transpose-lines:                       Transpose.
+* transpose-sexps <1>:                   Lists.
+* transpose-sexps:                       Transpose.
+* transpose-words <1>:                   Words.
+* transpose-words:                       Transpose.
 * undo:                                  Undo.
-* Undo menu item:                        Edit Menu.
-* variable:                              Variables.
-* variables:                             Commands.
-* version control:                       Version Control.
-* version-specific directories:          Startup Paths.
-* vi:                                    Emulation.
-* viewing:                               Misc File Ops.
-* Viper:                                 Emulation.
-* visiting:                              Visiting.
-* visiting files:                        Visiting.
-* weeks, which day they start on:        Move to Beginning or End.
-* Weight menu item:                      Options Menu.
-* widening:                              Narrowing.
-* window:                                Frame.
-* windows:                               Windows.
-* Windows menu:                          Change Window.
-* word search:                           Word Search.
-* words <1>:                             Case.
-* words <2>:                             Words.
-* words:                                 Fixing Case.
-* work file:                             Concepts of VC.
-* wrapping:                              Continuation Lines.
-* X resources:                           X Resources.
-* yahrzeits <1>:                         Sexp Diary Entries.
-* yahrzeits:                             From Other Calendar.
-* yanking:                               Yanking.
-* | in regexp:                           Regexps.
-
+* unexpand-abbrev:                       Expanding Abbrevs.
+* universal-argument:                    Arguments.
+* universal-coding-system-argument:      Specify Coding.
+* untabify:                              Just Spaces.
+* up-list:                               TeX Editing.
+* upcase-region:                         Case.
+* upcase-word <1>:                       Case.
+* upcase-word:                           Fixing Case.
+* validate-tex-buffer:                   TeX Editing.
+* vc-cancel-version:                     Editing with VC.
+* vc-create-snapshot:                    Making Snapshots.
+* vc-diff:                               Old Versions.
+* vc-directory:                          VC Status.
+* vc-insert-headers:                     Version Headers.
+* vc-next-action:                        Editing with VC.
+* vc-print-log:                          VC Status.
+* vc-register:                           Editing with VC.
+* vc-rename-file:                        Renaming and VC.
+* vc-retrieve-snapshot:                  Making Snapshots.
+* vc-revert-buffer:                      Editing with VC.
+* vc-update-change-log:                  Change Logs and VC.
+* vc-version-other-window:               Old Versions.
+* view-buffer:                           Misc Buffer.
+* view-diary-entries:                    Diary Commands.
+* view-emacs-news:                       Misc Help.
+* view-file:                             Misc File Ops.
+* view-hello-file:                       Mule Intro.
+* view-lossage:                          Misc Help.
+* view-register:                         Registers.
+* visit-tags-table:                      Select Tags Table.
+* what-cursor-position:                  Position Info.
+* what-line:                             Position Info.
+* what-page:                             Position Info.
+* where-is:                              Name Help.
+* widen:                                 Narrowing.
+* widget-backward:                       Changing an Option.
+* widget-complete:                       Changing an Option.
+* widget-forward:                        Changing an Option.
+* window-configuration-to-register <1>:  Split Window.
+* window-configuration-to-register:      RegConfig.
+* word-search-backward:                  Word Search.
+* word-search-forward:                   Word Search.
+* write-abbrev-file:                     Saving Abbrevs.
+* write-file:                            Saving.
+* x-copy-primary-selection:              X Selection Commands.
+* x-create-frame:                        X Resources.
+* x-delete-primary-selection:            X Selection Commands.
+* x-insert-selection:                    X Selection Commands.
+* x-kill-primary-selection:              X Selection Commands.
+* x-mouse-kill:                          X Selection Commands.
+* x-own-secondary-selection:             X Selection Commands.
+* x-own-selection:                       X Selection Commands.
+* x-set-point-and-insert-selection:      X Selection Commands.
+* xemacs-local-faq:                      Misc Help.
+* Yank:                                  Kill Ring.
+* yank-pop:                              Earlier Kills.
+* yank-rectangle:                        Rectangles.
+* yow:                                   Amusements.
+* zap-to-char:                           Killing.
+* zmacs-activate-region:                 Active Regions.
+* zmacs-deactivate-region:               Active Regions.
 
index cc4a455..e85db7b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index f3f6e3a..1fdc4de 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 53fc1cd..d8a425c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7a27615..41187a8 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 1637f0f..e6c1b6f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index eb360e0..8fcc8e1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index e72246b..81ad49c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0d949e6..7c95cda 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9b88cc1..ae5c8af 100644 (file)
@@ -1,3 +1,134 @@
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-01-31  Francesco Potorti`  <pot@gnu.org>
+
+       * etags.c: [NDEBUG] #undef assert and #define it as ((void)0), for
+       the sake of some buggy assert.h (e.g. in MinGW and sunos4 pcc).
+       (C_entries): Tag token renamed to still_in_token because sunos4
+       pcc wants to expand it as the token() macro even though it has no
+       arguments.
+
+2001-01-30  Francesco Potorti`  <pot@gnu.org>
+
+       * etags.c: [WIN32-NATIVE]: #undef MSDOS, #undef WINDOWSNT and
+       #define it for the sake of Xemacs.
+       [WINDOWSNT]: #undef HAVE_NTGUI even if built without
+       HAVE_CONFIG_H.  This change only affects a standalone etags.
+       [WINDOWSNT]: #undef DOS_NT and #define it even if built with
+       HAVE_CONFIG_H.  This change does nothing in Emacs, as DOS_NT is
+       always defined when HAVE_CONFIG_H and WINDOWS are both defined.
+       [!HAVE_UNISTD_H]: use defined(WINDOWSNT) instead of the bare
+       WINDOWSNT, as this is the correct way to use it.
+
+2001-01-28  Francesco Potorti`  <pot@gnu.org>
+
+       * etags.c: Be capable to parse nested struct-like structures.
+       (structdef, structtag): Struct state machine revisited.
+       (struct tok): Revisited.
+       (cstack, nestlev, instruct): New struct and macros.
+       (pushclass_above, popclass_above, write_classname): New functions
+       for dealing with nested class names, inspired by Mykola Dzyuba.
+       (consider_token, make_C_tag, C_entries): Many changes for dealing
+       with arbitrarily nested structures.
+       (etags_getcwd): #if MSDOS, not #ifdef MSDOS!
+       (C_entries): Consider templates in C++.
+       (sym_type): New constant st_C_class for detecting "class" also in
+       C mode.
+       (C_AUTO): New macro for automatic detection of C++.
+       (consider_token): Automatic set C++ mode.
+       (C_entries): New security check for yacc.
+       (print_language_names, print_help): Mention the autodetect
+       feature, do not show help for the -C option, now mostly useless.
+       (C_entries): Tag C++ forward declarations if --declarations.
+       (C_entries): Don't be fooled by things like XDEFUN.
+       (consider_token): Discard asm pseudo function.
+
+2001-01-25  Francesco Potorti`  <pot@potorti.it>
+
+       * etags.c (struct tok): Renamed from struct token.
+       (token): Renamed from tok.
+       (structtype): Make it a local variable.
+       [DEBUG]: Use assert.
+       (xrnew): Change the synopsis.
+       (typedefs_or_cplusplus): Renamed from typedefs_and_cplusplus.
+       (grow_linebuffer): Don't call xrnew when not needed.
+       (token): buffer renamed to line.
+       (C_entries): Three calls to inibuffer moved here from main.
+       (C_entries): Removed all references to var methodlen, delete it.
+       (linebuffer_setlen): Was grow_buffer, now also sets len.
+       (consider_token, C_entries, Pascal_functions): Use it.
+       (C_entries): Preventing problems relative to extern "C".
+       (C_entries): Can tag more than one variable or func separated by
+       comma when --declarations is used.
+       (C_entries): More accurate tagging of members and declarations.
+       (yacc_rules): Was global, made local to C_entries.
+       (next_token_is_func): Removed.
+       (fvdef): New constants fdefunkey, fdefunname.
+       (consider_token, C_entries): Use them.
+       (C_entries): Build proper lisp names for Emacs DEFUNs.
+
+2001-01-15  Francesco Potorti`  <pot@pot.cnuce.cnr.it>
+
+       * etags.c (print_language_names): Print filenames in addition to
+       suffixes.
+
+2001-01-12  Francesco Potorti`  <pot@gnu.org>
+
+       * etags.c (get_language_from_langname): Renamed from
+       get_language_from_name.
+       (get_language_from_filename): Renamed from
+       get_language_from_suffix.  Now first looks for the complete file
+       name.
+       (language): New member char **filenames.
+       (Makefile_filenames): List of possible filenames for makefiles.
+       (lang_names): Added a NULL member for every entry, added an entry
+       for makefiles.
+       (Makefile_targets): New function, inspired by Assar Westerlund
+       <assar@sics.se>.
+
+2000-11-07  Francesco Potortì  <pot@pot.cnuce.cnr.it>
+
+       * etags.c (Texinfo_nodes): Renamed from Texinfo_fuctions and made
+       it conformant to the style of the rest of the code.
+
+2000-02-10  Francesco Potorti`  <pot@gnu.org>
+
+       * etags.c (iswhite): Redefined not to consider '\0' as white
+       space, and use it throughout in place of isspace, thus preventing a
+       potential signed char to int conversion problem.
+       (MSDOS): #undefine befere redefining
+
+2000-02-04  Francesco Potorti`  <F.Potorti@cnuce.cnr.it>
+
+       * etags.c (many functions): Add prototypes.
+
+2000-01-31  Francesco Potorti`  <F.Potorti@cnuce.cnr.it>
+
+       * etags.c [MSDOS]: Set MSDOS to 1 if #defined, 0 otherwise.
+       (get_compressor_from_suffix, process_file): Use MSDOS in if clause.
+       (etags_strchr, etags_strrchr): Use const char * and int as arguments.
+       (getenv, getcwd): Only declare them if necessary.
+       (EMACS_NAME): New constant macro.
+       (print_version): Use it.
+       (P_) [__STDC__]: Macro for defining function prototypes.
+
+2001-02-06  Martin Buchholz  <martin@xemacs.org>
+
+       * gnuclient.c:
+       * gnuserv.c:
+       * gnuslib.c:
+       * pop.c:
+       Remove use of BSD-specific types.
+       s/u_(char|short|int_long)/unsigned $1/g
+       Remove pointless casts.
+
+2001-01-28  Martin Buchholz  <martin@xemacs.org>
+
+       * gnuclient.c (get_current_working_directory): Use HAVE_GETCWD.
+       warning: getwd() possibly used unsafely, consider using getcwd().
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index ce7d1c2..7ae810d 100644 (file)
@@ -1,5 +1,5 @@
-/* Tags file maker to go with GNU Emacs
-   Copyright (C) 1984, 87, 88, 89, 93, 94, 95, 98, 99
+/* Tags file maker to go with GNU Emacs           -*- coding: latin-1 -*-
+   Copyright (C) 1984, 87, 88, 89, 93, 94, 95, 98, 99, 2000, 2001
    Free Software Foundation, Inc. and Ken Arnold
 
 This file is not considered part of GNU Emacs.
@@ -24,20 +24,25 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  *     Fortran added by Jim Kleckner.
  *     Ed Pelegri-Llopart added C typedefs.
  *     Gnu Emacs TAGS format and modifications by RMS?
- *     Sam Kendall added C++.
- *     Francesco Potorti` reorganised C and C++ based on work by Joe Wells.
- *     Regexp tags by Tom Tromey.
+ * 1989        Sam Kendall added C++.
+ * 1993        Francesco Potortì reorganised C and C++ based on work by Joe Wells.
+ * 1994        Regexp tags by Tom Tromey.
+ * 2001 Nested classes by Francesco Potortì based on work by Mykola Dzyuba.
  *
- *     Francesco Potorti` (pot@gnu.org) is the current maintainer.
+ *     Francesco Potortì <pot@gnu.org> has maintained it since 1993.
  */
 
-char pot_etags_version[] = "@(#) pot revision number is 13.44";
+char pot_etags_version[] = "@(#) pot revision number is 14.15";
 
 #define        TRUE    1
 #define        FALSE   0
 
-#ifndef DEBUG
-# define DEBUG FALSE
+#ifdef DEBUG
+#  undef DEBUG
+#  define DEBUG TRUE
+#else
+#  define DEBUG  FALSE
+#  define NDEBUG               /* disable assert */
 #endif
 
 #if defined(__STDC__) && (__STDC__ || defined(__SUNPRO_C))
@@ -59,29 +64,54 @@ char pot_etags_version[] = "@(#) pot revision number is 13.44";
 # define _GNU_SOURCE 1         /* enables some compiler checks on GNU */
 #endif
 
+/* WIN32_NATIVE is for Xemacs.
+   MSDOS, WINDOWSNT, DOS_NT are for Emacs. */
 #ifdef WIN32_NATIVE
+# undef MSDOS
+# undef  WINDOWSNT
+# define WINDOWSNT
+#endif /* WIN32_NATIVE */
+
+#ifdef MSDOS
+# undef MSDOS
+# define MSDOS TRUE
+# include <fcntl.h>
+# include <sys/param.h>
+# include <io.h>
+# ifndef HAVE_CONFIG_H
+#   define DOS_NT
+#   include <sys/config.h>
+# endif
+#else
+# define MSDOS FALSE
+#endif /* MSDOS */
+
+#ifdef WINDOWSNT
 # include <stdlib.h>
 # include <fcntl.h>
 # include <string.h>
 # include <direct.h>
 # include <io.h>
 # define MAXPATHLEN _MAX_PATH
+# undef HAVE_NTGUI
+# undef  DOS_NT
+# define DOS_NT
 # ifndef HAVE_GETCWD
 #   define HAVE_GETCWD
 # endif /* undef HAVE_GETCWD */
-#else /* !WIN32_NATIVE */
+#else /* !WINDOWSNT */
 # ifdef STDC_HEADERS
 #  include <stdlib.h>
 #  include <string.h>
 # else
     extern char *getenv ();
 # endif
-#endif /* !WIN32_NATIVE */
+#endif /* !WINDOWSNT */
 
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #else
-# if defined (HAVE_GETCWD) && !defined (WIN32_NATIVE)
+# if defined (HAVE_GETCWD) && !defined (WINDOWSNT)
     extern char *getcwd (char *buf, size_t size);
 # endif
 #endif /* HAVE_UNISTD_H */
@@ -95,6 +125,12 @@ char pot_etags_version[] = "@(#) pot revision number is 13.44";
 #include <sys/types.h>
 #include <sys/stat.h>
 
+#include <assert.h>
+#ifdef NDEBUG
+# undef  assert                        /* some systems have a buggy assert.h */
+# define assert(x) ((void) 0)
+#endif
+
 #if !defined (S_ISREG) && defined (S_IFREG)
 # define S_ISREG(m)    (((m) & S_IFMT) == S_IFREG)
 #endif
@@ -130,43 +166,42 @@ char pot_etags_version[] = "@(#) pot revision number is 13.44";
 # define       BAD     1
 #endif
 
-/* C extensions. */
-#define C_PLPL 0x00001         /* C++ */
-#define C_STAR 0x00003         /* C* */
-#define C_JAVA 0x00005         /* JAVA */
-#define YACC   0x10000         /* yacc file */
-
-#define streq(s,t)     ((DEBUG && (s) == NULL && (t) == NULL   \
-                         && (abort (), 1)) || !strcmp (s, t))
-#define strneq(s,t,n)  ((DEBUG && (s) == NULL && (t) == NULL   \
-                         && (abort (), 1)) || !strncmp (s, t, n))
-
-#define lowcase(c)     tolower ((char)c)
+#define streq(s,t)     (assert((s)!=NULL || (t)!=NULL), !strcmp (s, t))
+#define strneq(s,t,n)  (assert((s)!=NULL || (t)!=NULL), !strncmp (s, t, n))
 
 #define CHARS 256              /* 2^sizeof(char) */
-#define CHAR(x)                ((unsigned int)x & (CHARS - 1))
+#define CHAR(x)                ((unsigned int)(x) & (CHARS - 1))
 #define        iswhite(c)      (_wht[CHAR(c)]) /* c is white */
 #define notinname(c)   (_nin[CHAR(c)]) /* c is not in a name */
 #define        begtoken(c)     (_btk[CHAR(c)]) /* c can start token */
 #define        intoken(c)      (_itk[CHAR(c)]) /* c can be in token */
 #define        endtoken(c)     (_etk[CHAR(c)]) /* c ends tokens */
 
+#define ISALNUM(c)     isalnum (CHAR(c))
+#define ISALPHA(c)     isalpha (CHAR(c))
+#define ISDIGIT(c)     isdigit (CHAR(c))
+#define ISLOWER(c)     islower (CHAR(c))
+
+#define lowcase(c)     tolower (CHAR(c))
+#define upcase(c)      toupper (CHAR(c))
+
 
 /*
  *     xnew, xrnew -- allocate, reallocate storage
  *
  * SYNOPSIS:   Type *xnew (int n, Type);
- *             Type *xrnew (OldPointer, int n, Type);
+ *             void xrnew (OldPointer, int n, Type);
  */
-#ifdef chkmalloc
+#if DEBUG
 # include "chkmalloc.h"
 # define xnew(n,Type)    ((Type *) trace_malloc (__FILE__, __LINE__, \
                                                  (n) * sizeof (Type)))
-# define xrnew(op,n,Type) ((Type *) trace_realloc (__FILE__, __LINE__, \
-                                                  (op), (n) * sizeof (Type)))
+# define xrnew(op,n,Type) ((op) = (Type *) trace_realloc (__FILE__, __LINE__, \
+                                       (char *) (op), (n) * sizeof (Type)))
 #else
 # define xnew(n,Type)    ((Type *) xmalloc ((n) * sizeof (Type)))
-# define xrnew(op,n,Type) ((Type *) xrealloc ((op), (n) * sizeof (Type)))
+# define xrnew(op,n,Type) ((op) = (Type *) xrealloc ( \
+                                       (char *) (op), (n) * sizeof (Type)))
 #endif
 
 typedef int bool;
@@ -183,6 +218,7 @@ typedef struct
 {
   char *name;
   Lang_function *function;
+  char **filenames;
   char **suffixes;
   char **interpreters;
 } language;
@@ -229,13 +265,15 @@ static void Erlang_functions P_((FILE *));
 static void Fortran_functions P_((FILE *));
 static void Yacc_entries P_((FILE *));
 static void Lisp_functions P_((FILE *));
+static void Makefile_targets P_((FILE *));
 static void Pascal_functions P_((FILE *));
 static void Perl_functions P_((FILE *));
 static void Postscript_functions P_((FILE *));
 static void Prolog_functions P_((FILE *));
 static void Python_functions P_((FILE *));
 static void Scheme_functions P_((FILE *));
-static void TeX_functions P_((FILE *));
+static void TeX_commands P_((FILE *));
+static void Texinfo_nodes P_((FILE *));
 static void just_read_file P_((FILE *));
 
 static void print_language_names P_((void));
@@ -245,9 +283,9 @@ int main P_((int, char **));
 static int number_len P_((long));
 
 static compressor *get_compressor_from_suffix P_((char *, char **));
-static language *get_language_from_name P_((char *));
+static language *get_language_from_langname P_((char *));
 static language *get_language_from_interpreter P_((char *));
-static language *get_language_from_suffix P_((char *));
+static language *get_language_from_filename P_((char *));
 static int total_size_of_entries P_((node *));
 static long readline P_((linebuffer *, FILE *));
 static long readline_internal P_((linebuffer *, FILE *));
@@ -260,7 +298,7 @@ static void free_patterns P_((void));
 #endif /* ETAGS_REGEXPS */
 static void error P_((const char *, const char *));
 static void suggest_asking_for_help P_((void));
-static void fatal P_((char *, char *));
+void fatal P_((char *, char *));
 static void pfatal P_((char *));
 static void add_node P_((node *, node **));
 
@@ -287,9 +325,9 @@ static char *absolute_filename P_((char *, char *));
 static char *absolute_dirname P_((char *, char *));
 static bool filename_is_absolute P_((char *f));
 static void canonicalize_filename P_((char *));
-static void grow_linebuffer P_((linebuffer *, int));
-static long *xmalloc P_((unsigned int));
-static long *xrealloc P_((char *, unsigned int));
+static void linebuffer_setlen P_((linebuffer *, int));
+long *xmalloc P_((unsigned int));
+long *xrealloc P_((char *, unsigned int));
 
 \f
 char searchar = '/';           /* use /.../ searches */
@@ -311,12 +349,6 @@ char *dbp;                 /* pointer to start of current tag */
 node *head;                    /* the head of the binary tree of tags */
 
 linebuffer lb;                 /* the current line */
-linebuffer token_name;         /* used by C_entries as a temporary area */
-struct
-{
-  long linepos;
-  linebuffer lb;               /* used by C_entries instead of lb */
-} lbs[2];
 
 /* boolean "functions" (see init)      */
 bool _wht[CHARS], _nin[CHARS], _itk[CHARS], _btk[CHARS], _etk[CHARS];
@@ -335,7 +367,7 @@ char
 bool append_to_tagfile;                /* -a: append to tags */
 /* The following four default to TRUE for etags, but to FALSE for ctags.  */
 bool typedefs;                 /* -t: create tags for C and Ada typedefs */
-bool typedefs_and_cplusplus;   /* -T: create tags for C typedefs, level */
+bool typedefs_or_cplusplus;    /* -T: create tags for C typedefs, level */
                                /* 0 struct/enum/union decls, and C++ */
                                /* member functions. */
 bool constantypedefs;          /* -d: create tags for C #define, enum */
@@ -445,12 +477,13 @@ char *Asm_suffixes [] = { "a",    /* Unix assembler */
                        };
 
 /* Note that .c and .h can be considered C++, if the --c++ flag was
-   given.  That is why default_C_entries is called here. */
+   given, or if the `class' keyowrd is met inside the file.
+   That is why default_C_entries is called for these. */
 char *default_C_suffixes [] =
   { "c", "h", NULL };
 
 char *Cplusplus_suffixes [] =
-  { "C", "H", "c++", "cc", "cpp", "cxx", "h++", "hh", "hpp", "hxx",
+  { "C", "c++", "cc", "cpp", "cxx", "H", "h++", "hh", "hpp", "hxx",
     "M",                       /* Objective C++ */
     "pdb",                     /* Postscript with C syntax */
     NULL };
@@ -471,7 +504,10 @@ char *Fortran_suffixes [] =
   { "F", "f", "f90", "for", NULL };
 
 char *Lisp_suffixes [] =
-  { "cl", "clisp", "el", "l", "lisp", "lsp", "ml", NULL };
+  { "cl", "clisp", "el", "l", "lisp", "LSP", "lsp", "ml", NULL };
+
+char *Makefile_filenames [] =
+  { "Makefile", "makefile", "GNUMakefile", "Makefile.in", "Makefile.am", NULL};
 
 char *Pascal_suffixes [] =
   { "p", "pas", NULL };
@@ -482,9 +518,9 @@ char *Perl_interpreters [] =
   { "perl", "@PERL@", NULL };
 
 char *plain_C_suffixes [] =
-  { "pc",                      /* Pro*C file */
+  { "lm",                      /* Objective lex file */
     "m",                       /* Objective C file */
-    "lm",                      /* Objective lex file */
+    "pc",                      /* Pro*C file */
      NULL };
 
 char *Postscript_suffixes [] =
@@ -498,13 +534,16 @@ char *Python_suffixes [] =
 
 /* Can't do the `SCM' or `scm' prefix with a version number. */
 char *Scheme_suffixes [] =
-  { "SCM", "SM", "oak", "sch", "scheme", "scm", "sm", "ss", "t", NULL };
+  { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
 
 char *TeX_suffixes [] =
-  { "TeX", "bib", "clo", "cls", "ltx", "sty", "tex", NULL };
+  { "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
+
+char *Texinfo_suffixes [] =
+  { "texi", "texinfo", "txi", NULL };
 
 char *Yacc_suffixes [] =
-  { "y", "ym", "yy", "yxx", "y++", NULL }; /* .ym is Objective yacc file */
+  { "y", "y++", "ym", "yxx", "yy", NULL }; /* .ym is Objective yacc file */
 
 /*
  * Table of languages.
@@ -515,41 +554,47 @@ char *Yacc_suffixes [] =
 
 language lang_names [] =
 {
-  { "ada",     Ada_funcs,           Ada_suffixes,         NULL              },
-  { "asm",     Asm_labels,          Asm_suffixes,         NULL              },
-  { "c",       default_C_entries,   default_C_suffixes,   NULL              },
-  { "c++",     Cplusplus_entries,   Cplusplus_suffixes,   NULL              },
-  { "c*",      Cstar_entries,       Cstar_suffixes,       NULL              },
-  { "cobol",   Cobol_paragraphs,    Cobol_suffixes,       NULL              },
-  { "erlang",  Erlang_functions,    Erlang_suffixes,      NULL              },
-  { "fortran", Fortran_functions,   Fortran_suffixes,     NULL              },
-  { "java",    Cjava_entries,       Cjava_suffixes,       NULL              },
-  { "lisp",    Lisp_functions,      Lisp_suffixes,        NULL              },
-  { "pascal",  Pascal_functions,    Pascal_suffixes,      NULL              },
-  { "perl",    Perl_functions,      Perl_suffixes,        Perl_interpreters },
-  { "postscript", Postscript_functions, Postscript_suffixes, NULL           },
-  { "proc",    plain_C_entries,     plain_C_suffixes,     NULL              },
-  { "prolog",  Prolog_functions,    Prolog_suffixes,      NULL              },
-  { "python",  Python_functions,    Python_suffixes,      NULL              },
-  { "scheme",  Scheme_functions,    Scheme_suffixes,      NULL              },
-  { "tex",     TeX_functions,       TeX_suffixes,         NULL              },
-  { "yacc",    Yacc_entries,        Yacc_suffixes,        NULL              },
+  { "ada",               Ada_funcs,            NULL, Ada_suffixes,             NULL },
+  { "asm",               Asm_labels,           NULL, Asm_suffixes,             NULL },
+  { "c",                 default_C_entries,    NULL, default_C_suffixes,       NULL },
+  { "c++",               Cplusplus_entries,    NULL, Cplusplus_suffixes,       NULL },
+  { "c*",                Cstar_entries,        NULL, Cstar_suffixes,           NULL },
+  { "cobol",             Cobol_paragraphs,     NULL, Cobol_suffixes,           NULL },
+  { "erlang",            Erlang_functions,     NULL, Erlang_suffixes,          NULL },
+  { "fortran",           Fortran_functions,    NULL, Fortran_suffixes,         NULL },
+  { "java",              Cjava_entries,        NULL, Cjava_suffixes,           NULL },
+  { "lisp",              Lisp_functions,       NULL, Lisp_suffixes,            NULL },
+  { "makefile",   Makefile_targets,     Makefile_filenames, NULL,      NULL },
+  { "pascal",            Pascal_functions,     NULL, Pascal_suffixes,          NULL },
+  { "perl",              Perl_functions,     NULL, Perl_suffixes, Perl_interpreters },
+  { "postscript", Postscript_functions, NULL, Postscript_suffixes,     NULL },
+  { "proc",              plain_C_entries,      NULL, plain_C_suffixes,         NULL },
+  { "prolog",            Prolog_functions,     NULL, Prolog_suffixes,          NULL },
+  { "python",            Python_functions,     NULL, Python_suffixes,          NULL },
+  { "scheme",            Scheme_functions,     NULL, Scheme_suffixes,          NULL },
+  { "tex",               TeX_commands,         NULL, TeX_suffixes,             NULL },
+  { "texinfo",           Texinfo_nodes,        NULL, Texinfo_suffixes,         NULL },
+  { "yacc",              Yacc_entries,         NULL, Yacc_suffixes,            NULL },
   { "auto", NULL },             /* default guessing scheme */
   { "none", just_read_file },   /* regexp matching only */
   { NULL, NULL }                /* end of list */
 };
+
 \f
 static void
 print_language_names ()
 {
   language *lang;
-  char **ext;
+  char **name, **ext;
 
   puts ("\nThese are the currently supported languages, along with the\n\
-default file name suffixes:");
+default file names and dot suffixes:");
   for (lang = lang_names; lang->name != NULL; lang++)
     {
-      printf ("\t%s\t", lang->name);
+      printf ("  %-*s", 10, lang->name);
+      if (lang->filenames != NULL)
+       for (name = lang->filenames; *name != NULL; name++)
+         printf (" %s", *name);
       if (lang->suffixes != NULL)
        for (ext = lang->suffixes; *ext != NULL; ext++)
          printf (" .%s", *ext);
@@ -561,6 +606,7 @@ If no language is specified and no matching suffix is found,\n\
 the first line of the file is read for a sharp-bang (#!) sequence\n\
 followed by the name of an interpreter.  If no such sequence is found,\n\
 Fortran is tried first; if no tags are found, C is tried next.\n\
+When parsing any C file, a \"class\" keyword switches to C++.\n\
 Compressed files are supported using gzip and bzip2.");
 }
 
@@ -609,8 +655,13 @@ Relative ones are stored relative to the output file's directory.");
         Write the search commands for the tag entries using '?', the\n\
         backward-search command instead of '/', the forward-search command.");
 
+  /* This option is mostly obsolete, because etags can now automatically
+     detect C++.  Retained for backward compatibility and for debugging and
+     experimentation.  In principle, we could want to tag as C++ even
+     before any "class" keyword.
   puts ("-C, --c++\n\
         Treat files whose name suffix defaults to C language as C++ files.");
+  */
 
   puts ("--declarations\n\
        In C and derived languages, create tags for function declarations,");
@@ -870,9 +921,9 @@ main (argc, argv)
   bool got_err;
 #endif
 
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
   _fmode = O_BINARY;   /* all of files are treated as binary files */
-#endif /* WIN32_NATIVE */
+#endif /* DOS_NT */
 
   progname = argv[0];
   nincluded_files = 0;
@@ -894,13 +945,14 @@ main (argc, argv)
 
   /*
    * If etags, always find typedefs and structure tags.  Why not?
-   * Also default is to find macro constants, enum constants and
+   * Also default to find macro constants, enum constants and
    * global variables.
    */
   if (!CTAGS)
     {
-      typedefs = typedefs_and_cplusplus = constantypedefs = TRUE;
+      typedefs = typedefs_or_cplusplus = constantypedefs = TRUE;
       globals = TRUE;
+      declarations = FALSE;
       members = FALSE;
     }
 
@@ -958,7 +1010,7 @@ main (argc, argv)
          break;
        case 'l':
          {
-           language *lang = get_language_from_name (optarg);
+           language *lang = get_language_from_langname (optarg);
            if (lang != NULL)
              {
                argbuffer[current_arg].lang = lang;
@@ -995,7 +1047,7 @@ main (argc, argv)
          typedefs = TRUE;
          break;
        case 'T':
-         typedefs = typedefs_and_cplusplus = TRUE;
+         typedefs = typedefs_or_cplusplus = TRUE;
          break;
 #if (!CTAGS)
          /* Etags options */
@@ -1046,9 +1098,6 @@ main (argc, argv)
   init ();                     /* set up boolean "functions" */
 
   initbuffer (&lb);
-  initbuffer (&token_name);
-  initbuffer (&lbs[0].lb);
-  initbuffer (&lbs[1].lb);
   initbuffer (&filename_lb);
 
   if (!CTAGS)
@@ -1056,12 +1105,12 @@ main (argc, argv)
       if (streq (tagfile, "-"))
        {
          tagf = stdout;
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
          /* Switch redirected `stdout' to binary mode (setting `_fmode'
             doesn't take effect until after `stdout' is already open). */
          if (!isatty (fileno (stdout)))
            setmode (fileno (stdout), O_BINARY);
-#endif /* WIN32_NATIVE */
+#endif /* DOS_NT */
        }
       else
        tagf = fopen (tagfile, append_to_tagfile ? "a" : "w");
@@ -1180,7 +1229,7 @@ main (argc, argv)
  * return a pointer into FILE where the compressor-specific
  * extension begins.  If no compressor is found, NULL is returned
  * and EXTPTR is not significant.
- * Idea by Vladimir Alexiev <vladimir@cs.ualberta.ca>
+ * Idea by Vladimir Alexiev <vladimir@cs.ualberta.ca> (1998)
  */
 static compressor *
 get_compressor_from_suffix (file, extptr)
@@ -1191,7 +1240,7 @@ get_compressor_from_suffix (file, extptr)
   char *slash, *suffix;
 
   /* This relies on FN to be after canonicalize_filename,
-     so we don't need to consider backslashes on WIN32_NATIVE.  */
+     so we don't need to consider backslashes on DOS_NT.  */
   slash = etags_strrchr (file, '/');
   suffix = etags_strrchr (file, '.');
   if (suffix == NULL || suffix < slash)
@@ -1201,13 +1250,13 @@ get_compressor_from_suffix (file, extptr)
   suffix += 1;
   /* Let those poor souls who live with DOS 8+3 file name limits get
      some solace by treating foo.cgz as if it were foo.c.gz, etc.
- */
+     Only the first do loop is run if not MSDOS */
   do
     {
       for (compr = compressors; compr->suffix != NULL; compr++)
        if (streq (compr->suffix, suffix))
          return compr;
-      if (1) /* !MSDOS */
+      if (!MSDOS)
        break;                  /* do it only once: not really a loop */
       if (extptr != NULL)
        *extptr = ++suffix;
@@ -1221,7 +1270,7 @@ get_compressor_from_suffix (file, extptr)
  * Return a language given the name.
  */
 static language *
-get_language_from_name (name)
+get_language_from_langname (name)
      char *name;
 {
   language *lang;
@@ -1267,12 +1316,20 @@ get_language_from_interpreter (interpreter)
  * Return a language given the file name.
  */
 static language *
-get_language_from_suffix (file)
+get_language_from_filename (file)
      char *file;
 {
   language *lang;
-  char **ext, *suffix;
+  char **name, **ext, *suffix;
+
+  /* Try whole file name first. */
+  for (lang = lang_names; lang->name != NULL; lang++)
+    if (lang->filenames != NULL)
+      for (name = lang->filenames; *name != NULL; name++)
+       if (streq (*name, file))
+         return lang;
 
+  /* If not found, try suffix after last dot. */
   suffix = etags_strrchr (file, '.');
   if (suffix == NULL)
     return NULL;
@@ -1354,7 +1411,22 @@ process_file (file)
              compressed_name = concat (file, ".", compr->suffix);
              if (stat (compressed_name, &stat_buf) != 0)
                {
-                 /* XEmacs: delete MSDOS code */
+                 if (MSDOS)
+                   {
+                     char *suf = compressed_name + strlen (file);
+                     size_t suflen = strlen (compr->suffix) + 1;
+                     for ( ; suf[1]; suf++, suflen--)
+                       {
+                         memmove (suf, suf + 1, suflen);
+                         if (stat (compressed_name, &stat_buf) == 0)
+                           {
+                             real_name = compressed_name;
+                             break;
+                           }
+                       }
+                     if (real_name != NULL)
+                       break;
+                   } /* MSDOS */
                  free (compressed_name);
                  compressed_name = NULL;
                }
@@ -1380,7 +1452,7 @@ process_file (file)
   if (real_name == compressed_name)
     {
       char *cmd = concat (compr->command, " ", real_name);
-      inf = popen (cmd, "r");
+      inf = (FILE *) popen (cmd, "r");
       free (cmd);
     }
   else
@@ -1485,7 +1557,7 @@ find_entries (file, inf)
     }
 
   /* Try to guess the language given the file name. */
-  lang = get_language_from_suffix (file);
+  lang = get_language_from_filename (file);
   if (lang != NULL && lang->function != NULL)
     {
       curlang = lang;
@@ -1530,7 +1602,7 @@ find_entries (file, inf)
 
   /* Try Fortran. */
   old_last_node = last_node;
-  curlang = get_language_from_name ("fortran");
+  curlang = get_language_from_langname ("fortran");
   Fortran_functions (inf);
 
   /* No Fortran entries found.  Try C. */
@@ -1539,11 +1611,12 @@ find_entries (file, inf)
       /* We do not tag if rewind fails.
         Only the file name will be recorded in the tags file. */
       rewind (inf);
-      curlang = get_language_from_name (cplusplus ? "c++" : "c");
+      curlang = get_language_from_langname (cplusplus ? "c++" : "c");
       default_C_entries (inf);
     }
   return;
 }
+
 \f
 /* Record a tag. */
 static void
@@ -1597,10 +1670,9 @@ pfnote (name, is_func, linestart, linelen, lno, cno)
   add_node (np, &head);
 }
 
-/* Date: Wed, 22 Jan 1997 02:56:31 -0500 [last amended 18 Sep 1997]
- * From: Sam Kendall <kendall@mv.mv.com>
- * Subject: Proposal for firming up the TAGS format specification
- * To: F.Potorti@cnuce.cnr.it
+/*
+ * TAGS format specification
+ * Idea by Sam Kendall <kendall@mv.mv.com> (1997)
  *
  * pfnote should emit the optimized form [unnamed tag] only if:
  *  1. name does not contain any of the characters " \t\r\n(),;";
@@ -1740,6 +1812,7 @@ add_node (np, cur_node_p)
       add_node (np, dif < 0 ? &cur_node->left : &cur_node->right);
     }
 }
+
 \f
 static void
 put_entries (np)
@@ -1848,7 +1921,17 @@ total_size_of_entries (np)
 
   return total;
 }
+
 \f
+/* C extensions. */
+#define C_EXT  0x00fff         /* C extensions */
+#define C_PLAIN 0x00000                /* C */
+#define C_PLPL 0x00001         /* C++ */
+#define C_STAR 0x00003         /* C* */
+#define C_JAVA 0x00005         /* JAVA */
+#define C_AUTO  0x01000                /* C, but switch to C++ if `class' is met */
+#define YACC   0x10000         /* yacc file */
+
 /*
  * The C symbol tables.
  */
@@ -1860,6 +1943,7 @@ enum sym_type
   st_C_ignore,
   st_C_javastruct,
   st_C_operator,
+  st_C_class,
   st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef, st_C_typespec
 };
 
@@ -1869,6 +1953,7 @@ static enum sym_type C_symtype P_((char *, int, int));
 
 /* Feed stuff between (but not including) %[ and %] lines to:
       gperf -c -k 1,3 -o -p -r -t
+   then put a `static' keyword in front of the in_word_set function.
 %[
 struct C_stab_entry { char *name; int c_ext; enum sym_type type; }
 %%
@@ -1887,7 +1972,7 @@ friend,           C_PLPL, st_C_ignore
 extends,       C_JAVA, st_C_javastruct
 implements,    C_JAVA, st_C_javastruct
 interface,     C_JAVA, st_C_struct
-class,         C_PLPL, st_C_struct
+class,         0,      st_C_class
 namespace,     C_PLPL, st_C_struct
 domain,        C_STAR, st_C_struct
 union,         0,      st_C_struct
@@ -1924,7 +2009,8 @@ PSEUDO,           0,      st_C_gnumacro
 #EXFUN,                0,      st_C_gnumacro
 #DEFVAR_,      0,      st_C_gnumacro
 %]
-and replace lines between %< and %> with its output. */
+and replace lines between %< and %> with its output,
+then make in_word_set static. */
 /*%<*/
 /* C code produced by gperf version 2.7.1 (19981006 egcs) */
 /* Command-line: gperf -c -k 1,3 -o -p -r -t  */
@@ -1934,8 +2020,8 @@ struct C_stab_entry { char *name; int c_ext; enum sym_type type; };
 #define MIN_WORD_LENGTH 2
 #define MAX_WORD_LENGTH 15
 #define MIN_HASH_VALUE 13
-#define MAX_HASH_VALUE 123
-/* maximum key range = 111, duplicates = 0 */
+#define MAX_HASH_VALUE 121
+/* maximum key range = 109, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -1947,32 +2033,32 @@ hash (str, len)
 {
   static unsigned char asso_values[] =
     {
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124,   3, 124, 124, 124,  43,   6,
-       11, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-       11, 124, 124,  58,   7, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124,  57,   7,  42,
-        4,  14,  52,   0, 124,  53, 124, 124,  29,  11,
-        6,  35,  32, 124,  29,  34,  59,  58,  51,  24,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-      124, 124, 124, 124, 124, 124
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122,  57, 122, 122, 122,  55,   6,
+       60, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+       51, 122, 122,  10,   2, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122,   2,  52,  59,
+       49,  38,  56,  41, 122,  22, 122, 122,   9,  32,
+       33,  60,  26, 122,   1,  28,  46,  59,  44,  51,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+      122, 122, 122, 122, 122, 122
     };
   register int hval = len;
 
@@ -2001,77 +2087,76 @@ in_word_set (str, len)
     {
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
-      {"@end",         0,      st_C_objend},
-      {""}, {""}, {""}, {""},
       {"ENTRY",                0,      st_C_gnumacro},
-      {"@interface",   0,      st_C_objprot},
-      {""},
-      {"domain",       C_STAR, st_C_struct},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-      {"PSEUDO",               0,      st_C_gnumacro},
-      {""}, {""},
-      {"namespace",    C_PLPL, st_C_struct},
+      {"if",           0,      st_C_ignore},
       {""}, {""},
-      {"@implementation",0,    st_C_objimpl},
+      {"SYSCALL",      0,      st_C_gnumacro},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"struct",       0,      st_C_struct},
+      {"static",       0,      st_C_typespec},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {"long",         0,      st_C_typespec},
-      {"signed",       0,      st_C_typespec},
-      {"@protocol",    0,      st_C_objprot},
-      {""}, {""}, {""}, {""},
-      {"bool",         C_PLPL, st_C_typespec},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"const",        0,      st_C_typespec},
-      {"explicit",     C_PLPL, st_C_typespec},
-      {"if",           0,      st_C_ignore},
-      {""},
-      {"operator",     C_PLPL, st_C_operator},
-      {""},
-      {"DEFUN",                0,      st_C_gnumacro},
-      {""}, {""},
-      {"define",       0,      st_C_define},
       {""}, {""}, {""}, {""}, {""},
-      {"double",       0,      st_C_typespec},
-      {"struct",       0,      st_C_struct},
-      {""}, {""}, {""}, {""},
-      {"short",        0,      st_C_typespec},
+      {"auto",         0,      st_C_typespec},
+      {"return",               0,      st_C_ignore},
+      {"import",               C_JAVA, st_C_ignore},
       {""},
-      {"enum",         0,      st_C_enum},
-      {"mutable",      C_PLPL, st_C_typespec},
+      {"switch",               0,      st_C_ignore},
       {""},
-      {"extern",       0,      st_C_extern},
-      {"extends",      C_JAVA, st_C_javastruct},
-      {"package",      C_JAVA, st_C_ignore},
-      {"while",                0,      st_C_ignore},
+      {"implements",   C_JAVA, st_C_javastruct},
       {""},
       {"for",          0,      st_C_ignore},
-      {""}, {""}, {""},
       {"volatile",     0,      st_C_typespec},
+      {""},
+      {"PSEUDO",               0,      st_C_gnumacro},
+      {""},
+      {"char",         0,      st_C_typespec},
+      {"class",        0,      st_C_class},
+      {"@protocol",    0,      st_C_objprot},
       {""}, {""},
-      {"import",               C_JAVA, st_C_ignore},
-      {"float",        0,      st_C_typespec},
-      {"switch",               0,      st_C_ignore},
-      {"return",               0,      st_C_ignore},
-      {"implements",   C_JAVA, st_C_javastruct},
+      {"void",         0,      st_C_typespec},
+      {"int",          0,      st_C_typespec},
+      {"explicit",     C_PLPL, st_C_typespec},
       {""},
-      {"static",       0,      st_C_typespec},
+      {"namespace",    C_PLPL, st_C_struct},
+      {"signed",       0,      st_C_typespec},
+      {""},
+      {"interface",    C_JAVA, st_C_struct},
+      {"while",                0,      st_C_ignore},
       {"typedef",      0,      st_C_typedef},
       {"typename",     C_PLPL, st_C_typespec},
-      {"unsigned",     0,      st_C_typespec},
-      {""}, {""},
-      {"char",         0,      st_C_typespec},
-      {"class",        C_PLPL, st_C_struct},
       {""}, {""}, {""},
-      {"void",         0,      st_C_typespec},
-      {""}, {""},
       {"friend",               C_PLPL, st_C_ignore},
-      {""}, {""}, {""},
-      {"int",          0,      st_C_typespec},
+      {"mutable",      C_PLPL, st_C_typespec},
       {"union",        0,      st_C_struct},
-      {""}, {""}, {""},
-      {"auto",         0,      st_C_typespec},
-      {"interface",    C_JAVA, st_C_struct},
+      {"domain",       C_STAR, st_C_struct},
+      {""}, {""},
+      {"extern",       0,      st_C_extern},
+      {"extends",      C_JAVA, st_C_javastruct},
+      {"package",      C_JAVA, st_C_ignore},
+      {"short",        0,      st_C_typespec},
+      {"@end",         0,      st_C_objend},
+      {"unsigned",     0,      st_C_typespec},
+      {""},
+      {"const",        0,      st_C_typespec},
+      {""}, {""},
+      {"@interface",   0,      st_C_objprot},
+      {"enum",         0,      st_C_enum},
+      {""}, {""},
+      {"@implementation",0,    st_C_objimpl},
+      {""},
+      {"operator",     C_PLPL, st_C_operator},
+      {""}, {""}, {""}, {""},
+      {"define",       0,      st_C_define},
+      {""}, {""},
+      {"double",       0,      st_C_typespec},
       {""},
-      {"SYSCALL",      0,      st_C_gnumacro}
+      {"bool",         C_PLPL, st_C_typespec},
+      {""}, {""}, {""},
+      {"DEFUN",                0,      st_C_gnumacro},
+      {"float",        0,      st_C_typespec}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -2102,14 +2187,17 @@ C_symtype (str, len, c_ext)
     return st_none;
   return se->type;
 }
+
 \f
- /*
-  * C functions and variables are recognized using a simple
-  * finite automaton.  fvdef is its state variable.
-  */
+/*
+ * C functions and variables are recognized using a simple
+ * finite automaton.  fvdef is its state variable.
+ */
 enum
 {
   fvnone,                      /* nothing seen */
+  fdefunkey,                   /* Emacs DEFUN keyword seen */
+  fdefunname,                  /* Emacs DEFUN name seen */
   foperator,                   /* func: operator keyword seen (cplpl) */
   fvnameseen,                  /* function or variable name seen */
   fstartlist,                  /* func: just after open parenthesis */
@@ -2121,10 +2209,10 @@ enum
 
 bool fvextern;                 /* func or var: extern keyword seen; */
 
- /*
-  * typedefs are recognized using a simple finite automaton.
-  * typdef is its state variable.
-  */
+/*
+ * typedefs are recognized using a simple finite automaton.
+ * typdef is its state variable.
+ */
 enum
 {
   tnone,                       /* nothing seen */
@@ -2135,30 +2223,22 @@ enum
   tignore                      /* junk after typedef tag */
 } typdef;
 
-
- /*
-  * struct-like structures (enum, struct and union) are recognized
-  * using another simple finite automaton.  `structdef' is its state
-  * variable.
-  */
+/*
+ * struct-like structures (enum, struct and union) are recognized
+ * using another simple finite automaton.  `structdef' is its state
+ * variable.
+ */
 enum
 {
-  snone,                       /* nothing seen yet */
+  snone,                       /* nothing seen yet,
+                                  or in struct body if cblev > 0 */
   skeyseen,                    /* struct-like keyword seen */
   stagseen,                    /* struct-like tag seen */
-  scolonseen,                  /* colon seen after struct-like tag */
-  sinbody                      /* in struct body: recognize member func defs*/
+  sintemplate,                 /* inside template (ignore) */
+  scolonseen                   /* colon seen after struct-like tag */
 } structdef;
 
 /*
- * When structdef is stagseen, scolonseen, or sinbody, structtag is the
- * struct tag, and structtype is the type of the preceding struct-like
- * keyword.
- */
-char *structtag = "<uninited>";
-enum sym_type structtype;
-
-/*
  * When objdef is different from onone, objtag is the name of the class.
  */
 char *objtag = "<uninited>";
@@ -2176,7 +2256,7 @@ enum
 
 /*
  * State machine for Objective C protocols and implementations.
- * Tom R.Hageman <tom@basil.icce.rug.nl>
+ * Idea by Tom R.Hageman <tom@basil.icce.rug.nl> (1995)
  */
 enum
 {
@@ -2199,36 +2279,114 @@ enum
  * Use this structure to keep info about the token read, and how it
  * should be tagged.  Used by the make_C_tag function to build a tag.
  */
-typedef struct
+struct tok
 {
   bool valid;
-  char *str;
   bool named;
-  int linelen;
+  int offset;
+  int length;
   int lineno;
   long linepos;
-  char *buffer;
-} token;
-
-token tok;                     /* latest token read */
+  char *line;
+} token;                       /* latest token read */
+linebuffer token_name;         /* its name */
 
 /*
- * Set this to TRUE, and the next token considered is called a function.
- * Used only for GNU emacs's function-defining macros.
+ * Variables and functions for dealing with nested structures.
+ * Idea by Mykola Dzyuba <mdzyuba@yahoo.com> (2001)
  */
-bool next_token_is_func;
+static void pushclass_above P_((int, char *, int));
+static void popclass_above P_((int));
+static void write_classname P_((linebuffer *, char *qualifier));
+
+struct {
+  char **cname;                        /* nested class names */
+  int *cblev;                  /* nested class curly brace level */
+  int nl;                      /* class nesting level (elements used) */
+  int size;                    /* length of the array */
+} cstack;                      /* stack for nested declaration tags */
+/* Current struct nesting depth (namespace, class, struct, union, enum). */
+#define nestlev                (cstack.nl)
+/* After struct keyword or in struct body, not inside an nested function. */
+#define instruct       (structdef == snone && nestlev > 0                      \
+                        && cblev == cstack.cblev[nestlev-1] + 1)
 
-/*
- * TRUE in the rules part of a yacc file, FALSE outside (parse as C).
- */
-bool yacc_rules;
+static void
+pushclass_above (cblev, str, len)
+     int cblev;
+     char *str;
+     int len;
+{
+  int nl;
 
-/*
- * methodlen is the length of the method name stored in token_name.
- */
-int methodlen;
+  popclass_above (cblev);
+  nl = cstack.nl;
+  if (nl >= cstack.size)
+    {
+      int size = cstack.size *= 2;
+      xrnew (cstack.cname, size, char *);
+      xrnew (cstack.cblev, size, int);
+    }
+  assert (nl == 0 || cstack.cblev[nl-1] < cblev);
+  cstack.cname[nl] = (str == NULL) ? NULL : savenstr (str, len);
+  cstack.cblev[nl] = cblev;
+  cstack.nl = nl + 1;
+}
+
+static void
+popclass_above (cblev)
+     int cblev;
+{
+  int nl;
 
-static bool consider_token P_((char *, int, int, int, int, int, bool *));
+  for (nl = cstack.nl - 1;
+       nl >= 0 && cstack.cblev[nl] >= cblev;
+       nl--)
+    {
+      if (cstack.cname[nl] != NULL)
+       free (cstack.cname[nl]);
+      cstack.nl = nl;
+    }
+}
+
+static void
+write_classname (cn, qualifier)
+     linebuffer *cn;
+     char *qualifier;
+{
+  int i, len;
+  int qlen = strlen (qualifier);
+
+  if (cstack.nl == 0 || cstack.cname[0] == NULL)
+    {
+      len = 0;
+      cn->len = 0;
+      cn->buffer[0] = '\0';
+    }
+  else
+    {
+      len = strlen (cstack.cname[0]);
+      linebuffer_setlen (cn, len);
+      strcpy (cn->buffer, cstack.cname[0]);
+    }
+  for (i = 1; i < cstack.nl; i++)
+    {
+      char *s;
+      int slen;
+
+      s = cstack.cname[i];
+      if (s == NULL)
+       continue;
+      slen = strlen (s);
+      len += slen + qlen;
+      linebuffer_setlen (cn, len);
+      strncat (cn->buffer, qualifier, qlen);
+      strncat (cn->buffer, s, slen);
+    }
+}
+
+\f
+static bool consider_token P_((char *, int, int, int *, int, int, bool *));
 static void make_C_tag P_((bool));
 
 /*
@@ -2238,7 +2396,7 @@ static void make_C_tag P_((bool));
  *     is a struct/union/enum tag, or #define, or an enum constant.
  *
  *     *IS_FUNC gets TRUE iff the token is a function or #define macro
- *     with args.  C_EXT is which language we are looking at.
+ *     with args.  C_EXTP points to which language we are looking at.
  *
  * Globals
  *     fvdef                   IN OUT
@@ -2246,20 +2404,27 @@ static void make_C_tag P_((bool));
  *     definedef               IN OUT
  *     typdef                  IN OUT
  *     objdef                  IN OUT
- *     next_token_is_func      IN OUT
  */
 
 static bool
-consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
+consider_token (str, len, c, c_extp, cblev, parlev, is_func_or_var)
      register char *str;       /* IN: token pointer */
      register int len;         /* IN: token length */
      register int c;           /* IN: first char after the token */
-     int c_ext;                        /* IN: C extensions mask */
+     int *c_extp;              /* IN, OUT: C extensions mask */
      int cblev;                        /* IN: curly brace level */
      int parlev;               /* IN: parenthesis level */
      bool *is_func_or_var;     /* OUT: function or variable found */
 {
-  enum sym_type toktype = C_symtype (str, len, c_ext);
+  /* When structdef is stagseen, scolonseen, or snone with cblev > 0,
+     structtype is the type of the preceding struct-like keyword, and
+     structcblev is the curly brace level where it has been seen. */
+  static enum sym_type structtype;
+  static int structcblev;
+  static enum sym_type toktype;
+
+
+  toktype = C_symtype (str, len, *c_extp);
 
   /*
    * Advance the definedef state machine.
@@ -2268,6 +2433,11 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
     {
     case dnone:
       /* We're not on a preprocessor line. */
+      if (toktype == st_C_gnumacro)
+       {
+         fvdef = fdefunkey;
+         return FALSE;
+       }
       break;
     case dsharpseen:
       if (toktype == st_C_define)
@@ -2316,17 +2486,25 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
        {
        case st_none:
        case st_C_typespec:
+       case st_C_class:
        case st_C_struct:
        case st_C_enum:
          typdef = ttypeseen;
          break;
        }
-      /* Do not return here, so the structdef stuff has a chance. */
+      break;
+    case ttypeseen:
+      if (structdef == snone && fvdef == fvnone)
+       {
+         fvdef = fvnameseen;
+         return TRUE;
+       }
       break;
     case tend:
       switch (toktype)
        {
        case st_C_typespec:
+       case st_C_class:
        case st_C_struct:
        case st_C_enum:
          return FALSE;
@@ -2335,11 +2513,6 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
     }
 
   /*
-   * This structdef business is currently only invoked when cblev==0.
-   * It should be recursively invoked whatever the curly brace level,
-   * and a stack of states kept, to allow for definitions of structs
-   * within structs.
-   *
    * This structdef business is NOT invoked when we are ctags and the
    * file is plain C.  This is because a struct tag may have the same
    * name as another tag, and this loses with ctags.
@@ -2350,25 +2523,29 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
       if (structdef == stagseen)
         structdef = scolonseen;
       return FALSE;
+    case st_C_class:
+      if (cblev == 0
+         && (*c_extp & C_AUTO) /* automatic detection of C++ language */
+         && definedef == dnone && structdef == snone
+         && typdef == tnone && fvdef == fvnone)
+       *c_extp = (*c_extp | C_PLPL) & ~C_AUTO;
+      /* FALLTHRU */
     case st_C_struct:
     case st_C_enum:
-      if (typdef == tkeyseen
-         || (typedefs_and_cplusplus && cblev == 0 && structdef == snone))
+      if (parlev == 0
+         && fvdef != vignore
+         && (typdef == tkeyseen
+             || (typedefs_or_cplusplus && structdef == snone)))
        {
          structdef = skeyseen;
          structtype = toktype;
+         structcblev = cblev;
        }
       return FALSE;
     }
 
   if (structdef == skeyseen)
     {
-      /* Save the tag for struct/union/class, for functions and variables
-        that may be defined inside. */
-      if (structtype == st_C_struct)
-       structtag = savenstr (str, len);
-      else
-       structtag = "<enum>";
       structdef = stagseen;
       return TRUE;
     }
@@ -2376,34 +2553,6 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
   if (typdef != tnone)
     definedef = dnone;
 
-  /* Detect GNU macros.
-
-     Writers of emacs code are recommended to put the
-     first two args of a DEFUN on the same line.
-
-      The DEFUN macro, used in emacs C source code, has a first arg
-     that is a string (the lisp function name), and a second arg that
-     is a C function name.  Since etags skips strings, the second arg
-     is tagged.  This is unfortunate, as it would be better to tag the
-     first arg.  The simplest way to deal with this problem would be
-     to name the tag with a name built from the function name, by
-     removing the initial 'F' character and substituting '-' for '_'.
-     Anyway, this assumes that the conventions of naming lisp
-     functions will never change.  Currently, this method is not
-     implemented. */
-  if (definedef == dnone && toktype == st_C_gnumacro)
-    {
-      next_token_is_func = TRUE;
-      return FALSE;
-    }
-  if (next_token_is_func)
-    {
-      next_token_is_func = FALSE;
-      fvdef = fignore;
-      *is_func_or_var = TRUE;
-      return TRUE;
-    }
-
   /* Detect Objective C constructs. */
   switch (objdef)
     {
@@ -2439,11 +2588,9 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
       if (parlev == 0)
        {
          objdef = omethodtag;
-         methodlen = len;
-         grow_linebuffer (&token_name, methodlen + 1);
+         linebuffer_setlen (&token_name, len);
          strncpy (token_name.buffer, str, len);
-         token_name.buffer[methodlen] = '\0';
-         token_name.len = methodlen;
+         token_name.buffer[len] = '\0';
          return TRUE;
        }
       return FALSE;
@@ -2455,10 +2602,8 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
       if (parlev == 0)
        {
          objdef = omethodtag;
-         methodlen += len;
-         grow_linebuffer (&token_name, methodlen + 1);
+         linebuffer_setlen (&token_name, token_name.len + len);
          strncat (token_name.buffer, str, len);
-         token_name.len = methodlen;
          return TRUE;
        }
       return FALSE;
@@ -2495,16 +2640,33 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
       *is_func_or_var = TRUE;
       return TRUE;
     case st_none:
-      if ((c_ext & C_PLPL) && strneq (str+len-10, "::operator", 10))
+      if (constantypedefs
+         && structdef == snone
+         && structtype == st_C_enum && cblev > structcblev)
+       return TRUE;            /* enum constant */
+      switch (fvdef)
        {
-         fvdef = foperator;
+       case fdefunkey:
+         if (cblev > 0)
+           break;
+         fvdef = fdefunname;   /* GNU macro */
          *is_func_or_var = TRUE;
          return TRUE;
-       }
-      if (constantypedefs && structdef == sinbody && structtype == st_C_enum)
-       return TRUE;
-      if (fvdef == fvnone)
-       {
+       case fvnone:
+         if ((strneq (str, "asm", 3) && endtoken (str[3]))
+             || (strneq (str, "__asm__", 7) && endtoken (str[7])))
+           {
+             fvdef = vignore;
+             return FALSE;
+           }
+         if ((*c_extp & C_PLPL) && strneq (str+len-10, "::operator", 10))
+           {
+             fvdef = foperator;
+             *is_func_or_var = TRUE;
+             return TRUE;
+           }
+         if (cblev > 0 && !instruct)
+           break;
          fvdef = fvnameseen;   /* function or variable */
          *is_func_or_var = TRUE;
          return TRUE;
@@ -2515,20 +2677,24 @@ consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var)
   return FALSE;
 }
 
+\f
 /*
- * C_entries ()
- *     This routine finds functions, variables, typedefs,
- *     #define's, enum constants and struct/union/enum definitions in
- *     C syntax and adds them to the list.
+ * C_entries often keeps pointers to tokens or lines which are older than
+ * the line currently read.  By keeping two line buffers, and switching
+ * them at end of line, it is possible to use those pointers.
  */
+struct
+{
+  long linepos;
+  linebuffer lb;
+} lbs[2];
+
 #define current_lb_is_new (newndx == curndx)
 #define switch_line_buffers() (curndx = 1 - curndx)
 
 #define curlb (lbs[curndx].lb)
-#define othlb (lbs[1-curndx].lb)
 #define newlb (lbs[newndx].lb)
 #define curlinepos (lbs[curndx].linepos)
-#define othlinepos (lbs[1-curndx].linepos)
 #define newlinepos (lbs[newndx].linepos)
 
 #define CNL_SAVE_DEFINEDEF()                                           \
@@ -2545,10 +2711,10 @@ do {                                                                    \
 #define CNL()                                                          \
 do {                                                                   \
   CNL_SAVE_DEFINEDEF();                                                        \
-  if (savetok.valid)                                                   \
+  if (savetoken.valid)                                                 \
     {                                                                  \
-      tok = savetok;                                                   \
-      savetok.valid = FALSE;                                           \
+      token = savetoken;                                               \
+      savetoken.valid = FALSE;                                         \
     }                                                                  \
   definedef = dnone;                                                   \
 } while (0)
@@ -2558,9 +2724,9 @@ static void
 make_C_tag (isfun)
      bool isfun;
 {
-  /* This function should never be called when tok.valid is FALSE, but
+  /* This function should never be called when token.valid is FALSE, but
      we must protect against invalid input or internal errors. */
-  if (tok.valid)
+  if (DEBUG || token.valid)
     {
       if (traditional_tag_style)
        {
@@ -2568,21 +2734,32 @@ make_C_tag (isfun)
             which uses the new method for naming tags (see new_pfnote). */
          char *name = NULL;
 
-         if (CTAGS || tok.named)
+         if (CTAGS || token.named)
            name = savestr (token_name.buffer);
-         pfnote (name, isfun,
-                 tok.buffer, tok.linelen, tok.lineno, tok.linepos);
+         if (DEBUG && !token.valid)
+           {
+             if (token.named)
+               name = concat (name, "##invalid##", "");
+             else
+               name = savestr ("##invalid##");
+           }
+         pfnote (name, isfun, token.line,
+                 token.offset+token.length+1, token.lineno, token.linepos);
        }
       else
-       new_pfnote (token_name.buffer, token_name.len, isfun,
-                   tok.buffer, tok.linelen, tok.lineno, tok.linepos);
-      tok.valid = FALSE;
+       new_pfnote (token_name.buffer, token_name.len, isfun, token.line,
+                   token.offset+token.length+1, token.lineno, token.linepos);
+      token.valid = FALSE;
     }
-  else if (DEBUG)
-    abort ();
 }
 
 
+/*
+ * C_entries ()
+ *     This routine finds functions, variables, typedefs,
+ *     #define's, enum constants and struct/union/enum definitions in
+ *     C syntax and adds them to the list.
+ */
 static void
 C_entries (c_ext, inf)
      int c_ext;                        /* extension of C */
@@ -2597,10 +2774,23 @@ C_entries (c_ext, inf)
   int qlen;                    /* length of qualifier */
   int cblev;                   /* current curly brace level */
   int parlev;                  /* current parenthesis level */
+  int typdefcblev;             /* cblev where a typedef struct body begun */
   bool incomm, inquote, inchar, quotednl, midtoken;
-  bool purec, cplpl, cjava;
-  token savetok;               /* token saved during preprocessor handling */
+  bool cplpl, cjava;
+  bool yacc_rules;             /* in the rules part of a yacc file */
+  struct tok savetoken;                /* token saved during preprocessor handling */
+
 
+  initbuffer (&token_name);
+  initbuffer (&lbs[0].lb);
+  initbuffer (&lbs[1].lb);
+  if (cstack.size == 0)
+    {
+      cstack.size = (DEBUG) ? 1 : 4;
+      cstack.nl = 0;
+      cstack.cname = xnew (cstack.size, char *);
+      cstack.cblev = xnew (cstack.size, int);
+    }
 
   tokoff = toklen = 0;         /* keep compiler quiet */
   curndx = newndx = 0;
@@ -2611,12 +2801,11 @@ C_entries (c_ext, inf)
 
   fvdef = fvnone; fvextern = FALSE; typdef = tnone;
   structdef = snone; definedef = dnone; objdef = onone;
-  next_token_is_func = yacc_rules = FALSE;
+  yacc_rules = FALSE;
   midtoken = inquote = inchar = incomm = quotednl = FALSE;
-  tok.valid = savetok.valid = FALSE;
+  token.valid = savetoken.valid = FALSE;
   cblev = 0;
   parlev = 0;
-  purec = !(c_ext & ~YACC);    /* no extensions (apart from possibly yacc) */
   cplpl = (c_ext & C_PLPL) == C_PLPL;
   cjava = (c_ext & C_JAVA) == C_JAVA;
   if (cjava)
@@ -2624,6 +2813,7 @@ C_entries (c_ext, inf)
   else
     { qualifier = "::"; qlen = 2; }
 
+
   while (!feof (inf))
     {
       c = *lp++;
@@ -2694,8 +2884,15 @@ C_entries (c_ext, inf)
          {
          case '"':
            inquote = TRUE;
-           if (fvdef != finlist && fvdef != fignore && fvdef !=vignore)
+           switch (fvdef)
              {
+             case fdefunkey:
+             case fstartlist:
+             case finlist:
+             case fignore:
+             case vignore:
+               break;
+             default:
                fvextern = FALSE;
                fvdef = fvnone;
              }
@@ -2725,11 +2922,10 @@ C_entries (c_ext, inf)
          case '%':
            if ((c_ext & YACC) && *lp == '%')
              {
-               /* entering or exiting rules section in yacc file */
+               /* Entering or exiting rules section in yacc file. */
                lp++;
                definedef = dnone; fvdef = fvnone; fvextern = FALSE;
                typdef = tnone; structdef = snone;
-               next_token_is_func = FALSE;
                midtoken = inquote = inchar = incomm = quotednl = FALSE;
                cblev = 0;
                yacc_rules = !yacc_rules;
@@ -2765,21 +2961,18 @@ C_entries (c_ext, inf)
          } /* switch (c) */
 
 
-      /* Consider token only if some complicated conditions are satisfied. */
-      if ((definedef != dnone
-          || (cblev == 0 && structdef != scolonseen)
-          || (cblev == 1 && cplpl && structdef == sinbody)
-          || (structdef == sinbody && purec))
-         && typdef != tignore
+      /* Consider token only if some involved conditions are satisfied. */
+      if (typdef != tignore
          && definedef != dignorerest
-         && fvdef != finlist)
+         && fvdef != finlist
+         && structdef != sintemplate
+         && (definedef != dnone
+             || structdef != scolonseen))
        {
          if (midtoken)
            {
              if (endtoken (c))
                {
-                 bool funorvar = FALSE;
-
                  if (c == ':' && cplpl && *lp == ':' && begtoken (lp[1]))
                    {
                      /*
@@ -2790,13 +2983,15 @@ C_entries (c_ext, inf)
                      lp += 2;
                      toklen += 2;
                      c = lp[-1];
-                     goto intok;
+                     goto still_in_token;
                    }
                  else
                    {
+                     bool funorvar = FALSE;
+
                      if (yacc_rules
                          || consider_token (newlb.buffer + tokoff, toklen, c,
-                                            c_ext, cblev, parlev, &funorvar))
+                                            &c_ext, cblev, parlev, &funorvar))
                        {
                          if (fvdef == foperator)
                            {
@@ -2810,82 +3005,107 @@ C_entries (c_ext, inf)
                              c = *lp++;
                              toklen += lp - oldlp;
                            }
-                         tok.named = FALSE;
-                         if (!purec
-                             && funorvar
-                             && definedef == dnone
-                             && structdef == sinbody)
-                           /* function or var defined in C++ class body */
+                         token.named = FALSE;
+                         if ((c_ext & C_EXT)   /* not pure C */
+                             && nestlev > 0 && definedef == dnone)
+                           /* in struct body */
                            {
-                             int len = strlen (structtag) + qlen + toklen;
-                             grow_linebuffer (&token_name, len + 1);
-                             strcpy (token_name.buffer, structtag);
+                              write_classname (&token_name, qualifier);
+                             linebuffer_setlen (&token_name,
+                                                token_name.len+qlen+toklen);
                              strcat (token_name.buffer, qualifier);
                              strncat (token_name.buffer,
                                       newlb.buffer + tokoff, toklen);
-                             token_name.len = len;
-                             tok.named = TRUE;
+                             token.named = TRUE;
                            }
                          else if (objdef == ocatseen)
                            /* Objective C category */
                            {
                              int len = strlen (objtag) + 2 + toklen;
-                             grow_linebuffer (&token_name, len + 1);
+                             linebuffer_setlen (&token_name, len);
                              strcpy (token_name.buffer, objtag);
                              strcat (token_name.buffer, "(");
                              strncat (token_name.buffer,
                                       newlb.buffer + tokoff, toklen);
                              strcat (token_name.buffer, ")");
-                             token_name.len = len;
-                             tok.named = TRUE;
+                             token.named = TRUE;
                            }
                          else if (objdef == omethodtag
                                   || objdef == omethodparm)
                            /* Objective C method */
                            {
-                             tok.named = TRUE;
+                             token.named = TRUE;
+                           }
+                         else if (fvdef == fdefunname)
+                           /* GNU DEFUN and similar macros */
+                           {
+                             bool defun = (newlb.buffer[tokoff] == 'F');
+                             int off = tokoff;
+                             int len = toklen;
+
+                             /* Rewrite the tag so that emacs lisp DEFUNs
+                                can be found by their elisp name */
+                             if (defun)
+                               {
+                                 off += 1;
+                                 len -= 1;
+                               }
+                             len = toklen;
+                             linebuffer_setlen (&token_name, len);
+                             strncpy (token_name.buffer,
+                                      newlb.buffer + off, len);
+                             token_name.buffer[len] = '\0';
+                             if (defun)
+                               while (--len >= 0)
+                                 if (token_name.buffer[len] == '_')
+                                   token_name.buffer[len] = '-';
+                             token.named = defun;
                            }
                          else
                            {
-                             grow_linebuffer (&token_name, toklen + 1);
+                             linebuffer_setlen (&token_name, toklen);
                              strncpy (token_name.buffer,
                                       newlb.buffer + tokoff, toklen);
                              token_name.buffer[toklen] = '\0';
-                             token_name.len = toklen;
                              /* Name macros and members. */
-                             tok.named = (structdef == stagseen
-                                          || typdef == ttypeseen
-                                          || typdef == tend
-                                          || (funorvar
-                                              && definedef == dignorerest)
-                                          || (funorvar
-                                              && definedef == dnone
-                                              && structdef == sinbody));
+                             token.named = (structdef == stagseen
+                                            || typdef == ttypeseen
+                                            || typdef == tend
+                                            || (funorvar
+                                                && definedef == dignorerest)
+                                            || (funorvar
+                                                && definedef == dnone
+                                                && structdef == snone
+                                                && cblev > 0));
                            }
-                         tok.lineno = lineno;
-                         tok.linelen = tokoff + toklen + 1;
-                         tok.buffer = newlb.buffer;
-                         tok.linepos = newlinepos;
-                         tok.valid = TRUE;
+                         token.lineno = lineno;
+                         token.offset = tokoff;
+                         token.length = toklen;
+                         token.line = newlb.buffer;
+                         token.linepos = newlinepos;
+                         token.valid = TRUE;
 
                          if (definedef == dnone
                              && (fvdef == fvnameseen
                                  || fvdef == foperator
                                  || structdef == stagseen
                                  || typdef == tend
+                                 || typdef == ttypeseen
                                  || objdef != onone))
                            {
                              if (current_lb_is_new)
                                switch_line_buffers ();
                            }
-                         else
+                         else if (definedef != dnone
+                                  || fvdef == fdefunname
+                                  || instruct)
                            make_C_tag (funorvar);
                        }
                      midtoken = FALSE;
                    }
                } /* if (endtoken (c)) */
              else if (intoken (c))
-               intok:
+               still_in_token:
                {
                  toklen++;
                  continue;
@@ -2910,10 +3130,13 @@ C_entries (c_ext, inf)
                      break;
                    }
                  if (structdef == stagseen && !cjava)
-                   structdef = snone;
+                   {
+                     popclass_above (cblev);
+                     structdef = snone;
+                   }
                  break;
                case dsharpseen:
-                 savetok = tok;
+                 savetoken = token;
                }
              if (!yacc_rules || lp == newlb.buffer + 1)
                {
@@ -2931,6 +3154,11 @@ C_entries (c_ext, inf)
       switch (c)
        {
        case ':':
+         if (yacc_rules && token.offset == 0 && token.valid)
+           {
+             make_C_tag (FALSE); /* a yacc function */
+             break;
+           }
          if (definedef != dnone)
            break;
          switch (objdef)
@@ -2942,65 +3170,62 @@ C_entries (c_ext, inf)
            case omethodtag:
            case omethodparm:
              objdef = omethodcolon;
-             methodlen += 1;
-             grow_linebuffer (&token_name, methodlen + 1);
+             linebuffer_setlen (&token_name, token_name.len + 1);
              strcat (token_name.buffer, ":");
-             token_name.len = methodlen;
              break;
            }
          if (structdef == stagseen)
            structdef = scolonseen;
-         else
-           switch (fvdef)
-             {
-             case fvnameseen:
-               if (yacc_rules)
-                 {
-                   make_C_tag (FALSE); /* a yacc function */
-                   fvdef = fignore;
-                 }
-               break;
-             case fstartlist:
-               fvextern = FALSE;
-               fvdef = fvnone;
-               break;
-             }
          break;
        case ';':
          if (definedef != dnone)
            break;
-         if (cblev == 0)
-           switch (typdef)
-             {
-             case tend:
-               make_C_tag (FALSE); /* a typedef */
-               /* FALLTHRU */
-             default:
-               typdef = tnone;
-             }
-         switch (fvdef)
+         switch (typdef)
            {
-           case fignore:
-             break;
-           case fvnameseen:
-             if ((members && cblev == 1)
-                 || (globals && cblev == 0 && (!fvextern || declarations)))
-               make_C_tag (FALSE); /* a variable */
-             fvextern = FALSE;
+           case tend:
+           case ttypeseen:
+             make_C_tag (FALSE); /* a typedef */
+             typdef = tnone;
              fvdef = fvnone;
-             tok.valid = FALSE;
              break;
-           case flistseen:
-             if (declarations && (cblev == 0 || cblev == 1))
-               make_C_tag (TRUE); /* a function declaration */
+           case tnone:
+           case tinbody:
+           case tignore:
+             switch (fvdef)
+               {
+               case fignore:
+                 if (typdef == tignore)
+                   fvdef = fvnone;
+                 break;
+               case fvnameseen:
+                 if ((globals && cblev == 0 && (!fvextern || declarations))
+                     || (members && instruct))
+                   make_C_tag (FALSE); /* a variable */
+                 fvextern = FALSE;
+                 fvdef = fvnone;
+                 token.valid = FALSE;
+                 break;
+               case flistseen:
+                 if ((declarations && typdef == tnone && !instruct)
+                     || (members && typdef != tignore && instruct))
+                   make_C_tag (TRUE);  /* a function declaration */
+                 /* FALLTHRU */
+               default:
+                 fvextern = FALSE;
+                 fvdef = fvnone;
+                 if (declarations
+                     && structdef == stagseen && (c_ext & C_PLPL))
+                   make_C_tag (FALSE); /* forward declaration */
+                 else
+                   /* The following instruction invalidates the token.
+                      Probably the token should be invalidated in all other
+                      cases where some state machine is reset prematurely. */
+                   token.valid = FALSE;
+               } /* switch (fvdef) */
              /* FALLTHRU */
            default:
-             fvextern = FALSE;
-             fvdef = fvnone;
-             /* The following instruction invalidates the token.
-                Probably the token should be invalidated in all
-                other cases  where some state machine is reset. */
-             tok.valid = FALSE;
+             if (!instruct)
+               typdef = tnone;
            }
          if (structdef == stagseen)
            structdef = snone;
@@ -3018,15 +3243,31 @@ C_entries (c_ext, inf)
            }
          switch (fvdef)
            {
+           case fdefunkey:
            case foperator:
+           case fstartlist:
            case finlist:
            case fignore:
            case vignore:
              break;
-           case fvnameseen:
-             if ((members && cblev == 1)
-                 || (globals && cblev == 0 && (!fvextern || declarations)))
-               make_C_tag (FALSE); /* a variable */
+           case fdefunname:
+             fvdef = fignore;
+             break;
+           case fvnameseen:    /* a variable */
+             if ((globals && cblev == 0 && (!fvextern || declarations))
+                 || (members && instruct))
+               make_C_tag (FALSE);
+             break;
+           case flistseen:     /* a function */
+             if ((declarations && typdef == tnone && !instruct)
+                 || (members && typdef != tignore && instruct))
+               {
+                 make_C_tag (TRUE); /* a function declaration */
+                 fvdef = fvnameseen;
+               }
+             else if (!declarations)
+               fvdef = fvnone;
+             token.valid = FALSE;
              break;
            default:
              fvdef = fvnone;
@@ -3037,29 +3278,35 @@ C_entries (c_ext, inf)
        case '[':
          if (definedef != dnone)
            break;
-         if (cblev == 0 && typdef == tend)
+         if (structdef == stagseen)
+           structdef = snone;
+         switch (typdef)
            {
+           case ttypeseen:
+           case tend:
              typdef = tignore;
              make_C_tag (FALSE);       /* a typedef */
              break;
-           }
-         switch (fvdef)
-           {
-           case foperator:
-           case finlist:
-           case fignore:
-           case vignore:
+           case tnone:
+           case tinbody:
+             switch (fvdef)
+               {
+               case foperator:
+               case finlist:
+               case fignore:
+               case vignore:
+                 break;
+               case fvnameseen:
+                 if ((members && cblev == 1)
+                     || (globals && cblev == 0
+                         && (!fvextern || declarations)))
+                   make_C_tag (FALSE); /* a variable */
+                 /* FALLTHRU */
+               default:
+                 fvdef = fvnone;
+               }
              break;
-           case fvnameseen:
-             if ((members && cblev == 1)
-                 || (globals && cblev == 0 && (!fvextern || declarations)))
-               make_C_tag (FALSE); /* a variable */
-             /* FALLTHRU */
-           default:
-             fvdef = fvnone;
            }
-         if (structdef == stagseen)
-           structdef = snone;
          break;
        case '(':
          if (definedef != dnone)
@@ -3070,14 +3317,15 @@ C_entries (c_ext, inf)
            {
            case fvnameseen:
              if (typdef == ttypeseen
-                 && tok.valid
                  && *lp != '*'
-                 && structdef != sinbody)
+                 && !instruct)
                {
                  /* This handles constructs like:
                     typedef void OperatorFun (int fun); */
                  make_C_tag (FALSE);
                  typdef = tignore;
+                 fvdef = fignore;
+                 break;
                }
              /* FALLTHRU */
            case foperator:
@@ -3106,7 +3354,9 @@ C_entries (c_ext, inf)
                  fvdef = flistseen;
                  break;
                }
-             if (cblev == 0 && (typdef == tend))
+             if (!instruct
+                 && (typdef == tend
+                     || typdef == ttypeseen))
                {
                  typdef = tignore;
                  make_C_tag (FALSE); /* a typedef */
@@ -3119,23 +3369,14 @@ C_entries (c_ext, inf)
          if (definedef != dnone)
            break;
          if (typdef == ttypeseen)
-           typdef = tinbody;
-         switch (structdef)
            {
-           case skeyseen:      /* unnamed struct */
-             structdef = sinbody;
-             structtag = "_anonymous_";
-             break;
-           case stagseen:
-           case scolonseen:    /* named struct */
-             structdef = sinbody;
-             make_C_tag (FALSE);       /* a struct */
-             break;
+             typdefcblev = cblev;
+             typdef = tinbody;
            }
          switch (fvdef)
            {
            case flistseen:
-             make_C_tag (TRUE); /* a function */
+             make_C_tag (TRUE);    /* a function */
              /* FALLTHRU */
            case fignore:
              fvdef = fvnone;
@@ -3154,10 +3395,24 @@ C_entries (c_ext, inf)
                  break;
                default:
                  /* Neutralize `extern "C" {' grot. */
-                 if (cblev == 0 && structdef == snone && typdef == tnone)
+                 if (cblev == 0 && structdef == snone && nestlev == 0
+                     && typdef == tnone)
                    cblev = -1;
                }
            }
+         switch (structdef)
+           {
+           case skeyseen:         /* unnamed struct */
+             pushclass_above (cblev, NULL, 0);
+             structdef = snone;
+             break;
+           case stagseen:         /* named struct or enum */
+           case scolonseen:       /* a class */
+             pushclass_above (cblev, token.line+token.offset, token.length);
+             structdef = snone;
+             make_C_tag (FALSE);  /* a struct or enum */
+             break;
+           }
          cblev++;
          break;
        case '*':
@@ -3176,20 +3431,12 @@ C_entries (c_ext, inf)
            }
          else if (cblev > 0)
            cblev--;
-         if (cblev == 0)
+         popclass_above (cblev);
+         structdef = snone;
+         if (typdef == tinbody && cblev <= typdefcblev)
            {
-             if (typdef == tinbody)
-               typdef = tend;
-             /* Memory leakage here: the string pointed by structtag is
-                never released, because I fear to miss something and
-                break things while freeing the area.  The amount of
-                memory leaked here is the sum of the lengths of the
-                struct tags.
-             if (structdef == sinbody)
-               free (structtag); */
-
-             structdef = snone;
-             structtag = "<error>";
+             assert (cblev == typdefcblev);
+             typdef = tend;
            }
          break;
        case '=':
@@ -3211,6 +3458,20 @@ C_entries (c_ext, inf)
              fvdef = vignore;
            }
          break;
+       case '<':
+         if (cplpl && structdef == stagseen)
+           {
+             structdef = sintemplate;
+             break;
+           }
+         goto resetfvdef;
+       case '>':
+         if (structdef == sintemplate)
+           {
+             structdef = stagseen;
+             break;
+           }
+         goto resetfvdef;
        case '+':
        case '-':
          if (objdef == oinbody && cblev == 0)
@@ -3219,8 +3480,9 @@ C_entries (c_ext, inf)
              break;
            }
          /* FALLTHRU */
+       resetfvdef:
        case '#': case '~': case '&': case '%': case '/': case '|':
-       case '^': case '!': case '<': case '>': case '.': case '?': case ']':
+       case '^': case '!': case '.': case '?': case ']':
          if (definedef != dnone)
            break;
          /* These surely cannot follow a function tag in C. */
@@ -3250,6 +3512,10 @@ C_entries (c_ext, inf)
        } /* switch (c) */
 
     } /* while not eof */
+
+  free (token_name.buffer);
+  free (lbs[0].lb.buffer);
+  free (lbs[1].lb.buffer);
 }
 
 /*
@@ -3260,10 +3526,10 @@ static void
 default_C_entries (inf)
      FILE *inf;
 {
-  C_entries (cplusplus ? C_PLPL : 0, inf);
+  C_entries (cplusplus ? C_PLPL : C_AUTO, inf);
 }
 
-/* Always do plain ANSI C. */
+/* Always do plain C. */
 static void
 plain_C_entries (inf)
      FILE *inf;
@@ -3302,6 +3568,7 @@ Yacc_entries (inf)
 {
   C_entries (YACC, inf);
 }
+
 \f
 /* A useful macro. */
 #define LOOP_ON_INPUT_LINES(file_pointer, line_buffer, char_pointer)   \
@@ -3328,6 +3595,7 @@ just_read_file (inf)
   LOOP_ON_INPUT_LINES (inf, lb, dummy)
     continue;
 }
+
 \f
 /* Fortran parsing */
 
@@ -3364,14 +3632,14 @@ takeprec ()
       dbp += 3;
       return;
     }
-  if (!isdigit ((unsigned char) *dbp))
+  if (!ISDIGIT (*dbp))
     {
       --dbp;                   /* force failure */
       return;
     }
   do
     dbp++;
-  while (isdigit ((unsigned char) *dbp));
+  while (ISDIGIT (*dbp));
 }
 
 static void
@@ -3392,7 +3660,7 @@ getit (inf)
       dbp += 6;
       dbp = skip_spaces (dbp);
     }
-  if (!isalpha ((unsigned char) *dbp) && *dbp != '_' && *dbp != '$')
+  if (!ISALPHA (*dbp) && *dbp != '_' && *dbp != '$')
     return;
   for (cp = dbp + 1; *cp != '\0' && intoken (*cp); cp++)
     continue;
@@ -3473,10 +3741,11 @@ Fortran_functions (inf)
        }
     }
 }
+
 \f
 /*
- * Philippe Waroquiers <philippe.waroquiers@eurocontrol.be>, 1998-04-24
  * Ada parsing
+ * Philippe Waroquiers <philippe.waroquiers@eurocontrol.be> (1998)
  */
 
 static void adagetit P_((FILE *, char *));
@@ -3533,7 +3802,7 @@ adagetit (inf, name_qualifier)
          dbp = skip_spaces (dbp);
          for (cp = dbp;
               (*cp != '\0'
-               && (isalpha ((unsigned char) *cp) || isdigit ((unsigned char) *cp) || *cp == '_' || *cp == '.'));
+               && (ISALPHA (*cp) || ISDIGIT (*cp) || *cp == '_' || *cp == '.'));
               cp++)
            continue;
          if (cp == dbp)
@@ -3641,6 +3910,7 @@ Ada_funcs (inf)
        } /* advance char */
     } /* advance line */
 }
+
 \f
 /*
  * Bob Weiner, Motorola Inc., 4/3/94
@@ -3657,11 +3927,11 @@ Asm_labels (inf)
     {
       /* If first char is alphabetic or one of [_.$], test for colon
         following identifier. */
-      if (isalpha ((unsigned char) *cp) || *cp == '_' || *cp == '.' || *cp == '$')
+      if (ISALPHA (*cp) || *cp == '_' || *cp == '.' || *cp == '$')
        {
          /* Read past label. */
          cp++;
-         while (isalnum ((unsigned char) *cp) || *cp == '_' || *cp == '.' || *cp == '$')
+         while (ISALNUM (*cp) || *cp == '_' || *cp == '.' || *cp == '$')
            cp++;
          if (*cp == ':' || iswhite (*cp))
            {
@@ -3672,12 +3942,14 @@ Asm_labels (inf)
        }
     }
 }
+
 \f
 /*
- * Perl support by Bart Robinson <lomew@cs.utah.edu>
- *              enhanced by Michael Ernst <mernst@alum.mit.edu>
+ * Perl support
  * Perl sub names: look for /^sub[ \t\n]+[^ \t\n{]+/
  * Perl variable names: /^(my|local).../
+ * Bart Robinson <lomew@cs.utah.edu> (1995)
+ * Michael Ernst <mernst@alum.mit.edu> (1997)
  */
 static void
 Perl_functions (inf)
@@ -3721,7 +3993,7 @@ Perl_functions (inf)
          if (*cp == '$' || *cp == '@' || *cp == '%')
            {
              char* varstart = ++cp;
-             while (isalnum ((unsigned char) *cp) || *cp == '_')
+             while (ISALNUM (*cp) || *cp == '_')
                cp++;
              varname = savenstr (varstart, cp-varstart);
            }
@@ -3740,10 +4012,12 @@ Perl_functions (inf)
        }
     }
 }
+
 \f
 /*
- * Python support by Eric S. Raymond <esr@thyrsus.com>
+ * Python support
  * Look for /^def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/
+ * Eric S. Raymond <esr@thyrsus.com> (1997)
  */
 static void
 Python_functions (inf)
@@ -3779,6 +4053,7 @@ Python_functions (inf)
        }
     }
 }
+
 \f
 /* Idea by Corny de Souza
  * Cobol tag functions
@@ -3798,16 +4073,40 @@ Cobol_paragraphs (inf)
       bp += 8;
 
       /* If eoln, compiler option or comment ignore whole line. */
-      if (bp[-1] != ' ' || !isalnum ((unsigned char) bp[0]))
+      if (bp[-1] != ' ' || !ISALNUM (bp[0]))
         continue;
 
-      for (ep = bp; isalnum ((unsigned char) *ep) || *ep == '-'; ep++)
+      for (ep = bp; ISALNUM (*ep) || *ep == '-'; ep++)
        continue;
       if (*ep++ == '.')
        pfnote (savenstr (bp, ep-bp), TRUE,
                lb.buffer, ep - lb.buffer + 1, lineno, linecharno);
     }
 }
+
+\f
+/*
+ * Makefile support
+ * Idea by Assar Westerlund <assar@sics.se> (2001)
+ */
+static void
+Makefile_targets (inf)
+     FILE *inf;
+{
+  register char *bp;
+
+  LOOP_ON_INPUT_LINES (inf, lb, bp)
+    {
+      if (*bp == '\t' || *bp == '#')
+       continue;
+      while (*bp != '\0' && *bp != '=' && *bp != ':')
+       bp++;
+      if (*bp == ':')
+       pfnote (savenstr (lb.buffer, bp - lb.buffer), TRUE,
+               lb.buffer, bp - lb.buffer + 1, lineno, linecharno);
+    }
+}
+
 \f
 /* Added by Mosur Mohan, 4/22/88 */
 /* Pascal parsing                */
@@ -3954,7 +4253,7 @@ Pascal_functions (inf)
            continue;
 
          /* save all values for later tagging */
-         grow_linebuffer (&tline, lb.len + 1);
+         linebuffer_setlen (&tline, lb.len);
          strcpy (tline.buffer, lb.buffer);
          save_lineno = lineno;
          save_lcno = linecharno;
@@ -3990,9 +4289,10 @@ Pascal_functions (inf)
 
   free (tline.buffer);
 }
+
 \f
 /*
- * lisp tag functions
+ * Lisp tag functions
  *  look for (def or (DEF, quote or QUOTE
  */
 
@@ -4086,13 +4386,14 @@ Lisp_functions (inf)
        }
     }
 }
+
 \f
 /*
  * Postscript tag functions
  * Just look for lines where the first character is '/'
- * Richard Mlynarik <mly@adoc.xerox.com>
  * Also look at "defineps" for PSWrap
- * suggested by Masatake YAMATO <masata-y@is.aist-nara.ac.jp>
+ * Richard Mlynarik <mly@adoc.xerox.com> (1997)
+ * Ideas by Masatake Yamato <masata-y@is.aist-nara.ac.jp> (1999)
  */
 static void
 Postscript_functions (inf)
@@ -4161,6 +4462,7 @@ Scheme_functions (inf)
        }
     }
 }
+
 \f
 /* Find tags in TeX and LaTeX input files.  */
 
@@ -4194,7 +4496,7 @@ char TEX_clgrp = '}';
  * TeX/LaTeX scanning loop.
  */
 static void
-TeX_functions (inf)
+TeX_commands (inf)
      FILE *inf;
 {
   char *cp, *lasthit;
@@ -4343,6 +4645,31 @@ TEX_Token (cp)
       return i;
   return -1;
 }
+
+\f
+/* Texinfo support.  Dave Love, Mar. 2000.  */
+static void
+Texinfo_nodes (inf)
+     FILE * inf;
+{
+  char *cp, *start;
+  LOOP_ON_INPUT_LINES (inf, lb, cp)
+    {
+      if ((*cp++ == '@'
+          && *cp++ == 'n'
+          && *cp++ == 'o'
+          && *cp++ == 'd'
+          && *cp++ == 'e' && iswhite (*cp++)))
+       {
+         start = cp = skip_spaces(cp);
+         while (*cp != '\0' && *cp != ',')
+           cp++;
+         pfnote (savenstr (start, cp - start), TRUE,
+                 lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+       }
+    }
+}
+
 \f
 /*
  * Prolog support (rewritten) by Anders Lindgren, Mar. 96
@@ -4381,7 +4708,7 @@ Prolog_functions (inf)
          if (last == NULL)
            last = xnew(len + 1, char);
          else if (len + 1 > allocated)
-           last = xrnew (last, len + 1, char);
+           xrnew (last, len + 1, char);
          allocated = len + 1;
          strncpy (last, cp, len);
          last[len] = '\0';
@@ -4468,11 +4795,11 @@ prolog_atom (s, pos)
 
   origpos = pos;
 
-  if (islower((unsigned char) s[pos]) || (s[pos] == '_'))
+  if (ISLOWER(s[pos]) || (s[pos] == '_'))
     {
       /* The atom is unquoted. */
       pos++;
-      while (isalnum((unsigned char) s[pos]) || (s[pos] == '_'))
+      while (ISALNUM(s[pos]) || (s[pos] == '_'))
        {
          pos++;
        }
@@ -4508,6 +4835,7 @@ prolog_atom (s, pos)
   else
     return -1;
 }
+
 \f
 /*
  * Support for Erlang  --  Anders Lindgren, Feb 1996.
@@ -4556,7 +4884,7 @@ Erlang_functions (inf)
          if (last == NULL)
            last = xnew (len + 1, char);
          else if (len + 1 > allocated)
-           last = xrnew (last, len + 1, char);
+           xrnew (last, len + 1, char);
          allocated = len + 1;
          strncpy (last, cp, len);
          last[len] = '\0';
@@ -4649,11 +4977,11 @@ erlang_atom (s, pos)
 
   origpos = pos;
 
-  if (isalpha ((unsigned char) s[pos]) || s[pos] == '_')
+  if (ISALPHA (s[pos]) || s[pos] == '_')
     {
       /* The atom is unquoted. */
       pos++;
-      while (isalnum ((unsigned char) s[pos]) || s[pos] == '_')
+      while (ISALNUM (s[pos]) || s[pos] == '_')
        pos++;
       return pos - origpos;
     }
@@ -4685,6 +5013,7 @@ erlang_atom (s, pos)
   else
     return -1;
 }
+
 \f
 #ifdef ETAGS_REGEXPS
 
@@ -4792,7 +5121,7 @@ analyse_regex (regex_arg, ignore_case)
              return;
            }
        *cp = '\0';
-       lang = get_language_from_name (lang_name);
+       lang = get_language_from_langname (lang_name);
        if (lang == NULL)
          return;
        add_regex (cp + 1, ignore_case, lang);
@@ -4840,10 +5169,6 @@ add_regex (regexp_pattern, ignore_case, lang)
   patbuf->buffer = NULL;
   patbuf->allocated = 0;
 
-#if 0 /* useful when debugging windows quoting convention problems */
-  printf ("Compiling regex pattern: %s\n", regexp_pattern);
-#endif
-
   err = re_compile_pattern (regexp_pattern, strlen (regexp_pattern), patbuf);
   if (err != NULL)
     {
@@ -4882,7 +5207,7 @@ substitute (in, out, regs)
   for (t = etags_strchr (out, '\\');
        t != NULL;
        t = etags_strchr (t + 2, '\\'))
-    if (isdigit ((unsigned char) t[1]))
+    if (ISDIGIT (t[1]))
       {
        dig = t[1] - '0';
        diglen = regs->end[dig] - regs->start[dig];
@@ -4895,9 +5220,8 @@ substitute (in, out, regs)
   result = xnew (size + 1, char);
 
   for (t = result; *out != '\0'; out++)
-    if (*out == '\\' && isdigit ((unsigned char) *++out))
+    if (*out == '\\' && ISDIGIT (*++out))
       {
-       /* Using "dig2" satisfies my debugger.  Bleah. */
        dig = *out - '0';
        diglen = regs->end[dig] - regs->start[dig];
        strncpy (t, in + regs->start[dig], diglen);
@@ -4907,8 +5231,7 @@ substitute (in, out, regs)
       *t++ = *out;
   *t = '\0';
 
-  if (DEBUG && (t > result + size || t - result != (int)strlen (result)))
-    abort ();
+  assert (t <= result + size && t - result == (int)strlen (result));
 
   return result;
 }
@@ -4928,6 +5251,8 @@ free_patterns ()
     }
   return;
 }
+#endif /* ETAGS_REGEXPS */
+
 \f
 static void
 get_tag (bp)
@@ -4946,14 +5271,15 @@ get_tag (bp)
          lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
 }
 
-#endif /* ETAGS_REGEXPS */
 /* Initialize a linebuffer for use */
 static void
 initbuffer (lbp)
      linebuffer *lbp;
 {
-  lbp->size = 200;
-  lbp->buffer = xnew (200, char);
+  lbp->size = (DEBUG) ? 3 : 200;
+  lbp->buffer = xnew (lbp->size, char);
+  lbp->buffer[0] = '\0';
+  lbp->len = 0;
 }
 
 /*
@@ -4985,7 +5311,7 @@ readline_internal (lbp, stream)
        {
          /* We're at the end of linebuffer: expand it. */
          lbp->size *= 2;
-         buffer = xrnew (buffer, lbp->size, char);
+         xrnew (buffer, lbp->size, char);
          p += buffer - lbp->buffer;
          pend = buffer + lbp->size;
          lbp->buffer = buffer;
@@ -5001,7 +5327,7 @@ readline_internal (lbp, stream)
          if (p > buffer && p[-1] == '\r')
            {
              p -= 1;
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
             /* Assume CRLF->LF translation will be performed by Emacs
                when loading this file, so CRs won't appear in the buffer.
                It would be cleaner to compensate within Emacs;
@@ -5086,6 +5412,7 @@ readline (lbp, stream)
 
   return result;
 }
+
 \f
 /*
  * Return a pointer to a space of size strlen(cp)+1 allocated
@@ -5178,7 +5505,7 @@ skip_non_spaces (cp)
 }
 
 /* Print error message and exit.  */
-static void
+void
 fatal (s1, s2)
      char *s1, *s2;
 {
@@ -5234,6 +5561,7 @@ concat (s1, s2, s3)
 
   return result;
 }
+
 \f
 /* Does the same work as the system V getcwd, but does not need to
    guess the buffer size in advance. */
@@ -5257,6 +5585,20 @@ etags_getcwd ()
   return path;
 
 #else /* not HAVE_GETCWD */
+#if MSDOS
+
+  char *p, path[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS.  */
+
+  getwd (path);
+
+  for (p = path; *p != '\0'; p++)
+    if (*p == '\\')
+      *p = '/';
+    else
+      *p = lowcase (*p);
+
+  return strdup (path);
+#else /* not MSDOS */
   linebuffer path;
   FILE *pipe;
 
@@ -5267,6 +5609,7 @@ etags_getcwd ()
   pclose (pipe);
 
   return path.buffer;
+#endif /* not MSDOS */
 #endif /* not HAVE_GETCWD */
 }
 
@@ -5286,7 +5629,7 @@ relative_filename (file, dir)
   while (*fp++ == *dp++)
     continue;
   fp--, dp--;                  /* back to the first differing char */
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
   if (fp == afn && afn[0] != '/') /* cannot build a relative name */
     return afn;
 #endif
@@ -5320,7 +5663,7 @@ absolute_filename (file, dir)
 
   if (filename_is_absolute (file))
     res = savestr (file);
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
   /* We don't support non-absolute file names with a drive
      letter, like `d:NAME' (it's too much hassle).  */
   else if (file[1] == ':')
@@ -5344,8 +5687,8 @@ absolute_filename (file, dir)
              while (cp >= res && !filename_is_absolute (cp));
              if (cp < res)
                cp = slashp;    /* the absolute name begins with "/.." */
-#ifdef WIN32_NATIVE
-             /* Under Windows we get `d:/NAME' as absolute
+#ifdef DOS_NT
+             /* Under MSDOS and NT we get `d:/NAME' as absolute
                 file name, so the luser could say `d:/../NAME'.
                 We silently treat this as `d:/NAME'.  */
              else if (cp[0] != '/')
@@ -5400,8 +5743,8 @@ filename_is_absolute (fn)
      char *fn;
 {
   return (fn[0] == '/'
-#ifdef WIN32_NATIVE
-         || (isalpha(fn[0]) && fn[1] == ':' && fn[2] == '/')
+#ifdef DOS_NT
+         || (ISALPHA(fn[0]) && fn[1] == ':' && fn[2] == '/')
 #endif
          );
 }
@@ -5411,10 +5754,10 @@ static void
 canonicalize_filename (fn)
      register char *fn;
 {
-#ifdef WIN32_NATIVE
+#ifdef DOS_NT
   /* Canonicalize drive letter case.  */
-  if (islower (fn[0]) && fn[1] == ':')
-    fn[0] = toupper (fn[0]);
+  if (fn[0] != '\0' && fn[1] == ':' && ISLOWER (fn[0]))
+    fn[0] = upcase (fn[0]);
   /* Convert backslashes to slashes.  */
   for (; *fn != '\0'; fn++)
     if (*fn == '\\')
@@ -5425,19 +5768,22 @@ canonicalize_filename (fn)
 #endif
 }
 
-/* Increase the size of a linebuffer. */
+/* Set the minimum size of a string contained in a linebuffer. */
 static void
-grow_linebuffer (lbp, toksize)
+linebuffer_setlen (lbp, toksize)
      linebuffer *lbp;
      int toksize;
 {
-  while (lbp->size < toksize)
-    lbp->size *= 2;
-  lbp->buffer = xrnew (lbp->buffer, lbp->size, char);
+  while (lbp->size <= toksize)
+    {
+      lbp->size *= 2;
+      xrnew (lbp->buffer, lbp->size, char);
+    }
+  lbp->len = toksize;
 }
 
 /* Like malloc but get fatal error if memory is exhausted.  */
-static long *
+long *
 xmalloc (size)
      unsigned int size;
 {
@@ -5447,7 +5793,7 @@ xmalloc (size)
   return result;
 }
 
-static long *
+long *
 xrealloc (ptr, size)
      char *ptr;
      unsigned int size;
index 9901186..d4c1630 100644 (file)
@@ -103,7 +103,7 @@ tell_emacs_to_resume (int sig)
   signal(SIGCONT, tell_emacs_to_resume);
 #endif
 
-  connect_type = make_connection (NULL, (u_short) 0, &s);
+  connect_type = make_connection (NULL, 0, &s);
 
   sprintf(buffer,"(gnuserv-eval '(resume-pid-console %d))", (int)getpid());
   send_string(s, buffer);
@@ -156,11 +156,11 @@ get_current_working_directory (void)
 {
   if (cp == NULL)
     {                          /* haven't calculated it yet */
-#ifdef BSD
-      if (getwd (cwd) == 0)
-#else /* !BSD */
+#ifdef HAVE_GETCWD
       if (getcwd (cwd,MAXPATHLEN) == NULL)
-#endif /* !BSD */
+#else
+      if (getwd (cwd) == 0)
+#endif /* HAVE_GETCWD */
        {
          perror (progname);
          fprintf (stderr, "%s: unable to get current working directory\n",
@@ -337,7 +337,7 @@ main (int argc, char *argv[])
   char *path;
   int rflg = 0;                        /* pathname given on cmdline */
   char *portarg;
-  u_short port = 0;            /* port to server */
+  unsigned short port = 0;     /* port to server */
 #endif /* INTERNET_DOMAIN_SOCKETS */
 #ifdef SYSV_IPC
   struct msgbuf *msgp;         /* message */
@@ -488,7 +488,7 @@ main (int argc, char *argv[])
 #if defined(INTERNET_DOMAIN_SOCKETS)
       connect_type = make_connection (hostarg, port, &s);
 #else
-      connect_type = make_connection (NULL, (u_short) 0, &s);
+      connect_type = make_connection (NULL, 0, &s);
 #endif
       sprintf (command, "(gnuserv-eval%s '(progn ", quick ? "-quickly" : "");
       send_string (s, command);
@@ -526,7 +526,7 @@ main (int argc, char *argv[])
 #if defined(INTERNET_DOMAIN_SOCKETS)
       connect_type = make_connection (hostarg, port, &s);
 #else
-      connect_type = make_connection (NULL, (u_short) 0, &s);
+      connect_type = make_connection (NULL, 0, &s);
 #endif
       sprintf (command, "(gnuserv-eval%s '(progn ", quick ? "-quickly" : "");
       send_string (s, command);
@@ -560,7 +560,7 @@ main (int argc, char *argv[])
 #if defined(INTERNET_DOMAIN_SOCKETS)
          connect_type = make_connection (hostarg, port, &s);
 #else
-         connect_type = make_connection (NULL, (u_short) 0, &s);
+         connect_type = make_connection (NULL, 0, &s);
 #endif
          send_string (s, "(gnuserv-eval '(emacs-pid))");
          send_string (s, EOT_STR);
@@ -585,7 +585,7 @@ main (int argc, char *argv[])
 #if defined(INTERNET_DOMAIN_SOCKETS)
       connect_type = make_connection (hostarg, port, &s);
 #else
-      connect_type = make_connection (NULL, (u_short) 0, &s);
+      connect_type = make_connection (NULL, 0, &s);
 #endif
 
 #ifdef INTERNET_DOMAIN_SOCKETS
index b90443d..2ba5785 100644 (file)
@@ -378,7 +378,7 @@ handle_response (void)
 
 #ifdef INTERNET_DOMAIN_SOCKETS
 struct entry {
-  u_long host_addr;
+  unsigned long host_addr;
   struct entry *next;
 };
 
@@ -450,7 +450,7 @@ timed_read (int fd, char *buf, int max, int timeout, int one_line)
   permitted -- return whether a given host is allowed to connect to the server.
 */
 static int
-permitted (u_long host_addr, int fd)
+permitted (unsigned long host_addr, int fd)
 {
   int key;
   struct entry *entry;
@@ -560,7 +560,7 @@ permitted (u_long host_addr, int fd)
               already there.
 */
 static void
-add_host (u_long host_addr)
+add_host (unsigned long host_addr)
 {
   int key;
   struct entry *new_entry;
@@ -596,7 +596,7 @@ setup_table (void)
   FILE *host_file;
   char *file_name;
   char hostname[HOSTNAMSZ];
-  u_int host_addr;
+  unsigned int host_addr;
   int i, hosts=0;
 
   /* Make sure every entry is null */
index c16aa31..f0226e6 100644 (file)
@@ -43,7 +43,7 @@ static int connect_to_ipc_server (void);
 static int connect_to_unix_server (void);
 #endif
 #ifdef INTERNET_DOMAIN_SOCKETS
-static int connect_to_internet_server (char *serverhost, u_short port);
+static int connect_to_internet_server (char *serverhost, unsigned short port);
 #endif
 
 /* On some systems, e.g. DGUX, inet_addr returns a 'struct in_addr'. */
@@ -313,7 +313,7 @@ static Xauth *server_xauth = NULL;
                                descriptor for server if successful.
 */
 static int
-connect_to_internet_server (char *serverhost, u_short port)
+connect_to_internet_server (char *serverhost, unsigned short port)
 {
   int s;                               /* connected socket descriptor */
   struct servent *sp;                  /* pointer to service information */
index 79160eb..0bf05de 100644 (file)
@@ -95,7 +95,7 @@ extern struct servent *hes_getservbyname (/* char *, char * */);
 #ifdef KERBEROS
 #ifndef KRB5
 extern int krb_sendauth (/* long, int, KTEXT, char *, char *, char *,
-                           u_long, MSG_DAT *, CREDENTIALS *, Key_schedule,
+                           unsigned long, MSG_DAT *, CREDENTIALS *, Key_schedule,
                            struct sockaddr_in *, struct sockaddr_in *,
                            char * */);
 extern char *krb_realmofhost (/* char * */);
index 6104be8..f4d6f0e 100644 (file)
        * files.el (insert-file-contents-literally): Treat file as binary;
        call file-name-handlers. [sync with Emacs 20.3.10]
 
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-01-16  Mike Sperber <mike@xemacs.org>
+
+       * startup.el (normal-top-level): Work even if no installation root
+       is found.
+
+2001-01-30  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (progress-abort-glyph): remove instantiator.
+       (set-progress-abort-instantiator): new function.
+       (abort-progress-feedback): use it.
+
+       * gutter.el (set-gutter-dirty-p): new function.
+
+2001-01-30  Didier Verna  <didier@xemacs.org>
+
+       * mwheel.el (mwheel-scroll): unwind-protect the selected window.
+
+2001-01-24  Didier Verna  <didier@xemacs.org>
+
+       * sound.el (sound-extension-list): give a better default value.
+       * sound.el (load-sound-file): improve the doc string, also find
+       files given by absolute names, pass a real extension list to
+       `locate-file'.
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index b63504a..054aa59 100644 (file)
@@ -348,10 +348,7 @@ redefining the function `format-buffers-menu-line'."
                     :items items)
             frame)
            ;; set-glyph-image will not make the gutter dirty
-           (set-specifier-dirty-flag 
-            (eval (intern (concat 
-                           (symbol-name gutter-buffers-tab-orientation) 
-                           "-gutter"))))))))))
+           (set-gutter-dirty-p gutter-buffers-tab-orientation)))))))
 
 ;; A myriad of different update hooks all doing slightly different things
 (add-one-shot-hook 
@@ -426,7 +423,8 @@ side-by-side."
                     ;; 'quit is special and acts "asynchronously".
                     :descriptor "Stop" :callback 'quit]
                    ,progress-text-instantiator)])
-    (set-glyph-image progress-layout-glyph progress-layout-instantiator locale))
+    (set-glyph-image progress-layout-glyph progress-layout-instantiator
+                    locale))
    (t 
     (setq progress-glyph-height 24)
     (setq progress-layout-instantiator
@@ -442,7 +440,20 @@ side-by-side."
                              :descriptor " Stop "
                              ;; 'quit is special and acts "asynchronously".
                              :callback 'quit])])])
-    (set-glyph-image progress-layout-glyph progress-layout-instantiator locale))))
+    (set-glyph-image progress-layout-glyph progress-layout-instantiator
+                    locale))))
+
+(defvar progress-abort-glyph (make-glyph))
+
+(defun set-progress-abort-instantiator (&optional locale)
+  (set-glyph-image progress-abort-glyph
+                  `[layout :orientation vertical :justify left
+                           :items (,progress-text-instantiator
+                                   [layout
+                                    :margin-width 4
+                                    :pixel-height progress-glyph-height
+                                    :orientation horizontal])]
+                  locale))
 
 (defvar progress-stack nil
   "An alist of label/string pairs representing active progress gauges.
@@ -450,15 +461,6 @@ The first element in the list is currently displayed in the gutter area.
 Do not modify this directly--use the `progress-feedback' or
 `display-progress-feedback'/`clear-progress-feedback' functions.")
 
-(defvar progress-abort-glyph
-  (make-glyph
-   `[layout :orientation vertical :justify left
-           :items (,progress-text-instantiator
-                   [layout
-                    :margin-width 4
-                    :pixel-height progress-glyph-height
-                    :orientation horizontal])]))
-
 (defun progress-feedback-displayed-p (&optional return-string frame)
   "Return a non-nil value if a progress gauge is presently displayed in the
 gutter area.  If optional argument RETURN-STRING is non-nil,
@@ -570,8 +572,8 @@ you should just use (progress nil)."
          ;; fixup the gutter specifiers
          (set-gutter-element bottom-gutter 'progress gutter-string frame)
          (set-specifier bottom-gutter-border-width 2 frame)
-         (set-instantiator-property progress-text-instantiator :datat message)
-         (set-progress-feedback-instantiator (frame-selected-window frame))
+         (set-instantiator-property progress-text-instantiator :data message)
+         (set-progress-abort-instantiator (frame-selected-window frame))
          (set-specifier bottom-gutter-height 'autodetect frame)
          (set-gutter-element-visible-p bottom-gutter-visible-p 
                                        'progress t frame)
index 19283da..a6dad1e 100644 (file)
@@ -108,6 +108,21 @@ non-nil if it is visible in optional DOMAIN."
     (or (and (listp spec) (memq 'buffers-tab spec))
        spec)))
 
+(defun set-gutter-dirty-p (gutter-or-location)
+  "Make GUTTER-OR-LOCATION dirty to force redisplay updates."
+  ;; set-glyph-image will not make the gutter dirty
+  (when (or (gutter-specifier-p gutter-or-location)
+           (eq gutter-or-location 'top)
+           (eq gutter-or-location 'bottom)
+           (eq gutter-or-location 'left)
+           (eq gutter-or-location 'right))
+    (or (gutter-specifier-p gutter-or-location) 
+       (setq gutter-or-location
+             (eval (intern (concat 
+                            (symbol-name gutter-or-location)
+                            "-gutter")))))
+    (set-specifier-dirty-flag gutter-or-location)))
+
 (defun make-gutter-specifier (spec-list)
   "Return a new `gutter' specifier object with the given specification list.
 SPEC-LIST can be a list of specifications (each of which is a cons of a
index 03d4392..094ca43 100644 (file)
@@ -17,7 +17,7 @@
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with XEmacs; see the file COPYING.  If not, write to the 
+;; along with XEmacs; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
@@ -91,11 +91,13 @@ This can be slightly disconcerting, but some people may prefer it."
        (amt (if (memq 'shift (event-modifiers event))
                 (cdr mwheel-scroll-amount)
               (car mwheel-scroll-amount))))
-    (case (mwheel-event-button event)
-      (4 (scroll-down amt))
-      (5 (scroll-up amt))
-      (otherwise (error "Bad binding in mwheel-scroll")))
-    (if curwin (select-window curwin))))
+    (unwind-protect
+       (case (mwheel-event-button event)
+         (4 (scroll-down amt))
+         (5 (scroll-up amt))
+         (otherwise (error "Bad binding in mwheel-scroll")))
+      (if curwin (select-window curwin)))
+    ))
 
 ;;;###autoload
 (defun mwheel-install ()
@@ -112,7 +114,7 @@ This can be slightly disconcerting, but some people may prefer it."
          (define-key global-map (car keys) 'mwheel-scroll)
          (setq keys (cdr keys)))
       (error nil))))
-    
+
 (provide 'mwheel)
 
 ;;; mwheel.el ends here
index 2857165..46e277c 100644 (file)
   )
 
 ;; #### This should really be a list.  --hniksic
-(defcustom sound-extension-list (if (or (eq system-type 'cygwin32)
-                                       (eq system-type 'windows-nt))
-                                   ".wav:" ".au:")
+(defcustom sound-extension-list (cond ((or (eq system-type 'cygwin32)
+                                          (eq system-type 'windows-nt))
+                                      ".wav:")
+                                     ((eq system-type 'linux)
+                                      ".wav:.au:")
+                                     (t
+                                      ".au:"))
   "Filename extensions to complete sound file name with. If more than one
    extension is used, they should be separated by \":\". "
   :group 'sound
   :type 'string)
 
 (defcustom default-sound-directory-list (locate-data-directory-list "sounds")
-
   "List of directories which to search for sound files"
   :group 'sound
   :type '(repeat directory )
 (defun load-sound-file (filename sound-name &optional volume)
   "Read in an audio-file and add it to the sound-alist.
 
+FILENAME can either be absolute or relative, in which case the file will
+be searched in the directories given by `default-sound-directory-list'.
+When looking for the file, the extensions given by `sound-extension-list' are
+also tried in the given order.
+
 You can only play sound files if you are running on display 0 of the
 console of a machine with native sound support or running a NetAudio
 server and XEmacs has the necessary sound support compiled in.
@@ -143,10 +151,18 @@ nVolume (0 for default): ")
     (error "sound-name not a symbol"))
   (unless (or (null volume) (integerp volume))
     (error "volume not an integer or nil"))
-  (let (buf
-       data
-       (file (locate-file filename default-sound-directory-list
-                          sound-extension-list)))
+  (let ((file (if (file-name-absolute-p filename)
+                 ;; For absolute file names, we don't have on choice on the
+                 ;; location, but sound extensions however can still be tried
+                 (setq file (locate-file filename
+                                         (list (file-name-directory filename))
+                                         (split-string sound-extension-list
+                                                       ":")))
+               (setq file (locate-file filename
+                                       default-sound-directory-list
+                                       (split-string sound-extension-list
+                                                     ":")))))
+       buf data)
     (unless file
       (error "Couldn't load sound file %s" filename))
     (unwind-protect
index a9c7325..b519a9a 100644 (file)
@@ -413,12 +413,12 @@ Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n")
                 'external-debugging-output))
 
       (if (null emacs-roots)
-         (startup-find-roots-warning)
-       (startup-setup-paths emacs-roots
-                            user-init-directory
-                            inhibit-early-packages
-                            inhibit-site-lisp
-                            debug-paths))
+         (startup-find-roots-warning))
+      (startup-setup-paths emacs-roots
+                          user-init-directory
+                          inhibit-early-packages
+                          inhibit-site-lisp
+                          debug-paths)
       (startup-setup-paths-warning))
 
     (when (and (not inhibit-autoloads)
index d81bceb..d3dad72 100644 (file)
@@ -1,3 +1,27 @@
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-02-06  Martin Buchholz  <martin@xemacs.org>
+
+       * xlwgauge.c:
+       * xlwgcs.c:
+       * xlwgcs.c (XtAllocateGC): Fix typo for X11R4.
+       * xlwgcs.h:
+       * xlwradio.c (RadioExpose):
+       * xlwcheckbox.c:
+       Remove use of BSD-specific types.
+       s/u_(char|short|int_long)/unsigned $1/g
+
+2001-02-05  Martin Buchholz  <martin@xemacs.org>
+
+       * lwlib-Xm.c (xm_update_one_value):
+       Obey the man page; use XtFree instead of free.
+
+2001-02-02  Martin Buchholz  <martin@xemacs.org>
+
+       * config.h.in: Use "..." to include config.h
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index 0a7be10..00d3af1 100644 (file)
@@ -23,7 +23,7 @@ Boston, MA 02111-1307, USA.  */
 #ifndef _LWLIB_CONFIG_H_
 #define _LWLIB_CONFIG_H_
 
-#include <../src/config.h>
+#include "../src/config.h"
 
 #undef NEED_MOTIF
 #undef NEED_ATHENA
index 2903ede..3e25262 100644 (file)
@@ -889,14 +889,14 @@ xm_update_one_value (widget_instance* instance, Widget widget,
   else if (class == xmTextWidgetClass)
     {
       if (val->value)
-       free (val->value);
+       XtFree (val->value);
       val->value = XmTextGetString (widget);
       val->edited = True;
     }
   else if (class == xmTextFieldWidgetClass)
     {
       if (val->value)
-       free (val->value);
+       XtFree (val->value);
       val->value = XmTextFieldGetString (widget);
       val->edited = True;
     }
index 686d86f..9c685bc 100644 (file)
@@ -65,7 +65,7 @@ Boston, MA 02111-1307, USA.  */
 #if    DRAW_CHECK
 #define check_width 14
 #define check_height 14
-static u_char check_bits[] = {
+static unsigned char check_bits[] = {
    0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x03,
    0x8c, 0x03, 0xde, 0x01, 0xff, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0x78, 0x00,
    0x70, 0x00, 0x20, 0x00};
index de71df0..074a6c7 100644 (file)
@@ -135,11 +135,11 @@ static void GaugeGetValue (XtPointer, XtIntervalId *);
 static void GaugeMercury (Display *, Window, GC, GaugeWidget, Cardinal, Cardinal);
 
 static Boolean GaugeConvert (Widget, Atom *, Atom *, Atom *,
-                            XtPointer *, u_long *, int *);
+                            XtPointer *, unsigned long *, int *);
 static void GaugeLoseSel (Widget, Atom *);
 static void GaugeDoneSel (Widget, Atom *, Atom *);
 static void GaugeGetSelCB (Widget, XtPointer, Atom *, Atom *,
-                          XtPointer, u_long *, int *);
+                          XtPointer, unsigned long *, int *);
 
 static GC Get_GC (GaugeWidget, Pixel);
 
@@ -636,7 +636,7 @@ GaugeConvert (Widget        w,
              Atom      *target,        /* requested target */
              Atom      *type,          /* returned type */
              XtPointer *value,         /* returned value */
-             u_long    *length,        /* returned length */
+             unsigned long     *length,        /* returned length */
              int       *format)        /* returned format */
 {
        GaugeWidget     gw = (GaugeWidget)w ;
@@ -650,7 +650,7 @@ GaugeConvert (Widget        w,
        if( *target == XA_TARGETS(XtDisplay(w)) )
        {
          Atom *rval, *stdTargets ;
-         u_long stdLength ;
+         unsigned long stdLength ;
 
          /* XmuConvertStandardSelection can handle this.  This function
           * will return a list of standard targets.  We prepend TEXT,
@@ -774,7 +774,7 @@ GaugeGetSelCB (Widget    w,
               Atom      *selection,
               Atom      *type,
               XtPointer value,
-              u_long    *length,
+              unsigned long    *length,
               int       *format)
 {
        Display *dpy = XtDisplay(w) ;
index ed5c480..3b6cd7e 100644 (file)
 
 #if    XtSpecificationRelease  < 5
 
-static GC      XtAllocateGC(Widget, int, u_long, XGCValues *, u_long, u_long) ;
+static GC      XtAllocateGC(Widget, int, unsigned long, XGCValues *,
+                            unsigned long, unsigned long) ;
 
 #endif
 
@@ -186,7 +187,7 @@ GC
 AllocFgGC(Widget w, Pixel fg, Font font)
 {
        XGCValues       values ;
-       u_long          vmask, dcmask ;
+       unsigned long   vmask, dcmask ;
 
        values.foreground = fg ;
        values.font = font ;
@@ -233,7 +234,7 @@ AllocShadeGC(Widget w, Pixel fg, Pixel bg, Font font,
        int contrast, Bool be_nice_to_cmap)
 {
        XGCValues       values ;
-       u_long          vmask, dcmask ;
+       unsigned long   vmask, dcmask ;
 
        values.foreground = fg ;
        values.background = bg ;
@@ -513,18 +514,18 @@ Draw3dBox(Widget w, int x, int y, int wid, int hgt, int s, GC topgc, GC botgc)
 #if XtSpecificationRelease < 5
 
 static GC
-XtAllocateGC(Widget w, int depth, u_long mask, XGCValues *values,
-       u_long dynamic, du_long ontcare)
+XtAllocateGC(Widget w, int depth, unsigned long mask, XGCValues *values,
+            unsigned long dynamic, unsigned long dontcare)
 {
        return XtGetGC(w, mask, values) ;
 }
 #endif
 
 
-static u_char  screen0[2] = {0,0} ;
-static u_char  screen25[2] = {0,0xaa} ;
-static u_char  screen75[2] = {0xaa,0xff} ;
-static u_char  screen100[2] = {0xff,0xff} ;
+static unsigned char screen0[2] = {0,0} ;
+static unsigned char screen25[2] = {0,0xaa} ;
+static unsigned char screen75[2] = {0xaa,0xff} ;
+static unsigned char screen100[2] = {0xff,0xff} ;
 
 static Pixmap
 getDitherPixmap(Widget w, int contrast)
index aed49d4..30b9b86 100644 (file)
@@ -117,8 +117,9 @@ extern      void    Draw3dBox(Widget w, int  x, int y, int wid, int hgt, int s,
                        GC topgc, GC botgc) ;
 
 #if XtSpecificationRelease < 5
-extern GC      XtAllocateGC(Widget, int depth, u_long mask,
-                       XGCValues *, u_long dynamic, u_long dontcare) ;
+extern GC      XtAllocateGC(Widget, int depth, unsigned long mask,
+                            XGCValues *,
+                            unsigned long dynamic, unsigned long dontcare) ;
 #endif
 
 #else
index a6430b9..207a1ff 100644 (file)
@@ -328,10 +328,10 @@ RadioExpose (Widget w,
        {
          /* TODO: handle pixmaps */
          XCopyPlane(dpy, left_bitmap, win, gc,
-               0,0, rw->label.lbm_width, rw->label.lbm_height,
-               (int) rw->label.internal_width*2 + bs(rw),
-               (int) rw->label.internal_height + rw->label.lbm_y,
-               (u_long) 1L) ;
+                    0,0, rw->label.lbm_width, rw->label.lbm_height,
+                    (int) rw->label.internal_width*2 + bs(rw),
+                    (int) rw->label.internal_height + rw->label.lbm_y,
+                    1UL) ;
        }
 
        /* Finally, the button itself */
index e59e0ef..e92f405 100644 (file)
@@ -1,3 +1,20 @@
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-02-04  Steve Youngs  <youngs@xemacs.org>
+
+       * xemacs/xemacs.texi: Update to accomodate new and improved
+       packages.texi.
+
+       * xemacs/packages.texi: Basically, apart from a few things,
+       rewritten from scratch.
+
+2001-01-27  Martin Buchholz  <martin@xemacs.org>
+
+       * lispref/variables.texi (max-specpdl-size): Correct default value.
+       * lispref/eval.texi (max-lisp-eval-depth): Correct default value.
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index 71ce6d2..3b378cd 100644 (file)
@@ -182,7 +182,7 @@ This limit, with the associated error when it is exceeded, is one way
 that Lisp avoids infinite recursion on an ill-defined function.
 @cindex Lisp nesting error
 
-The default value of this variable is 500.  If you set it to a value
+The default value of this variable is 1000.  If you set it to a value
 less than 100, Lisp will reset it to 100 if the given value is reached.
 
 @code{max-specpdl-size} provides another limit on nesting.
index 6d3cc9d..21aa3af 100644 (file)
@@ -251,7 +251,7 @@ binding depth exceeds max-specpdl-size"}).
   This limit, with the associated error when it is exceeded, is one way
 that Lisp avoids infinite recursion on an ill-defined function.
 
-  The default value is 600.
+  The default value is 3000.
 
   @code{max-lisp-eval-depth} provides another limit on depth of nesting.
 @xref{Eval}.
index e2202d8..5aaeeaf 100644 (file)
@@ -17,15 +17,16 @@ local needs with safe removal of unnecessary code.
 
 @menu
 * Package Terminology:: Understanding different kinds of packages.
-* Using Packages::      How to install and use packages.
-* Building Packages::   Building packages from sources.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from CVS sources.
+* Local.rules File::    This is an important file don't forget to create/edit it.
 * Creating Packages::   The basics.
-* Available Packages::  A brief, out-of-date, directory of packaged LISP.
+* Available Packages::  A brief directory of packaged LISP.
 @end menu
 
-@node Package Terminology, Using Packages, , Packages
+@node Package Terminology, Installing Packages, , Packages
 @comment  node-name,  next,  previous,  up
-
+@heading Package Terminology:
 @subsection Package Flavors
 
 There are two main flavors of packages.
@@ -41,13 +42,14 @@ may not in general safely remove any of them.
 A single-file package is an aggregate collection of thematically
 related but otherwise independent lisp files.  These files are bundled 
 together for download convenience and individual files may be deleted at
-will without any loss of functionality.
+will without any loss of functionality.  However, we would recommend
+that you follow this rule of thumb: "When in doubt, don't delete".
 @end itemize
 
 @subsection Package Distributions
-
+@cindex package distributions
 XEmacs Lisp packages are distributed in two ways, depending on the
-intended use.  Binary Packages are for installers and end-users and may
+intended use.  Binary Packages are for installers and end-users that can
 be installed directly into an XEmacs package directory.  Source Packages
 are for developers and include all files necessary for rebuilding
 bytecompiled lisp and creating tarballs for distribution.
@@ -64,16 +66,20 @@ in regular packages) source code plus all of the files necessary to
 build distribution tarballs (Unix Tar format files, gzipped for space
 savings).
 
-@node Using Packages, Building Packages, Package Terminology, Packages
+Currently, source packages are only available via CVS.  See
+@url{http://cvs.xemacs.org/} for details.
+@node Installing Packages, Building Packages, Package Terminology, Packages
 @comment  node-name,  next,  previous,  up
-
+@cindex installing packages
+@cindex install
+@heading Installing Packages:
 @subsection Getting Started
 
 When you first download XEmacs 21, you will usually first grab the
 @dfn{core distribution},
 @cindex core distribution
 a file called
-@file{xemacs-21.0.tar.gz}. (Replace the @t{21.0} by the current version
+@file{xemacs-21.x.x.tar.gz}. (Replace the @t{21.x.x} by the current version
 number.)  The core distribution contains the sources of XEmacs and a
 minimal set of Emacs Lisp files, which are in the subdirectory named
 @file{lisp}.  This subdirectory used to contain all Emacs Lisp files
@@ -81,10 +87,10 @@ distributed with XEmacs.  Now, to conserve disk space, most
 non-essential packages were made optional.
 
 @subsection Choosing the Packages You Need
-
-The available packages can currently be found in the same ftp directory
+@cindex choosing packages
+The @ref{Available Packages} can currently be found in the same ftp directory
 where you grabbed the core distribution from, and are located in the
-subdirectory @file{packages/binary-packages}.  Package file names follow
+subdirectory @file{packages}.  Package file names follow
 the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
 
 If you have EFS @ref{(EFS)}, packages can be installed over the network.
@@ -92,11 +98,11 @@ Alternatively, if you have copies of the packages locally, you can
 install packages from a local disk or CDROM.
 
 The file @file{etc/PACKAGES} in the core distribution contains a list of
-the packages available at the time of the XEmacs release.  Packages are
+the @ref{Available Packages} at the time of the XEmacs release.  Packages are
 also listed on the @code{Options} menu under:
 
 @example
-        Options->Customize->Emacs->Packages
+        Options -> Customize -> Emacs -> Packages
 @end example
 
 However, don't select any of these menu picks unless you actually want 
@@ -108,7 +114,7 @@ are installed, using the visual package browser and installer.  You can
 access it via the menus:
 
 @example
-        Options->Manage Packages->List & Install
+        Options -> Manage Packages -> List & Install
 @end example
 
 Or, you can get to it via the keyboard:
@@ -129,62 +135,137 @@ that you need @code{thingatpt}, type:
 M-x package-get-package-provider RET thingatpt
 @end example
 
-which will return something like (fsf-compat "1.06"). You can the use
+which will return something like (fsf-compat "1.08"). You can the use
 one of the methods above for installing the package you want.
 
 @subsection XEmacs and Installing Packages
 
-Normally, packages are installed over the network, using EFS
-@ref{(EFS)}.  However, you may not have network access, or you may
-already have some or all of the packages on a local disk, such as a
-CDROM.  If you want to install from a local disk, you must first tell
-XEmacs where to find the package binaries.  This is done by adding a line
-like the following to your init file:
+There are three main ways to install packages:
 
-@example
-(setq package-get-remote (cons (list nil "/my/path/to/package/binaries")
-                               package-get-remote))
-@end example
+@menu
+* Sumo::              All at once, using the 'Sumo Tarball'.
+* Manually::          Using individual package tarballs.
+* Automatically::     Using the package tools from XEmacs.
+* Which Packages::    Which packages to install.
+* Removing Packages:: Removing packages.
+@end menu
 
-@xref{Init File}.
+But regardless of the method you use to install packages, they can only
+be used by XEmacs after a restart.
 
-Here, you'd change @file{/my/path/to/package/binaries} to be the path
-to your local package binaries.  Next, restart XEmacs, and you're ready
-to go (advanced users can just re-evaluate the sexp).
+@node Sumo, Manually, ,Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex sumo package install
+@heading Installing the Sumo Packages:
+Those with little time, cheap connections and plenty of disk space can
+install all the packages at once using the sumo tarballs.
+Download the file: @file{xemacs-sumo.tar.gz}
 
-If you are installing from a temporary, one-time directory, you can also 
-add these directory names to @code{package-get-remote} using:
+For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
 
-@example
-        M-x pui-add-install-directory
-@end example
+N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
+
+Install them by:
+
+@code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
 
-Note, however, that any directories added using this function are not
-saved; this information will be lost when you quit XEmacs.
+Or, if you have GNU tar:
+
+@code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
+@node Manually, Automatically, Sumo, Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex manual package install
+@heading Manual Package Installation:
+Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy. 
 
-If you're going to install over the network, you only have to insure
-that EFS @ref{(EFS)} works, and that it can get outside a firewall, if
-you happen to be behind one.  You shouldn't have to do anything else;
-XEmacs already knows where to go. However you can add your own mirrors
-to this list. See @code{package-get-remote}.
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first @ref{Removing Packages}.
 
-The easiest way to install a package is to use the visual package
-browser and installer, using the menu pick:
+For example if we are installing the @file{xemacs-base}
+package (version 1.48):
 
 @example
-        Options->Manage Packages->List & Install
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
 @end example
-or
+
+For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+
 @example
-        Options->Manage Packages->Using Custom->Select-> ...
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
 @end example
 
-You can also access it using the keyboard:
+@node Automatically, Which Packages ,Manually, Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex automatic package install
+@cindex package tools
+@heading Automatic Package Installation:
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages
+you need are:
 
 @example
-M-x pui-list-packages
+   efs          - To fetch the files from the FTP site or mirrors.
+   xemacs-base  - Needed by efs.
+
+and optionally:
+
+   mule-base    - Needed if you want to use XEmacs with MULE.
 @end example
 
+After installing these by hand, fire up XEmacs and follow these
+steps.
+
+Note: The menus in XEmacs 21.2.x and up have changed slightly, so
+where I mention "Options -> Manage Packages", substitute "Tools ->
+Packages".
+
+@enumerate 1
+@item Choose a download site.
+via menu: Options -> Manages Packages -> Add Download Site 
+via keyb: @code{M-x customize-variable RET package-get-remote RET}
+(put in the details of remote host and directory)
+
+If the package tarballs _AND_ the package-index file are in a
+local directory, you can: @code{M-x pui-add-install-directory RET}
+
+@item Obtain a list of packages and display the list in a buffer named
+@file{*Packages*}.
+menu: Options -> Manage Packages -> List & Install
+keyb: @code{M-x pui-list-packages RET}
+
+XEmacs will now connect to the remote site and download the
+latest package-index file.  If you see an error about the
+package-index entries not being PGP signed, you can safely
+ignore this because PGP has not been integrated into the XEmacs
+package tools yet.
+
 The visual package browser will then display a list of all packages.
 Help information will be displayed at the very bottom of the buffer; you
 may have to scroll down to see it.  You can also press @kbd{?} to get
@@ -237,30 +318,26 @@ Kill the package buffer.
 Moving the mouse over a package will also cause additional information
 about the package to be displayed in the minibuffer.
 
-@subsection Other package installation interfaces
 
-For an alternative package interface, you can select packages from the
-customize menus, under:
+@item Choose the packages you wish to install.
+mouse: Click button 2 on the package name.
+ keyb: @kbd{RET} on the package name
 
-@example
-        Options->Customize->Emacs->Packages-> ...
-@end example
-or
-@example
-        Options->Manage Packages->Using Custom->Select-> ...
-@end example
+@item Make sure you have everything you need.
+menu: Packages -> Add Required
+keyb: @kbd{r}
 
-Set their state to on, and then do:
+XEmacs will now search for packages that are required by the
+ones that you have chosen to install and offer to select
+those packages also.
 
-@example
-        Options->Manage Packages->Using Custom->Update Packages
-@end example
+For novices and gurus alike, this step can save your bacon.
+It's easy to forget to install a critical package.
 
-This will automatically retrieve the packages you have selected from the
-XEmacs ftp site or your local disk, and install them into
-XEmacs.  Additionally it will update any packages you already have
-installed to the newest version.  Note that if a package is newly
-installed you will have to restart XEmacs for the change to take effect.
+@item Download and install the packages.
+menu: Packages -> Install/Remove Selected
+keyb: @kbd{x}
+@end enumerate
 
 You can also install packages using a semi-manual interface:
 
@@ -269,118 +346,102 @@ M-x package-get-all <return>
 @end example
 
 Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
-will search for the latest version (as listed in the lisp file
-@file{lisp/package-get-base.el}), and install it and any packages that
+will search for the latest version and install it and any packages that
 it depends upon.
 
-@subsection Manual Binary Package Installation
-
-Pre-compiled, binary packages can be installed in either a system
-package directory (this is determined when XEmacs is compiled), or in
-one of the following
-subdirectories of your @file{$HOME} directory:
-
-@example
-~/.xemacs/mule-packages
-~/.xemacs/xemacs-packages
-@end example
-
-Packages in the former directory will only be found by a Mule-enabled
-XEmacs.
-
-XEmacs does not have to be running to install binary packages, although
-XEmacs will not know about any newly-installed packages until you
-restart XEmacs.  Note, however, that installing a newer version of a
-package while XEmacs is running could cause strange errors in XEmacs;
-it's best to exit XEmacs before upgrading an existing package.
-
-To install binary packages manually:
-
-@enumerate
-@item
-Download the package(s) that you want to install.  Each binary package
-will typically be a gzip'd tarball.
-
-@item
-Decide where to install the packages: in the system package
-directory, or in @file{~/.xemacs/mule-packages} or
-@file{~/.xemacs/xemacs-packages}, respectively.  If you want to install
-the packages in the system package directory, make sure you can write
-into that directory.  If you want to install in your @file{$HOME}
-directory, create the directory, @file{~/.xemacs/mule-packages} or
-@file{~/.xemacs/xemacs-packages}, respectively.
-
-@item
-Next, @code{cd} to the directory under which you want to install the
-package(s).
-
-@item
-From this directory, uncompress and extract each of the gzip'd tarballs
-that you downloaded in step 1.  Unix and Cygnus cygwin users will
-typically do this using the commands:
-
-@example
-        gunzip < package.tar.gz | tar xvf -
-@end example
-
-Above, replace @file{package.tar.gz} with the filename of the
-package that you downloaded in step 1.
+@node Which Packages, Removing Packages, Automatically, Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex which packages
+@cindex choosing packages
+@heading Which Packages to Install:
+This is difficult to say. When in doubt install a package. If you
+administrate a big site it might be a good idea to just install
+everything. A good minimal set of packages for XEmacs-latin1 would be
 
-Of course, if you use GNU @code{tar}, you could also use:
+xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time
 
-@example
-        tar xvzf package.tar.gz
-@end example
+If you are using the XEmacs package tools, don't forget to do:
 
-@comment What about native MS Windows users???
+       Packages -> Add Required
 
-@item
-That's it.  Quit and restart XEmacs to get it to recognize any new or
-changed packages.
+To make sure you have everything that the packages you have chosen to
+install need.
 
-@end enumerate
+See also @ref{Available Packages} for further descriptions of the individual
+packages.
 
-@node Building Packages, Creating Packages, Using Packages, Packages
+@node Removing Packages, ,Which Packages, Installing Packages
 @comment  node-name,  next,  previous,  up
-
-Source packages are available from the @file{packages/source-packages}
-subdirectory of your favorite XEmacs distribution site.  Alternatively,
-they are available via CVS from @file{cvs.xemacs.org}.  Look at
-@file{http://cvs.xemacs.org} for instructions.
+@cindex removing packages
+@cindex deleting packages
+@heading Removing Packages:
+Because the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
+@file{pgkinfo/MANIFEST.pkgname} file which list all the files belonging
+to the package. 
+
+No need to panic, you don't have to go through the
+@file{pkinfo/MANIFEST.pkgname} and manually delete the files.  Instead, use
+@code{M-x package-admin-delete-binary-package RET}.
+
+Note that the interactive package tools included with XEmacs already do
+this for you.
+
+@node Building Packages, Local.rules File, Installing Packages, Packages
+@comment  node-name,  next,  previous,  up
+@cindex building packages
+@cindex package building
+@heading Building Packages:
+Currently, source packages are only available via anonymous CVS.  See
+@url{http://cvs.xemacs.org/} for details of checking out the
+@file{xemacs-packages} module.
 
 @subsection Prerequisites for Building Source Packages
 
-You must have GNU @code{cp}, GNU @code{install} (or a BSD compatible
-@code{install} program) GNU @code{make} (3.75 or later preferred),
-@code{makeinfo} (1.68 from @code{texinfo-3.11} or later required), GNU
-@code{tar} and XEmacs 21.0.  The source packages will untar into a
-correct directory structure.  At the top level you must have
-@file{XEmacs.rules} and @file{package-compile.el}.  These files are
-available from the XEmacs FTP site from the same place you obtained your
-source package distributions.
+@table @code
+@item GNU cp
+@item GNU ginstall 
+(or a BSD compatible install program).
+@item GNU make 
+(3.75 or later preferred).
+@item makeinfo 
+(1.68 from texinfo-3.11 or later required).
+@item GNU tar
+(or equivalent).
+@item GNU gzip
+(or equivalent).
+@item A properly configured @file{Local.rules} file.
+@ref{Local.rules File}.
+@end table
+And of course, XEmacs 21.0 or higher.
 
 @subsection What You Can Do With Source Packages
 
-NB:  A global build operation doesn't exist yet as of 13 January 1998.
-
-Source packages are most useful for creating XEmacs package tarballs
-for installation into your own XEmacs installations or for
+The packages CVS sources are most useful for creating XEmacs package
+tarballs for installation into your own XEmacs installations or for
 distributing to others.
 
 Supported operations from @file{make} are:
 
 @table @code
-@item clean
-Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
-
-@item distclean
-Remove XEmacs backups as well as the files deleted by @code{make clean}.
-
 @item all
 Bytecompile all files, build and bytecompile byproduct files like
 @file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
 of TeXinfo documentation if present.
 
+@item bindist
+Does a @code{make all} as well as create a binary package tarball in the
+staging directory.
+
+@item install
+Bytecompile all files, build and bytecompile byproduct files like
+@file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.  And install everything into the
+staging directory.
+
 @item srckit
 Usually aliased to @code{srckit-std}.  This does a @code{make
 distclean} and creates a package source tarball in the staging
@@ -401,11 +462,84 @@ beyond the basic templates so this is not yet complete.
 Runs the rules @code{srckit} followed by @code{binkit}.  This is
 primarily of use by XEmacs maintainers producing files for distribution.
 
+@item clean
+Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
+
+@item distclean
+Remove all created files.
 @end table
 
-@node Creating Packages, Available Packages, Building Packages, Packages
+@node Local.rules File, Creating Packages, Building Packages, Packages
 @comment  node-name,  next,  previous,  up
+@cindex local.rules
+@heading The Local.rules File:
+This file is used when building and installing packages from source.  In
+the top level of the CVS module, @file{xemacs-packages}, contains the
+file, @file{Local.rules.template}.  Simply copy that to
+@file{Local.rules} and edit it to suit your needs.
+
+These are the variables in 'Local.rules' that you will need to
+address. 
+
+@table @var
+@item symlink = 
+Set this to 't' if you want to do a "run in place".
+Setting this doesn't work well with 'make bindist'
+
+@item XEMACS_PACKAGES =
+This is where you set the normal packages that you
+want to install. eg:
+@example
+      XEMACS_PACKAGES = libs/xemacs-base comm/bbdb
+@end example
+
+@item XEMACS_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Packages
+Set this to where you want normal packages to be
+installed to.
 
+@item PACKAGE_INDEX = package-index
+If you want the package-index file to have a different
+name, change this.
+
+@item BUILD_WITHOUT_MULE =
+Building from CVS defaults to building the Mule
+packages.  Set this to 't' if you don't want/have Mule
+
+@item MULE_PACKAGES =
+Same as for 'XEMACS_PACKAGES' except you list the Mule
+packages you want to install here. eg:
+@example
+      MULE_PACKAGES = mule/mule-base mule/skk
+@end example
+
+@item MULE_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Mule-Packages
+Set this to where you want Mule packages installed
+to.  Note:  'make bindist' does not use this variable.
+
+@item XEMACS = xemacs
+If your XEmacs isn't in your path, change this.
+
+@item XEMACS_NATIVE_NT =
+Set this to 't' if you are building on WinNT.
+
+@item INSTALL = install -c
+The path to your BSD compatible install program.
+
+@item TAR = tar
+The path to your tar program
+
+@item BZIP2 =
+If you want bzip2 tarballs, set this.
+
+@item MAKEINFO = makeinfo
+The path to your makeinfo program
+@end table
+
+
+@node Creating Packages, Available Packages, Local.rules File, Packages
+@comment  node-name,  next,  previous,  up
+@cindex creating packages
+@heading Creating Packages:
 Creating a package from an existing Lisp library is not very difficult.
 
 In addition to the Lisp libraries themselves, you need a
@@ -530,14 +664,15 @@ or a future revision of this manual for details.
 
 @node Available Packages,  , Creating Packages, Packages
 @comment  node-name,  next,  previous,  up
+@cindex available packages
+@cindex packages
+@heading Available Packages:
+This section lists the Lisp packages that are currently available from
+xemacs.org and it's mirrors.  If a particular package that you are
+looking for isn't here, please send a message to the
+@email{xemacs-beta@@xemacs.org, XEmacs Beta list}.
 
-This section is surely out-of-date.  If you're sure that XEmacs is
-able to do something, but your installed XEmacs won't do it for you,
-it's probably in a package.  If you can't find it in this section,
-that's a bug---please report it.  It is very hard to keep this section
-up-to-date; your reports, comments, and questions will help a lot.
-
-This data is up-to-date as of 10 February 1999.  (Ouch!  I told you!)
+This data is up-to-date as of January 17, 2001.
 
 @subsection Library Packages (libs)
 
@@ -552,19 +687,31 @@ Support for Sparcworks.
 @item apel
 A Portable Emacs Library.  Used by XEmacs MIME support.
 
-@item edebug
-A Lisp debugger.
-
 @item dired
 The DIRectory EDitor is for manipulating, and running commands on
 files in a directory.
 
+@item edebug
+A Lisp debugger.
+
 @item efs
 Treat files on remote systems the same as local files.
 
+@item elib
+Portable Emacs Lisp utilities library.
+
+@item fsf-compat
+FSF Emacs compatibility files.
+
 @item mail-lib
 Fundamental lisp files for providing email support.
 
+@item sounds-au
+XEmacs Sun sound files.
+
+@item sounds-wav
+XEmacs Microsoft sound files.
+
 @item tooltalk
 Support for building with Tooltalk.
 
@@ -584,6 +731,16 @@ These packages provide support for various communications, primarily
 email and usenet.
 
 @table @file
+@item bbdb
+The Big Brother Data Base
+
+@item eicq
+ICQ Client developed and tested on Linux x86; 
+only supported on that platform
+
+@item eudc
+Emacs Unified Directory Client (LDAP, PH).
+
 @item footnote
 Footnoting in mail message editing modes.
 
@@ -596,6 +753,9 @@ The Gnus Newsreader and Mailreader.
 @item mailcrypt
 Support for messaging encryption with PGP.
 
+@item mew
+Messaging in an Emacs World.
+
 @item mh-e
 Front end support for MH.
 
@@ -603,9 +763,6 @@ Front end support for MH.
 Miscellaneous Networking Utilities.  This is a single-file package and 
 files may be deleted at will.
 
-@item ph
-Emacs implementation of the ph client to CCSO/qi directory servers.
-
 @item rmail
 An obsolete Emacs mailer.  If you do not already use it don't start.
 
@@ -613,17 +770,22 @@ An obsolete Emacs mailer.  If you do not already use it don't start.
 An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
 
 @item tm
-Emacs MIME support.
+Emacs MIME support. Not needed for Gnus >= 5.8.0
 
 @item vm
 An Emacs mailer.
 
 @item w3
 A Web browser.
+
+@item zenirc
+ZENIRC IRC Client.
 @end table
 
 @subsection Games and Amusements (games)
 
+All work and no play...
+
 @table @file
 @item cookie
 Spook and Yow (Zippy quotes).
@@ -640,7 +802,15 @@ Other amusements and diversions.
 
 @subsection Mule Support (mule)
 
+MULti-lingual Enhancement.  Support for world scripts such as
+Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+To use these packages your XEmacs must be compiled with Mule
+support.
+
 @table @file
+@item edict
+Lisp Interface to EDICT, Kanji Dictionary.
+
 @item egg-its
 Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
 XEmacs build.
@@ -652,6 +822,9 @@ Quail.  Used for everything other than English and Japanese.
 Used for localized menubars (French and Japanese) and localized splash
 screens (Japanese).
 
+@item lookup
+Dictionary support. (This isn't an English dictionary program)
+
 @item mule-base
 Basic Mule support.  Must be installed prior to building with Mule.
 
@@ -662,7 +835,12 @@ separate process running as a dictionary server.
 
 @subsection Productivity Packages (oa)
 
+Things to make life a little easier.
+
 @table @file
+@item calc
+Emacs calculator.
+
 @item calendar
 Calendar and diary support.
 
@@ -671,7 +849,7 @@ Single file lisp packages for various XEmacs goodies.  Load this and
 weed out the junk you don't want.
 
 @item forms
-Forms editing support (obsolete, use the builtin Widget instead).
+Forms editing support (obsolete, use the built-in Widget instead).
 
 @item frame-icon
 Provide a WM icon based on major mode.
@@ -695,7 +873,7 @@ SGML/Linuxdoc-SGML editing.
 User interface tool.
 
 @item speedbar
-??? Document me.
+Provides a separate frame with convenient references.
 
 @item strokes
 Mouse enhancement utility.
@@ -709,7 +887,12 @@ Display time & date on the modeline.
 
 @subsection Operating System Utilities (os)
 
+Tools for working with the operating system.
+
 @table @file
+@item eshell
+Command shell implemented entirely in Emacs Lisp.
+
 @item eterm
 Terminal emulator.
 
@@ -723,12 +906,21 @@ Front-end for Inferior Lisp.
 Miscellaneous single-file O/S utilities, for printing, archiving,
 compression, remote shells, etc.
 
+@item pcomplete
+Provides programmatic completion.
+
+@item ps-print-nomule
+Old, but no-Mule safe ps-print.
+
 @item view-process
 A Unix process browsing tool.
 @end table
 
 @subsection Program Editing Support (prog)
 
+XEmacs supports a multitude of programming languages.  These
+packages will help your coding.
+
 @table @file
 @item ada
 Ada language support.
@@ -748,23 +940,33 @@ Interface over patch.
 @item emerge
 Another interface over patch.
 
+@item idlwave
+Editing and Shell mode for the Interactive Data Language.
+
+@item jde
+Java language and development support.
+
 @item pcl-cvs
 CVS frontend.
 
 @item prog-modes
-Miscellaneous Lisp libraries for various programming languages.
+Miscellaneous single-file lisp files for various programming languages.
 
 @item scheme
 Front-end support for Inferior Scheme.
 
+@item semantic
+Semantic bovinator.
+
 @item sh-script
 Support for editing shell scripts.
 
 @item vc
-Version control for free systems.
+Version Control for Free systems.
 
 @item vc-cc
-Version control for ClearCase.
+Version Control for ClearCase.  This package will shortly be
+replaced with clearcase.el
 
 @item vhdl
 Support for VHDL.
@@ -772,6 +974,8 @@ Support for VHDL.
 
 @subsection Word Processing (wp)
 
+Working with text.
+
 @table @file
 @item auctex
 Basic TeX/LaTeX support.
@@ -782,6 +986,9 @@ Crisp/Brief emulation.
 @item edt
 DEC EDIT/EDT emulation.
 
+@item reftex
+Emacs support for LaTeX cross-references, citations.
+
 @item texinfo
 XEmacs TeXinfo support.
 
index 9103a2d..87b61c4 100644 (file)
@@ -1028,6 +1028,13 @@ normally include all functions and subroutines, and may also include
 global variables, data types, and anything else convenient.  Each name
 recorded is called a @dfn{tag}.
 
+@cindex C++ class browser, tags
+@cindex tags, C++
+@cindex class browser, C++
+@cindex Ebrowse
+The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser.  @xref{,,, ebrowse, Ebrowse User's Manual}.
+
 @menu
 * Tag Syntax::         Tag syntax for various types of code and text files.
 * Create Tags Table::  Creating a tags table with @code{etags}.
@@ -1038,7 +1045,7 @@ recorded is called a @dfn{tag}.
 * List Tags::          Listing and finding tags defined in a file.
 @end menu
 
-@node Tag Syntax, Create Tags Table, Tags, Tags
+@node Tag Syntax
 @subsection Source File Tag Syntax
 
   Here is how tag syntax is defined for the most popular languages:
@@ -1077,7 +1084,7 @@ In La@TeX{} text, the argument of any of the commands @code{\chapter},
 tag.@refill
 
 Other commands can make tags as well, if you specify them in the
-environment variable @code{TEXTAGS} before invoking @code{etags}.  The
+environment variable @env{TEXTAGS} before invoking @code{etags}.  The
 value of this environment variable should be a colon-separated list of
 command names.  For example,
 
@@ -1108,8 +1115,34 @@ set with @code{set!} at top level in the file.
 
 @item
 In Ada code, functions, procedures, packages, tasks, and types are
-tags.  Use the @samp{--packages-only} option to create tags for packages
-only.
+tags.  Use the @samp{--packages-only} option to create tags for
+packages only.
+
+With Ada, it is possible to have the same name used for different
+entity kinds (e.g.@: the same name for a procedure and a function).  Also,
+for things like packages, procedures and functions, there is the spec
+(i.e.@: the interface) and the body (i.e.@: the implementation).  To
+facilitate the choice to the user, a tag value is appended with a
+qualifier:
+
+@table @asis
+@item function
+ @kbd{/f}
+@item procedure
+ @kbd{/p}
+@item package spec
+ @kbd{/s}
+@item package body
+ @kbd{/b}
+@item type
+ @kbd{/t}
+@item task
+ @kbd{/k}
+@end table
+
+So, as an example, @kbd{M-x find-tag bidule/b} will go directly to the
+body of the package @var{bidule} while @kbd{M-x find-tag bidule} will
+just search for any tag @var{bidule}.
 
 @item
 In assembler code, labels appearing at the beginning of a line,
@@ -1132,6 +1165,9 @@ in the file.
 In Fortran code, functions, subroutines and blockdata are tags.
 
 @item
+In makefiles, targets are tags.
+
+@item
 In Objective C code, tags include Objective C definitions for classes,
 class categories, methods, and protocols.
 
@@ -1145,7 +1181,7 @@ In Perl code, the tags are the procedures defined by the @code{sub},
 to tag global variables.
 
 @item
-In Postscript code, the tags are the functions.
+In PostScript code, the tags are the functions.
 
 @item
 In Prolog code, a tag name appears at the left margin.
@@ -1155,10 +1191,10 @@ In Python code, @code{def} or @code{class} at the beginning of a line
 generate a tag.
 @end itemize
 
-  You can also generate tags based on regexp matching 
-(@pxref{Etags Regexps}) to handle other formats and languages.
+  You can also generate tags based on regexp matching (@pxref{Etags
+Regexps}) to handle other formats and languages.
 
-@node Create Tags Table, Etags Regexps, Tag Syntax, Tags
+@node Create Tags Table
 @subsection Creating Tags Tables
 @cindex @code{etags} program
 
@@ -1251,7 +1287,7 @@ knows, and the file name rules for guessing the language. It also prints
 a list of all the available @code{etags} options, together with a short
 explanation.
 
-@node Etags Regexps, Select Tags Table, Create Tags Table, Tags
+@node Etags Regexps
 @subsection Etags Regexps
 
   The @samp{--regex} option provides a general way of recognizing tags
index abb9efb..d5d83b6 100644 (file)
@@ -238,8 +238,11 @@ Packages
 
 * Packages::            Introduction to XEmacs Packages.
 * Package Terminology:: Understanding different kinds of packages.
-* Using Packages::      How to install and use packages.
+* Installing Packages:: How to install packages.
 * Building Packages::   Building packages from sources.
+* Local.rules File::    An important part of building packages.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
 
 Basic Editing Commands
 
index e103bcd..dc6c984 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index e3804b6..03720ca 100644 (file)
@@ -69,7 +69,7 @@ define decode_object
   if $type == Lisp_Type_Record
     set $lheader = ((struct lrecord_header *) $val)
     set $lrecord_type = ($lheader->type)
-    set $imp = lrecord_implementations_table[$lrecord_type]
+    set $imp = ((struct lrecord_implementation *) lrecord_implementations_table[(int) $lrecord_type])
   else
     set $lrecord_type = -1
     set $lheader = -1
@@ -178,9 +178,6 @@ Use when debugging temacs, not xemacs!
 Use this when temacs builds successfully, but xemacs does not.
 end
 
-# if you use Purify, do this:
-# export PURIFYOPTIONS='-pointer-mask=0x0fffffff'
-
 define ldp
   printf "%s", "Lisp => "
   call debug_print($arg0)
index bbca052..dfc1cce 100644 (file)
        (Vcharset_thai_tis620): Likewise.
        (Vcharset_katakana_jisx0201): Likewise.
 
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-02-06  Martin Buchholz  <martin@xemacs.org>
+
+       Fixes crashes in kill-emacs on some systems.
+       * process-unix.c (unix_kill_child_process):
+       It's OK for kill() to fail with ESRCH.
+
+2001-02-07  Martin Buchholz  <martin@xemacs.org>
+
+       Contortions to make .gdbinit tricks work on most systems.
+       * alloc.c (dbg_inhibit_dbg_symbol_deletion): Keep debugger info.
+       * alloc.c (dbg_valmask): Make non-const.
+       * alloc.c (dbg_typemask): Make non-const.
+       * alloc.c (dbg_USE_UNION_TYPE): Make non-const.
+       * alloc.c (dbg_valbits): Make non-const.
+       * alloc.c (dbg_gctypebits): Make non-const.
+       * .gdbinit (decode_object): Make it work with AIX cc.
+
+2001-02-06  Martin Buchholz  <martin@xemacs.org>
+
+       * elhash.c (make_general_lisp_hash_table):
+       Use simpler and more efficient calloc to clear entries.
+
+2001-02-07  Martin Buchholz  <martin@xemacs.org>
+
+       * window.c (window_scroll): Work around an AIX C compiler bug.
+       Fixes 'scroll-up' does nothing problem with xlC.
+
+2001-02-05  Martin Buchholz  <martin@xemacs.org>
+
+       * .gdbinit: Remove obsolete comment.
+
+2001-01-31  Mike Alexander  <mta@arbortext.com>
+
+       * select.c (Fown_selection_internal): Set owned_p for device
+       method correctly.
+
+2001-02-01  Martin Buchholz  <martin@xemacs.org>
+
+       Port to g++ 2.97.
+       "not" cannot be used as a macro name as it is an operator in C++
+       * config.h.in: Stop #defining `not'.
+       * chartab.c (check_category_char): not ==> not_p
+       * chartab.h: Likewise.
+       * regex.c (re_match_2_internal): Likewise.
+
+2001-02-02  Martin Buchholz  <martin@xemacs.org>
+
+       * lisp-disunion.h: Fix up comments.
+
+2001-01-31  Martin Buchholz  <martin@xemacs.org>
+
+       * keymap.c (define_key_check_and_coerce_keysym):
+       (syms_of_keymap):
+       Support mouse-6 and mouse-7 bindings in the obvious way.
+
+2001-02-01  Martin Buchholz  <martin@xemacs.org>
+
+       * m/hp9000s300.h (UNEXEC): Check for HPUX, not !BSD.
+
+2001-01-30  Martin Buchholz  <martin@xemacs.org>
+
+       Previous patch changing DEFVAR_INT to use EMACS_INT was incomplete.
+       Previous patch missed DEFVAR_INT_MAGIC.
+       Make sure future DEFVAR_foo use correct types.
+       * symeval.h (DEFVAR_SYMVAL_FWD_FIXNUM): New.
+       * (DEFVAR_SYMVAL_FWD_INT): Add type checking.
+       * (DEFVAR_SYMVAL_FWD_OBJECT): Add type checking.
+       * (DEFVAR_INT_MAGIC): Use DEFVAR_SYMVAL_FWD_FIXNUM.
+       * (DEFVAR_INT): Likewise.
+       * redisplay.c (vertical_clip): Should be of type Fixnum.
+       * redisplay.c (horizontal_clip): Likewise.
+       * lisp.h (dump_add_opaque_int): New.
+       (dump_add_opaque_fixnum): New.
+
+2001-01-29  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-widget.c (check_valid_int_or_function): allow symbols
+       since they can be eval'ed
+
+2001-01-29  Martin Buchholz  <martin@xemacs.org>
+
+       * lisp.h (ALIGNOF): Make it work on non-gcc C++ compilers.
+       Oops, XEmacs redefines `class'.  Use `typename' instead.
+
+2001-01-28  Martin Buchholz  <martin@xemacs.org>
+
+       * dumper.c: Fix C++ compile errors.
+
+2001-01-29  Martin Buchholz  <martin@xemacs.org>
+
+       * tparam.c: Use correct prototypes.
+
+2001-01-28  Martin Buchholz  <martin@xemacs.org>
+
+       * sysproc.h: #include util.h for NetBSD's openpty.
+
+2001-01-27  Martin Buchholz  <martin@xemacs.org>
+
+       More 64-bit correctness.
+       The C value of a DEFVAR_INT should be of type EMACS_INT, not int.
+       Use a typedef `fixnum' for the type used for DEFVAR_INT.
+       Fix up comments.
+       This finally finishes the 64-bit SGI port.
+       Fixes things like (let ((gc-cons-threshold most-positive-fixnum)) ...).
+       * symbols.c: Fix up comments and type casts.
+       * symbols.c (do_symval_forwarding): s/int/Fixnum/g
+       * symbols.c (store_symval_forwarding): s/int/Fixnum/g
+       * symeval.h (Fixnum): New type.
+       * symeval.h (symbol_value_type): Fix up comment.
+
+       * commands.h:
+       * nt.c:
+       * emacs.c:
+       * data.c:
+       * redisplay.c:
+       * abbrev.c:
+       * dired-msw.c:
+       * event-Xt.c:
+       * eldap.c:
+       * window.c:
+       * sound.c:
+       * event-stream.c:
+       * eval.c:
+       * buffer.c:
+       * mule-canna.c: A million DEFVAR_INTs here...
+       * mule-canna.c (count_char): s/int */Fixnum */g in arglist.
+       * extents.c:
+       * cmdloop.c:
+       * lisp.h:
+       * select-x.c:
+       * console-x.h:
+       * event-msw.c:
+       * mule-wnnfns.c:
+       * hpplay.c:
+       * ralloc.c:
+       * alloc.c:
+       * keymap.c:
+       * profile.c:
+       s/int/Fixnum/g in DEFVAR_INT declarations.
+
+2001-01-26  Martin Buchholz  <martin@xemacs.org>
+
+       Port pdump to SGI alignment-sensitive environment.
+       Lisp Object sizeof methods now return aligned sizes.  Rely on that.
+       Eliminate is_lrecord since Lisp_Objects sizeof methods are now all
+       properly aligned.
+       Define and use aligned reading and writing macros.
+       Use buffered stdio instead of posix i/o for faster dumping.
+       Eliminate kludgy 256 byte space for header.
+       Read and write from dump file using structs for alignment safety.
+       * dumper.c (pdump_align_stream): New.
+       * dumper.c (PDUMP_ALIGN_OUTPUT): New.
+       * dumper.c (PDUMP_READ_ALIGNED): New.
+       * dumper.c (PDUMP_WRITE_ALIGNED): New.
+       * dumper.c (pdump_static_Lisp_Object): New struct.
+       * dumper.c (pdump_static_pointer): New struct.
+       * dumper.c (pdump_entry_list_element): Remove is_lrecord member.
+       * dumper.c (pdump_add_entry): Remove is_lrecord parameter.
+       * dumper.c (pdump_dump_data): Rely on sizeof method alignment.
+       * dumper.c (pdump_allocate_offset): Rely on sizeof method alignment.
+
+       * dumper.c (pdump_backtrace):
+       * dumper.c (pdump_get_indirect_count):
+       * dumper.c (pdump_register_object):
+       * dumper.c (pdump_register_struct):
+       * dumper.c (pdump_reloc_one):
+       * dumper.c (pdump_scan_by_alignment):
+       * dumper.c (pdump_dump_from_root_struct_ptrs):
+       * dumper.c (pdump_dump_opaques):
+       * dumper.c (pdump_dump_rtables):
+       * dumper.c (pdump_dump_from_root_objects):
+       * dumper.c (pdump):
+       * dumper.c (pdump_load_finish):
+       Use aligned reading and writing.
+
+       * dumper.c (pdump_free): Make static.
+       * dumper.c (pdump_hFile): Likewise.
+       * dumper.c (pdump_hMap): Likewise.
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.
index 2b2f00e..5687ee1 100644 (file)
@@ -70,7 +70,7 @@ Lisp_Object Vlast_abbrev;
 Lisp_Object Vlast_abbrev_text;
 
 /* Character address of start of last abbrev expanded */
-int last_abbrev_location;
+Fixnum last_abbrev_location;
 
 /* Hook to run before expanding any abbrev.  */
 Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
index 07e5775..23a6a91 100644 (file)
@@ -85,8 +85,8 @@ EXFUN (Fgarbage_collect, 0);
 #endif
 
 #ifdef DEBUG_XEMACS
-static int debug_allocation;
-static int debug_allocation_backtrace_length;
+static Fixnum debug_allocation;
+static Fixnum debug_allocation_backtrace_length;
 #endif
 
 /* Number of bytes of consing done since the last gc */
@@ -447,17 +447,31 @@ disksave_object_finalization_1 (void)
    about expressions in src/.gdbinit.  See src/.gdbinit or src/.dbxrc
    to see how this is used.  */
 
-const EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS;
-const EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1;
+EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS;
+EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1;
 
 #ifdef USE_UNION_TYPE
-const unsigned char dbg_USE_UNION_TYPE = 1;
+unsigned char dbg_USE_UNION_TYPE = 1;
 #else
-const unsigned char dbg_USE_UNION_TYPE = 0;
+unsigned char dbg_USE_UNION_TYPE = 0;
 #endif
 
-const unsigned char dbg_valbits = VALBITS;
-const unsigned char dbg_gctypebits = GCTYPEBITS;
+unsigned char dbg_valbits = VALBITS;
+unsigned char dbg_gctypebits = GCTYPEBITS;
+
+/* On some systems, the above definitions will be optimized away by
+   the compiler or linker unless they are referenced in some function. */
+long dbg_inhibit_dbg_symbol_deletion (void);
+long
+dbg_inhibit_dbg_symbol_deletion (void)
+{
+  return
+    (dbg_valmask +
+     dbg_typemask +
+     dbg_USE_UNION_TYPE +
+     dbg_valbits +
+     dbg_gctypebits);
+}
 
 /* Macros turned into functions for ease of debugging.
    Debuggers don't know about macros! */
index 4ec3d0c..6cbfb9c 100644 (file)
@@ -210,8 +210,8 @@ Lisp_Object Qfind_file_compare_truenames;
 Lisp_Object Qswitch_to_buffer;
 
 /* Two thresholds controlling how much undo information to keep.  */
-int undo_threshold;
-int undo_high_threshold;
+Fixnum undo_threshold;
+Fixnum undo_high_threshold;
 
 int find_file_compare_truenames;
 int find_file_use_truenames;
index 8f88a74..cd30619 100644 (file)
@@ -3328,7 +3328,7 @@ check_category_table (Lisp_Object object, Lisp_Object default_)
 
 int
 check_category_char (Emchar ch, Lisp_Object table,
-                    unsigned int designator, unsigned int not)
+                    unsigned int designator, unsigned int not_p)
 {
   REGISTER Lisp_Object temp;
   Lisp_Char_Table *ctbl;
@@ -3339,10 +3339,10 @@ check_category_char (Emchar ch, Lisp_Object table,
   ctbl = XCHAR_TABLE (table);
   temp = get_char_table (ch, ctbl);
   if (NILP (temp))
-    return not;
+    return not_p;
 
   designator -= ' ';
-  return bit_vector_bit (XBIT_VECTOR (temp), designator) ? !not : not;
+  return bit_vector_bit (XBIT_VECTOR (temp), designator) ? !not_p : not_p;
 }
 
 DEFUN ("check-category-at", Fcheck_category_at, 2, 4, 0, /*
index 7d62ac2..ca71025 100644 (file)
@@ -374,7 +374,7 @@ EXFUN (Fget_char_attribute, 3);
 
 #ifdef MULE
 int check_category_char(Emchar ch, Lisp_Object ctbl,
-                       unsigned int designator, unsigned int not);
+                       unsigned int designator, unsigned int not_p);
 
 extern Lisp_Object Vstandard_category_table;
 
index 80a99dc..024ed8a 100644 (file)
@@ -38,7 +38,7 @@ Boston, MA 02111-1307, USA.  */
 #include "window.h"
 
 /* Current depth in recursive edits.  */
-int command_loop_level;
+Fixnum command_loop_level;
 
 #ifndef LISP_COMMAND_LOOP
 /* Form to evaluate (if non-nil) when Emacs is started.  */
index 0c1d755..ef5bcb7 100644 (file)
@@ -110,7 +110,7 @@ extern Lisp_Object Vcommand_loop;
 /* #endif */
 DECLARE_DOESNT_RETURN (initial_command_loop (Lisp_Object));
 Lisp_Object call_command_loop (Lisp_Object catch_errors);
-extern int command_loop_level;
+extern Fixnum command_loop_level;
 
 extern Lisp_Object Vkeyboard_translate_table;
 extern Lisp_Object Vlast_input_time;
index 695312a..eb0f45e 100644 (file)
@@ -345,6 +345,7 @@ void *alloca ();
 #undef HAVE_ISASTREAM  /* SysV streams */
 #undef HAVE_PTY_H      /* Linux, Tru64 openpty */
 #undef HAVE_LIBUTIL_H  /* BSD openpty */
+#undef HAVE_UTIL_H     /* NetBSD openpty */
 #undef HAVE_STROPTS_H  /* SysV streams */
 #undef HAVE_STRTIO_H   /* SysV streams TIOCSIGNAL */
 
@@ -835,7 +836,6 @@ on various systems. */
 #  define new   c_new
 #  define this  c_this
 #  define catch c_catch
-#  define not   c_not
 
 #  define EXTERN_C extern "C"
 # else /* C code */
index 2605439..d664360 100644 (file)
@@ -373,7 +373,7 @@ extern Lisp_Object Vdefault_x_device;
 /* Number of pixels below each line. */
 extern int x_interline_space; /* #### implement me */
 
-extern int x_selection_timeout;
+extern Fixnum x_selection_timeout;
 
 struct frame *x_any_window_to_frame (struct device *d, Window);
 struct frame *x_any_widget_or_parent_to_frame (struct device *d,
index 09cc4fd..b90b3ca 100644 (file)
@@ -71,7 +71,7 @@ Lisp_Object Qfloatp;
 
 int debug_issue_ebola_notices;
 
-int debug_ebola_backtrace_length;
+Fixnum debug_ebola_backtrace_length;
 
 int
 eq_with_ebola_notice (Lisp_Object obj1, Lisp_Object obj2)
index 73dfe42..73c5d10 100644 (file)
@@ -90,7 +90,7 @@ Boston, MA 02111-1307, USA.  */
 
 
 static int mswindows_ls_sort_case_insensitive;
-static int mswindows_ls_round_file_size;
+static Fixnum mswindows_ls_round_file_size;
 
 Lisp_Object            Qmswindows_insert_directory;
 
index 56787a1..8def746 100644 (file)
@@ -1,5 +1,6 @@
 /* Portable data dumper for XEmacs.
    Copyright (C) 1999-2000 Olivier Galibert
+   Copyright (C) 2001 Martin Buchholz
 
 This file is part of XEmacs.
 
@@ -64,6 +65,18 @@ typedef struct
   Dynarr_declare (pdump_root_struct_ptr);
 } pdump_root_struct_ptr_dynarr;
 
+typedef struct
+{
+  Lisp_Object *address;
+  Lisp_Object value;
+} pdump_static_Lisp_Object;
+
+typedef struct
+{
+  char **address; /* char * for ease of doing relocation */
+  char * value;
+} pdump_static_pointer;
+
 static pdump_opaque_dynarr *pdump_opaques;
 static pdump_root_struct_ptr_dynarr *pdump_root_struct_ptrs;
 static Lisp_Object_ptr_dynarr *pdump_root_objects;
@@ -116,6 +129,33 @@ dump_add_weak_object_chain (Lisp_Object *varaddress)
 }
 \f
 
+inline static void
+pdump_align_stream (FILE *stream, size_t alignment)
+{
+  long offset = ftell (stream);
+  long adjustment = ALIGN_SIZE (offset, alignment) - offset;
+  if (adjustment)
+    fseek (stream, adjustment, SEEK_CUR);
+}
+
+#define PDUMP_ALIGN_OUTPUT(type) pdump_align_stream (pdump_out, ALIGNOF (type))
+
+#define PDUMP_WRITE(type, object) \
+fwrite (&object, sizeof (object), 1, pdump_out);
+
+#define PDUMP_WRITE_ALIGNED(type, object) do { \
+  PDUMP_ALIGN_OUTPUT (type);                   \
+  PDUMP_WRITE (type, object);                  \
+} while (0)
+
+#define PDUMP_READ(ptr, type) \
+(((type *) (ptr = (char*) (((type *) ptr) + 1)))[-1])
+
+#define PDUMP_READ_ALIGNED(ptr, type) \
+((ptr = (char *) ALIGN_PTR (ptr, ALIGNOF (type))), PDUMP_READ (ptr, type))
+
+\f
+
 typedef struct
 {
   const struct lrecord_description *desc;
@@ -150,13 +190,14 @@ pdump_objects_unmark (void)
 
 
 /* The structure of the file
- *
- * 0                   - header
- * 256                 - dumped objects
- * stab_offset         - nb_root_struct_ptrs*pair(void *, adr) for pointers to structures
- *                     - nb_opaques*pair(void *, size) for raw bits to restore
- *                     - relocation table
- *                      - wired variable address/value couples with the count preceding the list
+ 0             - header
+               - dumped objects
+ stab_offset   - nb_root_struct_ptrs*pair(void *, adr)
+                 for pointers to structures
+               - nb_opaques*pair(void *, size) for raw bits to restore
+               - relocation table
+               - root lisp object address/value couples with the count
+                 preceding the list
  */
 
 
@@ -173,17 +214,18 @@ typedef struct
   int nb_opaques;
 } pdump_header;
 
-char *pdump_start, *pdump_end;
+char *pdump_start;
+char *pdump_end;
 static size_t pdump_length;
 
 #ifdef WIN32_NATIVE
 /* Handle for the dump file */
-HANDLE pdump_hFile = INVALID_HANDLE_VALUE;
+static HANDLE pdump_hFile = INVALID_HANDLE_VALUE;
 /* Handle for the file mapping object for the dump file */
-HANDLE pdump_hMap = INVALID_HANDLE_VALUE;
+static HANDLE pdump_hMap = INVALID_HANDLE_VALUE;
 #endif
 
-void (*pdump_free) (void);
+static void (*pdump_free) (void);
 
 static const unsigned char pdump_align_table[256] =
 {
@@ -211,7 +253,6 @@ typedef struct pdump_entry_list_elmt
   const void *obj;
   size_t size;
   int count;
-  int is_lrecord;
   EMACS_INT save_offset;
 } pdump_entry_list_elmt;
 
@@ -245,6 +286,7 @@ static unsigned long cur_offset;
 static size_t max_size;
 static int pdump_fd;
 static void *pdump_buf;
+static FILE *pdump_out;
 
 #ifdef UTF2000
 #define PDUMP_HASHSIZE 20000001
@@ -282,7 +324,8 @@ pdump_get_entry (const void *obj)
 }
 
 static void
-pdump_add_entry (pdump_entry_list *list, const void *obj, size_t size, int count, int is_lrecord)
+pdump_add_entry (pdump_entry_list *list, const void *obj, size_t size,
+                int count)
 {
   pdump_entry_list_elmt *e;
   int align;
@@ -304,15 +347,12 @@ pdump_add_entry (pdump_entry_list *list, const void *obj, size_t size, int count
   e->obj = obj;
   e->size = size;
   e->count = count;
-  e->is_lrecord = is_lrecord;
   list->first = e;
 
   list->count += count;
   pdump_hash[pos] = e;
 
   align = pdump_align_table[size & 255];
-  if (align < 2 && is_lrecord)
-    align = 2;
 
   if (align < list->align)
     list->align = align;
@@ -361,22 +401,28 @@ pdump_backtrace (void)
   for (i=0;i<depth;i++)
     {
       if (!backtrace[i].obj)
-       stderr_out ("  - ind. (%d, %d)\n", backtrace[i].position, backtrace[i].offset);
+       stderr_out ("  - ind. (%d, %d)\n",
+                   backtrace[i].position,
+                   backtrace[i].offset);
       else
        {
          stderr_out ("  - %s (%d, %d)\n",
-                  LHEADER_IMPLEMENTATION (backtrace[i].obj)->name,
-                  backtrace[i].position,
-                  backtrace[i].offset);
+                     LHEADER_IMPLEMENTATION (backtrace[i].obj)->name,
+                     backtrace[i].position,
+                     backtrace[i].offset);
        }
     }
 }
 
 static void pdump_register_object (Lisp_Object obj);
-static void pdump_register_struct (const void *data, const struct struct_description *sdesc, int count);
+static void pdump_register_struct (const void *data,
+                                  const struct struct_description *sdesc,
+                                  int count);
 
 static EMACS_INT
-pdump_get_indirect_count (EMACS_INT code, const struct lrecord_description *idesc, const void *idata)
+pdump_get_indirect_count (EMACS_INT code,
+                         const struct lrecord_description *idesc,
+                         const void *idata)
 {
   EMACS_INT count;
   const void *irdata;
@@ -400,7 +446,8 @@ pdump_get_indirect_count (EMACS_INT code, const struct lrecord_description *ides
       count = *(Bytecount *)irdata;
       break;
     default:
-      stderr_out ("Unsupported count type : %d (line = %d, code=%ld)\n", idesc[line].type, line, (long)code);
+      stderr_out ("Unsupported count type : %d (line = %d, code=%ld)\n",
+                 idesc[line].type, line, (long)code);
       pdump_backtrace ();
       abort ();
     }
@@ -441,24 +488,21 @@ pdump_register_sub (const void *data, const struct lrecord_description *desc, in
              count = pdump_get_indirect_count (count, desc, data);
 
            pdump_add_entry (&pdump_opaque_data_list,
-                            *(void **)rdata,
-                            count,
-                            1,
-                            0);
+                            *(void **)rdata, count, 1);
            break;
          }
        case XD_C_STRING:
          {
            const char *str = *(const char **)rdata;
            if (str)
-             pdump_add_entry (&pdump_opaque_data_list, str, strlen (str)+1, 1, 0);
+             pdump_add_entry (&pdump_opaque_data_list, str, strlen (str)+1, 1);
            break;
          }
        case XD_DOC_STRING:
          {
            const char *str = *(const char **)rdata;
            if ((EMACS_INT)str > 0)
-             pdump_add_entry (&pdump_opaque_data_list, str, strlen (str)+1, 1, 0);
+             pdump_add_entry (&pdump_opaque_data_list, str, strlen (str)+1, 1);
            break;
          }
        case XD_LISP_OBJECT:
@@ -514,6 +558,7 @@ static void
 pdump_register_object (Lisp_Object obj)
 {
   struct lrecord_header *objh;
+  const struct lrecord_implementation *imp;
 
   if (!POINTER_TYPE_P (XTYPE (obj)))
     return;
@@ -525,7 +570,9 @@ pdump_register_object (Lisp_Object obj)
   if (pdump_get_entry (objh))
     return;
 
-  if (LHEADER_IMPLEMENTATION (objh)->description)
+  imp = LHEADER_IMPLEMENTATION (objh);
+
+  if (imp->description)
     {
       int me = depth++;
       if (me>65536)
@@ -539,26 +586,25 @@ pdump_register_object (Lisp_Object obj)
 
       pdump_add_entry (pdump_object_table + objh->type,
                       objh,
-                      LHEADER_IMPLEMENTATION (objh)->static_size ?
-                      LHEADER_IMPLEMENTATION (objh)->static_size :
-                      LHEADER_IMPLEMENTATION (objh)->size_in_bytes_method (objh),
-                      1,
+                      imp->static_size ?
+                      imp->static_size :
+                      imp->size_in_bytes_method (objh),
                       1);
-      pdump_register_sub (objh,
-                         LHEADER_IMPLEMENTATION (objh)->description,
-                         me);
+      pdump_register_sub (objh, imp->description, me);
       --depth;
     }
   else
     {
       pdump_alert_undump_object[objh->type]++;
-      stderr_out ("Undumpable object type : %s\n", LHEADER_IMPLEMENTATION (objh)->name);
+      stderr_out ("Undumpable object type : %s\n", imp->name);
       pdump_backtrace ();
     }
 }
 
 static void
-pdump_register_struct (const void *data, const struct struct_description *sdesc, int count)
+pdump_register_struct (const void *data,
+                      const struct struct_description *sdesc,
+                      int count)
 {
   if (data && !pdump_get_entry (data))
     {
@@ -574,10 +620,7 @@ pdump_register_struct (const void *data, const struct struct_description *sdesc,
       backtrace[me].offset = 0;
 
       pdump_add_entry (pdump_get_entry_list (sdesc),
-                      data,
-                      sdesc->size,
-                      count,
-                      0);
+                      data, sdesc->size, count);
       for (i=0; i<count; i++)
        {
          pdump_register_sub (((char *)data) + sdesc->size*i,
@@ -589,7 +632,8 @@ pdump_register_struct (const void *data, const struct struct_description *sdesc,
 }
 
 static void
-pdump_dump_data (pdump_entry_list_elmt *elmt, const struct lrecord_description *desc)
+pdump_dump_data (pdump_entry_list_elmt *elmt,
+                const struct lrecord_description *desc)
 {
   size_t size = elmt->size;
   int count = elmt->count;
@@ -683,17 +727,16 @@ pdump_dump_data (pdump_entry_list_elmt *elmt, const struct lrecord_description *
                default:
                  stderr_out ("Unsupported dump type : %d\n", desc[pos].type);
                  abort ();
-               };
+               }
            }
        }
     }
-  write (pdump_fd, desc ? pdump_buf : elmt->obj, size*count);
-  if (elmt->is_lrecord && ((size*count) & 3))
-    write (pdump_fd, "\0\0\0", 4-((size*count) & 3));
+  fwrite (desc ? pdump_buf : elmt->obj, size, count, pdump_out);
 }
 
 static void
-pdump_reloc_one (void *data, EMACS_INT delta, const struct lrecord_description *desc)
+pdump_reloc_one (void *data, EMACS_INT delta,
+                const struct lrecord_description *desc)
 {
   int pos;
 
@@ -767,9 +810,10 @@ pdump_reloc_one (void *data, EMACS_INT delta, const struct lrecord_description *
 }
 
 static void
-pdump_allocate_offset (pdump_entry_list_elmt *elmt, const struct lrecord_description *desc)
+pdump_allocate_offset (pdump_entry_list_elmt *elmt,
+                      const struct lrecord_description *desc)
 {
-  size_t size = (elmt->is_lrecord ? (elmt->size + 3) & ~3 : elmt->size)*elmt->count;
+  size_t size = elmt->count * elmt->size;
   elmt->save_offset = cur_offset;
   if (size>max_size)
     max_size = size;
@@ -777,7 +821,8 @@ pdump_allocate_offset (pdump_entry_list_elmt *elmt, const struct lrecord_descrip
 }
 
 static void
-pdump_scan_by_alignment (void (*f)(pdump_entry_list_elmt *, const struct lrecord_description *))
+pdump_scan_by_alignment (void (*f)(pdump_entry_list_elmt *,
+                                  const struct lrecord_description *))
 {
   int align, i;
   const struct lrecord_description *idesc;
@@ -821,17 +866,18 @@ pdump_scan_by_alignment (void (*f)(pdump_entry_list_elmt *, const struct lrecord
 }
 
 static void
-pdump_dump_from_root_struct_ptrs (void)
+pdump_dump_root_struct_ptrs (void)
 {
   int i;
-  for (i = 0; i < Dynarr_length (pdump_root_struct_ptrs); i++)
+  size_t count = Dynarr_length (pdump_root_struct_ptrs);
+  pdump_static_pointer *data = alloca_array (pdump_static_pointer, count);
+  for (i = 0; i < count; i++)
     {
-      EMACS_INT adr;
-      pdump_root_struct_ptr *info = Dynarr_atp (pdump_root_struct_ptrs, i);
-      write (pdump_fd, &info->ptraddress, sizeof (info->ptraddress));
-      adr = pdump_get_entry (*(info->ptraddress))->save_offset;
-      write (pdump_fd, &adr, sizeof (adr));
+      data[i].address = (char **) Dynarr_atp (pdump_root_struct_ptrs, i)->ptraddress;
+      data[i].value   = (char *) pdump_get_entry (* data[i].address)->save_offset;
     }
+  PDUMP_ALIGN_OUTPUT (pdump_static_pointer);
+  fwrite (data, sizeof (pdump_static_pointer), count, pdump_out);
 }
 
 static void
@@ -841,8 +887,8 @@ pdump_dump_opaques (void)
   for (i = 0; i < Dynarr_length (pdump_opaques); i++)
     {
       pdump_opaque *info = Dynarr_atp (pdump_opaques, i);
-      write (pdump_fd, info, sizeof (*info));
-      write (pdump_fd, info->varaddress, info->size);
+      PDUMP_WRITE_ALIGNED (pdump_opaque, *info);
+      fwrite (info->varaddress, info->size, 1, pdump_out);
     }
 }
 
@@ -860,32 +906,32 @@ pdump_dump_rtables (void)
        continue;
       rt.desc = lrecord_implementations_table[i]->description;
       rt.count = pdump_object_table[i].count;
-      write (pdump_fd, &rt, sizeof (rt));
+      PDUMP_WRITE_ALIGNED (pdump_reloc_table, rt);
       while (elmt)
        {
          EMACS_INT rdata = pdump_get_entry (elmt->obj)->save_offset;
-         write (pdump_fd, &rdata, sizeof (rdata));
+         PDUMP_WRITE_ALIGNED (EMACS_INT, rdata);
          elmt = elmt->next;
        }
     }
 
   rt.desc = 0;
   rt.count = 0;
-  write (pdump_fd, &rt, sizeof (rt));
+  PDUMP_WRITE_ALIGNED (pdump_reloc_table, rt);
 
   for (i=0; i<pdump_struct_table.count; i++)
     {
       elmt = pdump_struct_table.list[i].list.first;
       rt.desc = pdump_struct_table.list[i].sdesc->description;
       rt.count = pdump_struct_table.list[i].list.count;
-      write (pdump_fd, &rt, sizeof (rt));
+      PDUMP_WRITE_ALIGNED (pdump_reloc_table, rt);
       while (elmt)
        {
          EMACS_INT rdata = pdump_get_entry (elmt->obj)->save_offset;
          int j;
          for (j=0; j<elmt->count; j++)
            {
-             write (pdump_fd, &rdata, sizeof (rdata));
+             PDUMP_WRITE_ALIGNED (EMACS_INT, rdata);
              rdata += elmt->size;
            }
          elmt = elmt->next;
@@ -893,48 +939,55 @@ pdump_dump_rtables (void)
     }
   rt.desc = 0;
   rt.count = 0;
-  write (pdump_fd, &rt, sizeof (rt));
+  PDUMP_WRITE_ALIGNED (pdump_reloc_table, rt);
 }
 
 static void
-pdump_dump_from_root_objects (void)
+pdump_dump_root_objects (void)
 {
-  size_t count = Dynarr_length (pdump_root_objects) + Dynarr_length (pdump_weak_object_chains);
+  size_t count = (Dynarr_length (pdump_root_objects) +
+                 Dynarr_length (pdump_weak_object_chains));
   size_t i;
 
-  write (pdump_fd, &count, sizeof (count));
+  PDUMP_WRITE_ALIGNED (size_t, count);
+  PDUMP_ALIGN_OUTPUT (pdump_static_Lisp_Object);
 
   for (i=0; i<Dynarr_length (pdump_root_objects); i++)
     {
-      Lisp_Object obj = * Dynarr_at (pdump_root_objects, i);
-      if (POINTER_TYPE_P (XTYPE (obj)))
-       obj = wrap_object ((void *) pdump_get_entry (XRECORD_LHEADER (obj))->save_offset);
-      write (pdump_fd, Dynarr_atp (pdump_root_objects, i), sizeof (Dynarr_atp (pdump_root_objects, i)));
-      write (pdump_fd, &obj, sizeof (obj));
+      pdump_static_Lisp_Object obj;
+      obj.address = Dynarr_at (pdump_root_objects, i);
+      obj.value   = * obj.address;
+      
+      if (POINTER_TYPE_P (XTYPE (obj.value)))
+       obj.value = wrap_object ((void *) pdump_get_entry (XRECORD_LHEADER (obj.value))->save_offset);
+      
+      PDUMP_WRITE (pdump_static_Lisp_Object, obj);
     }
 
   for (i=0; i<Dynarr_length (pdump_weak_object_chains); i++)
     {
-      Lisp_Object obj = * Dynarr_at (pdump_weak_object_chains, i);
       pdump_entry_list_elmt *elmt;
+      pdump_static_Lisp_Object obj;
 
+      obj.address = Dynarr_at (pdump_weak_object_chains, i);
+      obj.value   = * obj.address;
+      
       for (;;)
        {
          const struct lrecord_description *desc;
          int pos;
-         elmt = pdump_get_entry (XRECORD_LHEADER (obj));
+         elmt = pdump_get_entry (XRECORD_LHEADER (obj.value));
          if (elmt)
            break;
-         desc = XRECORD_LHEADER_IMPLEMENTATION (obj)->description;
+         desc = XRECORD_LHEADER_IMPLEMENTATION (obj.value)->description;
          for (pos = 0; desc[pos].type != XD_LO_LINK; pos++)
            assert (desc[pos].type != XD_END);
 
-         obj = *(Lisp_Object *)(desc[pos].offset + (char *)(XRECORD_LHEADER (obj)));
+         obj.value = *(Lisp_Object *)(desc[pos].offset + (char *)(XRECORD_LHEADER (obj.value)));
        }
-      obj = wrap_object ((void *) elmt->save_offset);
+      obj.value = wrap_object ((void *) elmt->save_offset);
 
-      write (pdump_fd, Dynarr_atp (pdump_weak_object_chains, i), sizeof (Lisp_Object *));
-      write (pdump_fd, &obj, sizeof (obj));
+      PDUMP_WRITE (pdump_static_Lisp_Object, obj);
     }
 }
 
@@ -944,7 +997,7 @@ pdump (void)
   int i;
   Lisp_Object t_console, t_device, t_frame;
   int none;
-  pdump_header hd;
+  pdump_header header;
 
   flush_all_buffer_local_cache ();
 
@@ -996,37 +1049,41 @@ pdump (void)
       pdump_register_struct (*(info.ptraddress), info.desc, 1);
     }
 
-  memcpy (hd.signature, PDUMP_SIGNATURE, PDUMP_SIGNATURE_LEN);
-  hd.id = dump_id;
-  hd.reloc_address = 0;
-  hd.nb_root_struct_ptrs = Dynarr_length (pdump_root_struct_ptrs);
-  hd.nb_opaques = Dynarr_length (pdump_opaques);
+  memcpy (header.signature, PDUMP_SIGNATURE, PDUMP_SIGNATURE_LEN);
+  header.id = dump_id;
+  header.reloc_address = 0;
+  header.nb_root_struct_ptrs = Dynarr_length (pdump_root_struct_ptrs);
+  header.nb_opaques = Dynarr_length (pdump_opaques);
 
-  cur_offset = 256;
+  cur_offset = ALIGN_SIZE (sizeof (header), ALIGNOF (max_align_t));
   max_size = 0;
 
   pdump_scan_by_alignment (pdump_allocate_offset);
+  cur_offset = ALIGN_SIZE (cur_offset, ALIGNOF (max_align_t));
+  header.stab_offset = cur_offset;
 
   pdump_buf = xmalloc (max_size);
   /* Avoid use of the `open' macro.  We want the real function. */
 #undef open
   pdump_fd = open (EMACS_PROGNAME ".dmp",
                   O_WRONLY | O_CREAT | O_TRUNC | OPEN_BINARY, 0666);
-  hd.stab_offset = (cur_offset + 3) & ~3;
+  pdump_out = fdopen (pdump_fd, "w");
 
-  write (pdump_fd, &hd, sizeof (hd));
-  lseek (pdump_fd, 256, SEEK_SET);
+  fwrite (&header, sizeof (header), 1, pdump_out);
+  PDUMP_ALIGN_OUTPUT (max_align_t);
 
   pdump_scan_by_alignment (pdump_dump_data);
 
-  lseek (pdump_fd, hd.stab_offset, SEEK_SET);
+  fseek (pdump_out, header.stab_offset, SEEK_SET);
 
-  pdump_dump_from_root_struct_ptrs ();
+  pdump_dump_root_struct_ptrs ();
   pdump_dump_opaques ();
   pdump_dump_rtables ();
-  pdump_dump_from_root_objects ();
+  pdump_dump_root_objects ();
 
+  fclose (pdump_out);
   close (pdump_fd);
+
   free (pdump_buf);
 
   free (pdump_hash);
@@ -1044,6 +1101,9 @@ pdump_load_check (void)
          && ((pdump_header *)pdump_start)->id == dump_id);
 }
 
+/*----------------------------------------------------------------------*/
+/*                     Reading the dump file                           */
+/*----------------------------------------------------------------------*/
 static int
 pdump_load_finish (void)
 {
@@ -1051,25 +1111,25 @@ pdump_load_finish (void)
   char *p;
   EMACS_INT delta;
   EMACS_INT count;
+  pdump_header *header = (pdump_header *)pdump_start;
 
   pdump_end = pdump_start + pdump_length;
 
-#define PDUMP_READ(p, type) (p = (char*) (((type *) p) + 1), *((type *) p - 1))
-
-  delta = ((EMACS_INT)pdump_start) - ((pdump_header *)pdump_start)->reloc_address;
-  p = pdump_start + ((pdump_header *)pdump_start)->stab_offset;
+  delta = ((EMACS_INT)pdump_start) - header->reloc_address;
+  p = pdump_start + header->stab_offset;
 
   /* Put back the pdump_root_struct_ptrs */
-  for (i=0; i<((pdump_header *)pdump_start)->nb_root_struct_ptrs; i++)
+  p = (char *) ALIGN_PTR (p, ALIGNOF (pdump_static_pointer));
+  for (i=0; i<header->nb_root_struct_ptrs; i++)
     {
-      void **adr = PDUMP_READ (p, void **);
-      *adr = (void *) (PDUMP_READ (p, char *) + delta);
+      pdump_static_pointer ptr = PDUMP_READ (p, pdump_static_pointer);
+      (* ptr.address) = ptr.value + delta;
     }
 
   /* Put back the pdump_opaques */
-  for (i=0; i<((pdump_header *)pdump_start)->nb_opaques; i++)
+  for (i=0; i<header->nb_opaques; i++)
     {
-      pdump_opaque info = PDUMP_READ (p, pdump_opaque);
+      pdump_opaque info = PDUMP_READ_ALIGNED (p, pdump_opaque);
       memcpy (info.varaddress, p, info.size);
       p += info.size;
     }
@@ -1079,31 +1139,33 @@ pdump_load_finish (void)
   count = 2;
   for (;;)
     {
-      pdump_reloc_table rt = PDUMP_READ (p, pdump_reloc_table);
+      pdump_reloc_table rt = PDUMP_READ_ALIGNED (p, pdump_reloc_table);
+      p = (char *) ALIGN_PTR (p, ALIGNOF (char *));
       if (rt.desc)
        {
+         char **reloc = (char **)p;
          for (i=0; i < rt.count; i++)
            {
-             char *adr = delta + *(char **)p;
-             *(char **)p = adr;
-             pdump_reloc_one (adr, delta, rt.desc);
-             p += sizeof (char *);
+             reloc[i] += delta;
+             pdump_reloc_one (reloc[i], delta, rt.desc);
            }
+         p += rt.count * sizeof (char *);
        } else
          if (!(--count))
            break;
     }
 
   /* Put the pdump_root_objects variables in place */
-  for (i = PDUMP_READ (p, size_t); i; i--)
+  i = PDUMP_READ_ALIGNED (p, size_t);
+  p = (char *) ALIGN_PTR (p, ALIGNOF (pdump_static_Lisp_Object));
+  while (i--)
     {
-      Lisp_Object *var = PDUMP_READ (p, Lisp_Object *);
-      Lisp_Object  obj = PDUMP_READ (p, Lisp_Object);
+      pdump_static_Lisp_Object obj = PDUMP_READ (p, pdump_static_Lisp_Object);
 
-      if (POINTER_TYPE_P (XTYPE (obj)))
-       obj = wrap_object ((char *) XPNTR (obj) + delta);
+      if (POINTER_TYPE_P (XTYPE (obj.value)))
+       obj.value = wrap_object ((char *) XPNTR (obj.value) + delta);
 
-      *var = obj;
+      (* obj.address) = obj.value;
     }
 
   /* Final cleanups */
@@ -1111,7 +1173,8 @@ pdump_load_finish (void)
   p = pdump_rt_list;
   for (;;)
     {
-      pdump_reloc_table rt = PDUMP_READ (p, pdump_reloc_table);
+      pdump_reloc_table rt = PDUMP_READ_ALIGNED (p, pdump_reloc_table);
+      p = (char *) ALIGN_PTR (p, ALIGNOF (Lisp_Object));
       if (!rt.desc)
        break;
       if (rt.desc == hash_table_description)
index 70a8603..16756e5 100644 (file)
@@ -40,7 +40,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "eldap.h"
 
-static int ldap_default_port;
+static Fixnum ldap_default_port;
 static Lisp_Object Vldap_default_base;
 
 /* Needed by the lrecord definition */
index 8677f95..5bf3476 100644 (file)
@@ -440,7 +440,7 @@ make_standard_lisp_hash_table (enum hash_table_test test,
                               double rehash_threshold,
                               enum hash_table_weakness weakness)
 {
-  hash_table_hash_function_t hash_function =  0;
+  hash_table_hash_function_t hash_function = 0;
   hash_table_test_function_t test_function = 0;
 
   switch (test)
@@ -500,13 +500,7 @@ make_general_lisp_hash_table (hash_table_hash_function_t hash_function,
   compute_hash_table_derived_values (ht);
 
   /* We leave room for one never-occupied sentinel hentry at the end.  */
-  ht->hentries = xnew_array (hentry, ht->size + 1);
-
-  {
-    hentry *e, *sentinel;
-    for (e = ht->hentries, sentinel = e + ht->size; e <= sentinel; e++)
-      CLEAR_HENTRY (e);
-  }
+  ht->hentries = xnew_array_and_zero (hentry, ht->size + 1);
 
   XSETHASH_TABLE (hash_table, ht);
 
index 522ffa7..9e5322b 100644 (file)
@@ -304,7 +304,7 @@ Lisp_Object Vconfigure_exec_prefix_directory, Vconfigure_prefix_directory;
 /* If nonzero, set XEmacs to run at this priority.  This is also used
    in child_setup and sys_suspend to make sure subshells run at normal
    priority. */
-int emacs_priority;
+Fixnum emacs_priority;
 
 /* Some FSF junk with running_asynch_code, to preserve the match
    data.  Not necessary because we don't call process filters
index cf07fc2..00d15e9 100644 (file)
@@ -163,13 +163,13 @@ struct specbinding *specpdl_ptr;
 int specpdl_depth_counter;
 
 /* Maximum size allowed for specpdl allocation */
-int max_specpdl_size;
+Fixnum max_specpdl_size;
 
 /* Depth in Lisp evaluations and function calls.  */
 static int lisp_eval_depth;
 
 /* Maximum allowed depth in Lisp evaluations and function calls.  */
-int max_lisp_eval_depth;
+Fixnum max_lisp_eval_depth;
 
 /* Nonzero means enter debugger before next function call */
 static int debug_on_next_call;
index 04b54d3..8c55b2b 100644 (file)
@@ -87,7 +87,7 @@ XtAppContext Xt_app_con;
 int x_allow_sendevents;
 
 #ifdef DEBUG_XEMACS
-int debug_x_events;
+Fixnum debug_x_events;
 #endif
 
 static int process_events_occurred;
index 7055984..f098d73 100644 (file)
@@ -146,13 +146,13 @@ int mswindows_quit_chars_count = 0;
 /* These are Lisp integers; see DEFVARS in this file for description. */
 int mswindows_dynamic_frame_resize;
 int mswindows_alt_by_itself_activates_menu;
-int mswindows_num_mouse_buttons;
-int mswindows_mouse_button_max_skew_x;
-int mswindows_mouse_button_max_skew_y;
-int mswindows_mouse_button_tolerance;
+Fixnum mswindows_num_mouse_buttons;
+Fixnum mswindows_mouse_button_max_skew_x;
+Fixnum mswindows_mouse_button_max_skew_y;
+Fixnum mswindows_mouse_button_tolerance;
 
 #ifdef DEBUG_XEMACS
-int debug_mswindows_events;
+Fixnum debug_mswindows_events;
 #endif
 
 /* This is the event signaled by the event pump.
index 063b9e2..847ab65 100644 (file)
@@ -100,7 +100,7 @@ Boston, MA 02111-1307, USA.  */
 #include <errno.h>
 
 /* The number of keystrokes between auto-saves. */
-static int auto_save_interval;
+static Fixnum auto_save_interval;
 
 Lisp_Object Qundefined_keystroke_sequence;
 
@@ -250,7 +250,7 @@ Lisp_Object Qself_insert_defer_undo;
 extern Lisp_Object Fmake_keymap (Lisp_Object name);
 
 #ifdef DEBUG_XEMACS
-int debug_emacs_events;
+Fixnum debug_emacs_events;
 
 static void
 external_debugging_print_event (char *event_description, Lisp_Object event)
index a79f7d6..95a059b 100644 (file)
@@ -406,7 +406,7 @@ typedef int Endpoint_Index;
 #define DE_MUST_BE_ATTACHED 2
 
 Lisp_Object Vlast_highlighted_extent;
-int mouse_highlight_priority;
+Fixnum mouse_highlight_priority;
 
 Lisp_Object Qextentp;
 Lisp_Object Qextent_live_p;
index fd754c6..be7b5fa 100644 (file)
@@ -150,7 +150,7 @@ check_valid_callback (Lisp_Object data)
 static void
 check_valid_int_or_function (Lisp_Object data)
 {
-  if (!INTP (data) && !CONSP (data))
+  if (!INTP (data) && !CONSP (data) && !SYMBOLP (data))
     invalid_argument ("must be an integer or expresssion", data);
 }
 
@@ -1021,6 +1021,8 @@ layout_update (Lisp_Object image_instance, Lisp_Object instantiator)
          /* Instantiate any new glyphs. */
          for (; !NILP (items); items = XCDR (items))
            {
+             /* #### We really want to use call_with_suspended_errors
+                here, but it won't allow us to call lisp. */
              border = Fcons (call1 (Qmake_glyph, XCAR (items)), border);
            }
          IMAGE_INSTANCE_LAYOUT_CHILDREN (ii) = Fnreverse (border);
index 9036452..9499385 100644 (file)
@@ -66,7 +66,7 @@ Boston, MA 02111-1307, USA.  */
 
 Lisp_Object Vhp_play_server;
 Lisp_Object Vhp_play_speaker;
-int         hp_play_gain;
+Fixnum      hp_play_gain;
 
 /* Functions */
 
index cd66cef..4aa26f7 100644 (file)
@@ -189,7 +189,7 @@ static Lisp_Object Vvertical_divider_map;
    so that things which care (such as the menubar code) can recompute
    privately-cached data when the user has changed keybindings.
  */
-int keymap_tick;
+Fixnum keymap_tick;
 
 /* Prefixing a key with this character is the same as sending a meta bit. */
 Lisp_Object Vmeta_prefix_char;
@@ -221,9 +221,13 @@ Lisp_Object Qbutton4up, Qbutton5up, Qbutton6up, Qbutton7up;
 
 Lisp_Object Qmenu_selection;
 /* Emacs compatibility */
-Lisp_Object Qdown_mouse_1, Qdown_mouse_2, Qdown_mouse_3, Qdown_mouse_4,
-  Qdown_mouse_5;
-Lisp_Object Qmouse_1, Qmouse_2, Qmouse_3, Qmouse_4, Qmouse_5;
+Lisp_Object Qdown_mouse_1, Qmouse_1;
+Lisp_Object Qdown_mouse_2, Qmouse_2;
+Lisp_Object Qdown_mouse_3, Qmouse_3;
+Lisp_Object Qdown_mouse_4, Qmouse_4;
+Lisp_Object Qdown_mouse_5, Qmouse_5;
+Lisp_Object Qdown_mouse_6, Qmouse_6;
+Lisp_Object Qdown_mouse_7, Qmouse_7;
 
 /* Kludge kludge kludge */
 Lisp_Object QLFD, QTAB, QRET, QESC, QDEL, QSPC, QBS;
@@ -1366,6 +1370,10 @@ define_key_check_and_coerce_keysym (Lisp_Object spec,
        *keysym = Qbutton4;
       else if (EQ(*keysym, Qdown_mouse_5))
        *keysym = Qbutton5;
+      else if (EQ(*keysym, Qdown_mouse_6))
+       *keysym = Qbutton6;
+      else if (EQ(*keysym, Qdown_mouse_7))
+       *keysym = Qbutton7;
       else if (EQ(*keysym, Qmouse_1))
        *keysym = Qbutton1up;
       else if (EQ(*keysym, Qmouse_2))
@@ -1376,6 +1384,10 @@ define_key_check_and_coerce_keysym (Lisp_Object spec,
        *keysym = Qbutton4up;
       else if (EQ(*keysym, Qmouse_5))
        *keysym = Qbutton5up;
+      else if (EQ(*keysym, Qmouse_6))
+       *keysym = Qbutton6up;
+      else if (EQ(*keysym, Qmouse_7))
+       *keysym = Qbutton7up;
     }
 }
 
@@ -4281,11 +4293,15 @@ syms_of_keymap (void)
   defsymbol (&Qmouse_3, "mouse-3");
   defsymbol (&Qmouse_4, "mouse-4");
   defsymbol (&Qmouse_5, "mouse-5");
+  defsymbol (&Qmouse_6, "mouse-6");
+  defsymbol (&Qmouse_7, "mouse-7");
   defsymbol (&Qdown_mouse_1, "down-mouse-1");
   defsymbol (&Qdown_mouse_2, "down-mouse-2");
   defsymbol (&Qdown_mouse_3, "down-mouse-3");
   defsymbol (&Qdown_mouse_4, "down-mouse-4");
   defsymbol (&Qdown_mouse_5, "down-mouse-5");
+  defsymbol (&Qdown_mouse_6, "down-mouse-6");
+  defsymbol (&Qdown_mouse_7, "down-mouse-7");
   defsymbol (&Qmenu_selection, "menu-selection");
   defsymbol (&QLFD, "LFD");
   defsymbol (&QTAB, "TAB");
index 1e69d96..f6faa07 100644 (file)
@@ -38,28 +38,30 @@ Boston, MA 02111-1307, USA.  */
             VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVT
 
  For integral Lisp types, i.e. integers and characters, the value
- bits are the Lisp object.
+ bits are the Lisp object.  Some people call such Lisp_Objects "immediate".
 
-     The object is obtained by masking off the type and mark bits.
-     Bit 1 is used as a value bit by splitting the Lisp integer type
-     into two subtypes, Lisp_Type_Int_Even and Lisp_Type_Int_Odd.  By
-     this trickery we get 31 bits for integers instead of 30.
+ The object is obtained by masking off the type bits.
+ Bit 1 is used as a value bit by splitting the Lisp integer type
+ into two subtypes, Lisp_Type_Int_Even and Lisp_Type_Int_Odd.
+ By this trickery we get 31 bits for integers instead of 30.
 
  For non-integral types, the value bits of a Lisp_Object contain
  a pointer to a structure containing the object.  The pointer is
  obtained by masking off the type and mark bits.
 
-     All pointer-based types are coalesced under a single type called
-     Lisp_Type_Record.  The type bits for this type are required
-     by the implementation to be 00, just like the least
-     significant bits of word-aligned struct pointers on 32-bit
-     hardware.  Because of this, Lisp_Object pointers don't have
-     to be masked and are full-sized.
+ All pointer-based types are coalesced under a single type called
+ Lisp_Type_Record.  The type bits for this type are required by the
+ implementation to be 00, just like the least significant bits of
+ word-aligned struct pointers on 32-bit hardware.  This requires that
+ all structs implementing Lisp_Objects have an alignment of at least 4
+ bytes.  Because of this, Lisp_Object pointers don't have to be masked
+ and are full-sized.
 
- There are no mark bits.
- Integers and characters don't need to be marked.  All other types
- are lrecord-based, which means they get marked by incrementing
- their ->implementation pointer.
+ There are no mark bits in the Lisp_Object itself (there used to be).
+
+ Integers and characters don't need to be marked.  All other types are
+ lrecord-based, which means they get marked by setting the mark bit in
+ the struct lrecord_header.
 
  Here is a brief description of the following macros:
 
@@ -68,9 +70,9 @@ Boston, MA 02111-1307, USA.  */
  XCHARVAL  The value bits of a Lisp_Object storing a Emchar
  XREALINT  The value bits of a Lisp_Object storing an integer, signed
  XUINT     The value bits of a Lisp_Object storing an integer, unsigned
- INTP      Non-zero if this Lisp_Object an integer?
+ INTP      Non-zero if this Lisp_Object is an integer
  Qzero     Lisp Integer 0
- EQ        Non-zero if two Lisp_Objects are identical */
+ EQ        Non-zero if two Lisp_Objects are identical, not merely equal. */
 
 
 typedef EMACS_INT Lisp_Object;
index 64d2044..f949f41 100644 (file)
@@ -218,7 +218,7 @@ typedef union
 # else
 /* C++ is annoying, but it has a big bag of tricks.
    The following doesn't have the "inside out" declaration bug C does. */
-template<class T> struct alignment_trick { char c; T member; };
+template<typename T> struct alignment_trick { char c; T member; };
 #  define ALIGNOF(type) offsetof (alignment_trick<type>, member)
 # endif
 #endif /* ALIGNOF */
@@ -1903,7 +1903,7 @@ extern EMACS_INT consing_since_gc;
 
 /* threshold for doing another gc */
 
-extern EMACS_INT gc_cons_threshold;
+extern Fixnum gc_cons_threshold;
 
 /* Structure for recording stack slots that need marking */
 
@@ -2150,20 +2150,40 @@ void staticpro (Lisp_Object *);
 /* var will not be saved at dump time */
 void staticpro_nodump (Lisp_Object *);
 
-/* Call dump_add_root_struct_ptr (&var, &desc) to dump the structure pointed to by `var'. */
+/* dump_add_root_struct_ptr (&var, &desc) dumps the structure pointed to by `var'. */
 #ifdef PDUMP
 void dump_add_root_struct_ptr (void *, const struct struct_description *);
 #else
 #define dump_add_root_struct_ptr(varaddr,descaddr) DO_NOTHING
 #endif
 
-/* Call dump_add_opaque (&var, size) to dump the opaque static structure `var'. */
+/* dump_add_opaque (&var, size) dumps the opaque static structure `var'. */
 #ifdef PDUMP
 void dump_add_opaque (void *, size_t);
 #else
 #define dump_add_opaque(varaddr,size) DO_NOTHING
 #endif
 
+/* Call dump_add_opaque_int (&int_var) to dump `int_var', of type `int'. */
+#ifdef PDUMP
+#define dump_add_opaque_int(int_varaddr) do {  \
+  int *dao_ = (int_varaddr); /* type check */  \
+  dump_add_opaque (dao_, sizeof (*dao_));      \
+} while (0)
+#else
+#define dump_add_opaque_int(int_varaddr) DO_NOTHING
+#endif
+
+/* Call dump_add_opaque_fixnum (&fixnum_var) to dump `fixnum_var', of type `Fixnum'. */
+#ifdef PDUMP
+#define dump_add_opaque_fixnum(fixnum_varaddr) do {    \
+  Fixnum *dao_ = (fixnum_varaddr); /* type check */    \
+  dump_add_opaque (dao_, sizeof (*dao_));              \
+} while (0)
+#else
+#define dump_add_opaque_fixnum(fixnum_varaddr) DO_NOTHING
+#endif
+
 /* Call dump_add_root_object (&var) to ensure that var is properly updated after pdump. */
 #ifdef PDUMP
 void dump_add_root_object (Lisp_Object *);
@@ -2426,7 +2446,7 @@ Lisp_Object decode_path (const char *);
 extern int noninteractive, noninteractive1;
 extern int fatal_error_in_progress;
 extern int preparing_for_armageddon;
-extern int emacs_priority;
+extern Fixnum emacs_priority;
 extern int running_asynch_code;
 extern int suppress_early_error_handler_backtrace;
 
index 100dbed..858f5f1 100644 (file)
@@ -52,9 +52,8 @@ NOTE-END */
 
 /* #define CANNOT_DUMP */
 
-/* XEmacs: Richard Cognot <cognot@ensg.u-nancy.fr> says we need this for
-   HPUX; but eeide@asylum.cs.utah.edu (Eric Eide) says it loses on BSD. */
-#ifndef BSD
+/* Let the OS header file determine this if not HPUX. */
+#ifdef HPUX
 # define UNEXEC "unexhp9k3.o"
 #endif
 
index 005ab13..26b086b 100644 (file)
@@ -74,10 +74,10 @@ NOTE-END  */
 
 /* XEmacs change:  from Thomas.Tornblom@nexus.comm.se */
 #ifdef USE_GCC
-#define C_SWITCH_MACHINE "-static -Dmode_t=\"u_short\"" /* avoid dynamic linking */
+#define C_SWITCH_MACHINE "-static -Dmode_t=\"unsigned short\"" /* avoid dynamic linking */
 #define LD_SWITCH_MACHINE "-Wl,-N -static"
 #else
-#define C_SWITCH_MACHINE "-Bstatic -Dmode_t=\"u_short\""/* avoid dynamic linking */
+#define C_SWITCH_MACHINE "-Bstatic -Dmode_t=\"unsigned short\""/* avoid dynamic linking */
 #define LD_SWITCH_MACHINE "-N -Bstatic"
 #endif
 
index cc0e786..3525c0b 100644 (file)
@@ -180,13 +180,13 @@ static Lisp_Object Vcanna_kakutei_string;
 static Lisp_Object Vcanna_kakutei_yomi;
 static Lisp_Object Vcanna_kakutei_romaji;
 static Lisp_Object Vcanna_henkan_string;
-static int         canna_henkan_length;
-static int         canna_henkan_revPos;
-static int         canna_henkan_revLen;
+static Fixnum   canna_henkan_length;
+static Fixnum   canna_henkan_revPos;
+static Fixnum   canna_henkan_revLen;
 static Lisp_Object Vcanna_ichiran_string;
-static int         canna_ichiran_length;
-static int         canna_ichiran_revPos;
-static int         canna_ichiran_revLen;
+static Fixnum   canna_ichiran_length;
+static Fixnum   canna_ichiran_revPos;
+static Fixnum   canna_ichiran_revLen;
 static Lisp_Object Vcanna_mode_string;
 
 static int IRCP_context;
@@ -199,7 +199,7 @@ static Lisp_Object CANNA_mode_keys (void);
 static void m2c (unsigned char *, int, unsigned char *);
 static Lisp_Object mule_make_string (unsigned char *, int);
 static int mule_strlen (unsigned char *, int);
-static void count_char (unsigned char *,int, int, int, int *, int *, int *);
+static void count_char (unsigned char *,int, int, int, Fixnum *, Fixnum *, Fixnum *);
 #define make_string mule_make_string
 #endif
 
@@ -887,149 +887,149 @@ Quit conversion.
 
 /* variables below this line is constants of Canna */
 
-static int canna_mode_AlphaMode;
-static int canna_mode_EmptyMode;
-static int canna_mode_KigoMode;
-static int canna_mode_YomiMode;
-static int canna_mode_JishuMode;
-static int canna_mode_TankouhoMode;
-static int canna_mode_IchiranMode;
-static int canna_mode_YesNoMode;
-static int canna_mode_OnOffMode;
+static Fixnum canna_mode_AlphaMode;
+static Fixnum canna_mode_EmptyMode;
+static Fixnum canna_mode_KigoMode;
+static Fixnum canna_mode_YomiMode;
+static Fixnum canna_mode_JishuMode;
+static Fixnum canna_mode_TankouhoMode;
+static Fixnum canna_mode_IchiranMode;
+static Fixnum canna_mode_YesNoMode;
+static Fixnum canna_mode_OnOffMode;
 #ifdef CANNA_MODE_AdjustBunsetsuMode
-static int canna_mode_AdjustBunsetsuMode;
+static Fixnum canna_mode_AdjustBunsetsuMode;
 #endif
 #ifdef CANNA_MODE_ChikujiYomiMode
-static int canna_mode_ChikujiYomiMode;
-static int canna_mode_ChikujiTanMode;
+static Fixnum canna_mode_ChikujiYomiMode;
+static Fixnum canna_mode_ChikujiTanMode;
 #endif
 
-static int canna_mode_HenkanMode;
+static Fixnum canna_mode_HenkanMode;
 #ifdef CANNA_MODE_HenkanNyuryokuMode
-static int canna_mode_HenkanNyuryokuMode;
+static Fixnum canna_mode_HenkanNyuryokuMode;
 #endif
 #ifdef CANNA_MODE_ZenHiraHenkanMode
-static int canna_mode_ZenHiraHenkanMode;
+static Fixnum canna_mode_ZenHiraHenkanMode;
 #ifdef CANNA_MODE_HanHiraHenkanMode
-static int canna_mode_HanHiraHenkanMode;
+static Fixnum canna_mode_HanHiraHenkanMode;
 #endif
-static int canna_mode_ZenKataHenkanMode;
-static int canna_mode_HanKataHenkanMode;
-static int canna_mode_ZenAlphaHenkanMode;
-static int canna_mode_HanAlphaHenkanMode;
+static Fixnum canna_mode_ZenKataHenkanMode;
+static Fixnum canna_mode_HanKataHenkanMode;
+static Fixnum canna_mode_ZenAlphaHenkanMode;
+static Fixnum canna_mode_HanAlphaHenkanMode;
 #endif
-static int canna_mode_ZenHiraKakuteiMode;
+static Fixnum canna_mode_ZenHiraKakuteiMode;
 #ifdef CANNA_MODE_HanHiraKakuteiMode
-static int canna_mode_HanHiraKakuteiMode;
+static Fixnum canna_mode_HanHiraKakuteiMode;
 #endif
-static int canna_mode_ZenKataKakuteiMode;
-static int canna_mode_HanKataKakuteiMode;
-static int canna_mode_ZenAlphaKakuteiMode;
-static int canna_mode_HanAlphaKakuteiMode;
-static int canna_mode_HexMode;
-static int canna_mode_BushuMode;
-static int canna_mode_ExtendMode;
-static int canna_mode_RussianMode;
-static int canna_mode_GreekMode;
-static int canna_mode_LineMode;
-static int canna_mode_ChangingServerMode;
-static int canna_mode_HenkanMethodMode;
-static int canna_mode_DeleteDicMode;
-static int canna_mode_TourokuMode;
-static int canna_mode_TourokuEmptyMode;
-static int canna_mode_TourokuHinshiMode;
-static int canna_mode_TourokuDicMode;
-static int canna_mode_QuotedInsertMode;
-static int canna_mode_BubunMuhenkanMode;
-static int canna_mode_MountDicMode;
-
-static int canna_fn_SelfInsert;
-static int canna_fn_FunctionalInsert;
-static int canna_fn_QuotedInsert;
-static int canna_fn_JapaneseMode;
-static int canna_fn_AlphaMode;
-static int canna_fn_HenkanNyuryokuMode;
-static int canna_fn_Forward;
-static int canna_fn_Backward;
-static int canna_fn_Next;
-static int canna_fn_Prev;
-static int canna_fn_BeginningOfLine;
-static int canna_fn_EndOfLine;
-static int canna_fn_DeleteNext;
-static int canna_fn_DeletePrevious;
-static int canna_fn_KillToEndOfLine;
-static int canna_fn_Henkan;
-static int canna_fn_Kakutei;
-static int canna_fn_Extend;
-static int canna_fn_Shrink;
+static Fixnum canna_mode_ZenKataKakuteiMode;
+static Fixnum canna_mode_HanKataKakuteiMode;
+static Fixnum canna_mode_ZenAlphaKakuteiMode;
+static Fixnum canna_mode_HanAlphaKakuteiMode;
+static Fixnum canna_mode_HexMode;
+static Fixnum canna_mode_BushuMode;
+static Fixnum canna_mode_ExtendMode;
+static Fixnum canna_mode_RussianMode;
+static Fixnum canna_mode_GreekMode;
+static Fixnum canna_mode_LineMode;
+static Fixnum canna_mode_ChangingServerMode;
+static Fixnum canna_mode_HenkanMethodMode;
+static Fixnum canna_mode_DeleteDicMode;
+static Fixnum canna_mode_TourokuMode;
+static Fixnum canna_mode_TourokuEmptyMode;
+static Fixnum canna_mode_TourokuHinshiMode;
+static Fixnum canna_mode_TourokuDicMode;
+static Fixnum canna_mode_QuotedInsertMode;
+static Fixnum canna_mode_BubunMuhenkanMode;
+static Fixnum canna_mode_MountDicMode;
+
+static Fixnum canna_fn_SelfInsert;
+static Fixnum canna_fn_FunctionalInsert;
+static Fixnum canna_fn_QuotedInsert;
+static Fixnum canna_fn_JapaneseMode;
+static Fixnum canna_fn_AlphaMode;
+static Fixnum canna_fn_HenkanNyuryokuMode;
+static Fixnum canna_fn_Forward;
+static Fixnum canna_fn_Backward;
+static Fixnum canna_fn_Next;
+static Fixnum canna_fn_Prev;
+static Fixnum canna_fn_BeginningOfLine;
+static Fixnum canna_fn_EndOfLine;
+static Fixnum canna_fn_DeleteNext;
+static Fixnum canna_fn_DeletePrevious;
+static Fixnum canna_fn_KillToEndOfLine;
+static Fixnum canna_fn_Henkan;
+static Fixnum canna_fn_Kakutei;
+static Fixnum canna_fn_Extend;
+static Fixnum canna_fn_Shrink;
 #ifdef CANNA_FN_AdjustBunsetsu
-static int canna_fn_AdjustBunsetsu;
+static Fixnum canna_fn_AdjustBunsetsu;
 #endif
-static int canna_fn_Quit;
-static int canna_fn_ConvertAsHex;
-static int canna_fn_ConvertAsBushu;
-static int canna_fn_KouhoIchiran;
-static int canna_fn_BubunMuhenkan;
-static int canna_fn_Zenkaku;
-static int canna_fn_Hankaku;
-static int canna_fn_ToUpper;
-static int canna_fn_Capitalize;
-static int canna_fn_ToLower;
-static int canna_fn_Hiragana;
-static int canna_fn_Katakana;
-static int canna_fn_Romaji;
+static Fixnum canna_fn_Quit;
+static Fixnum canna_fn_ConvertAsHex;
+static Fixnum canna_fn_ConvertAsBushu;
+static Fixnum canna_fn_KouhoIchiran;
+static Fixnum canna_fn_BubunMuhenkan;
+static Fixnum canna_fn_Zenkaku;
+static Fixnum canna_fn_Hankaku;
+static Fixnum canna_fn_ToUpper;
+static Fixnum canna_fn_Capitalize;
+static Fixnum canna_fn_ToLower;
+static Fixnum canna_fn_Hiragana;
+static Fixnum canna_fn_Katakana;
+static Fixnum canna_fn_Romaji;
 #ifdef CANNA_FN_BaseHiragana
-static int canna_fn_BaseHiragana;
-static int canna_fn_BaseKatakana;
-static int canna_fn_BaseEisu;
-static int canna_fn_BaseZenkaku;
-static int canna_fn_BaseHankaku;
-static int canna_fn_BaseKana;
-static int canna_fn_BaseKakutei;
-static int canna_fn_BaseHenkan;
-static int canna_fn_BaseHiraKataToggle;
-static int canna_fn_BaseZenHanToggle;
-static int canna_fn_BaseKanaEisuToggle;
-static int canna_fn_BaseKakuteiHenkanToggle;
-static int canna_fn_BaseRotateForward;
-static int canna_fn_BaseRotateBackward;
+static Fixnum canna_fn_BaseHiragana;
+static Fixnum canna_fn_BaseKatakana;
+static Fixnum canna_fn_BaseEisu;
+static Fixnum canna_fn_BaseZenkaku;
+static Fixnum canna_fn_BaseHankaku;
+static Fixnum canna_fn_BaseKana;
+static Fixnum canna_fn_BaseKakutei;
+static Fixnum canna_fn_BaseHenkan;
+static Fixnum canna_fn_BaseHiraKataToggle;
+static Fixnum canna_fn_BaseZenHanToggle;
+static Fixnum canna_fn_BaseKanaEisuToggle;
+static Fixnum canna_fn_BaseKakuteiHenkanToggle;
+static Fixnum canna_fn_BaseRotateForward;
+static Fixnum canna_fn_BaseRotateBackward;
 #endif
-static int canna_fn_ExtendMode;
-static int canna_fn_Touroku;
-static int canna_fn_HexMode;
-static int canna_fn_BushuMode;
-static int canna_fn_KigouMode;
+static Fixnum canna_fn_ExtendMode;
+static Fixnum canna_fn_Touroku;
+static Fixnum canna_fn_HexMode;
+static Fixnum canna_fn_BushuMode;
+static Fixnum canna_fn_KigouMode;
 #ifdef CANNA_FN_Mark
-static int canna_fn_Mark;
+static Fixnum canna_fn_Mark;
 #endif
 #ifdef CANNA_FN_TemporalMode
-static int canna_fn_TemporalMode;
+static Fixnum canna_fn_TemporalMode;
 #endif
 
-static int canna_key_Nfer;
-static int canna_key_Xfer;
-static int canna_key_Up;
-static int canna_key_Left;
-static int canna_key_Right;
-static int canna_key_Down;
-static int canna_key_Insert;
-static int canna_key_Rollup;
-static int canna_key_Rolldown;
-static int canna_key_Home;
-static int canna_key_Help;
-static int canna_key_KP_Key;
-static int canna_key_Shift_Nfer;
-static int canna_key_Shift_Xfer;
-static int canna_key_Shift_Up;
-static int canna_key_Shift_Left;
-static int canna_key_Shift_Right;
-static int canna_key_Shift_Down;
-static int canna_key_Cntrl_Nfer;
-static int canna_key_Cntrl_Xfer;
-static int canna_key_Cntrl_Up;
-static int canna_key_Cntrl_Left;
-static int canna_key_Cntrl_Right;
-static int canna_key_Cntrl_Down;
+static Fixnum canna_key_Nfer;
+static Fixnum canna_key_Xfer;
+static Fixnum canna_key_Up;
+static Fixnum canna_key_Left;
+static Fixnum canna_key_Right;
+static Fixnum canna_key_Down;
+static Fixnum canna_key_Insert;
+static Fixnum canna_key_Rollup;
+static Fixnum canna_key_Rolldown;
+static Fixnum canna_key_Home;
+static Fixnum canna_key_Help;
+static Fixnum canna_key_KP_Key;
+static Fixnum canna_key_Shift_Nfer;
+static Fixnum canna_key_Shift_Xfer;
+static Fixnum canna_key_Shift_Up;
+static Fixnum canna_key_Shift_Left;
+static Fixnum canna_key_Shift_Right;
+static Fixnum canna_key_Shift_Down;
+static Fixnum canna_key_Cntrl_Nfer;
+static Fixnum canna_key_Cntrl_Xfer;
+static Fixnum canna_key_Cntrl_Up;
+static Fixnum canna_key_Cntrl_Left;
+static Fixnum canna_key_Cntrl_Right;
+static Fixnum canna_key_Cntrl_Down;
 
 Lisp_Object VCANNA; /* by MORIOKA Tomohiko <morioka@jaist.ac.jp>
                          1996/6/7 */
@@ -2027,8 +2027,8 @@ mule_strlen (unsigned char *p, int l)
 
 /* count number of characters */
 static void
-count_char (unsigned char *p, int len, int pos, int rev, int *clen, int *cpos,
-           int *crev)
+count_char (unsigned char *p, int len, int pos, int rev,
+           Fixnum *clen, Fixnum *cpos, Fixnum *crev)
 {
   unsigned char *q = p;
 
index 08c6b9f..dc71e64 100644 (file)
@@ -321,7 +321,7 @@ Lisp_Object Vwnn_server_type;
 Lisp_Object    Vcwnn_zhuyin;
 Lisp_Object    Vwnnenv_sticky;
 Lisp_Object    Vwnn_uniq_level;
-int            lb_sisheng;
+Fixnum         lb_sisheng;
 
 /* Lisp functions definition */
 
index 27d3ae3..0824e2a 100644 (file)
--- a/src/nt.c
+++ b/src/nt.c
@@ -48,7 +48,7 @@ extern Lisp_Object Vwin32_generate_fake_inodes;
 #endif
 extern Lisp_Object Vmswindows_get_true_file_attributes;
 
-int nt_fake_unix_uid;
+Fixnum nt_fake_unix_uid;
 
 static char startup_dir[ MAXPATHLEN ];
 
index 0063a6e..d50028e 100644 (file)
@@ -1541,8 +1541,17 @@ unix_kill_child_process (Lisp_Object proc, int signo,
 
   /* Finally send the signal. */
   if (EMACS_KILLPG (pgid, signo) == -1)
-    error ("kill (%ld, %ld) failed: %s",
-          (long) pgid, (long) signo, strerror (errno));
+    {
+      /* It's not an error if our victim is already dead.
+         And we can't rely on the result of killing a zombie, since
+         XPG 4.2 requires that killing a zombie fail with ESRCH,
+         while FIPS 151-2 requires that it succeeds! */
+#ifdef ESRCH
+      if (errno != ESRCH)
+#endif
+       error ("kill (%ld, %ld) failed: %s",
+              (long) pgid, (long) signo, strerror (errno));
+    }
 }
 
 /* Send signal SIGCODE to any process in the system given its PID.
index 5f2fbf6..4d097bc 100644 (file)
@@ -60,7 +60,7 @@ Boston, MA 02111-1307, USA.  */
 static struct hash_table *big_profile_table;
 Lisp_Object Vcall_count_profile_table;
 
-int default_profiling_interval;
+Fixnum default_profiling_interval;
 
 int profiling_active;
 
index ea8f8f8..2938971 100644 (file)
@@ -1438,7 +1438,7 @@ typedef struct alloc_dll
 
 static MMAP_HANDLE mmap_start = 0; /* Head of linked list */
 static size_t page_size = 0;   /* Size of VM pages */
-static int mmap_hysteresis;    /* Should be size_t, really. */
+static Fixnum mmap_hysteresis; /* Logically a "size_t" */
 
 /* Get a new handle for a fresh block. */
 static MMAP_HANDLE
index ecaaad9..8c2a78c 100644 (file)
@@ -300,7 +300,7 @@ static Bytecount_dynarr *formatted_string_extent_end_dynarr;
 
 
 /* #### probably temporary */
-int cache_adjustment;
+Fixnum cache_adjustment;
 
 /* This holds a string representing the text corresponding to a single
    modeline % spec. */
@@ -315,10 +315,10 @@ int disable_preemption;   /* Used for debugging redisplay and for
 static int preemption_count;
 
 /* Minimum pixel height of clipped bottom display line. */
-int vertical_clip;
+Fixnum vertical_clip;
 
 /* Minimum visible pixel width of clipped glyphs at right margin. */
-int horizontal_clip;
+Fixnum horizontal_clip;
 
 /* Nonzero means reading single-character input with prompt
    so put cursor on minibuffer after the prompt.  */
@@ -425,10 +425,10 @@ Lisp_Object Vglobal_mode_string;
 
 /* The number of lines scroll a window by when point leaves the window; if
   it is <=0 then point is centered in the window */
-int scroll_step;
+Fixnum scroll_step;
 
 /* Scroll up to this many lines, to bring point back on screen. */
-int scroll_conservatively;
+Fixnum scroll_conservatively;
 
 /* Marker for where to display an arrow on top of the buffer text.  */
 Lisp_Object Voverlay_arrow_position;
@@ -451,7 +451,8 @@ Lisp_Object Vpre_redisplay_hook, Vpost_redisplay_hook;
 Lisp_Object Qpre_redisplay_hook, Qpost_redisplay_hook;
 #endif /* INHIBIT_REDISPLAY_HOOKS */
 
-static int last_display_warning_tick, display_warning_tick;
+static Fixnum last_display_warning_tick;
+static Fixnum display_warning_tick;
 Lisp_Object Qdisplay_warning_buffer;
 int inhibit_warning_display;
 
index ceda32a..cece34b 100644 (file)
@@ -4796,9 +4796,9 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
        case charset_not:
          {
            REGISTER unsigned char c;
-           boolean not = (re_opcode_t) *(p - 1) == charset_not;
+           boolean not_p = (re_opcode_t) *(p - 1) == charset_not;
 
-            DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : "");
+            DEBUG_PRINT2 ("EXECUTING charset%s.\n", not_p ? "_not" : "");
 
            REGEX_PREFETCH ();
            c = TRANSLATE (*d); /* The character to match.  */
@@ -4807,11 +4807,11 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
                bit list is a full 32 bytes long.  */
            if (c < (unsigned) (*p * BYTEWIDTH)
                && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
-             not = !not;
+             not_p = !not_p;
 
            p += 1 + *p;
 
-           if (!not) goto fail;
+           if (!not_p) goto fail;
 
            SET_REGS_MATCHED ();
             INC_CHARPTR (d); /* XEmacs change */
@@ -4823,20 +4823,20 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
        case charset_mule_not:
          {
            REGISTER Emchar c;
-           boolean not = (re_opcode_t) *(p - 1) == charset_mule_not;
+           boolean not_p = (re_opcode_t) *(p - 1) == charset_mule_not;
 
-            DEBUG_PRINT2 ("EXECUTING charset_mule%s.\n", not ? "_not" : "");
+            DEBUG_PRINT2 ("EXECUTING charset_mule%s.\n", not_p ? "_not" : "");
 
            REGEX_PREFETCH ();
            c = charptr_emchar ((const Bufbyte *) d);
            c = TRANSLATE_EXTENDED_UNSAFE (c); /* The character to match.  */
 
            if (EQ (Qt, unified_range_table_lookup (p, c, Qnil)))
-             not = !not;
+             not_p = !not_p;
 
            p += unified_range_table_bytes_used (p);
 
-           if (!not) goto fail;
+           if (!not_p) goto fail;
 
            SET_REGS_MATCHED ();
            INC_CHARPTR (d);
@@ -5306,15 +5306,15 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
                else if ((re_opcode_t) p1[3] == charset
                         || (re_opcode_t) p1[3] == charset_not)
                  {
-                   int not = (re_opcode_t) p1[3] == charset_not;
+                   int not_p = (re_opcode_t) p1[3] == charset_not;
 
                    if (c < (unsigned char) (p1[4] * BYTEWIDTH)
                        && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
-                     not = !not;
+                     not_p = !not_p;
 
-                    /* `not' is equal to 1 if c would match, which means
+                    /* `not_p' is equal to 1 if c would match, which means
                         that we can't change to pop_failure_jump.  */
-                   if (!not)
+                   if (!not_p)
                       {
                        p[-3] = (unsigned char) pop_failure_jump;
                         DEBUG_PRINT1 ("  No match => pop_failure_jump.\n");
index de3acda..aa4c7dc 100644 (file)
@@ -73,7 +73,7 @@ Lisp_Object Vx_sent_selection_hooks;
 /* If the selection owner takes too long to reply to a selection request,
    we give up on it.  This is in seconds (0 = no timeout).
  */
-int x_selection_timeout;
+Fixnum x_selection_timeout;
 
 /* Enable motif selection optimizations. */
 int x_selection_strict_motif_ownership;
index 9c6191a..9e6447e 100644 (file)
@@ -151,6 +151,7 @@ It defaults to the selected device.
     value_list = Qnil;
   Lisp_Object prev_real_value = Qnil;
   struct gcpro gcpro1;
+  int owned_p = 0;
 
   CHECK_SYMBOL (selection_name);
   if (NILP (selection_value)) error ("selection-value may not be nil.");
@@ -180,6 +181,7 @@ It defaults to the selected device.
 
       if (!NILP (local_selection_data))
        {
+         owned_p = 1;
          /* Don't use Fdelq() as that may QUIT;. */
          if (EQ (local_selection_data, Fcar (Vselection_alist)))
            Vselection_alist = Fcdr (Vselection_alist);
@@ -201,7 +203,10 @@ It defaults to the selected device.
       prev_value = assq_no_quit (selection_name, Vselection_alist);
 
       if (!NILP (prev_value))
-       value_list = XCAR (XCDR (prev_value));
+       {
+         owned_p = 1;
+         value_list = XCAR (XCDR (prev_value));
+       }
 
       if (!NILP (value_list))
        prev_real_value = assq_no_quit (data_type, value_list);
@@ -280,7 +285,7 @@ It defaults to the selected device.
   if (HAS_DEVMETH_P (XDEVICE (device), own_selection))
     selection_time = DEVMETH (XDEVICE (device), own_selection,
                              (selection_name, selection_value,
-                              how_to_add, data_type, !NILP (prev_value)));
+                              how_to_add, data_type, owned_p));
   else
     selection_time = Qnil;
 
index fe31b7b..acb272b 100644 (file)
@@ -50,8 +50,8 @@ extern int esd_play_sound_data (unsigned char *data, size_t length, int vol);
 # define DEVICE_CONNECTED_TO_ESD_P(x) 1 /* FIXME: better check */
 #endif
 
-int bell_volume;
-int bell_inhibit_time;
+Fixnum bell_volume;
+Fixnum bell_inhibit_time;
 Lisp_Object Vsound_alist;
 Lisp_Object Vsynchronous_sounds;
 Lisp_Object Vnative_sound_only_on_console;
index 906637c..ae1dc92 100644 (file)
@@ -790,10 +790,15 @@ Set SYMBOL's property list to NEWPLIST, and return NEWPLIST.
       the symbol-value-forward. (See below.)
 
    SYMVAL_FIXNUM_FORWARD:
+      (declare with DEFVAR_INT)
+      Similar to SYMVAL_OBJECT_FORWARD except that the C variable
+      is of type "Fixnum", a typedef for "EMACS_INT", and the corresponding
+      lisp variable is always the corresponding integer.
+
    SYMVAL_BOOLEAN_FORWARD:
-      (declare with DEFVAR_INT or DEFVAR_BOOL)
+      (declare with DEFVAR_BOOL)
       Similar to SYMVAL_OBJECT_FORWARD except that the C variable
-      is of type "int" and is an integer or boolean, respectively.
+      is of type "int" and is a boolean.
 
    SYMVAL_CONST_OBJECT_FORWARD:
    SYMVAL_CONST_FIXNUM_FORWARD:
@@ -1073,7 +1078,7 @@ do_symval_forwarding (Lisp_Object valcontents, struct buffer *buffer,
     {
     case SYMVAL_FIXNUM_FORWARD:
     case SYMVAL_CONST_FIXNUM_FORWARD:
-      return make_int (*((int *)symbol_value_forward_forward (fwd)));
+      return make_int (*((Fixnum *)symbol_value_forward_forward (fwd)));
 
     case SYMVAL_BOOLEAN_FORWARD:
     case SYMVAL_CONST_BOOLEAN_FORWARD:
@@ -1246,7 +1251,7 @@ store_symval_forwarding (Lisp_Object sym, Lisp_Object ovalue,
          CHECK_INT (newval);
          if (magicfun)
            magicfun (sym, &newval, Qnil, 0);
-         *((int *) symbol_value_forward_forward (fwd)) = XINT (newval);
+         *((Fixnum *) symbol_value_forward_forward (fwd)) = XINT (newval);
          return;
 
        case SYMVAL_BOOLEAN_FORWARD:
index 44a5849..141430b 100644 (file)
@@ -31,7 +31,7 @@ enum symbol_value_type
 {
   /* The following tags use the 'symbol_value_forward' structure
      and are strictly for variables DEFVARed on the C level. */
-  SYMVAL_FIXNUM_FORWARD,       /* Forward C "int" */
+  SYMVAL_FIXNUM_FORWARD,       /* Forward C "Fixnum", really "EMACS_INT" */
   SYMVAL_CONST_FIXNUM_FORWARD, /* Same, but can't be set */
   SYMVAL_BOOLEAN_FORWARD,      /* Forward C boolean ("int") */
   SYMVAL_CONST_BOOLEAN_FORWARD,        /* Same, but can't be set */
@@ -70,6 +70,9 @@ enum symbol_value_type
 #endif
 };
 
+/* Underlying C type used to implement DEFVAR_INT */
+typedef EMACS_INT Fixnum;
+
 struct symbol_value_magic
 {
   struct lcrecord_header lcheader;
@@ -345,13 +348,21 @@ void defvar_magic (const char *symbol_name, const struct symbol_value_forward *m
 
 #define DEFVAR_SYMVAL_FWD_INT(lname, c_location, forward_type, magicfun) do{   \
   DEFVAR_SYMVAL_FWD (lname, c_location, forward_type, magicfun);               \
-  dump_add_opaque (c_location, sizeof(int));                                   \
+  dump_add_opaque_int (c_location);                                            \
+} while (0)
+
+#define DEFVAR_SYMVAL_FWD_FIXNUM(lname, c_location, forward_type, magicfun) do{        \
+  DEFVAR_SYMVAL_FWD (lname, c_location, forward_type, magicfun);               \
+  dump_add_opaque_fixnum (c_location);                                         \
 } while (0)
 
-#define DEFVAR_SYMVAL_FWD_OBJECT(lname, c_location, forward_type, magicfun) do{ \
+#define DEFVAR_SYMVAL_FWD_OBJECT(lname, c_location, forward_type, magicfun) do{        \
   DEFVAR_SYMVAL_FWD (lname, c_location, forward_type, magicfun);               \
-  staticpro (c_location);                                                      \
-  if (EQ (*c_location, Qnull_pointer)) *c_location = Qnil;                     \
+  {                                                                            \
+    Lisp_Object *DSF_location = c_location; /* Type check */                   \
+    staticpro (DSF_location);                                                  \
+    if (EQ (*DSF_location, Qnull_pointer)) *DSF_location = Qnil;               \
+  }                                                                            \
 } while (0)
 
 #define DEFVAR_LISP(lname, c_location) \
@@ -361,9 +372,9 @@ void defvar_magic (const char *symbol_name, const struct symbol_value_forward *m
 #define DEFVAR_SPECIFIER(lname, c_location) \
        DEFVAR_SYMVAL_FWD_OBJECT (lname, c_location, SYMVAL_CONST_SPECIFIER_FORWARD, 0)
 #define DEFVAR_INT(lname, c_location) \
-       DEFVAR_SYMVAL_FWD_INT (lname, c_location, SYMVAL_FIXNUM_FORWARD, 0)
+       DEFVAR_SYMVAL_FWD_FIXNUM (lname, c_location, SYMVAL_FIXNUM_FORWARD, 0)
 #define DEFVAR_CONST_INT(lname, c_location) \
-       DEFVAR_SYMVAL_FWD_INT (lname, c_location, SYMVAL_CONST_FIXNUM_FORWARD, 0)
+       DEFVAR_SYMVAL_FWD_FIXNUM (lname, c_location, SYMVAL_CONST_FIXNUM_FORWARD, 0)
 #define DEFVAR_BOOL(lname, c_location) \
        DEFVAR_SYMVAL_FWD_INT (lname, c_location, SYMVAL_BOOLEAN_FORWARD, 0)
 #define DEFVAR_CONST_BOOL(lname, c_location) \
@@ -371,7 +382,7 @@ void defvar_magic (const char *symbol_name, const struct symbol_value_forward *m
 #define DEFVAR_LISP_MAGIC(lname, c_location, magicfun) \
        DEFVAR_SYMVAL_FWD_OBJECT (lname, c_location, SYMVAL_OBJECT_FORWARD, magicfun)
 #define DEFVAR_INT_MAGIC(lname, c_location, magicfun) \
-       DEFVAR_SYMVAL_FWD_INT (lname, c_location, SYMVAL_FIXNUM_FORWARD, magicfun)
+       DEFVAR_SYMVAL_FWD_FIXNUM (lname, c_location, SYMVAL_FIXNUM_FORWARD, magicfun)
 #define DEFVAR_BOOL_MAGIC(lname, c_location, magicfun) \
        DEFVAR_SYMVAL_FWD_INT (lname, c_location, SYMVAL_BOOLEAN_FORWARD, magicfun)
 
index fc23d27..a6b9cb3 100644 (file)
@@ -131,7 +131,11 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #ifdef HAVE_LIBUTIL_H
-#include <libutil.h>           /* openpty() on BSD */
+#include <libutil.h>           /* openpty() on FreeBSD */
+#endif
+
+#ifdef HAVE_UTIL_H
+#include <util.h>              /* openpty() on NetBSD */
 #endif
 
 #ifdef FD_SET
index c4b6bfd..eb7fcf2 100644 (file)
@@ -30,8 +30,8 @@ Boston, MA 02111-1307, USA.  */
 #define realloc xrealloc
 #define malloc xmalloc
 #define free xfree
-extern void *xmalloc (int size);
-extern void *xrealloc (void *, int size);
+extern void *xmalloc (size_t size);
+extern void *xrealloc (void *, size_t size);
 
 #else /* emacs */
 
index a3ad1b1..ccddef8 100644 (file)
@@ -111,14 +111,14 @@ Lisp_Object Vtemp_buffer_show_function;
 Lisp_Object Vtemp_buffer_show_hook;
 
 /* If a window gets smaller than either of these, it is removed. */
-int window_min_height;
-int window_min_width;
+Fixnum window_min_height;
+Fixnum window_min_width;
 
 /* Hook run at end of temp_output_buffer_show.  */
 Lisp_Object Qtemp_buffer_show_hook;
 
 /* Number of lines of continuity in scrolling by screenfuls.  */
-int next_screen_context_lines;
+Fixnum next_screen_context_lines;
 
 /* List of freed window configurations with 1 - 10 windows. */
 static Lisp_Object Vwindow_configuration_free_list[10];
@@ -4331,7 +4331,7 @@ window_scroll (Lisp_Object window, Lisp_Object count, int direction,
          &&
          Dynarr_length (dla) >= (1 + modeline)
          &&
-         (dl->ascent - dl->top_clip) - fheight * value > 0)
+         (dl->ascent - dl->top_clip) > fheight * value)
        {
          WINDOW_TEXT_TOP_CLIP (w) += value * fheight;
          MARK_WINDOWS_CHANGED (w);
index 877dc91..7a7f6da 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
 2001-01-26  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.43 "Terspichore" is released.