From 2779fcb5d524d6b7de5a6ef9ebfd6662433a4a07 Mon Sep 17 00:00:00 2001 From: tomo Date: Tue, 1 Jan 2002 06:47:15 +0000 Subject: [PATCH] Sync up with r21-2-44. --- etc/etags.1 | 56 +- info/emodules.info | 38 +- info/internals.info | 304 ++++---- info/internals.info-1 | 2 +- info/internals.info-2 | 2 +- info/internals.info-3 | 2 +- info/internals.info-4 | 2 +- info/internals.info-5 | 2 +- info/internals.info-6 | 2 +- info/internals.info-7 | 2 +- info/internals.info-8 | 2 +- info/internals.info-9 | 2 +- info/lispref.info | 1430 ++++++++++++++++++------------------ info/lispref.info-7 | 2 +- info/lispref.info-9 | 2 +- info/texinfo.info | 620 ++++++++-------- info/texinfo.info-1 | 2 +- info/texinfo.info-10 | 2 +- info/texinfo.info-11 | 2 +- info/texinfo.info-12 | 2 +- info/texinfo.info-2 | 2 +- info/texinfo.info-3 | 2 +- info/texinfo.info-4 | 2 +- info/texinfo.info-5 | 2 +- info/texinfo.info-6 | 2 +- info/texinfo.info-7 | 2 +- info/texinfo.info-8 | 2 +- info/texinfo.info-9 | 2 +- info/xemacs-faq.info | 508 ++++++------- info/xemacs-faq.info-1 | 2 +- info/xemacs-faq.info-2 | 2 +- info/xemacs-faq.info-3 | 2 +- info/xemacs-faq.info-4 | 2 +- info/xemacs-faq.info-5 | 2 +- info/xemacs.info | 797 ++++++++++---------- info/xemacs.info-1 | 8 +- info/xemacs.info-10 | 2 +- info/xemacs.info-11 | 2 +- info/xemacs.info-12 | 60 +- info/xemacs.info-13 | 889 +++++++++-------------- info/xemacs.info-14 | 750 +++++++++++-------- info/xemacs.info-15 | 582 ++++++++------- info/xemacs.info-16 | 518 ++++++------- info/xemacs.info-17 | 527 +++++++------- info/xemacs.info-18 | 555 +++++++------- info/xemacs.info-19 | 1055 +++++++-------------------- info/xemacs.info-2 | 2 +- info/xemacs.info-20 | 1732 ++++++++++++++++++++------------------------ info/xemacs.info-21 | 1706 ++++++++++++++++++++++++------------------- info/xemacs.info-22 | 1548 +++++++++++++++++++-------------------- info/xemacs.info-23 | 2 +- info/xemacs.info-3 | 2 +- info/xemacs.info-4 | 2 +- info/xemacs.info-5 | 2 +- info/xemacs.info-6 | 2 +- info/xemacs.info-7 | 2 +- info/xemacs.info-8 | 2 +- info/xemacs.info-9 | 2 +- lib-src/ChangeLog | 131 ++++ lib-src/etags.c | 1376 ++++++++++++++++++++++------------- lib-src/gnuclient.c | 20 +- lib-src/gnuserv.c | 8 +- lib-src/gnuslib.c | 4 +- lib-src/pop.c | 2 +- lisp/ChangeLog | 28 + lisp/gutter-items.el | 36 +- lisp/gutter.el | 15 + lisp/mwheel.el | 16 +- lisp/sound.el | 32 +- lisp/startup.el | 12 +- lwlib/ChangeLog | 24 + lwlib/config.h.in | 2 +- lwlib/lwlib-Xm.c | 4 +- lwlib/xlwcheckbox.c | 2 +- lwlib/xlwgauge.c | 10 +- lwlib/xlwgcs.c | 19 +- lwlib/xlwgcs.h | 5 +- lwlib/xlwradio.c | 8 +- man/ChangeLog | 17 + man/lispref/eval.texi | 2 +- man/lispref/variables.texi | 2 +- man/xemacs/packages.texi | 561 +++++++++----- man/xemacs/programs.texi | 54 +- man/xemacs/xemacs.texi | 5 +- nt/ChangeLog | 4 + src/.gdbinit | 5 +- src/ChangeLog | 183 +++++ src/abbrev.c | 2 +- src/alloc.c | 30 +- src/buffer.c | 4 +- src/chartab.c | 6 +- src/chartab.h | 2 +- src/cmdloop.c | 2 +- src/commands.h | 2 +- src/config.h.in | 2 +- src/console-x.h | 2 +- src/data.c | 2 +- src/dired-msw.c | 2 +- src/dumper.c | 295 +++++--- src/eldap.c | 2 +- src/elhash.c | 10 +- src/emacs.c | 2 +- src/eval.c | 4 +- src/event-Xt.c | 2 +- src/event-msw.c | 10 +- src/event-stream.c | 4 +- src/extents.c | 2 +- src/glyphs-widget.c | 4 +- src/hpplay.c | 2 +- src/keymap.c | 24 +- src/lisp-disunion.h | 36 +- src/lisp.h | 30 +- src/m/hp9000s300.h | 5 +- src/m/sun386.h | 4 +- src/mule-canna.c | 260 +++---- src/mule-wnnfns.c | 2 +- src/nt.c | 2 +- src/process-unix.c | 13 +- src/profile.c | 2 +- src/ralloc.c | 2 +- src/redisplay.c | 13 +- src/regex.c | 24 +- src/select-x.c | 2 +- src/select.c | 9 +- src/sound.c | 4 +- src/symbols.c | 13 +- src/symeval.h | 27 +- src/sysproc.h | 6 +- src/tparam.c | 4 +- src/window.c | 8 +- tests/ChangeLog | 4 + 131 files changed, 8931 insertions(+), 8304 deletions(-) diff --git a/etc/etags.1 b/etc/etags.1 index 735b187..3ae60ec 100644 --- a/etc/etags.1 +++ b/etc/etags.1 @@ -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. diff --git a/info/emodules.info b/info/emodules.info index c527ed0..15eb210 100644 --- a/info/emodules.info +++ b/info/emodules.info @@ -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  Tag Table: -Node: Top1536 -Node: Introduction2883 -Node: Anatomy of a Module7391 -Node: Required Header File8205 -Node: Required Functions10124 -Node: Required Variables12848 -Node: Loading other Modules15534 -Node: Using ellcc17591 -Node: Compile Mode19385 -Node: Initialization Mode20753 -Node: Link Mode25787 -Node: Other ellcc options26932 -Node: Environment Variables29511 -Node: Defining Functions31202 -Node: Using DEFUN33213 -Node: Declaring Functions34924 -Node: Defining Variables36267 -Node: Index38510 +Node: Top1537 +Node: Introduction2884 +Node: Anatomy of a Module7392 +Node: Required Header File8206 +Node: Required Functions10125 +Node: Required Variables12849 +Node: Loading other Modules15535 +Node: Using ellcc17592 +Node: Compile Mode19386 +Node: Initialization Mode20754 +Node: Link Mode25788 +Node: Other ellcc options26933 +Node: Environment Variables29512 +Node: Defining Functions31203 +Node: Using DEFUN33214 +Node: Declaring Functions34925 +Node: Defining Variables36268 +Node: Index38511  End Tag Table diff --git a/info/internals.info b/info/internals.info index 0446b0a..d0f06ab 100644 --- a/info/internals.info +++ b/info/internals.info @@ -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.  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  Tag Table: (Indirect) -Node: Top1776 -Node: A History of Emacs7040 -Node: Through Version 188565 -Node: Lucid Emacs12013 -Node: GNU Emacs 1915031 -Node: GNU Emacs 2017214 -Node: XEmacs17641 -Node: XEmacs From the Outside20820 -Node: The Lisp Language22587 -Node: XEmacs From the Perspective of Building32130 -Node: XEmacs From the Inside38255 -Node: The XEmacs Object System (Abstractly Speaking)46637 -Node: How Lisp Objects Are Represented in C60723 -Node: Rules When Writing New C Code65400 -Node: General Coding Rules66204 -Node: Writing Lisp Primitives72014 -Node: Adding Global Lisp Variables83183 -Node: Coding for Mule86821 -Node: Character-Related Data Types87800 -Node: Working With Character and Byte Positions90797 -Node: Conversion to and from External Data94562 -Node: General Guidelines for Writing Mule-Aware Code100703 -Node: An Example of Mule-Aware Code103391 -Node: Techniques for XEmacs Developers105372 -Node: A Summary of the Various XEmacs Modules113319 -Node: Low-Level Modules114139 -Node: Basic Lisp Modules121600 -Node: Modules for Standard Editing Operations128194 -Node: Editor-Level Control Flow Modules134082 -Node: Modules for the Basic Displayable Lisp Objects137593 -Node: Modules for other Display-Related Lisp Objects140546 -Node: Modules for the Redisplay Mechanism141887 -Node: Modules for Interfacing with the File System144259 -Node: Modules for Other Aspects of the Lisp Interpreter and Object System147957 -Node: Modules for Interfacing with the Operating System153410 -Node: Modules for Interfacing with X Windows160966 -Node: Modules for Internationalization164449 -Node: Allocation of Objects in XEmacs Lisp167086 -Node: Introduction to Allocation167607 -Node: Garbage Collection171293 -Node: GCPROing172449 -Node: Garbage Collection - Step by Step179453 -Node: Invocation179845 -Node: garbage_collect_1182858 -Node: mark_object192340 -Node: gc_sweep194152 -Node: sweep_lcrecords_1199215 -Node: compact_string_chars200210 -Node: sweep_strings202390 -Node: sweep_bit_vectors_1203355 -Node: Integers and Characters204031 -Node: Allocation from Frob Blocks204783 -Node: lrecords206387 -Node: Low-level allocation218613 -Node: Cons222720 -Node: Vector223446 -Node: Bit Vector224023 -Node: Symbol224516 -Node: Marker224870 -Node: String225425 -Node: Compiled Function229038 -Node: Dumping229207 -Node: Overview231428 -Node: Data descriptions231998 -Node: Dumping phase234003 -Node: Object inventory234406 -Node: Address allocation237342 -Node: The header238731 -Node: Data dumping239176 -Node: Pointers dumping239837 -Node: Reloading phase241227 -Node: Remaining issues242781 -Node: Events and the Event Loop243742 -Node: Introduction to Events244192 -Node: Main Loop246141 -Node: Specifics of the Event Gathering Mechanism249716 -Node: Specifics About the Emacs Event262169 -Node: The Event Stream Callback Routines262424 -Node: Other Event Loop Functions262669 -Node: Converting Events263809 -Node: Dispatching Events; The Command Builder264418 -Node: Evaluation; Stack Frames; Bindings264653 -Node: Evaluation264995 -Node: Dynamic Binding; The specbinding Stack; Unwind-Protects271550 -Node: Simple Special Forms273934 -Node: Catch and Throw274717 -Node: Symbols and Variables277292 -Node: Introduction to Symbols277556 -Node: Obarrays278624 -Node: Symbol Values282157 -Node: Buffers and Textual Representation284445 -Node: Introduction to Buffers285103 -Node: The Text in a Buffer287809 -Node: Buffer Lists294959 -Node: Markers and Extents296910 -Node: Bufbytes and Emchars299175 -Node: The Buffer Object299390 -Node: MULE Character Sets and Encodings302870 -Node: Character Sets303932 -Node: Encodings307417 -Node: Japanese EUC (Extended Unix Code)308484 -Node: JIS7309316 -Node: Internal Mule Encodings310666 -Node: Internal String Encoding312496 -Node: Internal Character Encoding314641 -Node: CCL316365 -Node: The Lisp Reader and Compiler323118 -Node: Lstreams323331 -Node: Creating an Lstream324362 -Node: Lstream Types325589 -Node: Lstream Functions325841 -Node: Lstream Methods329407 -Node: Consoles; Devices; Frames; Windows332549 -Node: Introduction to Consoles; Devices; Frames; Windows332864 -Node: Point335397 -Node: Window Hierarchy336676 -Node: The Window Object341128 -Node: The Redisplay Mechanism344565 -Node: Critical Redisplay Sections345357 -Node: Line Start Cache346344 -Node: Redisplay Piece by Piece349580 -Node: Extents351617 -Node: Introduction to Extents352151 -Node: Extent Ordering353293 -Node: Format of the Extent Info354534 -Node: Zero-Length Extents356421 -Node: Mathematics of Extent Ordering357821 -Node: Extent Fragments362578 -Node: Faces363664 -Node: Glyphs363780 -Node: Specifiers370413 -Node: Menus370542 -Node: Subprocesses372800 -Node: Interface to the X Window System374786 -Node: Lucid Widget Library375067 -Node: Generic Widget Interface376358 -Node: Scrollbars379917 -Node: Menubars380060 -Node: Checkboxes and Radio Buttons380203 -Node: Progress Bars380389 -Node: Tab Controls380549 -Node: Index380670 +Node: Top1777 +Node: A History of Emacs7041 +Node: Through Version 188566 +Node: Lucid Emacs12014 +Node: GNU Emacs 1915032 +Node: GNU Emacs 2017215 +Node: XEmacs17642 +Node: XEmacs From the Outside20821 +Node: The Lisp Language22588 +Node: XEmacs From the Perspective of Building32131 +Node: XEmacs From the Inside38256 +Node: The XEmacs Object System (Abstractly Speaking)46638 +Node: How Lisp Objects Are Represented in C60724 +Node: Rules When Writing New C Code65401 +Node: General Coding Rules66205 +Node: Writing Lisp Primitives72015 +Node: Adding Global Lisp Variables83184 +Node: Coding for Mule86822 +Node: Character-Related Data Types87801 +Node: Working With Character and Byte Positions90798 +Node: Conversion to and from External Data94563 +Node: General Guidelines for Writing Mule-Aware Code100704 +Node: An Example of Mule-Aware Code103392 +Node: Techniques for XEmacs Developers105373 +Node: A Summary of the Various XEmacs Modules113320 +Node: Low-Level Modules114140 +Node: Basic Lisp Modules121601 +Node: Modules for Standard Editing Operations128195 +Node: Editor-Level Control Flow Modules134083 +Node: Modules for the Basic Displayable Lisp Objects137594 +Node: Modules for other Display-Related Lisp Objects140547 +Node: Modules for the Redisplay Mechanism141888 +Node: Modules for Interfacing with the File System144260 +Node: Modules for Other Aspects of the Lisp Interpreter and Object System147958 +Node: Modules for Interfacing with the Operating System153411 +Node: Modules for Interfacing with X Windows160967 +Node: Modules for Internationalization164450 +Node: Allocation of Objects in XEmacs Lisp167087 +Node: Introduction to Allocation167608 +Node: Garbage Collection171294 +Node: GCPROing172450 +Node: Garbage Collection - Step by Step179454 +Node: Invocation179846 +Node: garbage_collect_1182859 +Node: mark_object192341 +Node: gc_sweep194153 +Node: sweep_lcrecords_1199216 +Node: compact_string_chars200211 +Node: sweep_strings202391 +Node: sweep_bit_vectors_1203356 +Node: Integers and Characters204032 +Node: Allocation from Frob Blocks204784 +Node: lrecords206388 +Node: Low-level allocation218614 +Node: Cons222721 +Node: Vector223447 +Node: Bit Vector224024 +Node: Symbol224517 +Node: Marker224871 +Node: String225426 +Node: Compiled Function229039 +Node: Dumping229208 +Node: Overview231429 +Node: Data descriptions231999 +Node: Dumping phase234004 +Node: Object inventory234407 +Node: Address allocation237343 +Node: The header238732 +Node: Data dumping239177 +Node: Pointers dumping239838 +Node: Reloading phase241228 +Node: Remaining issues242782 +Node: Events and the Event Loop243743 +Node: Introduction to Events244193 +Node: Main Loop246142 +Node: Specifics of the Event Gathering Mechanism249717 +Node: Specifics About the Emacs Event262170 +Node: The Event Stream Callback Routines262425 +Node: Other Event Loop Functions262670 +Node: Converting Events263810 +Node: Dispatching Events; The Command Builder264419 +Node: Evaluation; Stack Frames; Bindings264654 +Node: Evaluation264996 +Node: Dynamic Binding; The specbinding Stack; Unwind-Protects271551 +Node: Simple Special Forms273935 +Node: Catch and Throw274718 +Node: Symbols and Variables277293 +Node: Introduction to Symbols277557 +Node: Obarrays278625 +Node: Symbol Values282158 +Node: Buffers and Textual Representation284446 +Node: Introduction to Buffers285104 +Node: The Text in a Buffer287810 +Node: Buffer Lists294960 +Node: Markers and Extents296911 +Node: Bufbytes and Emchars299176 +Node: The Buffer Object299391 +Node: MULE Character Sets and Encodings302871 +Node: Character Sets303933 +Node: Encodings307418 +Node: Japanese EUC (Extended Unix Code)308485 +Node: JIS7309317 +Node: Internal Mule Encodings310667 +Node: Internal String Encoding312497 +Node: Internal Character Encoding314642 +Node: CCL316366 +Node: The Lisp Reader and Compiler323119 +Node: Lstreams323332 +Node: Creating an Lstream324363 +Node: Lstream Types325590 +Node: Lstream Functions325842 +Node: Lstream Methods329408 +Node: Consoles; Devices; Frames; Windows332550 +Node: Introduction to Consoles; Devices; Frames; Windows332865 +Node: Point335398 +Node: Window Hierarchy336677 +Node: The Window Object341129 +Node: The Redisplay Mechanism344566 +Node: Critical Redisplay Sections345358 +Node: Line Start Cache346345 +Node: Redisplay Piece by Piece349581 +Node: Extents351618 +Node: Introduction to Extents352152 +Node: Extent Ordering353294 +Node: Format of the Extent Info354535 +Node: Zero-Length Extents356422 +Node: Mathematics of Extent Ordering357822 +Node: Extent Fragments362579 +Node: Faces363665 +Node: Glyphs363781 +Node: Specifiers370414 +Node: Menus370543 +Node: Subprocesses372801 +Node: Interface to the X Window System374787 +Node: Lucid Widget Library375068 +Node: Generic Widget Interface376359 +Node: Scrollbars379918 +Node: Menubars380061 +Node: Checkboxes and Radio Buttons380204 +Node: Progress Bars380390 +Node: Tab Controls380550 +Node: Index380671  End Tag Table diff --git a/info/internals.info-1 b/info/internals.info-1 index 880768a..b357f91 100644 --- a/info/internals.info-1 +++ b/info/internals.info-1 @@ -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 diff --git a/info/internals.info-2 b/info/internals.info-2 index 0d0f625..14bf799 100644 --- a/info/internals.info-2 +++ b/info/internals.info-2 @@ -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 diff --git a/info/internals.info-3 b/info/internals.info-3 index 6cc8d80..48b542a 100644 --- a/info/internals.info-3 +++ b/info/internals.info-3 @@ -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 diff --git a/info/internals.info-4 b/info/internals.info-4 index c717881..7a7a4b7 100644 --- a/info/internals.info-4 +++ b/info/internals.info-4 @@ -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 diff --git a/info/internals.info-5 b/info/internals.info-5 index af423f8..17671f1 100644 --- a/info/internals.info-5 +++ b/info/internals.info-5 @@ -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 diff --git a/info/internals.info-6 b/info/internals.info-6 index 5b89518..9a9dbe1 100644 --- a/info/internals.info-6 +++ b/info/internals.info-6 @@ -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 diff --git a/info/internals.info-7 b/info/internals.info-7 index 8f3633d..e000598 100644 --- a/info/internals.info-7 +++ b/info/internals.info-7 @@ -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 diff --git a/info/internals.info-8 b/info/internals.info-8 index d641579..36c52e9 100644 --- a/info/internals.info-8 +++ b/info/internals.info-8 @@ -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 diff --git a/info/internals.info-9 b/info/internals.info-9 index 0c91f06..314d717 100644 --- a/info/internals.info-9 +++ b/info/internals.info-9 @@ -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 diff --git a/info/lispref.info b/info/lispref.info index ada9e9b..fd2a722 100644 --- a/info/lispref.info +++ b/info/lispref.info @@ -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  Tag Table: (Indirect) @@ -241,679 +241,679 @@ Node: Evaluation332737 Node: Intro Eval333542 Ref: Intro Eval-Footnote-1336895 Node: Eval337030 -Node: Forms341448 -Node: Self-Evaluating Forms342607 -Node: Symbol Forms344120 -Node: Classifying Lists345037 -Node: Function Indirection345793 -Node: Function Forms348892 -Node: Macro Forms349889 -Node: Special Forms351489 -Node: Autoloading353798 -Node: Quoting354296 -Node: Control Structures355657 -Node: Sequencing357277 -Node: Conditionals360142 -Node: Combining Conditions363565 -Node: Iteration366835 -Node: Nonlocal Exits368614 -Node: Catch and Throw369316 -Node: Examples of Catch373155 -Node: Errors375174 -Node: Signaling Errors376663 -Node: Processing of Errors385410 -Node: Handling Errors387689 -Node: Error Symbols394930 -Node: Cleanups398886 -Node: Variables402664 -Node: Global Variables404433 -Node: Constant Variables405509 -Node: Local Variables406135 -Node: Void Variables411072 -Node: Defining Variables414588 -Node: Accessing Variables421752 -Node: Setting Variables423177 -Node: Variable Scoping427696 -Node: Scope429295 -Node: Extent430820 -Node: Impl of Scope432299 -Node: Using Scoping434262 -Node: Buffer-Local Variables435784 -Node: Intro to Buffer-Local436620 -Node: Creating Buffer-Local439163 -Node: Default Value445062 -Node: Variable Aliases448205 -Node: Functions450056 -Node: What Is a Function451150 -Node: Lambda Expressions455196 -Node: Lambda Components456106 -Node: Simple Lambda457938 -Node: Argument List459595 -Node: Function Documentation463323 -Node: Function Names465265 -Node: Defining Functions467838 -Node: Calling Functions470878 -Node: Mapping Functions474726 -Node: Anonymous Functions477414 -Node: Function Cells480659 -Node: Inline Functions485477 -Node: Related Topics487287 -Node: Macros488340 -Node: Simple Macro489624 -Node: Expansion490359 -Node: Compiling Macros493363 -Node: Defining Macros495199 -Node: Backquote496516 -Node: Problems with Macros498913 -Node: Argument Evaluation499608 -Node: Surprising Local Vars502523 -Node: Eval During Expansion504591 -Node: Repeated Expansion506284 -Node: Customization508200 -Node: Common Keywords508669 -Node: Group Definitions511514 -Node: Variable Definitions513706 -Node: Customization Types518696 -Node: Simple Types520131 -Node: Composite Types522288 -Node: Splicing into Lists526978 -Node: Type Keywords528813 -Node: Loading532333 -Node: How Programs Do Loading534008 -Node: Autoload543134 -Node: Repeated Loading549204 -Node: Named Features551317 -Node: Unloading557747 -Node: Hooks for Loading559903 -Node: Byte Compilation560620 -Node: Speed of Byte-Code562613 -Node: Compilation Functions563820 -Node: Docs and Compilation570477 -Node: Dynamic Loading573130 -Node: Eval During Compile575494 -Node: Compiled-Function Objects576759 -Node: Disassembly581560 -Node: Different Behavior588841 -Node: Debugging590186 -Node: Debugger591598 -Node: Error Debugging592743 -Node: Infinite Loops595496 -Node: Function Debugging596740 -Node: Explicit Debug599540 -Node: Using Debugger600311 -Node: Debugger Commands602173 -Node: Invoking the Debugger606490 -Node: Internals of Debugger610405 -Node: Syntax Errors615292 -Node: Excess Open616540 -Node: Excess Close618415 -Node: Compilation Errors619836 -Node: Edebug621124 -Node: Using Edebug623232 -Node: Instrumenting625929 -Node: Edebug Execution Modes629418 -Node: Jumping632528 -Node: Edebug Misc634871 -Node: Breakpoints636260 -Node: Global Break Condition639066 -Node: Embedded Breakpoints640021 -Node: Trapping Errors640976 -Node: Edebug Views643052 -Node: Edebug Eval645017 -Node: Eval List646194 -Node: Reading in Edebug649579 -Node: Printing in Edebug650378 -Node: Tracing652093 -Node: Coverage Testing653981 -Node: The Outside Context656022 -Node: Checking Whether to Stop656971 -Node: Edebug Display Update657618 -Node: Edebug Recursive Edit659641 -Node: Instrumenting Macro Calls661296 -Node: Specification List663778 -Node: Backtracking673189 -Node: Debugging Backquote675127 -Node: Specification Examples678833 -Node: Edebug Options680900 -Node: Read and Print686239 -Node: Streams Intro687216 -Node: Input Streams689234 -Node: Input Functions694135 -Node: Output Streams696195 -Node: Output Functions700246 -Node: Output Variables704546 -Node: Minibuffers709347 -Node: Intro to Minibuffers710499 -Node: Text from Minibuffer712687 -Node: Object from Minibuffer717781 -Node: Minibuffer History721874 -Node: Completion724853 -Node: Basic Completion726828 -Node: Minibuffer Completion731711 -Node: Completion Commands735288 -Node: High-Level Completion739945 -Node: Reading File Names744694 -Node: Programmed Completion748386 -Node: Yes-or-No Queries750768 -Node: Multiple Queries756505 -Node: Reading a Password760572 -Node: Minibuffer Misc761915 -Node: Command Loop766795 -Node: Command Overview768139 -Node: Defining Commands771417 -Node: Using Interactive772165 -Node: Interactive Codes776938 -Node: Interactive Examples782730 -Node: Interactive Call784044 -Node: Command Loop Info789459 -Node: Events794438 -Node: Event Types795899 -Node: Event Contents797822 -Node: Event Predicates802298 -Node: Accessing Mouse Event Positions803616 -Node: Frame-Level Event Position Info804315 -Node: Window-Level Event Position Info805355 -Node: Event Text Position Info807119 -Node: Event Glyph Position Info809611 -Node: Event Toolbar Position Info810934 -Node: Other Event Position Info811605 -Node: Accessing Other Event Info812014 -Node: Working With Events813634 -Node: Converting Events819635 -Node: Reading Input823034 -Node: Key Sequence Input824036 -Node: Reading One Event826671 -Node: Dispatching an Event829495 -Node: Quoted Character Input829946 -Node: Peeking and Discarding831294 -Node: Waiting835198 -Node: Quitting837512 -Node: Prefix Command Arguments841920 -Node: Recursive Editing847007 -Node: Disabling Commands851802 -Node: Command History853870 -Node: Keyboard Macros855607 -Node: Keymaps857824 -Node: Keymap Terminology859401 -Node: Format of Keymaps862330 -Node: Creating Keymaps862741 -Node: Inheritance and Keymaps864821 -Node: Key Sequences867193 -Node: Prefix Keys871989 -Node: Active Keymaps875574 -Node: Key Lookup884945 -Node: Functions for Key Lookup890108 -Node: Changing Key Bindings895809 -Node: Key Binding Commands902971 -Node: Scanning Keymaps905036 -Node: Other Keymap Functions913605 -Node: Menus914227 -Node: Menu Format914819 -Node: Menubar Format923465 -Node: Menubar924090 -Node: Modifying Menus927203 -Node: Menu Filters932547 -Node: Pop-Up Menus934443 -Node: Menu Accelerators936771 -Node: Creating Menu Accelerators937527 -Node: Keyboard Menu Traversal938887 -Node: Menu Accelerator Functions939614 -Node: Buffers Menu942690 -Node: Dialog Boxes943984 -Node: Dialog Box Format944151 -Node: Dialog Box Functions945576 -Node: Toolbar945973 -Node: Toolbar Intro946408 -Node: Creating Toolbar948808 -Node: Toolbar Descriptor Format949725 -Node: Specifying the Toolbar954222 -Node: Other Toolbar Variables957829 -Node: Gutter962257 -Node: Gutter Intro962846 -Node: Creating Gutter964849 -Node: Gutter Descriptor Format967736 -Node: Specifying a Gutter972193 -Node: Other Gutter Variables975728 -Node: Common Gutter Widgets980115 -Node: Buffer Tabs981107 -Node: Progress Bars981248 -Node: Scrollbars981393 -Node: Drag and Drop981528 -Node: Supported Protocols982604 -Node: OffiX DND983107 -Node: CDE dt984114 -Node: MSWindows OLE984705 -Node: Loose ends984876 -Node: Drop Interface985268 -Node: Drag Interface986290 -Node: Modes986464 -Node: Major Modes987415 -Node: Major Mode Conventions990330 -Node: Example Major Modes996285 -Node: Auto Major Mode1004318 -Node: Mode Help1011768 -Node: Derived Modes1012869 -Node: Minor Modes1015060 -Node: Minor Mode Conventions1016362 -Node: Keymaps and Minor Modes1019225 -Node: Modeline Format1020060 -Node: Modeline Data1021828 -Node: Modeline Variables1026981 -Node: %-Constructs1031697 -Node: Hooks1034684 -Node: Documentation1041444 -Node: Documentation Basics1042867 -Node: Accessing Documentation1045918 -Node: Keys in Documentation1052199 -Node: Describing Characters1055682 -Node: Help Functions1058031 -Node: Obsoleteness1064481 -Node: Files1067473 -Node: Visiting Files1069398 -Node: Visiting Functions1070903 -Node: Subroutines of Visiting1076061 -Node: Saving Buffers1078134 -Node: Reading from Files1084227 -Node: Writing to Files1086388 -Node: File Locks1089105 -Node: Information about Files1092172 -Node: Testing Accessibility1092933 -Node: Kinds of Files1096673 -Node: Truenames1098354 -Node: File Attributes1099356 -Node: Changing File Attributes1104495 -Node: File Names1109917 -Node: File Name Components1111490 -Node: Directory Names1113935 -Node: Relative File Names1117165 -Node: File Name Expansion1118135 -Node: Unique File Names1121889 -Node: File Name Completion1123504 -Node: User Name Completion1126772 -Node: Contents of Directories1128179 -Node: Create/Delete Dirs1131492 -Node: Magic File Names1132598 -Node: Partial Files1138246 -Node: Intro to Partial Files1138474 -Node: Creating a Partial File1139714 -Node: Detached Partial Files1140650 -Node: Format Conversion1141772 -Node: Files and MS-DOS1147270 -Node: Backups and Auto-Saving1149334 -Node: Backup Files1150009 -Node: Making Backups1151406 -Node: Rename or Copy1154155 -Node: Numbered Backups1156648 -Node: Backup Names1158883 -Node: Auto-Saving1162175 -Node: Reverting1170337 -Node: Buffers1173673 -Node: Buffer Basics1175089 -Node: Current Buffer1177142 -Node: Buffer Names1181846 -Node: Buffer File Name1185053 -Node: Buffer Modification1189172 -Node: Modification Time1191415 -Node: Read Only Buffers1194790 -Node: The Buffer List1198029 -Node: Creating Buffers1202846 -Node: Killing Buffers1204992 -Node: Indirect Buffers1208824 -Node: Windows1211398 -Node: Basic Windows1212876 -Node: Splitting Windows1215974 -Node: Deleting Windows1221300 -Node: Selecting Windows1225218 -Node: Cyclic Window Ordering1229441 -Node: Buffers and Windows1234596 -Node: Displaying Buffers1236374 -Node: Choosing Window1241713 -Node: Window Point1249631 -Node: Window Start1251701 -Node: Vertical Scrolling1256500 -Node: Horizontal Scrolling1262698 -Node: Size of Window1266227 -Node: Position of Window1270945 -Node: Resizing Windows1273198 -Node: Window Configurations1278636 -Node: Frames1282133 -Node: Creating Frames1284474 -Node: Frame Properties1285814 -Node: Property Access1286630 -Node: Initial Properties1287537 -Node: X Frame Properties1290023 -Node: Size and Position1294657 -Node: Frame Name1296655 -Node: Frame Titles1297569 -Node: Deleting Frames1299393 -Node: Finding All Frames1300368 -Node: Frames and Windows1303596 -Node: Minibuffers and Frames1306378 -Node: Input Focus1307296 -Node: Visibility of Frames1310401 -Node: Raising and Lowering1312391 -Node: Frame Configurations1314767 -Node: Frame Hooks1315824 -Node: Consoles and Devices1317629 -Node: Basic Console Functions1320372 -Node: Basic Device Functions1320795 -Node: Console Types and Device Classes1321641 -Node: Connecting to a Console or Device1323908 -Node: The Selected Console and Device1326092 -Node: Console and Device I/O1327118 -Node: Positions1327882 -Node: Point1328851 -Node: Motion1331941 -Node: Character Motion1332708 -Node: Word Motion1334945 -Node: Buffer End Motion1336335 -Node: Text Lines1337872 -Node: Screen Lines1342773 -Node: List Motion1346836 -Node: Skipping Characters1350319 -Node: Excursions1352538 -Node: Narrowing1355578 -Node: Markers1360909 -Node: Overview of Markers1361815 -Node: Predicates on Markers1366507 -Node: Creating Markers1367753 -Node: Information from Markers1371953 -Node: Changing Markers1373051 -Node: The Mark1374579 -Node: The Region1383082 -Node: Text1388768 -Node: Near Point1391467 -Node: Buffer Contents1395654 -Node: Comparing Text1397060 -Node: Insertion1398468 -Node: Commands for Insertion1402378 -Node: Deletion1405272 -Node: User-Level Deletion1408922 -Node: The Kill Ring1413082 -Node: Kill Ring Concepts1415256 -Node: Kill Functions1416310 -Node: Yank Commands1418233 -Node: Low-Level Kill Ring1420104 -Node: Internals of Kill Ring1423190 -Node: Undo1425970 -Node: Maintaining Undo1430307 -Node: Filling1432925 -Node: Margins1438919 -Node: Auto Filling1442942 -Node: Sorting1444123 -Node: Columns1453437 -Node: Indentation1456518 -Node: Primitive Indent1457297 -Node: Mode-Specific Indent1458622 -Node: Region Indent1461154 -Node: Relative Indent1464101 -Node: Indent Tabs1466483 -Node: Motion by Indent1467804 -Node: Case Changes1468583 -Node: Text Properties1471936 -Node: Examining Properties1473749 -Node: Changing Properties1475632 -Node: Property Search1479223 -Node: Special Properties1483942 -Node: Saving Properties1484223 -Node: Substitution1487365 -Node: Registers1490635 -Node: Transposition1493218 -Node: Change Hooks1494112 -Node: Transformations1496152 -Node: Searching and Matching1501256 -Node: String Search1502387 -Node: Regular Expressions1507368 -Node: Syntax of Regexps1508735 -Node: Regexp Example1523338 -Node: Regexp Search1525508 -Node: POSIX Regexps1531845 -Node: Search and Replace1533922 -Node: Match Data1537287 -Node: Simple Match Data1538417 -Node: Replacing Match1542682 -Node: Entire Match Data1545363 -Node: Saving Match Data1547601 -Node: Searching and Case1548989 -Node: Standard Regexps1551023 -Node: Syntax Tables1553221 -Node: Syntax Basics1554335 -Node: Syntax Descriptors1557307 -Node: Syntax Class Table1559157 -Node: Syntax Flags1565195 -Node: Syntax Table Functions1568412 -Node: Motion and Syntax1572700 -Node: Parsing Expressions1574152 -Node: Standard Syntax Tables1580250 -Node: Syntax Table Internals1581094 -Node: Abbrevs1582120 -Node: Abbrev Mode1583924 -Node: Abbrev Tables1584644 -Node: Defining Abbrevs1586183 -Node: Abbrev Files1588104 -Node: Abbrev Expansion1589887 -Node: Standard Abbrev Tables1594518 -Node: Extents1595677 -Node: Intro to Extents1596920 -Node: Creating and Modifying Extents1600912 -Node: Extent Endpoints1602493 -Node: Finding Extents1605756 -Node: Mapping Over Extents1609878 -Node: Extent Properties1616001 -Node: Detached Extents1626162 -Node: Extent Parents1628021 -Node: Duplicable Extents1629715 -Node: Extents and Events1632936 -Node: Atomic Extents1634843 -Node: Specifiers1635290 -Node: Introduction to Specifiers1637403 -Node: Specifiers In-Depth1639713 -Node: Specifier Instancing1644625 -Node: Specifier Types1647887 -Node: Adding Specifications1652961 -Node: Retrieving Specifications1662382 -Node: Specifier Tag Functions1666127 -Node: Specifier Instancing Functions1669361 -Node: Specifier Example1672768 -Node: Creating Specifiers1675924 -Node: Specifier Validation Functions1680241 -Node: Other Specification Functions1682627 -Node: Faces and Window-System Objects1686448 -Node: Faces1686772 -Node: Merging Faces1688389 -Node: Basic Face Functions1690350 -Node: Face Properties1692498 -Node: Face Convenience Functions1702771 -Node: Other Face Display Functions1705991 -Node: Fonts1706803 -Node: Font Specifiers1707504 -Node: Font Instances1708689 -Node: Font Instance Names1709656 -Node: Font Instance Size1710497 -Node: Font Instance Characteristics1711783 -Node: Font Convenience Functions1712961 -Node: Colors1714251 -Node: Color Specifiers1714691 -Node: Color Instances1717051 -Node: Color Instance Properties1717795 -Node: Color Convenience Functions1718421 -Node: Glyphs1719474 -Node: Glyph Functions1721075 -Node: Creating Glyphs1721482 -Node: Glyph Properties1734122 -Node: Glyph Convenience Functions1743289 -Node: Glyph Dimensions1747236 -Node: Images1748316 -Node: Image Specifiers1748765 -Node: Image Instantiator Conversion1764256 -Node: Image Instances1765621 -Node: Image Instance Types1766372 -Node: Image Instance Functions1769137 -Node: Glyph Types1776194 -Node: Mouse Pointer1777966 -Node: Redisplay Glyphs1780969 -Node: Subwindows1782002 -Node: Annotations1782245 -Node: Annotation Basics1783261 -Node: Annotation Primitives1787199 -Node: Annotation Properties1788538 -Node: Locating Annotations1791578 -Node: Margin Primitives1792415 -Node: Annotation Hooks1794309 -Node: Display1794969 -Node: Refresh Screen1795947 -Node: Truncation1798141 -Node: The Echo Area1800666 -Node: Warnings1807109 -Node: Invisible Text1811545 -Node: Selective Display1814124 -Node: Overlay Arrow1818250 -Node: Temporary Displays1819603 -Node: Blinking1823724 -Node: Usual Display1825908 -Node: Display Tables1828457 -Node: Display Table Format1829261 -Node: Active Display Table1830703 -Node: Character Descriptors1834698 -Node: Beeping1835455 -Node: Hash Tables1840221 -Node: Introduction to Hash Tables1840829 -Node: Working With Hash Tables1847388 -Node: Weak Hash Tables1848505 -Node: Range Tables1850522 -Node: Introduction to Range Tables1851211 -Node: Working With Range Tables1851657 -Node: Databases1852616 -Node: Connecting to a Database1852915 -Node: Working With a Database1854022 -Node: Other Database Functions1854896 -Node: Processes1855465 -Node: Subprocess Creation1857689 -Node: Synchronous Processes1861140 -Node: MS-DOS Subprocesses1867862 -Node: Asynchronous Processes1868936 -Node: Deleting Processes1873293 -Node: Process Information1875164 -Node: Input to Processes1879256 -Node: Signals to Processes1881951 -Node: Output from Processes1886766 -Node: Process Buffers1887578 -Node: Filter Functions1890457 -Node: Accepting Output1896048 -Node: Sentinels1897575 -Node: Process Window Size1901065 -Node: Transaction Queues1901414 -Node: Network1903112 -Node: System Interface1905746 -Node: Starting Up1907016 -Node: Start-up Summary1907610 -Node: Init File1911164 -Node: Terminal-Specific1913545 -Node: Command Line Arguments1916704 -Node: Getting Out1920193 -Node: Killing XEmacs1920762 -Node: Suspending XEmacs1922430 -Node: System Environment1925809 -Node: User Identification1931990 -Node: Time of Day1935519 -Node: Time Conversion1938306 -Node: Timers1943548 -Node: Terminal Input1945721 -Node: Input Modes1946224 -Node: Translating Input1948683 -Node: Recording Input1952848 -Node: Terminal Output1954948 -Node: Flow Control1958569 -Node: Batch Mode1962531 -Node: X-Windows1963913 -Node: X Selections1964784 -Node: X Server1967535 -Node: Resources1967986 -Node: Server Data1973297 -Node: Grabs1974504 -Node: X Miscellaneous1976084 -Node: ToolTalk Support1978469 -Node: XEmacs ToolTalk API Summary1978686 -Node: Sending Messages1979986 -Node: Example of Sending Messages1980237 -Node: Elisp Interface for Sending Messages1981299 -Node: Receiving Messages1987895 -Node: Example of Receiving Messages1988118 -Node: Elisp Interface for Receiving Messages1988954 -Node: LDAP Support1992811 -Node: Building XEmacs with LDAP support1993305 -Node: XEmacs LDAP API1994282 -Node: LDAP Variables1995334 -Node: The High-Level LDAP API1997934 -Node: The Low-Level LDAP API2001407 -Node: The LDAP Lisp Object2002238 -Node: Opening and Closing a LDAP Connection2002793 -Node: Low-level Operations on a LDAP Server2004599 -Node: LDAP Internationalization2007323 -Node: LDAP Internationalization Variables2008228 -Node: Encoder/Decoder Functions2009959 -Node: Syntax of Search Filters2010996 -Node: PostgreSQL Support2012294 -Node: Building XEmacs with PostgreSQL support2012689 -Node: XEmacs PostgreSQL libpq API2014036 -Node: libpq Lisp Variables2015915 -Node: libpq Lisp Symbols and DataTypes2018879 -Node: Synchronous Interface Functions2032119 -Node: Asynchronous Interface Functions2036610 -Node: Large Object Support2040115 -Node: Other libpq Functions2040742 -Node: Unimplemented libpq Functions2043777 -Node: XEmacs PostgreSQL libpq Examples2049096 -Node: Internationalization2055187 -Node: I18N Levels 1 and 22055530 -Node: I18N Level 32056236 -Node: Level 3 Basics2056517 -Node: Level 3 Primitives2057350 -Node: Dynamic Messaging2058956 -Node: Domain Specification2059419 -Node: Documentation String Extraction2061089 -Node: I18N Level 42062007 -Node: MULE2062199 -Node: Internationalization Terminology2063248 -Node: Charsets2075447 -Node: Charset Properties2076143 -Node: Basic Charset Functions2080858 -Node: Charset Property Functions2083039 -Node: Predefined Charsets2085109 -Node: MULE Characters2088029 -Node: Composite Characters2088904 -Node: Coding Systems2090171 -Node: Coding System Types2092311 -Node: ISO 20222096295 -Node: EOL Conversion2108570 -Node: Coding System Properties2109742 -Node: Basic Coding System Functions2114065 -Node: Coding System Property Functions2116099 -Node: Encoding and Decoding Text2116657 -Node: Detection of Textual Encoding2117793 -Node: Big5 and Shift-JIS Functions2119329 -Node: Predefined Coding Systems2120481 -Node: CCL2132575 -Node: CCL Syntax2135679 -Node: CCL Statements2137255 -Node: CCL Expressions2141903 -Node: Calling CCL2144442 -Node: CCL Examples2147447 -Node: Category Tables2147584 -Node: Tips2149943 -Node: Style Tips2150584 -Node: Compilation Tips2160103 -Node: Documentation Tips2162017 -Node: Comment Tips2167526 -Node: Library Headers2170529 -Node: Building XEmacs and Object Allocation2174501 -Node: Building XEmacs2175384 -Node: Pure Storage2181962 -Node: Garbage Collection2184750 -Node: Standard Errors2195593 -Node: Standard Buffer-Local Variables2199802 -Node: Standard Keymaps2202437 -Node: Standard Hooks2206171 -Node: Index2213671 +Node: Forms341449 +Node: Self-Evaluating Forms342608 +Node: Symbol Forms344121 +Node: Classifying Lists345038 +Node: Function Indirection345794 +Node: Function Forms348893 +Node: Macro Forms349890 +Node: Special Forms351490 +Node: Autoloading353799 +Node: Quoting354297 +Node: Control Structures355658 +Node: Sequencing357278 +Node: Conditionals360143 +Node: Combining Conditions363566 +Node: Iteration366836 +Node: Nonlocal Exits368615 +Node: Catch and Throw369317 +Node: Examples of Catch373156 +Node: Errors375175 +Node: Signaling Errors376664 +Node: Processing of Errors385411 +Node: Handling Errors387690 +Node: Error Symbols394931 +Node: Cleanups398887 +Node: Variables402665 +Node: Global Variables404434 +Node: Constant Variables405510 +Node: Local Variables406136 +Node: Void Variables411074 +Node: Defining Variables414590 +Node: Accessing Variables421754 +Node: Setting Variables423179 +Node: Variable Scoping427698 +Node: Scope429297 +Node: Extent430822 +Node: Impl of Scope432301 +Node: Using Scoping434264 +Node: Buffer-Local Variables435786 +Node: Intro to Buffer-Local436622 +Node: Creating Buffer-Local439165 +Node: Default Value445064 +Node: Variable Aliases448207 +Node: Functions450058 +Node: What Is a Function451152 +Node: Lambda Expressions455198 +Node: Lambda Components456108 +Node: Simple Lambda457940 +Node: Argument List459597 +Node: Function Documentation463325 +Node: Function Names465267 +Node: Defining Functions467840 +Node: Calling Functions470880 +Node: Mapping Functions474728 +Node: Anonymous Functions477416 +Node: Function Cells480661 +Node: Inline Functions485479 +Node: Related Topics487289 +Node: Macros488342 +Node: Simple Macro489626 +Node: Expansion490361 +Node: Compiling Macros493365 +Node: Defining Macros495201 +Node: Backquote496518 +Node: Problems with Macros498915 +Node: Argument Evaluation499610 +Node: Surprising Local Vars502525 +Node: Eval During Expansion504593 +Node: Repeated Expansion506286 +Node: Customization508202 +Node: Common Keywords508671 +Node: Group Definitions511516 +Node: Variable Definitions513708 +Node: Customization Types518698 +Node: Simple Types520133 +Node: Composite Types522290 +Node: Splicing into Lists526980 +Node: Type Keywords528815 +Node: Loading532335 +Node: How Programs Do Loading534010 +Node: Autoload543136 +Node: Repeated Loading549206 +Node: Named Features551319 +Node: Unloading557749 +Node: Hooks for Loading559905 +Node: Byte Compilation560622 +Node: Speed of Byte-Code562615 +Node: Compilation Functions563822 +Node: Docs and Compilation570479 +Node: Dynamic Loading573132 +Node: Eval During Compile575496 +Node: Compiled-Function Objects576761 +Node: Disassembly581562 +Node: Different Behavior588843 +Node: Debugging590188 +Node: Debugger591600 +Node: Error Debugging592745 +Node: Infinite Loops595498 +Node: Function Debugging596742 +Node: Explicit Debug599542 +Node: Using Debugger600313 +Node: Debugger Commands602175 +Node: Invoking the Debugger606492 +Node: Internals of Debugger610407 +Node: Syntax Errors615294 +Node: Excess Open616542 +Node: Excess Close618417 +Node: Compilation Errors619838 +Node: Edebug621126 +Node: Using Edebug623234 +Node: Instrumenting625931 +Node: Edebug Execution Modes629420 +Node: Jumping632530 +Node: Edebug Misc634873 +Node: Breakpoints636262 +Node: Global Break Condition639068 +Node: Embedded Breakpoints640023 +Node: Trapping Errors640978 +Node: Edebug Views643054 +Node: Edebug Eval645019 +Node: Eval List646196 +Node: Reading in Edebug649581 +Node: Printing in Edebug650380 +Node: Tracing652095 +Node: Coverage Testing653983 +Node: The Outside Context656024 +Node: Checking Whether to Stop656973 +Node: Edebug Display Update657620 +Node: Edebug Recursive Edit659643 +Node: Instrumenting Macro Calls661298 +Node: Specification List663780 +Node: Backtracking673191 +Node: Debugging Backquote675129 +Node: Specification Examples678835 +Node: Edebug Options680902 +Node: Read and Print686241 +Node: Streams Intro687218 +Node: Input Streams689236 +Node: Input Functions694137 +Node: Output Streams696197 +Node: Output Functions700248 +Node: Output Variables704548 +Node: Minibuffers709349 +Node: Intro to Minibuffers710501 +Node: Text from Minibuffer712689 +Node: Object from Minibuffer717783 +Node: Minibuffer History721876 +Node: Completion724855 +Node: Basic Completion726830 +Node: Minibuffer Completion731713 +Node: Completion Commands735290 +Node: High-Level Completion739947 +Node: Reading File Names744696 +Node: Programmed Completion748388 +Node: Yes-or-No Queries750770 +Node: Multiple Queries756507 +Node: Reading a Password760574 +Node: Minibuffer Misc761917 +Node: Command Loop766797 +Node: Command Overview768141 +Node: Defining Commands771419 +Node: Using Interactive772167 +Node: Interactive Codes776940 +Node: Interactive Examples782732 +Node: Interactive Call784046 +Node: Command Loop Info789461 +Node: Events794440 +Node: Event Types795901 +Node: Event Contents797824 +Node: Event Predicates802300 +Node: Accessing Mouse Event Positions803618 +Node: Frame-Level Event Position Info804317 +Node: Window-Level Event Position Info805357 +Node: Event Text Position Info807121 +Node: Event Glyph Position Info809613 +Node: Event Toolbar Position Info810936 +Node: Other Event Position Info811607 +Node: Accessing Other Event Info812016 +Node: Working With Events813636 +Node: Converting Events819637 +Node: Reading Input823036 +Node: Key Sequence Input824038 +Node: Reading One Event826673 +Node: Dispatching an Event829497 +Node: Quoted Character Input829948 +Node: Peeking and Discarding831296 +Node: Waiting835200 +Node: Quitting837514 +Node: Prefix Command Arguments841922 +Node: Recursive Editing847009 +Node: Disabling Commands851804 +Node: Command History853872 +Node: Keyboard Macros855609 +Node: Keymaps857826 +Node: Keymap Terminology859403 +Node: Format of Keymaps862332 +Node: Creating Keymaps862743 +Node: Inheritance and Keymaps864823 +Node: Key Sequences867195 +Node: Prefix Keys871991 +Node: Active Keymaps875576 +Node: Key Lookup884947 +Node: Functions for Key Lookup890110 +Node: Changing Key Bindings895811 +Node: Key Binding Commands902973 +Node: Scanning Keymaps905038 +Node: Other Keymap Functions913607 +Node: Menus914229 +Node: Menu Format914821 +Node: Menubar Format923467 +Node: Menubar924092 +Node: Modifying Menus927205 +Node: Menu Filters932549 +Node: Pop-Up Menus934445 +Node: Menu Accelerators936773 +Node: Creating Menu Accelerators937529 +Node: Keyboard Menu Traversal938889 +Node: Menu Accelerator Functions939616 +Node: Buffers Menu942692 +Node: Dialog Boxes943986 +Node: Dialog Box Format944153 +Node: Dialog Box Functions945578 +Node: Toolbar945975 +Node: Toolbar Intro946410 +Node: Creating Toolbar948810 +Node: Toolbar Descriptor Format949727 +Node: Specifying the Toolbar954224 +Node: Other Toolbar Variables957831 +Node: Gutter962259 +Node: Gutter Intro962848 +Node: Creating Gutter964851 +Node: Gutter Descriptor Format967738 +Node: Specifying a Gutter972195 +Node: Other Gutter Variables975730 +Node: Common Gutter Widgets980117 +Node: Buffer Tabs981109 +Node: Progress Bars981250 +Node: Scrollbars981395 +Node: Drag and Drop981530 +Node: Supported Protocols982606 +Node: OffiX DND983109 +Node: CDE dt984116 +Node: MSWindows OLE984707 +Node: Loose ends984878 +Node: Drop Interface985270 +Node: Drag Interface986292 +Node: Modes986466 +Node: Major Modes987417 +Node: Major Mode Conventions990332 +Node: Example Major Modes996287 +Node: Auto Major Mode1004320 +Node: Mode Help1011770 +Node: Derived Modes1012871 +Node: Minor Modes1015062 +Node: Minor Mode Conventions1016364 +Node: Keymaps and Minor Modes1019227 +Node: Modeline Format1020062 +Node: Modeline Data1021830 +Node: Modeline Variables1026983 +Node: %-Constructs1031699 +Node: Hooks1034686 +Node: Documentation1041446 +Node: Documentation Basics1042869 +Node: Accessing Documentation1045920 +Node: Keys in Documentation1052201 +Node: Describing Characters1055684 +Node: Help Functions1058033 +Node: Obsoleteness1064483 +Node: Files1067475 +Node: Visiting Files1069400 +Node: Visiting Functions1070905 +Node: Subroutines of Visiting1076063 +Node: Saving Buffers1078136 +Node: Reading from Files1084229 +Node: Writing to Files1086390 +Node: File Locks1089107 +Node: Information about Files1092174 +Node: Testing Accessibility1092935 +Node: Kinds of Files1096675 +Node: Truenames1098356 +Node: File Attributes1099358 +Node: Changing File Attributes1104497 +Node: File Names1109919 +Node: File Name Components1111492 +Node: Directory Names1113937 +Node: Relative File Names1117167 +Node: File Name Expansion1118137 +Node: Unique File Names1121891 +Node: File Name Completion1123506 +Node: User Name Completion1126774 +Node: Contents of Directories1128181 +Node: Create/Delete Dirs1131494 +Node: Magic File Names1132600 +Node: Partial Files1138248 +Node: Intro to Partial Files1138476 +Node: Creating a Partial File1139716 +Node: Detached Partial Files1140652 +Node: Format Conversion1141774 +Node: Files and MS-DOS1147272 +Node: Backups and Auto-Saving1149336 +Node: Backup Files1150011 +Node: Making Backups1151408 +Node: Rename or Copy1154157 +Node: Numbered Backups1156650 +Node: Backup Names1158885 +Node: Auto-Saving1162177 +Node: Reverting1170339 +Node: Buffers1173675 +Node: Buffer Basics1175091 +Node: Current Buffer1177144 +Node: Buffer Names1181848 +Node: Buffer File Name1185055 +Node: Buffer Modification1189174 +Node: Modification Time1191417 +Node: Read Only Buffers1194792 +Node: The Buffer List1198031 +Node: Creating Buffers1202848 +Node: Killing Buffers1204994 +Node: Indirect Buffers1208826 +Node: Windows1211400 +Node: Basic Windows1212878 +Node: Splitting Windows1215976 +Node: Deleting Windows1221302 +Node: Selecting Windows1225220 +Node: Cyclic Window Ordering1229443 +Node: Buffers and Windows1234598 +Node: Displaying Buffers1236376 +Node: Choosing Window1241715 +Node: Window Point1249633 +Node: Window Start1251703 +Node: Vertical Scrolling1256502 +Node: Horizontal Scrolling1262700 +Node: Size of Window1266229 +Node: Position of Window1270947 +Node: Resizing Windows1273200 +Node: Window Configurations1278638 +Node: Frames1282135 +Node: Creating Frames1284476 +Node: Frame Properties1285816 +Node: Property Access1286632 +Node: Initial Properties1287539 +Node: X Frame Properties1290025 +Node: Size and Position1294659 +Node: Frame Name1296657 +Node: Frame Titles1297571 +Node: Deleting Frames1299395 +Node: Finding All Frames1300370 +Node: Frames and Windows1303598 +Node: Minibuffers and Frames1306380 +Node: Input Focus1307298 +Node: Visibility of Frames1310403 +Node: Raising and Lowering1312393 +Node: Frame Configurations1314769 +Node: Frame Hooks1315826 +Node: Consoles and Devices1317631 +Node: Basic Console Functions1320374 +Node: Basic Device Functions1320797 +Node: Console Types and Device Classes1321643 +Node: Connecting to a Console or Device1323910 +Node: The Selected Console and Device1326094 +Node: Console and Device I/O1327120 +Node: Positions1327884 +Node: Point1328853 +Node: Motion1331943 +Node: Character Motion1332710 +Node: Word Motion1334947 +Node: Buffer End Motion1336337 +Node: Text Lines1337874 +Node: Screen Lines1342775 +Node: List Motion1346838 +Node: Skipping Characters1350321 +Node: Excursions1352540 +Node: Narrowing1355580 +Node: Markers1360911 +Node: Overview of Markers1361817 +Node: Predicates on Markers1366509 +Node: Creating Markers1367755 +Node: Information from Markers1371955 +Node: Changing Markers1373053 +Node: The Mark1374581 +Node: The Region1383084 +Node: Text1388770 +Node: Near Point1391469 +Node: Buffer Contents1395656 +Node: Comparing Text1397062 +Node: Insertion1398470 +Node: Commands for Insertion1402380 +Node: Deletion1405274 +Node: User-Level Deletion1408924 +Node: The Kill Ring1413084 +Node: Kill Ring Concepts1415258 +Node: Kill Functions1416312 +Node: Yank Commands1418235 +Node: Low-Level Kill Ring1420106 +Node: Internals of Kill Ring1423192 +Node: Undo1425972 +Node: Maintaining Undo1430309 +Node: Filling1432927 +Node: Margins1438921 +Node: Auto Filling1442944 +Node: Sorting1444125 +Node: Columns1453439 +Node: Indentation1456520 +Node: Primitive Indent1457299 +Node: Mode-Specific Indent1458624 +Node: Region Indent1461156 +Node: Relative Indent1464103 +Node: Indent Tabs1466485 +Node: Motion by Indent1467806 +Node: Case Changes1468585 +Node: Text Properties1471938 +Node: Examining Properties1473751 +Node: Changing Properties1475634 +Node: Property Search1479225 +Node: Special Properties1483944 +Node: Saving Properties1484225 +Node: Substitution1487367 +Node: Registers1490637 +Node: Transposition1493220 +Node: Change Hooks1494114 +Node: Transformations1496154 +Node: Searching and Matching1501258 +Node: String Search1502389 +Node: Regular Expressions1507370 +Node: Syntax of Regexps1508737 +Node: Regexp Example1523340 +Node: Regexp Search1525510 +Node: POSIX Regexps1531847 +Node: Search and Replace1533924 +Node: Match Data1537289 +Node: Simple Match Data1538419 +Node: Replacing Match1542684 +Node: Entire Match Data1545365 +Node: Saving Match Data1547603 +Node: Searching and Case1548991 +Node: Standard Regexps1551025 +Node: Syntax Tables1553223 +Node: Syntax Basics1554337 +Node: Syntax Descriptors1557309 +Node: Syntax Class Table1559159 +Node: Syntax Flags1565197 +Node: Syntax Table Functions1568414 +Node: Motion and Syntax1572702 +Node: Parsing Expressions1574154 +Node: Standard Syntax Tables1580252 +Node: Syntax Table Internals1581096 +Node: Abbrevs1582122 +Node: Abbrev Mode1583926 +Node: Abbrev Tables1584646 +Node: Defining Abbrevs1586185 +Node: Abbrev Files1588106 +Node: Abbrev Expansion1589889 +Node: Standard Abbrev Tables1594520 +Node: Extents1595679 +Node: Intro to Extents1596922 +Node: Creating and Modifying Extents1600914 +Node: Extent Endpoints1602495 +Node: Finding Extents1605758 +Node: Mapping Over Extents1609880 +Node: Extent Properties1616003 +Node: Detached Extents1626164 +Node: Extent Parents1628023 +Node: Duplicable Extents1629717 +Node: Extents and Events1632938 +Node: Atomic Extents1634845 +Node: Specifiers1635292 +Node: Introduction to Specifiers1637405 +Node: Specifiers In-Depth1639715 +Node: Specifier Instancing1644627 +Node: Specifier Types1647889 +Node: Adding Specifications1652963 +Node: Retrieving Specifications1662384 +Node: Specifier Tag Functions1666129 +Node: Specifier Instancing Functions1669363 +Node: Specifier Example1672770 +Node: Creating Specifiers1675926 +Node: Specifier Validation Functions1680243 +Node: Other Specification Functions1682629 +Node: Faces and Window-System Objects1686450 +Node: Faces1686774 +Node: Merging Faces1688391 +Node: Basic Face Functions1690352 +Node: Face Properties1692500 +Node: Face Convenience Functions1702773 +Node: Other Face Display Functions1705993 +Node: Fonts1706805 +Node: Font Specifiers1707506 +Node: Font Instances1708691 +Node: Font Instance Names1709658 +Node: Font Instance Size1710499 +Node: Font Instance Characteristics1711785 +Node: Font Convenience Functions1712963 +Node: Colors1714253 +Node: Color Specifiers1714693 +Node: Color Instances1717053 +Node: Color Instance Properties1717797 +Node: Color Convenience Functions1718423 +Node: Glyphs1719476 +Node: Glyph Functions1721077 +Node: Creating Glyphs1721484 +Node: Glyph Properties1734124 +Node: Glyph Convenience Functions1743291 +Node: Glyph Dimensions1747238 +Node: Images1748318 +Node: Image Specifiers1748767 +Node: Image Instantiator Conversion1764258 +Node: Image Instances1765623 +Node: Image Instance Types1766374 +Node: Image Instance Functions1769139 +Node: Glyph Types1776196 +Node: Mouse Pointer1777968 +Node: Redisplay Glyphs1780971 +Node: Subwindows1782004 +Node: Annotations1782247 +Node: Annotation Basics1783263 +Node: Annotation Primitives1787201 +Node: Annotation Properties1788540 +Node: Locating Annotations1791580 +Node: Margin Primitives1792417 +Node: Annotation Hooks1794311 +Node: Display1794971 +Node: Refresh Screen1795949 +Node: Truncation1798143 +Node: The Echo Area1800668 +Node: Warnings1807111 +Node: Invisible Text1811547 +Node: Selective Display1814126 +Node: Overlay Arrow1818252 +Node: Temporary Displays1819605 +Node: Blinking1823726 +Node: Usual Display1825910 +Node: Display Tables1828459 +Node: Display Table Format1829263 +Node: Active Display Table1830705 +Node: Character Descriptors1834700 +Node: Beeping1835457 +Node: Hash Tables1840223 +Node: Introduction to Hash Tables1840831 +Node: Working With Hash Tables1847390 +Node: Weak Hash Tables1848507 +Node: Range Tables1850524 +Node: Introduction to Range Tables1851213 +Node: Working With Range Tables1851659 +Node: Databases1852618 +Node: Connecting to a Database1852917 +Node: Working With a Database1854024 +Node: Other Database Functions1854898 +Node: Processes1855467 +Node: Subprocess Creation1857691 +Node: Synchronous Processes1861142 +Node: MS-DOS Subprocesses1867864 +Node: Asynchronous Processes1868938 +Node: Deleting Processes1873295 +Node: Process Information1875166 +Node: Input to Processes1879258 +Node: Signals to Processes1881953 +Node: Output from Processes1886768 +Node: Process Buffers1887580 +Node: Filter Functions1890459 +Node: Accepting Output1896050 +Node: Sentinels1897577 +Node: Process Window Size1901067 +Node: Transaction Queues1901416 +Node: Network1903114 +Node: System Interface1905748 +Node: Starting Up1907018 +Node: Start-up Summary1907612 +Node: Init File1911166 +Node: Terminal-Specific1913547 +Node: Command Line Arguments1916706 +Node: Getting Out1920195 +Node: Killing XEmacs1920764 +Node: Suspending XEmacs1922432 +Node: System Environment1925811 +Node: User Identification1931992 +Node: Time of Day1935521 +Node: Time Conversion1938308 +Node: Timers1943550 +Node: Terminal Input1945723 +Node: Input Modes1946226 +Node: Translating Input1948685 +Node: Recording Input1952850 +Node: Terminal Output1954950 +Node: Flow Control1958571 +Node: Batch Mode1962533 +Node: X-Windows1963915 +Node: X Selections1964786 +Node: X Server1967537 +Node: Resources1967988 +Node: Server Data1973299 +Node: Grabs1974506 +Node: X Miscellaneous1976086 +Node: ToolTalk Support1978471 +Node: XEmacs ToolTalk API Summary1978688 +Node: Sending Messages1979988 +Node: Example of Sending Messages1980239 +Node: Elisp Interface for Sending Messages1981301 +Node: Receiving Messages1987897 +Node: Example of Receiving Messages1988120 +Node: Elisp Interface for Receiving Messages1988956 +Node: LDAP Support1992813 +Node: Building XEmacs with LDAP support1993307 +Node: XEmacs LDAP API1994284 +Node: LDAP Variables1995336 +Node: The High-Level LDAP API1997936 +Node: The Low-Level LDAP API2001409 +Node: The LDAP Lisp Object2002240 +Node: Opening and Closing a LDAP Connection2002795 +Node: Low-level Operations on a LDAP Server2004601 +Node: LDAP Internationalization2007325 +Node: LDAP Internationalization Variables2008230 +Node: Encoder/Decoder Functions2009961 +Node: Syntax of Search Filters2010998 +Node: PostgreSQL Support2012296 +Node: Building XEmacs with PostgreSQL support2012691 +Node: XEmacs PostgreSQL libpq API2014038 +Node: libpq Lisp Variables2015917 +Node: libpq Lisp Symbols and DataTypes2018881 +Node: Synchronous Interface Functions2032121 +Node: Asynchronous Interface Functions2036612 +Node: Large Object Support2040117 +Node: Other libpq Functions2040744 +Node: Unimplemented libpq Functions2043779 +Node: XEmacs PostgreSQL libpq Examples2049098 +Node: Internationalization2055189 +Node: I18N Levels 1 and 22055532 +Node: I18N Level 32056238 +Node: Level 3 Basics2056519 +Node: Level 3 Primitives2057352 +Node: Dynamic Messaging2058958 +Node: Domain Specification2059421 +Node: Documentation String Extraction2061091 +Node: I18N Level 42062009 +Node: MULE2062201 +Node: Internationalization Terminology2063250 +Node: Charsets2075449 +Node: Charset Properties2076145 +Node: Basic Charset Functions2080860 +Node: Charset Property Functions2083041 +Node: Predefined Charsets2085111 +Node: MULE Characters2088031 +Node: Composite Characters2088906 +Node: Coding Systems2090173 +Node: Coding System Types2092313 +Node: ISO 20222096297 +Node: EOL Conversion2108572 +Node: Coding System Properties2109744 +Node: Basic Coding System Functions2114067 +Node: Coding System Property Functions2116101 +Node: Encoding and Decoding Text2116659 +Node: Detection of Textual Encoding2117795 +Node: Big5 and Shift-JIS Functions2119331 +Node: Predefined Coding Systems2120483 +Node: CCL2132577 +Node: CCL Syntax2135681 +Node: CCL Statements2137257 +Node: CCL Expressions2141905 +Node: Calling CCL2144444 +Node: CCL Examples2147449 +Node: Category Tables2147586 +Node: Tips2149945 +Node: Style Tips2150586 +Node: Compilation Tips2160105 +Node: Documentation Tips2162019 +Node: Comment Tips2167528 +Node: Library Headers2170531 +Node: Building XEmacs and Object Allocation2174503 +Node: Building XEmacs2175386 +Node: Pure Storage2181964 +Node: Garbage Collection2184752 +Node: Standard Errors2195595 +Node: Standard Buffer-Local Variables2199804 +Node: Standard Keymaps2202439 +Node: Standard Hooks2206173 +Node: Index2213673  End Tag Table diff --git a/info/lispref.info-7 b/info/lispref.info-7 index fb875ac..1f075d3 100644 --- a/info/lispref.info-7 +++ b/info/lispref.info-7 @@ -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. diff --git a/info/lispref.info-9 b/info/lispref.info-9 index 12050f5..e4a6581 100644 --- a/info/lispref.info-9 +++ b/info/lispref.info-9 @@ -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::. diff --git a/info/texinfo.info b/info/texinfo.info index 1f73e7f..2064e9c 100644 --- a/info/texinfo.info +++ b/info/texinfo.info @@ -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.  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  Tag Table: (Indirect) -Node: Top1484 -Node: Copying23799 -Node: Overview25804 -Node: Overview-Footnotes27233 -Ref: Overview-Footnote-127297 -Node: Using Texinfo27769 -Node: Info Files30256 -Node: Info Files-Footnotes34292 -Ref: Info Files-Footnote-134360 -Node: Printed Books34539 -Node: Printed Books-Footnotes37211 -Ref: Printed Books-Footnote-137285 -Node: Formatting Commands37495 -Node: Formatting Commands-Footnotes40322 -Ref: Formatting Commands-Footnote-140408 -Node: Conventions41024 -Node: Comments43586 -Node: Minimum45009 -Node: Six Parts47195 -Node: Short Sample48707 -Node: Acknowledgements52843 -Node: Texinfo Mode53678 -Node: Texinfo Mode Overview55050 -Node: Emacs Editing55826 -Node: Inserting57956 -Node: Showing the Structure62237 -Node: Updating Nodes and Menus64764 -Node: Updating Commands65837 -Node: Updating Requirements71898 -Node: Other Updating Commands74195 -Node: Info Formatting77463 -Node: Printing78721 -Node: Texinfo Mode Summary81066 -Node: Beginning a File85820 -Node: Four Parts86711 -Node: Sample Beginning88181 -Node: Header89801 -Node: First Line91153 -Node: Start of Header92142 -Node: setfilename92855 -Node: settitle94791 -Node: setchapternewpage96681 -Node: paragraphindent99442 -Node: End of Header100924 -Node: Info Summary and Permissions101763 -Node: Titlepage & Copyright Page102782 -Node: titlepage104388 -Node: titlepage-Footnotes106670 -Ref: titlepage-Footnote-1106736 -Node: titlefont center sp107010 -Node: title subtitle author108236 -Node: Copyright & Permissions110508 -Node: end titlepage112509 -Node: headings on off114215 -Node: The Top Node116260 -Node: Title of Top Node117415 -Node: Master Menu Parts118668 -Node: Software Copying Permissions120905 -Node: Ending a File122073 -Node: Printing Indices & Menus122921 -Node: Contents125230 -Node: File End127570 -Node: Structuring128243 -Node: Tree Structuring129900 -Node: Structuring Command Types131343 -Node: makeinfo top133670 -Node: chapter134203 -Node: unnumbered & appendix135227 -Node: majorheading & chapheading136066 -Node: section136887 -Node: unnumberedsec appendixsec heading137651 -Node: subsection138640 -Node: unnumberedsubsec appendixsubsec subheading139212 -Node: subsubsection140165 -Node: Raise/lower sections141715 -Node: Nodes143850 -Node: Two Paths144787 -Node: Node Menu Illustration146073 -Node: node149768 -Node: Node Names152464 -Node: Writing a Node153540 -Node: Node Line Tips155558 -Node: Node Line Requirements156352 -Node: First Node157953 -Node: makeinfo top command159392 -Node: Top Node Summary160571 -Node: makeinfo Pointer Creation162021 -Node: Menus163268 -Node: Menus-Footnotes164207 -Ref: Menus-Footnote-1164265 -Node: Menu Location164558 -Node: Writing a Menu166235 -Node: Menu Parts167201 -Node: Less Cluttered Menu Entry168359 -Node: Menu Example168984 -Node: Other Info Files170505 -Node: Cross References172373 -Node: References173330 -Node: Cross Reference Commands175077 -Node: Cross Reference Parts176136 -Node: xref178972 -Node: Reference Syntax179771 -Node: One Argument181425 -Node: Two Arguments182437 -Node: Three Arguments183552 -Node: Four and Five Arguments185943 -Node: Top Node Naming188355 -Node: ref189365 -Node: pxref190757 -Node: inforef193139 -Node: uref194432 -Node: Marking Text195431 -Node: Indicating196055 -Node: Useful Highlighting197960 -Node: code199349 -Node: kbd202387 -Node: key204257 -Node: samp205590 -Node: var207177 -Node: file208970 -Node: dfn209577 -Node: cite210487 -Node: url210941 -Node: email211505 -Node: Emphasis212317 -Node: emph & strong213217 -Node: Smallcaps214203 -Node: Fonts215530 -Node: Customized Highlighting216618 -Node: Customized Highlighting-Footnotes219433 -Ref: Customized Highlighting-Footnote-1219527 -Node: Quotations and Examples219653 -Node: Block Enclosing Commands221275 -Node: quotation223300 -Node: example224390 -Node: noindent226445 -Node: Lisp Example227909 -Node: Lisp Example-Footnotes228611 -Ref: Lisp Example-Footnote-1228683 -Node: smallexample & smalllisp228801 -Node: display230826 -Node: format231458 -Node: exdent231919 -Node: flushleft & flushright232999 -Node: cartouche234265 -Node: Lists and Tables235032 -Node: Introducing Lists235708 -Node: itemize237373 -Node: enumerate239520 -Node: Two-column Tables242025 -Node: table242714 -Node: ftable vtable245147 -Node: itemx246248 -Node: Multi-column Tables247259 -Node: Multitable Column Widths247930 -Node: Multitable Rows249384 -Node: Indices251165 -Node: Index Entries252315 -Node: Predefined Indices253448 -Node: Indexing Commands254445 -Node: Combining Indices258985 -Node: syncodeindex260348 -Node: synindex262010 -Node: New Indices262535 -Node: Insertions264360 -Node: Braces Atsigns265544 -Node: Inserting An Atsign266096 -Node: Inserting Braces266370 -Node: Inserting Space266733 -Node: Not Ending a Sentence267237 -Node: Ending a Sentence268591 -Node: Multiple Spaces269720 -Node: dmn270939 -Node: Inserting Accents272146 -Node: Dots Bullets273903 -Node: dots274725 -Node: bullet275249 -Node: TeX and copyright275646 -Node: tex276213 -Node: copyright symbol276629 -Node: pounds276889 -Node: minus277253 -Node: math278175 -Node: Glyphs278903 -Node: Glyphs Summary280016 -Node: result280644 -Node: expansion281129 -Node: Print Glyph282085 -Node: Error Glyph282962 -Node: Equivalence283795 -Node: Point Glyph284483 -Node: Images286040 -Node: Breaks287707 -Node: Break Commands289138 -Node: Line Breaks289979 -Node: - and hyphenation290997 -Node: w292247 -Node: sp292960 -Node: page293369 -Node: group293746 -Node: need295489 -Node: Definition Commands296219 -Node: Def Cmd Template297790 -Node: Optional Arguments300787 -Node: deffnx302375 -Node: Def Cmds in Detail303330 -Node: Functions Commands304440 -Node: Variables Commands307445 -Node: Typed Functions309531 -Node: Typed Variables313073 -Node: Abstract Objects315056 -Node: Data Types320281 -Node: Def Cmd Conventions321536 -Node: Sample Function Definition322099 -Node: Footnotes324983 -Node: Footnotes-Footnotes325371 -Ref: Footnotes-Footnote-1325437 -Node: Footnote Commands325717 -Node: Footnote Commands-Footnotes327214 -Ref: Footnote Commands-Footnote-1327296 -Node: Footnote Styles327332 -Node: Conditionals329918 -Node: Conditional Commands330729 -Node: Conditional Not Commands332222 -Node: Raw Formatter Commands332967 -Node: set clear value334797 -Node: ifset ifclear335598 -Node: value338777 -Node: value Example340189 -Node: Macros341767 -Node: Defining Macros342472 -Node: Invoking Macros343561 -Node: Format/Print Hardcopy344667 -Node: Use TeX346504 -Node: Format with tex/texindex347132 -Node: Format with texi2dvi350773 -Node: Print with lpr351364 -Node: Within Emacs352218 -Node: Texinfo Mode Printing353137 -Node: Compile-Command356547 -Node: Requirements Summary357435 -Node: Preparing for TeX358748 -Node: Overfull hboxes361535 -Node: smallbook363094 -Node: A4 Paper364612 -Node: Cropmarks and Magnification365837 -Node: Create an Info File367778 -Node: makeinfo advantages369081 -Node: Invoking makeinfo369997 -Node: makeinfo options370685 -Node: Pointer Validation376169 -Node: makeinfo in Emacs377513 -Node: texinfo-format commands380071 -Node: Batch Formatting381342 -Node: Tag and Split Files382558 -Node: Install an Info File385912 -Node: Directory file386730 -Node: New Info File388598 -Node: Other Info Directories389659 -Node: Installing Dir Entries392874 -Node: Invoking install-info394867 -Node: Command List397282 -Node: Tips435252 -Node: Sample Texinfo File446662 -Node: Sample Permissions448781 -Node: Inserting Permissions449824 -Node: ifinfo Permissions452130 -Node: Titlepage Permissions453751 -Node: Include Files455013 -Node: Using Include Files456100 -Node: texinfo-multiple-files-update458055 -Node: Include File Requirements460416 -Node: Sample Include File461661 -Node: Include Files Evolution463180 -Node: Headings465151 -Node: Headings Introduced465788 -Node: Heading Format467676 -Node: Heading Choice470128 -Node: Custom Headings471500 -Node: Catching Mistakes475828 -Node: makeinfo Preferred477117 -Node: Debugging with Info478022 -Node: Debugging with TeX481368 -Node: Using texinfo-show-structure485648 -Node: Using occur488747 -Node: Running Info-Validate490284 -Node: Using Info-validate491345 -Node: Unsplit493187 -Node: Tagifying494233 -Node: Splitting495085 -Node: Refilling Paragraphs496701 -Node: Refilling Paragraphs-Footnotes498355 -Ref: Refilling Paragraphs-Footnote-1498443 -Node: Command Syntax498606 -Node: Obtaining TeX501563 -Node: Command and Variable Index503676 -Node: Concept Index519528 +Node: Top1485 +Node: Copying23800 +Node: Overview25805 +Node: Overview-Footnotes27234 +Ref: Overview-Footnote-127298 +Node: Using Texinfo27770 +Node: Info Files30257 +Node: Info Files-Footnotes34293 +Ref: Info Files-Footnote-134361 +Node: Printed Books34540 +Node: Printed Books-Footnotes37212 +Ref: Printed Books-Footnote-137286 +Node: Formatting Commands37496 +Node: Formatting Commands-Footnotes40323 +Ref: Formatting Commands-Footnote-140409 +Node: Conventions41025 +Node: Comments43587 +Node: Minimum45010 +Node: Six Parts47196 +Node: Short Sample48708 +Node: Acknowledgements52844 +Node: Texinfo Mode53679 +Node: Texinfo Mode Overview55051 +Node: Emacs Editing55827 +Node: Inserting57957 +Node: Showing the Structure62238 +Node: Updating Nodes and Menus64765 +Node: Updating Commands65838 +Node: Updating Requirements71899 +Node: Other Updating Commands74196 +Node: Info Formatting77464 +Node: Printing78722 +Node: Texinfo Mode Summary81067 +Node: Beginning a File85821 +Node: Four Parts86712 +Node: Sample Beginning88182 +Node: Header89802 +Node: First Line91154 +Node: Start of Header92143 +Node: setfilename92856 +Node: settitle94792 +Node: setchapternewpage96682 +Node: paragraphindent99443 +Node: End of Header100925 +Node: Info Summary and Permissions101764 +Node: Titlepage & Copyright Page102783 +Node: titlepage104389 +Node: titlepage-Footnotes106671 +Ref: titlepage-Footnote-1106737 +Node: titlefont center sp107011 +Node: title subtitle author108237 +Node: Copyright & Permissions110509 +Node: end titlepage112510 +Node: headings on off114216 +Node: The Top Node116261 +Node: Title of Top Node117416 +Node: Master Menu Parts118669 +Node: Software Copying Permissions120906 +Node: Ending a File122074 +Node: Printing Indices & Menus122922 +Node: Contents125231 +Node: File End127571 +Node: Structuring128244 +Node: Tree Structuring129901 +Node: Structuring Command Types131344 +Node: makeinfo top133671 +Node: chapter134204 +Node: unnumbered & appendix135228 +Node: majorheading & chapheading136067 +Node: section136888 +Node: unnumberedsec appendixsec heading137652 +Node: subsection138641 +Node: unnumberedsubsec appendixsubsec subheading139213 +Node: subsubsection140166 +Node: Raise/lower sections141716 +Node: Nodes143851 +Node: Two Paths144788 +Node: Node Menu Illustration146074 +Node: node149769 +Node: Node Names152465 +Node: Writing a Node153541 +Node: Node Line Tips155559 +Node: Node Line Requirements156353 +Node: First Node157954 +Node: makeinfo top command159393 +Node: Top Node Summary160572 +Node: makeinfo Pointer Creation162022 +Node: Menus163269 +Node: Menus-Footnotes164208 +Ref: Menus-Footnote-1164266 +Node: Menu Location164559 +Node: Writing a Menu166236 +Node: Menu Parts167202 +Node: Less Cluttered Menu Entry168360 +Node: Menu Example168985 +Node: Other Info Files170506 +Node: Cross References172374 +Node: References173331 +Node: Cross Reference Commands175078 +Node: Cross Reference Parts176137 +Node: xref178973 +Node: Reference Syntax179772 +Node: One Argument181426 +Node: Two Arguments182438 +Node: Three Arguments183553 +Node: Four and Five Arguments185944 +Node: Top Node Naming188356 +Node: ref189366 +Node: pxref190758 +Node: inforef193140 +Node: uref194433 +Node: Marking Text195432 +Node: Indicating196056 +Node: Useful Highlighting197961 +Node: code199350 +Node: kbd202388 +Node: key204258 +Node: samp205591 +Node: var207178 +Node: file208971 +Node: dfn209578 +Node: cite210488 +Node: url210942 +Node: email211506 +Node: Emphasis212318 +Node: emph & strong213218 +Node: Smallcaps214204 +Node: Fonts215531 +Node: Customized Highlighting216619 +Node: Customized Highlighting-Footnotes219434 +Ref: Customized Highlighting-Footnote-1219528 +Node: Quotations and Examples219654 +Node: Block Enclosing Commands221276 +Node: quotation223301 +Node: example224391 +Node: noindent226446 +Node: Lisp Example227910 +Node: Lisp Example-Footnotes228612 +Ref: Lisp Example-Footnote-1228684 +Node: smallexample & smalllisp228802 +Node: display230827 +Node: format231459 +Node: exdent231920 +Node: flushleft & flushright233000 +Node: cartouche234266 +Node: Lists and Tables235033 +Node: Introducing Lists235709 +Node: itemize237374 +Node: enumerate239521 +Node: Two-column Tables242026 +Node: table242715 +Node: ftable vtable245148 +Node: itemx246249 +Node: Multi-column Tables247260 +Node: Multitable Column Widths247931 +Node: Multitable Rows249385 +Node: Indices251166 +Node: Index Entries252316 +Node: Predefined Indices253449 +Node: Indexing Commands254446 +Node: Combining Indices258986 +Node: syncodeindex260349 +Node: synindex262011 +Node: New Indices262536 +Node: Insertions264361 +Node: Braces Atsigns265545 +Node: Inserting An Atsign266097 +Node: Inserting Braces266371 +Node: Inserting Space266734 +Node: Not Ending a Sentence267238 +Node: Ending a Sentence268592 +Node: Multiple Spaces269721 +Node: dmn270940 +Node: Inserting Accents272147 +Node: Dots Bullets273904 +Node: dots274726 +Node: bullet275250 +Node: TeX and copyright275647 +Node: tex276214 +Node: copyright symbol276630 +Node: pounds276890 +Node: minus277254 +Node: math278176 +Node: Glyphs278904 +Node: Glyphs Summary280017 +Node: result280645 +Node: expansion281130 +Node: Print Glyph282086 +Node: Error Glyph282963 +Node: Equivalence283796 +Node: Point Glyph284484 +Node: Images286041 +Node: Breaks287708 +Node: Break Commands289139 +Node: Line Breaks289980 +Node: - and hyphenation290998 +Node: w292248 +Node: sp292961 +Node: page293370 +Node: group293747 +Node: need295490 +Node: Definition Commands296220 +Node: Def Cmd Template297791 +Node: Optional Arguments300788 +Node: deffnx302376 +Node: Def Cmds in Detail303331 +Node: Functions Commands304441 +Node: Variables Commands307446 +Node: Typed Functions309532 +Node: Typed Variables313074 +Node: Abstract Objects315057 +Node: Data Types320282 +Node: Def Cmd Conventions321537 +Node: Sample Function Definition322100 +Node: Footnotes324984 +Node: Footnotes-Footnotes325372 +Ref: Footnotes-Footnote-1325438 +Node: Footnote Commands325718 +Node: Footnote Commands-Footnotes327215 +Ref: Footnote Commands-Footnote-1327297 +Node: Footnote Styles327333 +Node: Conditionals329919 +Node: Conditional Commands330730 +Node: Conditional Not Commands332223 +Node: Raw Formatter Commands332968 +Node: set clear value334798 +Node: ifset ifclear335599 +Node: value338778 +Node: value Example340190 +Node: Macros341768 +Node: Defining Macros342473 +Node: Invoking Macros343562 +Node: Format/Print Hardcopy344668 +Node: Use TeX346505 +Node: Format with tex/texindex347133 +Node: Format with texi2dvi350774 +Node: Print with lpr351365 +Node: Within Emacs352219 +Node: Texinfo Mode Printing353138 +Node: Compile-Command356548 +Node: Requirements Summary357436 +Node: Preparing for TeX358749 +Node: Overfull hboxes361536 +Node: smallbook363095 +Node: A4 Paper364613 +Node: Cropmarks and Magnification365838 +Node: Create an Info File367779 +Node: makeinfo advantages369082 +Node: Invoking makeinfo369998 +Node: makeinfo options370686 +Node: Pointer Validation376170 +Node: makeinfo in Emacs377514 +Node: texinfo-format commands380072 +Node: Batch Formatting381343 +Node: Tag and Split Files382559 +Node: Install an Info File385913 +Node: Directory file386731 +Node: New Info File388599 +Node: Other Info Directories389660 +Node: Installing Dir Entries392875 +Node: Invoking install-info394868 +Node: Command List397283 +Node: Tips435253 +Node: Sample Texinfo File446663 +Node: Sample Permissions448782 +Node: Inserting Permissions449825 +Node: ifinfo Permissions452131 +Node: Titlepage Permissions453752 +Node: Include Files455014 +Node: Using Include Files456101 +Node: texinfo-multiple-files-update458056 +Node: Include File Requirements460417 +Node: Sample Include File461662 +Node: Include Files Evolution463181 +Node: Headings465152 +Node: Headings Introduced465789 +Node: Heading Format467677 +Node: Heading Choice470129 +Node: Custom Headings471501 +Node: Catching Mistakes475829 +Node: makeinfo Preferred477118 +Node: Debugging with Info478023 +Node: Debugging with TeX481369 +Node: Using texinfo-show-structure485649 +Node: Using occur488748 +Node: Running Info-Validate490285 +Node: Using Info-validate491346 +Node: Unsplit493188 +Node: Tagifying494234 +Node: Splitting495086 +Node: Refilling Paragraphs496702 +Node: Refilling Paragraphs-Footnotes498356 +Ref: Refilling Paragraphs-Footnote-1498444 +Node: Command Syntax498607 +Node: Obtaining TeX501564 +Node: Command and Variable Index503677 +Node: Concept Index519529  End Tag Table diff --git a/info/texinfo.info-1 b/info/texinfo.info-1 index ffb02ba..8ee9a21 100644 --- a/info/texinfo.info-1 +++ b/info/texinfo.info-1 @@ -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 diff --git a/info/texinfo.info-10 b/info/texinfo.info-10 index aea9a20..7ea65d1 100644 --- a/info/texinfo.info-10 +++ b/info/texinfo.info-10 @@ -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 diff --git a/info/texinfo.info-11 b/info/texinfo.info-11 index 43fe115..3f8c007 100644 --- a/info/texinfo.info-11 +++ b/info/texinfo.info-11 @@ -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 diff --git a/info/texinfo.info-12 b/info/texinfo.info-12 index de69019..8868116 100644 --- a/info/texinfo.info-12 +++ b/info/texinfo.info-12 @@ -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 diff --git a/info/texinfo.info-2 b/info/texinfo.info-2 index fc54512..2d9851d 100644 --- a/info/texinfo.info-2 +++ b/info/texinfo.info-2 @@ -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 diff --git a/info/texinfo.info-3 b/info/texinfo.info-3 index 5eab100..02f4b8b 100644 --- a/info/texinfo.info-3 +++ b/info/texinfo.info-3 @@ -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 diff --git a/info/texinfo.info-4 b/info/texinfo.info-4 index c1e77ef..5d7fa08 100644 --- a/info/texinfo.info-4 +++ b/info/texinfo.info-4 @@ -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 diff --git a/info/texinfo.info-5 b/info/texinfo.info-5 index f285171..ad0ff64 100644 --- a/info/texinfo.info-5 +++ b/info/texinfo.info-5 @@ -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 diff --git a/info/texinfo.info-6 b/info/texinfo.info-6 index bbfb172..3cb8989 100644 --- a/info/texinfo.info-6 +++ b/info/texinfo.info-6 @@ -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 diff --git a/info/texinfo.info-7 b/info/texinfo.info-7 index 10a127a..c64f1ee 100644 --- a/info/texinfo.info-7 +++ b/info/texinfo.info-7 @@ -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 diff --git a/info/texinfo.info-8 b/info/texinfo.info-8 index 79ed349..7c39015 100644 --- a/info/texinfo.info-8 +++ b/info/texinfo.info-8 @@ -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 diff --git a/info/texinfo.info-9 b/info/texinfo.info-9 index 8448388..97f0356 100644 --- a/info/texinfo.info-9 +++ b/info/texinfo.info-9 @@ -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 diff --git a/info/xemacs-faq.info b/info/xemacs-faq.info index bd41315..ff7548f 100644 --- a/info/xemacs-faq.info +++ b/info/xemacs-faq.info @@ -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  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  Tag Table: (Indirect) -Node: Top205 -Node: Introduction16704 -Node: Q1.0.120146 -Node: Q1.0.220682 -Node: Q1.0.321227 -Node: Q1.0.421489 -Node: Q1.0.522939 -Node: Q1.0.623628 -Node: Q1.0.724634 -Node: Q1.0.824887 -Node: Q1.0.925102 -Node: Q1.0.1025380 -Node: Q1.0.1125623 -Node: Q1.0.1226010 -Node: Q1.0.1326378 -Node: Q1.0.1426627 -Node: Q1.1.127139 -Node: Q1.1.228181 -Node: Q1.1.328574 -Node: Q1.2.129525 -Node: Q1.2.230581 -Node: Q1.2.331015 -Node: Q1.3.132099 -Node: Q1.3.232750 -Node: Q1.3.333214 -Node: Q1.3.433455 -Node: Q1.3.534228 -Node: Q1.3.636633 -Node: Q1.3.738164 -Node: Q1.4.139099 -Node: Q1.4.239961 -Node: Q1.4.340302 -Node: Q1.4.440721 -Node: Q1.4.542261 -Node: Q1.4.642565 -Node: Installation43558 -Node: Q2.0.146133 -Node: Q2.0.246933 -Node: Q2.0.348701 -Node: Q2.0.449999 -Node: Q2.0.550591 -Node: Q2.0.650939 -Node: Q2.0.751320 -Node: Q2.0.851701 -Node: Q2.0.953278 -Node: Q2.0.1054716 -Node: Q2.0.1155560 -Node: Q2.0.1256501 -Node: Q2.0.1358024 -Node: Q2.0.1458513 -Node: Q2.1.159571 -Node: Q2.1.262313 -Node: Q2.1.363490 -Node: Q2.1.464783 -Node: Q2.1.565582 -Node: Q2.1.665944 -Node: Q2.1.766421 -Node: Q2.1.866774 -Node: Q2.1.968308 -Node: Q2.1.1068730 -Node: Q2.1.1169487 -Node: Q2.1.1270352 -Node: Q2.1.1371307 -Node: Q2.1.1472338 -Node: Q2.1.1573449 -Node: Q2.1.1680481 -Node: Q2.1.1781175 -Node: Q2.1.1881772 -Node: Q2.1.1981899 -Node: Q2.1.2082429 -Node: Q2.1.2182811 -Node: Q2.1.2283004 -Node: Q2.1.2384301 -Node: Q2.1.2484969 -Node: Q2.1.2585441 -Node: Customization86076 -Node: Q3.0.190914 -Node: Q3.0.291620 -Node: Q3.0.392184 -Node: Q3.0.492601 -Node: Q3.0.593434 -Node: Q3.0.694215 -Node: Q3.0.794795 -Node: Q3.0.895459 -Node: Q3.0.996417 -Node: Q3.1.196978 -Node: Q3.1.297715 -Node: Q3.1.398146 -Node: Q3.1.498335 -Node: Q3.1.598524 -Node: Q3.1.698908 -Node: Q3.1.799617 -Node: Q3.1.8101841 -Node: Q3.2.1102383 -Node: Q3.2.2104036 -Node: Q3.2.3104835 -Node: Q3.2.4105437 -Node: Q3.2.5106471 -Node: Q3.2.6106938 -Node: Q3.3.1107863 -Node: Q3.3.2108293 -Node: Q3.3.3108924 -Node: Q3.3.4109305 -Node: Q3.3.5110406 -Node: Q3.4.1111900 -Node: Q3.4.2112543 -Node: Q3.5.1113055 -Node: Q3.5.2114504 -Node: Q3.5.3114922 -Node: Q3.5.4115760 -Node: Q3.5.5116592 -Node: Q3.5.6117732 -Node: Q3.5.7118722 -Node: Q3.5.8120162 -Node: Q3.5.9120909 -Node: Q3.5.10121689 -Node: Q3.5.11122325 -Node: Q3.6.1122878 -Node: Q3.6.2123623 -Node: Q3.6.3124051 -Node: Q3.7.1124551 -Node: Q3.7.2125439 -Node: Q3.7.3126098 -Node: Q3.7.4126520 -Node: Q3.7.5126863 -Node: Q3.7.6127331 -Node: Q3.7.7128046 -Node: Q3.7.8129066 -Node: Q3.8.1129485 -Node: Q3.8.2129945 -Node: Q3.8.3130408 -Node: Q3.8.4131014 -Node: Q3.8.5131733 -Node: Q3.9.1132518 -Node: Q3.9.2133458 -Node: Q3.9.3134056 -Node: Q3.9.4134718 -Node: Q3.10.1135597 -Node: Q3.10.2136415 -Node: Q3.10.3137420 -Node: Q3.10.4138148 -Node: Q3.10.5138531 -Node: Subsystems139583 -Node: Q4.0.1142070 -Node: Q4.0.2142595 -Node: Q4.0.3143153 -Node: Q4.0.4143474 -Node: Q4.0.5143716 -Node: Q4.0.6143947 -Node: Q4.0.7144535 -Node: Q4.0.8144860 -Node: Q4.0.9146087 -Node: Q4.0.10148125 -Node: Q4.0.11148614 -Node: Q4.0.12149492 -Node: Q4.1.1150465 -Node: Q4.1.2150868 -Node: Q4.1.3151195 -Node: Q4.2.1151504 -Node: Q4.2.2152134 -Node: Q4.2.3152374 -Node: Q4.2.4152918 -Node: Q4.3.1153571 -Node: Q4.3.2154155 -Node: Q4.3.3155636 -Node: Q4.3.4155908 -Node: Q4.3.5156585 -Node: Q4.4.1157213 -Node: Q4.4.2158699 -Node: Q4.5.1159903 -Node: Q4.6.1160672 -Node: Q4.7.1165932 -Node: Q4.7.2166887 -Node: Q4.7.3167184 -Node: Q4.7.4167370 -Node: Q4.7.5168254 -Node: Q4.7.6169895 -Node: Miscellaneous170184 -Node: Q5.0.1173597 -Node: Q5.0.2174336 -Node: Q5.0.3175190 -Node: Q5.0.4175892 -Node: Q5.0.5176831 -Node: Q5.0.6178811 -Node: Q5.0.7179468 -Node: Q5.0.8180073 -Node: Q5.0.9180592 -Node: Q5.0.10181106 -Node: Q5.0.11181354 -Node: Q5.0.12181892 -Node: Q5.0.13182809 -Node: Q5.0.14183493 -Node: Q5.0.15184258 -Node: Q5.0.16184555 -Node: Q5.0.17185067 -Node: Q5.0.18185332 -Node: Q5.0.19185526 -Node: Q5.0.20185950 -Node: Q5.1.1186865 -Node: Q5.1.2188934 -Node: Q5.1.3189670 -Node: Q5.1.4193064 -Node: Q5.1.5193599 -Node: Q5.1.6195723 -Node: Q5.1.7197209 -Node: Q5.1.8198802 -Node: Q5.1.9199354 -Node: Q5.1.10200239 -Node: Q5.1.11201370 -Node: Q5.2.1201919 -Node: Q5.2.2202489 -Node: Q5.2.3202906 -Node: Q5.2.4203141 -Node: Q5.3.1204051 -Node: Q5.3.2205272 -Node: Q5.3.3206048 -Node: Q5.3.4206532 -Node: Q5.3.5207199 -Node: Q5.3.6208068 -Node: Q5.3.7208313 -Node: Q5.3.8210503 -Node: Q5.3.9210750 -Node: Q5.3.10211703 -Node: Q5.3.11213787 -Node: Q5.3.12215378 -Node: MS Windows216652 -Node: Q6.0.1218129 -Node: Q6.0.2218876 -Node: Q6.0.3219341 -Node: Q6.0.4219621 -Node: Q6.1.1221900 -Node: Q6.1.2222771 -Node: Q6.1.3223226 -Node: Q6.1.4223508 -Node: Q6.1.5223886 -Node: Q6.1.6224754 -Node: Q6.2.1227060 -Node: Q6.2.2227961 -Node: Q6.2.3228373 -Node: Q6.3.1228662 -Node: Q6.3.2229756 -Node: Q6.3.3232937 -Node: Q6.4.1233206 -Node: Current Events234541 -Node: Q7.0.1235195 -Node: Q7.0.2235834 -Node: Q7.0.3236907 -Node: Q7.0.4237135 +Node: Top206 +Node: Introduction16705 +Node: Q1.0.120147 +Node: Q1.0.220683 +Node: Q1.0.321228 +Node: Q1.0.421490 +Node: Q1.0.522940 +Node: Q1.0.623629 +Node: Q1.0.724635 +Node: Q1.0.824888 +Node: Q1.0.925103 +Node: Q1.0.1025381 +Node: Q1.0.1125624 +Node: Q1.0.1226011 +Node: Q1.0.1326379 +Node: Q1.0.1426628 +Node: Q1.1.127140 +Node: Q1.1.228182 +Node: Q1.1.328575 +Node: Q1.2.129526 +Node: Q1.2.230582 +Node: Q1.2.331016 +Node: Q1.3.132100 +Node: Q1.3.232751 +Node: Q1.3.333215 +Node: Q1.3.433456 +Node: Q1.3.534229 +Node: Q1.3.636634 +Node: Q1.3.738165 +Node: Q1.4.139100 +Node: Q1.4.239962 +Node: Q1.4.340303 +Node: Q1.4.440722 +Node: Q1.4.542262 +Node: Q1.4.642566 +Node: Installation43559 +Node: Q2.0.146134 +Node: Q2.0.246934 +Node: Q2.0.348702 +Node: Q2.0.450000 +Node: Q2.0.550592 +Node: Q2.0.650940 +Node: Q2.0.751321 +Node: Q2.0.851702 +Node: Q2.0.953279 +Node: Q2.0.1054717 +Node: Q2.0.1155561 +Node: Q2.0.1256502 +Node: Q2.0.1358025 +Node: Q2.0.1458514 +Node: Q2.1.159572 +Node: Q2.1.262314 +Node: Q2.1.363491 +Node: Q2.1.464784 +Node: Q2.1.565583 +Node: Q2.1.665945 +Node: Q2.1.766422 +Node: Q2.1.866775 +Node: Q2.1.968309 +Node: Q2.1.1068731 +Node: Q2.1.1169488 +Node: Q2.1.1270353 +Node: Q2.1.1371308 +Node: Q2.1.1472339 +Node: Q2.1.1573450 +Node: Q2.1.1680482 +Node: Q2.1.1781176 +Node: Q2.1.1881773 +Node: Q2.1.1981900 +Node: Q2.1.2082430 +Node: Q2.1.2182812 +Node: Q2.1.2283005 +Node: Q2.1.2384302 +Node: Q2.1.2484970 +Node: Q2.1.2585442 +Node: Customization86077 +Node: Q3.0.190915 +Node: Q3.0.291621 +Node: Q3.0.392185 +Node: Q3.0.492602 +Node: Q3.0.593435 +Node: Q3.0.694216 +Node: Q3.0.794796 +Node: Q3.0.895460 +Node: Q3.0.996418 +Node: Q3.1.196979 +Node: Q3.1.297716 +Node: Q3.1.398147 +Node: Q3.1.498336 +Node: Q3.1.598525 +Node: Q3.1.698909 +Node: Q3.1.799618 +Node: Q3.1.8101842 +Node: Q3.2.1102384 +Node: Q3.2.2104037 +Node: Q3.2.3104836 +Node: Q3.2.4105438 +Node: Q3.2.5106472 +Node: Q3.2.6106939 +Node: Q3.3.1107864 +Node: Q3.3.2108294 +Node: Q3.3.3108925 +Node: Q3.3.4109306 +Node: Q3.3.5110407 +Node: Q3.4.1111901 +Node: Q3.4.2112544 +Node: Q3.5.1113056 +Node: Q3.5.2114505 +Node: Q3.5.3114923 +Node: Q3.5.4115761 +Node: Q3.5.5116593 +Node: Q3.5.6117733 +Node: Q3.5.7118723 +Node: Q3.5.8120163 +Node: Q3.5.9120910 +Node: Q3.5.10121690 +Node: Q3.5.11122326 +Node: Q3.6.1122879 +Node: Q3.6.2123624 +Node: Q3.6.3124052 +Node: Q3.7.1124552 +Node: Q3.7.2125440 +Node: Q3.7.3126099 +Node: Q3.7.4126521 +Node: Q3.7.5126864 +Node: Q3.7.6127332 +Node: Q3.7.7128047 +Node: Q3.7.8129067 +Node: Q3.8.1129486 +Node: Q3.8.2129946 +Node: Q3.8.3130409 +Node: Q3.8.4131015 +Node: Q3.8.5131734 +Node: Q3.9.1132519 +Node: Q3.9.2133459 +Node: Q3.9.3134057 +Node: Q3.9.4134719 +Node: Q3.10.1135598 +Node: Q3.10.2136416 +Node: Q3.10.3137421 +Node: Q3.10.4138149 +Node: Q3.10.5138532 +Node: Subsystems139584 +Node: Q4.0.1142071 +Node: Q4.0.2142596 +Node: Q4.0.3143154 +Node: Q4.0.4143475 +Node: Q4.0.5143717 +Node: Q4.0.6143948 +Node: Q4.0.7144536 +Node: Q4.0.8144861 +Node: Q4.0.9146088 +Node: Q4.0.10148126 +Node: Q4.0.11148615 +Node: Q4.0.12149493 +Node: Q4.1.1150466 +Node: Q4.1.2150869 +Node: Q4.1.3151196 +Node: Q4.2.1151505 +Node: Q4.2.2152135 +Node: Q4.2.3152375 +Node: Q4.2.4152919 +Node: Q4.3.1153572 +Node: Q4.3.2154156 +Node: Q4.3.3155637 +Node: Q4.3.4155909 +Node: Q4.3.5156586 +Node: Q4.4.1157214 +Node: Q4.4.2158700 +Node: Q4.5.1159904 +Node: Q4.6.1160673 +Node: Q4.7.1165933 +Node: Q4.7.2166888 +Node: Q4.7.3167185 +Node: Q4.7.4167371 +Node: Q4.7.5168255 +Node: Q4.7.6169896 +Node: Miscellaneous170185 +Node: Q5.0.1173598 +Node: Q5.0.2174337 +Node: Q5.0.3175191 +Node: Q5.0.4175893 +Node: Q5.0.5176832 +Node: Q5.0.6178812 +Node: Q5.0.7179469 +Node: Q5.0.8180074 +Node: Q5.0.9180593 +Node: Q5.0.10181107 +Node: Q5.0.11181355 +Node: Q5.0.12181893 +Node: Q5.0.13182810 +Node: Q5.0.14183494 +Node: Q5.0.15184259 +Node: Q5.0.16184556 +Node: Q5.0.17185068 +Node: Q5.0.18185333 +Node: Q5.0.19185527 +Node: Q5.0.20185951 +Node: Q5.1.1186866 +Node: Q5.1.2188935 +Node: Q5.1.3189671 +Node: Q5.1.4193065 +Node: Q5.1.5193600 +Node: Q5.1.6195724 +Node: Q5.1.7197210 +Node: Q5.1.8198803 +Node: Q5.1.9199355 +Node: Q5.1.10200240 +Node: Q5.1.11201371 +Node: Q5.2.1201920 +Node: Q5.2.2202490 +Node: Q5.2.3202907 +Node: Q5.2.4203142 +Node: Q5.3.1204052 +Node: Q5.3.2205273 +Node: Q5.3.3206049 +Node: Q5.3.4206533 +Node: Q5.3.5207200 +Node: Q5.3.6208069 +Node: Q5.3.7208314 +Node: Q5.3.8210504 +Node: Q5.3.9210751 +Node: Q5.3.10211704 +Node: Q5.3.11213788 +Node: Q5.3.12215379 +Node: MS Windows216653 +Node: Q6.0.1218130 +Node: Q6.0.2218877 +Node: Q6.0.3219342 +Node: Q6.0.4219622 +Node: Q6.1.1221901 +Node: Q6.1.2222772 +Node: Q6.1.3223227 +Node: Q6.1.4223509 +Node: Q6.1.5223887 +Node: Q6.1.6224755 +Node: Q6.2.1227061 +Node: Q6.2.2227962 +Node: Q6.2.3228374 +Node: Q6.3.1228663 +Node: Q6.3.2229757 +Node: Q6.3.3232938 +Node: Q6.4.1233207 +Node: Current Events234542 +Node: Q7.0.1235196 +Node: Q7.0.2235835 +Node: Q7.0.3236908 +Node: Q7.0.4237136  End Tag Table diff --git a/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 index 6706c9f..cfb98eb 100644 --- a/info/xemacs-faq.info-1 +++ b/info/xemacs-faq.info-1 @@ -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 diff --git a/info/xemacs-faq.info-2 b/info/xemacs-faq.info-2 index 66252fd..62faa2b 100644 --- a/info/xemacs-faq.info-2 +++ b/info/xemacs-faq.info-2 @@ -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 diff --git a/info/xemacs-faq.info-3 b/info/xemacs-faq.info-3 index 8fa7ecf..8800a07 100644 --- a/info/xemacs-faq.info-3 +++ b/info/xemacs-faq.info-3 @@ -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 diff --git a/info/xemacs-faq.info-4 b/info/xemacs-faq.info-4 index 7e671ec..7dc867f 100644 --- a/info/xemacs-faq.info-4 +++ b/info/xemacs-faq.info-4 @@ -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 diff --git a/info/xemacs-faq.info-5 b/info/xemacs-faq.info-5 index ccfd040..d57a66e 100644 --- a/info/xemacs-faq.info-5 +++ b/info/xemacs-faq.info-5 @@ -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 diff --git a/info/xemacs.info b/info/xemacs.info index b2ba08b..4797d24 100644 --- a/info/xemacs.info +++ b/info/xemacs.info @@ -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.  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  Tag Table: (Indirect) -Node: Top1350 -Node: License22790 -Node: Distrib36072 -Node: Intro37736 -Node: Frame40607 -Node: Point44652 -Node: Echo Area46619 -Node: Mode Line48996 -Node: GUI Components53427 -Node: Menubar Basics54708 -Node: Scrollbar Basics56624 -Node: Mode Line Basics57517 -Node: Toolbar Basics58349 -Node: Gutter Basics59016 -Node: Inhibiting61070 -Node: Customizing63441 -Node: XEmacs under X63690 -Node: XEmacs under MS Windows66904 -Node: Keystrokes67319 -Node: Intro to Keystrokes68163 -Node: Representing Keystrokes70266 -Node: Key Sequences71623 -Node: String Key Sequences74964 -Node: Meta Key75347 -Node: Super and Hyper Keys76820 -Node: Character Representation83065 -Node: Commands84085 -Node: Pull-down Menus86934 -Node: File Menu90283 -Node: Edit Menu94105 -Node: Apps Menu96488 -Node: Options Menu96978 -Node: Buffers Menu100996 -Node: Tools Menu101303 -Node: Help Menu101794 -Node: Menu Customization102195 -Node: Entering Emacs106425 -Node: Exiting109322 -Node: Command Switches113795 -Node: Startup Paths123817 -Node: Basic131147 -Node: Inserting Text132551 -Node: Moving Point135547 -Node: Erasing139153 -Node: Basic Files140458 -Node: Basic Help142380 -Node: Blank Lines142975 -Node: Continuation Lines144551 -Node: Position Info146218 -Node: Arguments149634 -Node: Undo153733 -Node: Minibuffer156680 -Node: Minibuffer File159290 -Node: Minibuffer Edit161095 -Node: Completion164036 -Node: Completion Example165967 -Node: Completion Commands167062 -Node: Strict Completion170038 -Node: Completion Options171819 -Node: Minibuffer History173327 -Node: Repetition176511 -Node: M-x179356 -Node: Help184450 -Node: Help Summary185860 -Node: Key Help188646 -Node: Name Help189605 -Node: Apropos192250 -Node: Library Keywords195369 -Node: Help Mode197690 -Node: Misc Help198187 -Node: Mark201335 -Node: Setting Mark203189 -Node: Using Region206311 -Node: Marking Objects207048 -Node: Mark Ring208886 -Node: Mouse Selection210602 -Node: Additional Mouse Operations212609 -Node: Killing216813 -Node: Yanking222449 -Node: Kill Ring223252 -Node: Appending Kills224854 -Node: Earlier Kills226891 -Node: Using X Selections229504 -Node: X Clipboard Selection230754 -Node: X Selection Commands232931 -Node: X Cut Buffers234017 -Node: Active Regions235376 -Node: Accumulating Text239956 -Node: Rectangles243029 -Node: Registers246548 -Node: RegPos248002 -Node: RegText249158 -Node: RegRect250264 -Node: RegConfig251143 -Node: RegNumbers252083 -Node: RegFiles252801 -Node: Bookmarks253459 -Node: Display256831 -Node: Scrolling258326 -Node: Horizontal Scrolling262469 -Node: Selective Display263664 -Node: Display Vars264883 -Node: Search267561 -Node: Incremental Search268754 -Node: Non-Incremental Search277682 -Node: Word Search279124 -Node: Regexp Search280742 -Node: Regexps283112 -Node: Search Case297109 -Node: Replace297890 -Node: Unconditional Replace298838 -Node: Regexp Replace299973 -Node: Replacement and Case300908 -Node: Query Replace301888 -Node: Other Repeating Search305115 -Node: Fixit306370 -Node: Kill Errors306950 -Node: Transpose308283 -Node: Fixing Case310687 -Node: Spelling311333 -Node: Files312794 -Node: File Names314104 -Node: Visiting318441 -Node: Saving325273 -Node: Backup330196 -Node: Backup Names331592 -Node: Backup Deletion333075 -Node: Backup Copying334225 -Node: Interlocking335931 -Node: Reverting340059 -Node: Auto Save341971 -Node: Auto Save Files342938 -Node: Auto Save Control344779 -Node: Recover346617 -Node: Version Control347772 -Node: Concepts of VC349810 -Node: Editing with VC351420 -Node: Variables for Check-in/out356676 -Node: Log Entries358575 -Node: Change Logs and VC359755 -Node: Old Versions363022 -Node: VC Status365025 -Node: Renaming and VC366739 -Node: Snapshots367418 -Node: Making Snapshots367919 -Node: Snapshot Caveats369212 -Node: Version Headers371021 -Node: ListDir373720 -Node: Comparing Files375769 -Node: Dired377302 -Node: Dired Enter377973 -Node: Dired Edit378798 -Node: Dired Deletion380545 -Node: Dired Immed383768 -Node: Misc File Ops385044 -Node: Buffers387532 -Node: Select Buffer389690 -Node: List Buffers391485 -Node: Misc Buffer393243 -Node: Kill Buffer394886 -Node: Several Buffers396016 -Node: Windows399883 -Node: Basic Window400594 -Node: Split Window402313 -Node: Other Window404446 -Node: Pop Up Window406877 -Node: Change Window408382 -Node: Mule411290 -Node: Mule Intro412553 -Node: Language Environments413569 -Node: Input Methods415676 -Node: Select Input Method419396 -Node: Coding Systems421551 -Node: Recognize Coding425737 -Node: Specify Coding429063 -Node: Major Modes433994 -Node: Choosing Modes436213 -Node: Indentation438603 -Node: Indentation Commands440698 -Node: Tab Stops443427 -Node: Just Spaces445276 -Node: Text446091 -Node: Text Mode448074 -Node: Nroff Mode450153 -Node: TeX Mode451796 -Node: TeX Editing454048 -Node: TeX Print457482 -Node: Outline Mode460701 -Node: Outline Format462182 -Node: Outline Motion464982 -Node: Outline Visibility466535 -Node: Words469456 -Node: Sentences472403 -Node: Paragraphs474599 -Node: Pages476887 -Node: Filling479487 -Node: Auto Fill480058 -Node: Fill Commands482205 -Node: Fill Prefix484370 -Node: Case486558 -Node: Programs488586 -Node: Program Modes491136 -Node: Lists493368 -Node: Defuns499208 -Node: Grinding501861 -Node: Basic Indent502489 -Node: Multi-line Indent504510 -Node: Lisp Indent506126 -Node: C Indent509576 -Node: Matching514816 -Node: Comments516338 -Node: Balanced Editing522790 -Node: Lisp Completion523804 -Node: Documentation524819 -Node: Change Log526058 -Node: Tags528636 -Node: Tag Syntax530285 -Node: Create Tags Table534229 -Node: Etags Regexps538289 -Node: Select Tags Table542947 -Node: Find Tag546720 -Node: Tags Search549684 -Node: List Tags553140 -Node: Fortran554169 -Node: Fortran Motion555245 -Node: Fortran Indent556065 -Node: ForIndent Commands556750 -Node: ForIndent Num557895 -Node: ForIndent Conv559169 -Node: ForIndent Vars559945 -Node: Fortran Comments561113 -Node: Fortran Columns564711 -Node: Fortran Abbrev566134 -Node: Asm Mode567043 -Node: Running567595 -Node: Compilation568564 -Node: Lisp Modes573414 -Node: Lisp Libraries574687 -Node: Loading575241 -Node: Compiling Libraries579701 -Node: Mocklisp582592 -Node: Lisp Eval583269 -Node: Lisp Debug586909 -Node: Lisp Interaction592336 -Node: External Lisp593691 -Node: Packages595765 -Node: Package Terminology596620 -Node: Using Packages597978 -Node: Building Packages606856 -Node: Creating Packages609399 -Node: Available Packages614399 -Node: Abbrevs619672 -Node: Defining Abbrevs621871 -Node: Expanding Abbrevs624318 -Node: Editing Abbrevs627020 -Node: Saving Abbrevs628893 -Node: Dynamic Abbrevs630848 -Node: Picture632150 -Node: Basic Picture634583 -Node: Insert in Picture636868 -Node: Tabs in Picture638290 -Node: Rectangles in Picture639811 -Node: Sending Mail641719 -Node: Mail Format643430 -Node: Mail Headers644780 -Node: Mail Mode651188 -Node: Reading Mail654801 -Node: Calendar/Diary656376 -Node: Calendar Motion658050 -Node: Calendar Unit Motion658933 -Node: Move to Beginning or End661256 -Node: Specified Dates662389 -Node: Scroll Calendar663277 -Node: Mark and Region665068 -Node: General Calendar666974 -Node: LaTeX Calendar668582 -Node: Holidays670596 -Node: Sunrise/Sunset673698 -Node: Lunar Phases676737 -Node: Other Calendars678122 -Node: Calendar Systems679609 -Node: To Other Calendar682720 -Node: From Other Calendar684711 -Node: Mayan Calendar687016 -Node: Diary690211 -Node: Diary Commands691960 -Node: Format of Diary File695283 -Node: Date Formats698153 -Node: Adding to Diary700727 -Node: Special Diary Entries702358 -Node: Calendar Customization707697 -Node: Calendar Customizing708559 -Node: Holiday Customizing711794 -Node: Date Display Format718281 -Node: Time Display Format719239 -Node: Daylight Savings720377 -Node: Diary Customizing723565 -Node: Hebrew/Islamic Entries728186 -Node: Fancy Diary Display731526 -Node: Included Diary Files733442 -Node: Sexp Diary Entries734423 -Node: Appt Customizing739513 -Node: Sorting740559 -Node: Shell745365 -Node: Single Shell746658 -Node: Interactive Shell748272 -Node: Shell Mode752037 -Node: Terminal emulator754528 -Node: Term Mode756837 -Node: Paging in Term757751 -Node: Narrowing758549 -Node: Hardcopy760499 -Node: Recursive Edit761471 -Node: Dissociated Press764458 -Node: CONX767021 -Node: Amusements768045 -Node: Emulation768525 -Node: Customization770385 -Node: Minor Modes772201 -Node: Variables773833 -Node: Examining775789 -Node: Easy Customization777250 -Node: Customization Groups778264 -Node: Changing an Option781193 -Node: Face Customization787463 -Node: Specific Customization789227 -Node: Edit Options791834 -Node: Locals793418 -Node: File Variables796597 -Node: Keyboard Macros801147 -Node: Basic Kbd Macro803318 -Node: Save Kbd Macro805250 -Node: Kbd Macro Query806908 -Node: Key Bindings808850 -Node: Keymaps809724 -Node: Rebinding813574 -Node: Interactive Rebinding814273 -Node: Programmatic Rebinding816462 -Node: Key Bindings Using Strings819269 -Node: Disabling820896 -Node: Syntax822675 -Node: Syntax Entry823556 -Node: Syntax Change827640 -Node: Init File829809 -Node: Init Syntax831273 -Node: Init Examples833624 -Node: Terminal Init837814 -Node: Audible Bell839551 -Node: Faces842982 -Node: Frame Components847824 -Node: X Resources848269 -Node: Geometry Resources849928 -Node: Iconic Resources852376 -Node: Resource List852848 -Node: Face Resources859355 -Node: Widgets863032 -Node: Menubar Resources863971 -Node: Quitting865485 -Node: Lossage868463 -Node: Stuck Recursive869107 -Node: Screen Garbled869813 -Node: Text Garbled870947 -Node: Unasked-for Search871586 -Node: Emergency Escape872371 -Node: Total Frustration874150 -Node: Bugs874781 -Node: Glossary884342 -Node: Manifesto915996 -Node: Key Index939473 -Node: Command Index965400 -Node: Variable Index1007986 -Node: Concept Index1024072 +Node: Top1351 +Node: License22943 +Node: Distrib36224 +Node: Intro37888 +Node: Frame40759 +Node: Point44804 +Node: Echo Area46771 +Node: Mode Line49148 +Node: GUI Components53579 +Node: Menubar Basics54860 +Node: Scrollbar Basics56776 +Node: Mode Line Basics57669 +Node: Toolbar Basics58501 +Node: Gutter Basics59168 +Node: Inhibiting61222 +Node: Customizing63593 +Node: XEmacs under X63842 +Node: XEmacs under MS Windows67056 +Node: Keystrokes67471 +Node: Intro to Keystrokes68315 +Node: Representing Keystrokes70418 +Node: Key Sequences71775 +Node: String Key Sequences75116 +Node: Meta Key75499 +Node: Super and Hyper Keys76972 +Node: Character Representation83217 +Node: Commands84237 +Node: Pull-down Menus87086 +Node: File Menu90435 +Node: Edit Menu94257 +Node: Apps Menu96640 +Node: Options Menu97130 +Node: Buffers Menu101148 +Node: Tools Menu101455 +Node: Help Menu101946 +Node: Menu Customization102347 +Node: Entering Emacs106577 +Node: Exiting109474 +Node: Command Switches113947 +Node: Startup Paths123969 +Node: Basic131299 +Node: Inserting Text132703 +Node: Moving Point135699 +Node: Erasing139305 +Node: Basic Files140610 +Node: Basic Help142532 +Node: Blank Lines143127 +Node: Continuation Lines144703 +Node: Position Info146370 +Node: Arguments149786 +Node: Undo153885 +Node: Minibuffer156832 +Node: Minibuffer File159442 +Node: Minibuffer Edit161247 +Node: Completion164188 +Node: Completion Example166119 +Node: Completion Commands167214 +Node: Strict Completion170190 +Node: Completion Options171971 +Node: Minibuffer History173479 +Node: Repetition176663 +Node: M-x179508 +Node: Help184602 +Node: Help Summary186012 +Node: Key Help188798 +Node: Name Help189757 +Node: Apropos192402 +Node: Library Keywords195521 +Node: Help Mode197842 +Node: Misc Help198339 +Node: Mark201487 +Node: Setting Mark203341 +Node: Using Region206463 +Node: Marking Objects207200 +Node: Mark Ring209038 +Node: Mouse Selection210754 +Node: Additional Mouse Operations212761 +Node: Killing216965 +Node: Yanking222601 +Node: Kill Ring223404 +Node: Appending Kills225006 +Node: Earlier Kills227043 +Node: Using X Selections229656 +Node: X Clipboard Selection230906 +Node: X Selection Commands233083 +Node: X Cut Buffers234169 +Node: Active Regions235528 +Node: Accumulating Text240108 +Node: Rectangles243181 +Node: Registers246700 +Node: RegPos248154 +Node: RegText249310 +Node: RegRect250416 +Node: RegConfig251295 +Node: RegNumbers252235 +Node: RegFiles252953 +Node: Bookmarks253611 +Node: Display256983 +Node: Scrolling258478 +Node: Horizontal Scrolling262621 +Node: Selective Display263816 +Node: Display Vars265035 +Node: Search267713 +Node: Incremental Search268906 +Node: Non-Incremental Search277834 +Node: Word Search279276 +Node: Regexp Search280894 +Node: Regexps283264 +Node: Search Case297261 +Node: Replace298042 +Node: Unconditional Replace298990 +Node: Regexp Replace300125 +Node: Replacement and Case301060 +Node: Query Replace302040 +Node: Other Repeating Search305267 +Node: Fixit306522 +Node: Kill Errors307102 +Node: Transpose308435 +Node: Fixing Case310839 +Node: Spelling311485 +Node: Files312946 +Node: File Names314256 +Node: Visiting318593 +Node: Saving325425 +Node: Backup330348 +Node: Backup Names331744 +Node: Backup Deletion333227 +Node: Backup Copying334377 +Node: Interlocking336083 +Node: Reverting340211 +Node: Auto Save342123 +Node: Auto Save Files343090 +Node: Auto Save Control344931 +Node: Recover346769 +Node: Version Control347924 +Node: Concepts of VC349962 +Node: Editing with VC351572 +Node: Variables for Check-in/out356828 +Node: Log Entries358727 +Node: Change Logs and VC359907 +Node: Old Versions363174 +Node: VC Status365177 +Node: Renaming and VC366891 +Node: Snapshots367570 +Node: Making Snapshots368071 +Node: Snapshot Caveats369364 +Node: Version Headers371173 +Node: ListDir373872 +Node: Comparing Files375921 +Node: Dired377454 +Node: Dired Enter378125 +Node: Dired Edit378950 +Node: Dired Deletion380697 +Node: Dired Immed383920 +Node: Misc File Ops385196 +Node: Buffers387684 +Node: Select Buffer389842 +Node: List Buffers391637 +Node: Misc Buffer393395 +Node: Kill Buffer395038 +Node: Several Buffers396168 +Node: Windows400035 +Node: Basic Window400746 +Node: Split Window402465 +Node: Other Window404598 +Node: Pop Up Window407029 +Node: Change Window408534 +Node: Mule411442 +Node: Mule Intro412705 +Node: Language Environments413721 +Node: Input Methods415828 +Node: Select Input Method419548 +Node: Coding Systems421703 +Node: Recognize Coding425889 +Node: Specify Coding429215 +Node: Major Modes434146 +Node: Choosing Modes436365 +Node: Indentation438755 +Node: Indentation Commands440850 +Node: Tab Stops443579 +Node: Just Spaces445428 +Node: Text446243 +Node: Text Mode448226 +Node: Nroff Mode450305 +Node: TeX Mode451948 +Node: TeX Editing454200 +Node: TeX Print457634 +Node: Outline Mode460853 +Node: Outline Format462334 +Node: Outline Motion465134 +Node: Outline Visibility466687 +Node: Words469608 +Node: Sentences472555 +Node: Paragraphs474751 +Node: Pages477039 +Node: Filling479639 +Node: Auto Fill480210 +Node: Fill Commands482357 +Node: Fill Prefix484522 +Node: Case486710 +Node: Programs488738 +Node: Program Modes491288 +Node: Lists493520 +Node: Defuns499360 +Node: Grinding502013 +Node: Basic Indent502641 +Node: Multi-line Indent504662 +Node: Lisp Indent506278 +Node: C Indent509728 +Node: Matching514968 +Node: Comments516490 +Node: Balanced Editing522942 +Node: Lisp Completion523956 +Node: Documentation524971 +Node: Change Log526210 +Node: Tags528788 +Node: Tag Syntax530545 +Node: Create Tags Table535245 +Node: Etags Regexps539305 +Node: Select Tags Table543963 +Node: Find Tag547736 +Node: Tags Search550700 +Node: List Tags554156 +Node: Fortran555185 +Node: Fortran Motion556261 +Node: Fortran Indent557081 +Node: ForIndent Commands557766 +Node: ForIndent Num558911 +Node: ForIndent Conv560185 +Node: ForIndent Vars560961 +Node: Fortran Comments562129 +Node: Fortran Columns565727 +Node: Fortran Abbrev567150 +Node: Asm Mode568059 +Node: Running568611 +Node: Compilation569580 +Node: Lisp Modes574430 +Node: Lisp Libraries575703 +Node: Loading576257 +Node: Compiling Libraries580717 +Node: Mocklisp583608 +Node: Lisp Eval584285 +Node: Lisp Debug587925 +Node: Lisp Interaction593352 +Node: External Lisp594707 +Node: Packages596781 +Node: Package Terminology597700 +Node: Installing Packages599310 +Node: Sumo602230 +Node: Manually603111 +Node: Automatically604481 +Node: Which Packages609044 +Node: Removing Packages609853 +Node: Building Packages610549 +Node: Local.rules File613190 +Node: Creating Packages615044 +Node: Available Packages620082 +Node: Abbrevs626797 +Node: Defining Abbrevs628996 +Node: Expanding Abbrevs631443 +Node: Editing Abbrevs634145 +Node: Saving Abbrevs636018 +Node: Dynamic Abbrevs637973 +Node: Picture639275 +Node: Basic Picture641708 +Node: Insert in Picture643993 +Node: Tabs in Picture645415 +Node: Rectangles in Picture646936 +Node: Sending Mail648844 +Node: Mail Format650555 +Node: Mail Headers651905 +Node: Mail Mode658313 +Node: Reading Mail661926 +Node: Calendar/Diary663501 +Node: Calendar Motion665175 +Node: Calendar Unit Motion666058 +Node: Move to Beginning or End668381 +Node: Specified Dates669514 +Node: Scroll Calendar670402 +Node: Mark and Region672193 +Node: General Calendar674099 +Node: LaTeX Calendar675707 +Node: Holidays677721 +Node: Sunrise/Sunset680823 +Node: Lunar Phases683862 +Node: Other Calendars685247 +Node: Calendar Systems686734 +Node: To Other Calendar689845 +Node: From Other Calendar691836 +Node: Mayan Calendar694141 +Node: Diary697336 +Node: Diary Commands699085 +Node: Format of Diary File702408 +Node: Date Formats705278 +Node: Adding to Diary707852 +Node: Special Diary Entries709483 +Node: Calendar Customization714822 +Node: Calendar Customizing715684 +Node: Holiday Customizing718919 +Node: Date Display Format725406 +Node: Time Display Format726364 +Node: Daylight Savings727502 +Node: Diary Customizing730690 +Node: Hebrew/Islamic Entries735311 +Node: Fancy Diary Display738651 +Node: Included Diary Files740567 +Node: Sexp Diary Entries741548 +Node: Appt Customizing746638 +Node: Sorting747684 +Node: Shell752490 +Node: Single Shell753783 +Node: Interactive Shell755397 +Node: Shell Mode759162 +Node: Terminal emulator761653 +Node: Term Mode763962 +Node: Paging in Term764876 +Node: Narrowing765674 +Node: Hardcopy767624 +Node: Recursive Edit768596 +Node: Dissociated Press771583 +Node: CONX774146 +Node: Amusements775170 +Node: Emulation775650 +Node: Customization777510 +Node: Minor Modes779326 +Node: Variables780958 +Node: Examining782914 +Node: Easy Customization784375 +Node: Customization Groups785389 +Node: Changing an Option788318 +Node: Face Customization794588 +Node: Specific Customization796352 +Node: Edit Options798959 +Node: Locals800543 +Node: File Variables803722 +Node: Keyboard Macros808272 +Node: Basic Kbd Macro810443 +Node: Save Kbd Macro812375 +Node: Kbd Macro Query814033 +Node: Key Bindings815975 +Node: Keymaps816849 +Node: Rebinding820699 +Node: Interactive Rebinding821398 +Node: Programmatic Rebinding823587 +Node: Key Bindings Using Strings826394 +Node: Disabling828021 +Node: Syntax829800 +Node: Syntax Entry830681 +Node: Syntax Change834765 +Node: Init File836934 +Node: Init Syntax838398 +Node: Init Examples840749 +Node: Terminal Init844939 +Node: Audible Bell846676 +Node: Faces850107 +Node: Frame Components854949 +Node: X Resources855394 +Node: Geometry Resources857053 +Node: Iconic Resources859501 +Node: Resource List859973 +Node: Face Resources866480 +Node: Widgets870157 +Node: Menubar Resources871096 +Node: Quitting872610 +Node: Lossage875588 +Node: Stuck Recursive876232 +Node: Screen Garbled876938 +Node: Text Garbled878072 +Node: Unasked-for Search878711 +Node: Emergency Escape879496 +Node: Total Frustration881275 +Node: Bugs881906 +Node: Glossary891467 +Node: Manifesto923121 +Node: Key Index946598 +Node: Command Index972525 +Node: Variable Index1015111 +Node: Concept Index1031197  End Tag Table diff --git a/info/xemacs.info-1 b/info/xemacs.info-1 index b87fb89..576bd61 100644 --- a/info/xemacs.info-1 +++ b/info/xemacs.info-1 @@ -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 diff --git a/info/xemacs.info-10 b/info/xemacs.info-10 index 0c68a6c..e8f5cf6 100644 --- a/info/xemacs.info-10 +++ b/info/xemacs.info-10 @@ -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 diff --git a/info/xemacs.info-11 b/info/xemacs.info-11 index 8e0ab08..bf640bd 100644 --- a/info/xemacs.info-11 +++ b/info/xemacs.info-11 @@ -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 diff --git a/info/xemacs.info-12 b/info/xemacs.info-12 index 0233211..45c5285 100644 --- a/info/xemacs.info-12 +++ b/info/xemacs.info-12 @@ -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.  -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. - -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. - diff --git a/info/xemacs.info-13 b/info/xemacs.info-13 index 739ba70..7e434aa 100644 --- a/info/xemacs.info-13 +++ b/info/xemacs.info-13 @@ -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.  +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. + + 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.  -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 + for details. +  -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 `--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 `--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: + +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 | 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/ 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. + +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--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 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 -`' -`' - 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 -`' - 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. + +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 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. + + `' + `' + Toggle between selecting and unselecting a package for + installation. + + `x' + Install selected packages. + + `' + 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 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. + +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. + +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.  -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 + 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. +  -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 + + +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. - -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. - - -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 '. - - 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. - - -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 '. - - 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. - diff --git a/info/xemacs.info-14 b/info/xemacs.info-14 index 5147bce..eca17ed 100644 --- a/info/xemacs.info-14 +++ b/info/xemacs.info-14 @@ -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.  +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 +. + + 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. + + +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 '. + + 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. + + +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 '. + + 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. + + 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. - -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'). - - -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' -`' - Scroll calendar three months forward - (`scroll-calendar-left-three-months'). - -`M-v' -`' - 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 and are equivalent to `C-v' and -`M-v', just as they are in other modes. - - -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. - - -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.) - - -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). - - -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 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. - diff --git a/info/xemacs.info-15 b/info/xemacs.info-15 index 57f9bb7..82aa3f6 100644 --- a/info/xemacs.info-15 +++ b/info/xemacs.info-15 @@ -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.  +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'). + + +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' +`' + Scroll calendar three months forward + (`scroll-calendar-left-three-months'). + +`M-v' +`' + 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 and are equivalent to `C-v' and +`M-v', just as they are in other modes. + + +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. + + +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.) + + +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). + + +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 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. + + 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. - -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") ... ) - - -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)) - - -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. - - -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. - diff --git a/info/xemacs.info-16 b/info/xemacs.info-16 index 4b02aad..60c77c2 100644 --- a/info/xemacs.info-16 +++ b/info/xemacs.info-16 @@ -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.  +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") ... ) + + +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)) + + +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. + + +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. + + 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'. - -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. - - -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. - - -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'. - - -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'. - - -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::. - - -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. - diff --git a/info/xemacs.info-17 b/info/xemacs.info-17 index a03c890..6648446 100644 --- a/info/xemacs.info-17 +++ b/info/xemacs.info-17 @@ -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.  +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. + + +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. + + +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'. + + +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'. + + +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::. + + +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. + + 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. - -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 exits just - like . 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 '. - - * `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 . 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 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. - - -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 - - -File: xemacs.info, Node: Interactive Rebinding, Next: Programmatic Rebinding, Up: Rebinding - -Changing Key Bindings Interactively -................................... - -`M-x global-set-key KEY CMD ' - Defines KEY globally to run CMD. - -`M-x local-set-key KEYS CMD ' - Defines KEY locally (in the major mode now in effect) to run CMD. - -`M-x local-unset-key KEYS ' - 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 C-f next-line - -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 C-x 4 $ spell-other-window - -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. - - -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 - (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 - ;;; in the keymap that is in force when you are running `dired'. - (define-key dired-mode-map '(meta control button3) 'my-command) - - -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 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 . 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 - diff --git a/info/xemacs.info-18 b/info/xemacs.info-18 index ad966c0..5cadc3a 100644 --- a/info/xemacs.info-18 +++ b/info/xemacs.info-18 @@ -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.  +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 exits just + like . 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 '. + + * `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 . 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 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. + + +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 + + +File: xemacs.info, Node: Interactive Rebinding, Next: Programmatic Rebinding, Up: Rebinding + +Changing Key Bindings Interactively +................................... + +`M-x global-set-key KEY CMD ' + Defines KEY globally to run CMD. + +`M-x local-set-key KEYS CMD ' + Defines KEY locally (in the major mode now in effect) to run CMD. + +`M-x local-unset-key KEYS ' + 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 C-f next-line + +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 C-x 4 $ spell-other-window + +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. + + +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 + (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 + ;;; in the keymap that is in force when you are running `dired'. + (define-key dired-mode-map '(meta control button3) 'my-command) + + +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 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 . 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 + + 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'. - -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)'. - - -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'. - - -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. - - -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::. - - -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. - - -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::. - diff --git a/info/xemacs.info-19 b/info/xemacs.info-19 index 4192a79..ff8b3f6 100644 --- a/info/xemacs.info-19 +++ b/info/xemacs.info-19 @@ -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.  +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)'. + + +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'. + + +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. + + +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::. + + +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. + + +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::. + + 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. - -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 , - , or . *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 key and typing some other character; some have - special keys on the keyboard. , , , , and - 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 . - *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::. - - - The 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. - - - is a character used as a prefix for typing Meta characters on - keyboards lacking a key. Unlike the key (which, - like the key, is held down while another character is - typed), the 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 - or . 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::. - - - You can type at any time to ask what options you have, or - to ask what any command does. 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 , 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 key, you type a Control-Meta character by - typing 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 key held down. Such characters are given names that - start with `Meta-'. For example, `Meta-<' is typed by holding down - and at the same time typing `<' (which itself is done, on - most terminals, by holding down 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 - 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 , - 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::. - - - 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::. - diff --git a/info/xemacs.info-2 b/info/xemacs.info-2 index f2754c1..466cf65 100644 --- a/info/xemacs.info-2 +++ b/info/xemacs.info-2 @@ -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 diff --git a/info/xemacs.info-20 b/info/xemacs.info-20 index 9ce962e..a3b119f 100644 --- a/info/xemacs.info-20 +++ b/info/xemacs.info-20 @@ -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.  -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. - - -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 , + , or . *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 key and typing some other character; some have + special keys on the keyboard. , , , , and + 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 . + *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::. + + + The 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. + + + is a character used as a prefix for typing Meta characters on + keyboards lacking a key. Unlike the key (which, + like the key, is held down while another character is + typed), the 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 + or . 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::. + + + You can type at any time to ask what options you have, or + to ask what any command does. 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 , 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 key, you type a Control-Meta character by + typing 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 key held down. Such characters are given names that + start with `Meta-'. For example, `Meta-<' is typed by holding down + and at the same time typing `<' (which itself is done, on + most terminals, by holding down 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 + 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 , + 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::. + + + 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::. diff --git a/info/xemacs.info-21 b/info/xemacs.info-21 index fe8b724..f55fcc1 100644 --- a/info/xemacs.info-21 +++ b/info/xemacs.info-21 @@ -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.  -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. + + +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. diff --git a/info/xemacs.info-22 b/info/xemacs.info-22 index e5b56b3..62d8003 100644 --- a/info/xemacs.info-22 +++ b/info/xemacs.info-22 @@ -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.  -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. - - -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. diff --git a/info/xemacs.info-23 b/info/xemacs.info-23 index cc4a455..e85db7b 100644 --- a/info/xemacs.info-23 +++ b/info/xemacs.info-23 @@ -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 diff --git a/info/xemacs.info-3 b/info/xemacs.info-3 index f3f6e3a..1fdc4de 100644 --- a/info/xemacs.info-3 +++ b/info/xemacs.info-3 @@ -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 diff --git a/info/xemacs.info-4 b/info/xemacs.info-4 index 53fc1cd..d8a425c 100644 --- a/info/xemacs.info-4 +++ b/info/xemacs.info-4 @@ -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 diff --git a/info/xemacs.info-5 b/info/xemacs.info-5 index 7a27615..41187a8 100644 --- a/info/xemacs.info-5 +++ b/info/xemacs.info-5 @@ -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 diff --git a/info/xemacs.info-6 b/info/xemacs.info-6 index 1637f0f..e6c1b6f 100644 --- a/info/xemacs.info-6 +++ b/info/xemacs.info-6 @@ -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 diff --git a/info/xemacs.info-7 b/info/xemacs.info-7 index eb360e0..8fcc8e1 100644 --- a/info/xemacs.info-7 +++ b/info/xemacs.info-7 @@ -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 diff --git a/info/xemacs.info-8 b/info/xemacs.info-8 index e72246b..81ad49c 100644 --- a/info/xemacs.info-8 +++ b/info/xemacs.info-8 @@ -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 diff --git a/info/xemacs.info-9 b/info/xemacs.info-9 index 0d949e6..7c95cda 100644 --- a/info/xemacs.info-9 +++ b/info/xemacs.info-9 @@ -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 diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 9b88cc1..ae5c8af 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,134 @@ +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + +2001-01-31 Francesco Potorti` + + * 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` + + * 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` + + * 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` + + * 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` + + * etags.c (print_language_names): Print filenames in addition to + suffixes. + +2001-01-12 Francesco Potorti` + + * 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 + . + +2000-11-07 Francesco Potortì + + * 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` + + * 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` + + * etags.c (many functions): Add prototypes. + +2000-01-31 Francesco Potorti` + + * 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 + + * 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 + + * gnuclient.c (get_current_working_directory): Use HAVE_GETCWD. + warning: getwd() possibly used unsafely, consider using getcwd(). + 2001-01-26 Martin Buchholz * XEmacs 21.2.43 "Terspichore" is released. diff --git a/lib-src/etags.c b/lib-src/etags.c index ce7d1c2..7ae810d 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -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ì 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 +# include +# include +# ifndef HAVE_CONFIG_H +# define DOS_NT +# include +# endif +#else +# define MSDOS FALSE +#endif /* MSDOS */ + +#ifdef WINDOWSNT # include # include # include # include # include # 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 # include # else extern char *getenv (); # endif -#endif /* !WIN32_NATIVE */ +#endif /* !WINDOWSNT */ #ifdef HAVE_UNISTD_H # include #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 #include +#include +#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)); 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 */ }; + 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 + * Idea by Vladimir Alexiev (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; } + /* 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 - * Subject: Proposal for firming up the TAGS format specification - * To: F.Potorti@cnuce.cnr.it +/* + * TAGS format specification + * Idea by Sam Kendall (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); } } + static void put_entries (np) @@ -1848,7 +1921,17 @@ total_size_of_entries (np) return total; } + +/* 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; } + - /* - * 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 = ""; -enum sym_type structtype; - -/* * When objdef is different from onone, objtag is the name of the class. */ char *objtag = ""; @@ -2176,7 +2256,7 @@ enum /* * State machine for Objective C protocols and implementations. - * Tom R.Hageman + * Idea by Tom R.Hageman (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 (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); + } +} + + +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 = ""; 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; } + /* - * 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 = ""; + 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); } + /* 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; } + /* 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) } } } + /* - * Philippe Waroquiers , 1998-04-24 * Ada parsing + * Philippe Waroquiers (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 */ } + /* * 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) } } } + /* - * Perl support by Bart Robinson - * enhanced by Michael Ernst + * Perl support * Perl sub names: look for /^sub[ \t\n]+[^ \t\n{]+/ * Perl variable names: /^(my|local).../ + * Bart Robinson (1995) + * Michael Ernst (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) } } } + /* - * Python support by Eric S. Raymond + * Python support * Look for /^def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/ + * Eric S. Raymond (1997) */ static void Python_functions (inf) @@ -3779,6 +4053,7 @@ Python_functions (inf) } } } + /* 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); } } + + +/* + * Makefile support + * Idea by Assar Westerlund (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); + } +} + /* 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); } + /* - * lisp tag functions + * Lisp tag functions * look for (def or (DEF, quote or QUOTE */ @@ -4086,13 +4386,14 @@ Lisp_functions (inf) } } } + /* * Postscript tag functions * Just look for lines where the first character is '/' - * Richard Mlynarik * Also look at "defineps" for PSWrap - * suggested by Masatake YAMATO + * Richard Mlynarik (1997) + * Ideas by Masatake Yamato (1999) */ static void Postscript_functions (inf) @@ -4161,6 +4462,7 @@ Scheme_functions (inf) } } } + /* 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; } + + +/* 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); + } + } +} + /* * 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; } + /* * 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; } + #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 */ + 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; } + /* * 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; } + /* 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; diff --git a/lib-src/gnuclient.c b/lib-src/gnuclient.c index 9901186..d4c1630 100644 --- a/lib-src/gnuclient.c +++ b/lib-src/gnuclient.c @@ -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 diff --git a/lib-src/gnuserv.c b/lib-src/gnuserv.c index b90443d..2ba5785 100644 --- a/lib-src/gnuserv.c +++ b/lib-src/gnuserv.c @@ -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 */ diff --git a/lib-src/gnuslib.c b/lib-src/gnuslib.c index c16aa31..f0226e6 100644 --- a/lib-src/gnuslib.c +++ b/lib-src/gnuslib.c @@ -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 */ diff --git a/lib-src/pop.c b/lib-src/pop.c index 79160eb..0bf05de 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c @@ -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 * */); diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6104be8..f4d6f0e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -572,6 +572,34 @@ * 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 + + * XEmacs 21.2.44 "Thalia" is released. + +2001-01-16 Mike Sperber + + * startup.el (normal-top-level): Work even if no installation root + is found. + +2001-01-30 Andy Piper + + * 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 + + * mwheel.el (mwheel-scroll): unwind-protect the selected window. + +2001-01-24 Didier Verna + + * 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 * XEmacs 21.2.43 "Terspichore" is released. diff --git a/lisp/gutter-items.el b/lisp/gutter-items.el index b63504a..054aa59 100644 --- a/lisp/gutter-items.el +++ b/lisp/gutter-items.el @@ -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) diff --git a/lisp/gutter.el b/lisp/gutter.el index 19283da..a6dad1e 100644 --- a/lisp/gutter.el +++ b/lisp/gutter.el @@ -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 diff --git a/lisp/mwheel.el b/lisp/mwheel.el index 03d4392..094ca43 100644 --- a/lisp/mwheel.el +++ b/lisp/mwheel.el @@ -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 diff --git a/lisp/sound.el b/lisp/sound.el index 2857165..46e277c 100644 --- a/lisp/sound.el +++ b/lisp/sound.el @@ -106,16 +106,19 @@ ) ;; #### 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 ) @@ -130,6 +133,11 @@ (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 diff --git a/lisp/startup.el b/lisp/startup.el index a9c7325..b519a9a 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -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) diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index d81bceb..d3dad72 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,27 @@ +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + +2001-02-06 Martin Buchholz + + * 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 + + * lwlib-Xm.c (xm_update_one_value): + Obey the man page; use XtFree instead of free. + +2001-02-02 Martin Buchholz + + * config.h.in: Use "..." to include config.h + 2001-01-26 Martin Buchholz * XEmacs 21.2.43 "Terspichore" is released. diff --git a/lwlib/config.h.in b/lwlib/config.h.in index 0a7be10..00d3af1 100644 --- a/lwlib/config.h.in +++ b/lwlib/config.h.in @@ -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 diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index 2903ede..3e25262 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -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; } diff --git a/lwlib/xlwcheckbox.c b/lwlib/xlwcheckbox.c index 686d86f..9c685bc 100644 --- a/lwlib/xlwcheckbox.c +++ b/lwlib/xlwcheckbox.c @@ -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}; diff --git a/lwlib/xlwgauge.c b/lwlib/xlwgauge.c index de71df0..074a6c7 100644 --- a/lwlib/xlwgauge.c +++ b/lwlib/xlwgauge.c @@ -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) ; diff --git a/lwlib/xlwgcs.c b/lwlib/xlwgcs.c index ed5c480..3b6cd7e 100644 --- a/lwlib/xlwgcs.c +++ b/lwlib/xlwgcs.c @@ -169,7 +169,8 @@ #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) diff --git a/lwlib/xlwgcs.h b/lwlib/xlwgcs.h index aed49d4..30b9b86 100644 --- a/lwlib/xlwgcs.h +++ b/lwlib/xlwgcs.h @@ -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 diff --git a/lwlib/xlwradio.c b/lwlib/xlwradio.c index a6430b9..207a1ff 100644 --- a/lwlib/xlwradio.c +++ b/lwlib/xlwradio.c @@ -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 */ diff --git a/man/ChangeLog b/man/ChangeLog index e59e0ef..e92f405 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,20 @@ +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + +2001-02-04 Steve Youngs + + * 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 + + * lispref/variables.texi (max-specpdl-size): Correct default value. + * lispref/eval.texi (max-lisp-eval-depth): Correct default value. + 2001-01-26 Martin Buchholz * XEmacs 21.2.43 "Terspichore" is released. diff --git a/man/lispref/eval.texi b/man/lispref/eval.texi index 71ce6d2..3b378cd 100644 --- a/man/lispref/eval.texi +++ b/man/lispref/eval.texi @@ -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. diff --git a/man/lispref/variables.texi b/man/lispref/variables.texi index 6d3cc9d..21aa3af 100644 --- a/man/lispref/variables.texi +++ b/man/lispref/variables.texi @@ -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}. diff --git a/man/xemacs/packages.texi b/man/xemacs/packages.texi index e2202d8..5aaeeaf 100644 --- a/man/xemacs/packages.texi +++ b/man/xemacs/packages.texi @@ -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{--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 | 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/ 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--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 @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. diff --git a/man/xemacs/programs.texi b/man/xemacs/programs.texi index 9103a2d..87b61c4 100644 --- a/man/xemacs/programs.texi +++ b/man/xemacs/programs.texi @@ -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 diff --git a/man/xemacs/xemacs.texi b/man/xemacs/xemacs.texi index abb9efb..d5d83b6 100644 --- a/man/xemacs/xemacs.texi +++ b/man/xemacs/xemacs.texi @@ -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 diff --git a/nt/ChangeLog b/nt/ChangeLog index e103bcd..dc6c984 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + 2001-01-26 Martin Buchholz * XEmacs 21.2.43 "Terspichore" is released. diff --git a/src/.gdbinit b/src/.gdbinit index e3804b6..03720ca 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -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) diff --git a/src/ChangeLog b/src/ChangeLog index bbca052..dfc1cce 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3662,6 +3662,189 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + +2001-02-06 Martin Buchholz + + 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 + + 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 + + * elhash.c (make_general_lisp_hash_table): + Use simpler and more efficient calloc to clear entries. + +2001-02-07 Martin Buchholz + + * window.c (window_scroll): Work around an AIX C compiler bug. + Fixes 'scroll-up' does nothing problem with xlC. + +2001-02-05 Martin Buchholz + + * .gdbinit: Remove obsolete comment. + +2001-01-31 Mike Alexander + + * select.c (Fown_selection_internal): Set owned_p for device + method correctly. + +2001-02-01 Martin Buchholz + + 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 + + * lisp-disunion.h: Fix up comments. + +2001-01-31 Martin Buchholz + + * 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 + + * m/hp9000s300.h (UNEXEC): Check for HPUX, not !BSD. + +2001-01-30 Martin Buchholz + + 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 + + * glyphs-widget.c (check_valid_int_or_function): allow symbols + since they can be eval'ed + +2001-01-29 Martin Buchholz + + * lisp.h (ALIGNOF): Make it work on non-gcc C++ compilers. + Oops, XEmacs redefines `class'. Use `typename' instead. + +2001-01-28 Martin Buchholz + + * dumper.c: Fix C++ compile errors. + +2001-01-29 Martin Buchholz + + * tparam.c: Use correct prototypes. + +2001-01-28 Martin Buchholz + + * sysproc.h: #include util.h for NetBSD's openpty. + +2001-01-27 Martin Buchholz + + 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 + + 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 * XEmacs 21.2.43 "Terspichore" is released. diff --git a/src/abbrev.c b/src/abbrev.c index 2b2f00e..5687ee1 100644 --- a/src/abbrev.c +++ b/src/abbrev.c @@ -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; diff --git a/src/alloc.c b/src/alloc.c index 07e5775..23a6a91 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -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! */ diff --git a/src/buffer.c b/src/buffer.c index 4ec3d0c..6cbfb9c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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; diff --git a/src/chartab.c b/src/chartab.c index 8f88a74..cd30619 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -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, /* diff --git a/src/chartab.h b/src/chartab.h index 7d62ac2..ca71025 100644 --- a/src/chartab.h +++ b/src/chartab.h @@ -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; diff --git a/src/cmdloop.c b/src/cmdloop.c index 80a99dc..024ed8a 100644 --- a/src/cmdloop.c +++ b/src/cmdloop.c @@ -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. */ diff --git a/src/commands.h b/src/commands.h index 0c1d755..ef5bcb7 100644 --- a/src/commands.h +++ b/src/commands.h @@ -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; diff --git a/src/config.h.in b/src/config.h.in index 695312a..eb0f45e 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -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 */ diff --git a/src/console-x.h b/src/console-x.h index 2605439..d664360 100644 --- a/src/console-x.h +++ b/src/console-x.h @@ -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, diff --git a/src/data.c b/src/data.c index 09cc4fd..b90b3ca 100644 --- a/src/data.c +++ b/src/data.c @@ -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) diff --git a/src/dired-msw.c b/src/dired-msw.c index 73dfe42..73c5d10 100644 --- a/src/dired-msw.c +++ b/src/dired-msw.c @@ -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; diff --git a/src/dumper.c b/src/dumper.c index 56787a1..8def746 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -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) } +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)) + + + 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;iname, - 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; isize*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; idescription; 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; jcount; 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; isave_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; idescription; + 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; inb_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; inb_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) diff --git a/src/eldap.c b/src/eldap.c index 70a8603..16756e5 100644 --- a/src/eldap.c +++ b/src/eldap.c @@ -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 */ diff --git a/src/elhash.c b/src/elhash.c index 8677f95..5bf3476 100644 --- a/src/elhash.c +++ b/src/elhash.c @@ -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); diff --git a/src/emacs.c b/src/emacs.c index 522ffa7..9e5322b 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -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 diff --git a/src/eval.c b/src/eval.c index cf07fc2..00d15e9 100644 --- a/src/eval.c +++ b/src/eval.c @@ -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; diff --git a/src/event-Xt.c b/src/event-Xt.c index 04b54d3..8c55b2b 100644 --- a/src/event-Xt.c +++ b/src/event-Xt.c @@ -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; diff --git a/src/event-msw.c b/src/event-msw.c index 7055984..f098d73 100644 --- a/src/event-msw.c +++ b/src/event-msw.c @@ -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. diff --git a/src/event-stream.c b/src/event-stream.c index 063b9e2..847ab65 100644 --- a/src/event-stream.c +++ b/src/event-stream.c @@ -100,7 +100,7 @@ Boston, MA 02111-1307, USA. */ #include /* 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) diff --git a/src/extents.c b/src/extents.c index a79f7d6..95a059b 100644 --- a/src/extents.c +++ b/src/extents.c @@ -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; diff --git a/src/glyphs-widget.c b/src/glyphs-widget.c index fd754c6..be7b5fa 100644 --- a/src/glyphs-widget.c +++ b/src/glyphs-widget.c @@ -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); diff --git a/src/hpplay.c b/src/hpplay.c index 9036452..9499385 100644 --- a/src/hpplay.c +++ b/src/hpplay.c @@ -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 */ diff --git a/src/keymap.c b/src/keymap.c index cd66cef..4aa26f7 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -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"); diff --git a/src/lisp-disunion.h b/src/lisp-disunion.h index 1e69d96..f6faa07 100644 --- a/src/lisp-disunion.h +++ b/src/lisp-disunion.h @@ -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; diff --git a/src/lisp.h b/src/lisp.h index 64d2044..f949f41 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -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 struct alignment_trick { char c; T member; }; +template struct alignment_trick { char c; T member; }; # define ALIGNOF(type) offsetof (alignment_trick, 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; diff --git a/src/m/hp9000s300.h b/src/m/hp9000s300.h index 100dbed..858f5f1 100644 --- a/src/m/hp9000s300.h +++ b/src/m/hp9000s300.h @@ -52,9 +52,8 @@ NOTE-END */ /* #define CANNOT_DUMP */ -/* XEmacs: Richard Cognot 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 diff --git a/src/m/sun386.h b/src/m/sun386.h index 005ab13..26b086b 100644 --- a/src/m/sun386.h +++ b/src/m/sun386.h @@ -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 diff --git a/src/mule-canna.c b/src/mule-canna.c index cc0e786..3525c0b 100644 --- a/src/mule-canna.c +++ b/src/mule-canna.c @@ -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 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; diff --git a/src/mule-wnnfns.c b/src/mule-wnnfns.c index 08c6b9f..dc71e64 100644 --- a/src/mule-wnnfns.c +++ b/src/mule-wnnfns.c @@ -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 */ diff --git a/src/nt.c b/src/nt.c index 27d3ae3..0824e2a 100644 --- 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 ]; diff --git a/src/process-unix.c b/src/process-unix.c index 0063a6e..d50028e 100644 --- a/src/process-unix.c +++ b/src/process-unix.c @@ -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. diff --git a/src/profile.c b/src/profile.c index 5f2fbf6..4d097bc 100644 --- a/src/profile.c +++ b/src/profile.c @@ -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; diff --git a/src/ralloc.c b/src/ralloc.c index ea8f8f8..2938971 100644 --- a/src/ralloc.c +++ b/src/ralloc.c @@ -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 diff --git a/src/redisplay.c b/src/redisplay.c index ecaaad9..8c2a78c 100644 --- a/src/redisplay.c +++ b/src/redisplay.c @@ -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; diff --git a/src/regex.c b/src/regex.c index ceda32a..cece34b 100644 --- a/src/regex.c +++ b/src/regex.c @@ -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"); diff --git a/src/select-x.c b/src/select-x.c index de3acda..aa4c7dc 100644 --- a/src/select-x.c +++ b/src/select-x.c @@ -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; diff --git a/src/select.c b/src/select.c index 9c6191a..9e6447e 100644 --- a/src/select.c +++ b/src/select.c @@ -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; diff --git a/src/sound.c b/src/sound.c index fe31b7b..acb272b 100644 --- a/src/sound.c +++ b/src/sound.c @@ -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; diff --git a/src/symbols.c b/src/symbols.c index 906637c..ae1dc92 100644 --- a/src/symbols.c +++ b/src/symbols.c @@ -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: diff --git a/src/symeval.h b/src/symeval.h index 44a5849..141430b 100644 --- a/src/symeval.h +++ b/src/symeval.h @@ -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) diff --git a/src/sysproc.h b/src/sysproc.h index fc23d27..a6b9cb3 100644 --- a/src/sysproc.h +++ b/src/sysproc.h @@ -131,7 +131,11 @@ Boston, MA 02111-1307, USA. */ #endif #ifdef HAVE_LIBUTIL_H -#include /* openpty() on BSD */ +#include /* openpty() on FreeBSD */ +#endif + +#ifdef HAVE_UTIL_H +#include /* openpty() on NetBSD */ #endif #ifdef FD_SET diff --git a/src/tparam.c b/src/tparam.c index c4b6bfd..eb7fcf2 100644 --- a/src/tparam.c +++ b/src/tparam.c @@ -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 */ diff --git a/src/window.c b/src/window.c index a3ad1b1..ccddef8 100644 --- a/src/window.c +++ b/src/window.c @@ -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); diff --git a/tests/ChangeLog b/tests/ChangeLog index 877dc91..7a7f6da 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2001-02-08 Martin Buchholz + + * XEmacs 21.2.44 "Thalia" is released. + 2001-01-26 Martin Buchholz * XEmacs 21.2.43 "Terspichore" is released. -- 1.7.10.4