+to 21.2.42 "Poseidon"
+-- 64-bit platforms (Alpha) broken in 21.2.41 now fixed -- Martin Buchholz
+-- Windows packaging changes -- Andy Piper
+-- Widget bug fixes -- Andy Piper
+-- Modeline scrolling documented -- Didier Verna
+-- C-level alignment hackery -- Martin Buchholz
+
to 21.2.41 "Polyhymnia"
-- A very important fix to the byte-compiler was made.
RE-BYTE-COMPILE all your .el files that were compiled by any older
* configure.in: Add new option `--with-utf-2000'; define `UTF2000'
if it is specified.
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
+2001-01-18 Martin Buchholz <martin@xemacs.org>
+
+ * PROBLEMS (Sun/Solaris): Yet another microimprovement.
+
+2001-01-17 Martin Buchholz <martin@xemacs.org>
+
+ * PROBLEMS (Sun/Solaris): Replace --with-gnu-ld=no with
+ --with-ld=/usr/ccs/bin/ld
+
+2001-01-16 Robert Pluim <rpluim@bigfoot.com>
+
+ * PROBLEMS (SunOS/Solaris): Document workaround for GNU ld bug on
+ Solaris. Half mine, half Raymond Toy, half Martin Buchholz.
+
+2001-01-16 Didier Verna <didier@xemacs.org>
+
+ * NEWS: document the modeline horizontal scrolling feature.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
2000-10-10 Martin Buchholz <martin@xemacs.org>
- * configure.in:
+ * configure.in:
Use stropts.h, not sys/stropts.h.
Use strtio.h, not sys/strtio.h.
2000-07-12 Martin Buchholz <martin@xemacs.org>
- * configure.in:
+ * configure.in:
Make sure Unix98 socklen_t is defined.
Use ANSI C mode `-std1' with DEC C instead of `-std'.
2000-07-09 Martin Buchholz <martin@xemacs.org>
- * configure.in:
+ * configure.in:
Replace SMART_INCLUDE with a dumber, but more reliable method.
2000-07-10 Martin Buchholz <martin@xemacs.org>
- * modules/zlib/Makefile:
- * modules/sample/Makefile:
- * modules/ldap/Makefile:
- * modules/base64/Makefile:
- * Makefile.in.in:
+ * modules/zlib/Makefile:
+ * modules/sample/Makefile:
+ * modules/ldap/Makefile:
+ * modules/base64/Makefile:
+ * Makefile.in.in:
rm -f ==> $(RM)
define SHELL=/bin/sh
2000-07-08 Ben Wing <ben@xemacs.org>
* configure.in: add -lcomdlg32 for cygwin.
-
+
2000-07-05 Craig Lanning <lanning@scra.org>
* aclocal.m4 (can_build_shared):
First pass at module support for cygwin and mingw.
-
+
* configure:
* configure (xe_check_libs):
* configure (acfindx):
2000-04-19 Martin Buchholz <martin@xemacs.org>
- * configure.in:
+ * configure.in:
* src/config.h.in:
Rewrite SMART_INCLUDE implementation to actually work.
Be paranoid - Avoid use of spaces in these macro definitions.
- Leave alloca() definition at start of compilation unit,
+ Leave alloca() definition at start of compilation unit,
as AIX requests.
Rename SMART_INCLUDE_MACRO to SMART_INCLUDE_INDIRECTIONS.
* xemacs/configure.in: Do a normal link when compiling with
--pdump. Don't try compiling an unexec object file.
-
+
2000-03-27 Didier Verna <didier@xemacs.org>
* configure.in: reorganize the output by topic.
** SunOS/Solaris
+*** Dumping error when using GNU binutils / GNU ld on a Sun.
+
+Errors similar to the following:
+
+ Dumping under the name xemacs unexec():
+ dldump(/space/rpluim/xemacs-obj/src/xemacs): ld.so.1: ./temacs:
+ fatal: /space/rpluim/xemacs-obj/src/xemacs: unknown dynamic entry:
+ 1879048176
+
+are caused by using GNU ld. There are several workarounds available:
+
+In XEmacs 21.2 or later, configure using the new portable dumper
+(--pdump).
+
+Alternatively, you can link using the Sun version of ld, which is
+normally held in /usr/ccs/bin. This can be done by one of:
+
+- building gcc with these configure flags:
+ configure --with-ld=/usr/ccs/bin/ld --with-as=/usr/ccs/bin/as
+
+- adding -B/usr/ccs/bin/ to CFLAGS used to configure XEmacs
+ (Note: The trailing '/' there is significant.)
+
+- uninstalling GNU ld.
+
+The Solaris2 FAQ claims:
+
+ When you install gcc, don't make the mistake of installing
+ GNU binutils or GNU libc, they are not as capable as their
+ counterparts you get with Solaris 2.x.
+
*** Link failure when using acc on a Sun.
To use acc, you need additional options just before the libraries, such as
There have been reports of Sun sed truncating very lines in the
Makefile during configuration. The workaround is to use GNU sed or,
-even better, think of a better way to generate Makefile, and send us a
+even better, think of a better way to generate Makefile, and send us a
patch. :-)
*** On Solaris 2 I get undefined symbols from libcurses.a.
bash, as a workaround.
*** On SunOS, you get linker errors
- ld: Undefined symbol
+ ld: Undefined symbol
_get_wmShellWidgetClass
_get_applicationShellWidgetClass
*** On a Sun running SunOS 4.1.1, you get this error message from GNU ld:
- /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment
+ /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment
The problem is in the Sun shared C library, not in GNU ld.
*** SunOS 4.1.2: undefined symbol _get_wmShellWidgetClass
Apparently the version of libXmu.so.a that Sun ships is hosed: it's missing
- some stuff that is in libXmu.a (the static version). Sun has a patch for
+ some stuff that is in libXmu.a (the static version). Sun has a patch for
this, but a workaround is to use the static version of libXmu, by changing
the link command from "-lXmu" to "-Bstatic -lXmu -Bdynamic". If you have
OpenWindows 3.0, ask Sun for these patches:
1. The ld in IRIX 5.3 ignores all but the last -rpath
spec, so the patched configure spits out a warning
if --x-libraries or --site-runtime-libraries are
- specified under irix 5.x, and it only adds -rpath
+ specified under irix 5.x, and it only adds -rpath
entries for the --site-runtime-libraries. This bug was
fixed sometime between 5.3 and 6.2.
This might be a sed problem. For your own safety make sure to use
GNU sed while dumping XEmacs.
-*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running.
+*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running.
(also appears on AIX as reported in comp.emacs.xemacs)
Marcus Thiessel <marcus@xemacs.org>
configure:
--x-libraries="/usr/lib/Motif1.2_R6 -L/usr/lib/X11R6"
-
+
Make sure /usr/lib/Motif1.2_R6/libXm.sl is a link to
/usr/lib/Motif1.2_R6/libXm.3.
*** Native cc on SCO OpenServer 5 is now OK. Icc may still throw you
a curve. Here is what Robert Lipe <robertl@arnet.com> says:
-Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5
+Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5
now produces a functional binary. I will typically build this
configuration for COFF with:
--site-includes=/usr/local/include --site-libraries=/usr/local/lib \
--with-xpm --with-xface --with-sound=nas
-This version now supports ELF builds. I highly recommend this to
-reduce the in-core footprint of XEmacs. This is now how I compile
+This version now supports ELF builds. I highly recommend this to
+reduce the in-core footprint of XEmacs. This is now how I compile
all my test releases. Build it like this:
/path_to_XEmacs_source/configure --with-gcc=no \
--site-includes=/usr/local/include --site-libraries=/usr/local/lib \
--with-xpm --with-xface --with-sound=nas --dynamic
-The compiler known as icc [ supplied with the OpenServer 5 Development
+The compiler known as icc [ supplied with the OpenServer 5 Development
System ] generates a working binary, but it takes forever to generate
XEmacs. ICC also whines more about the code than /bin/cc does. I do
believe all its whining is legitimate, however. Note that you do
--site-includes=/usr/local/include --site-libraries=/usr/local/lib \
--with-xpm --with-xface --with-sound=nas --dynamic --compiler="icc"
-NOTE I have the xpm, xface, and audio libraries and includes in
+NOTE I have the xpm, xface, and audio libraries and includes in
/usr/local/lib, /usr/local/include. If you don't have these,
don't include the "--with-*" arguments in any of my examples.
-In previous versions of XEmacs, you had to override the defaults while
+In previous versions of XEmacs, you had to override the defaults while
compiling font-lock.o and extents.o when building with icc. This seems
to no longer be true, but I'm including this old information in case it
resurfaces. The process I used was:
- make -k
- [ procure pizza, beer, repeat ]
+ make -k
+ [ procure pizza, beer, repeat ]
cd src
make CC="icc -W0,-mP1COPT_max_tree_size=3000" font-lock.o extents.o
make LD=icc
-If you want sound support, get the tls566 supplement from
-ftp.sco.com:/TLS or any of its mirrors. It works just groovy
+If you want sound support, get the tls566 supplement from
+ftp.sco.com:/TLS or any of its mirrors. It works just groovy
with XEmacs.
The M-x manual-entry is known not to work. If you know Lisp and would
like help in making it work, e-mail me at <robertl@dgii.com>.
(UNCHECKED for 19.15 -- it might work).
-In earlier releases, gnuserv/gnuclient/gnudoit would open a frame
+In earlier releases, gnuserv/gnuclient/gnudoit would open a frame
just fine, but the client would lock up and the server would
-terminate when you used C-x # to close the frame. This is now
+terminate when you used C-x # to close the frame. This is now
fixed in XEmacs.
In etc/ there are two files of note. emacskeys.sco and emacsstrs.sco.
*** The XEmacs executable crashes at startup.
-This can be caused by many things.
+This can be caused by many things.
If you are running with X11 you need to have cygwin b19 or cygwin
b20.1 or greater, cygwin b20 will not work.
Try evaluating the form (setq lock-directory nil) and see if that helps.
There is a problem with file-locking on some systems (possibly related
-to NFS) that I don't understand. Please send mail to the address
+to NFS) that I don't understand. Please send mail to the address
xemacs@xemacs.org if you figure this one out.
*** When emacs starts up, I get lots of warnings about unknown keysyms.
If you are running the prebuilt binaries, the Motif library expects to find
certain thing in the XKeysymDB file. This file is normally in /usr/lib/X11/
or in /usr/openwin/lib/. If you keep yours in a different place, set the
-environment variable $XKEYSYMDB to point to it before starting emacs. If
-you still have the problem after doing that, perhaps your version of X is
+environment variable $XKEYSYMDB to point to it before starting emacs. If
+you still have the problem after doing that, perhaps your version of X is
too old. There is a copy of the MIT X11R5 XKeysymDB file in the emacs `etc'
directory. Try using that one.
*** My X resources used to work, and now some of them are being ignored.
Check the resources in .../etc/Emacs.ad (which is the same as the file
-sample.Xdefaults). Perhaps some of the default resources built in to
+sample.Xdefaults). Perhaps some of the default resources built in to
emacs are now overriding your existing resources. Copy and edit the
resources in Emacs.ad as necessary.
XEmacs has fairly new TTY redisplay support (beginning from 19.12),
which doesn't include some basic TTY optimizations -- like using
scrolling regions to move around blocks of text. This is why
-redisplay on the traditional terminals, or over slow lines can be very
+redisplay on the traditional terminals, or over slow lines can be very
slow.
If you are interested in fixing this, please let us know at
if ($?EMACS) then
if ($EMACS == "t") then
- unset edit
+ unset edit
stty -icrnl -onlcr -echo susp ^Z
endif
endif
XEmacs in a non-C locale. For example, `LC_ALL=en_US xemacs' crashes
while `LC_ALL=C xemacs' runs fine. This happens for example with GNU
libc 2.0.7. Installing libintl.a and libintl.h built from gettext
-0.10.35 and re-building XEmacs solves the crashes. Presumably soon
+0.10.35 and re-building XEmacs solves the crashes. Presumably soon
everyone will upgrade to GNU Libc 2.1 and this problem will go away.
*** `C-z', or `M-x suspend-emacs' hangs instead of suspending.
Also make sure that the `/etc/host.conf' files contains the following
lines:
- order hosts, bind
+ order hosts, bind
multi on
Any changes, permanent and temporary, to the host name should be
The solution is to add a pair of quotes around `tty` to make it a
single word:
-if (`tty` == "/dev/console")
+if (`tty` == "/dev/console")
should be changed to:
-if ("`tty`" == "/dev/console")
+if ("`tty`" == "/dev/console")
Even better, move things that set up terminal sections out of .cshrc
and into .login.
and testers. It probably doesn't work.
** There are no `native XEmacs' TUTORIALs for any Asian languages,
-including Japanese. FSF Emacs and XEmacs tutorials are quite similar,
+including Japanese. FSF Emacs and XEmacs tutorials are quite similar,
so it should be sufficient to skim through the differences and apply
them to the Japanese version.
* Changes in XEmacs 21.2
========================
+** The modeline's text is now scrollable. Please refer to the variable
+`modeline-scrolling-method' for more information.
+
** The delete key now deletes forward by default.
This is regulated by the variable `delete-key-deletes-forward', which
-This is ../info/emodules.info, produced by makeinfo version 4.0b from
+This is ../info/emodules.info, produced by makeinfo version 4.0 from
emodules.texi.
This file documents the module loading technology of XEmacs.
\1f
Tag Table:
-Node: Top\7f1537
-Node: Introduction\7f2884
-Node: Anatomy of a Module\7f7392
-Node: Required Header File\7f8206
-Node: Required Functions\7f10125
-Node: Required Variables\7f12849
-Node: Loading other Modules\7f15535
-Node: Using ellcc\7f17592
-Node: Compile Mode\7f19386
-Node: Initialization Mode\7f20754
-Node: Link Mode\7f25788
-Node: Other ellcc options\7f26933
-Node: Environment Variables\7f29512
-Node: Defining Functions\7f31203
-Node: Using DEFUN\7f33214
-Node: Declaring Functions\7f34925
-Node: Defining Variables\7f36268
-Node: Index\7f38511
+Node: Top\7f1536
+Node: Introduction\7f2883
+Node: Anatomy of a Module\7f7391
+Node: Required Header File\7f8205
+Node: Required Functions\7f10124
+Node: Required Variables\7f12848
+Node: Loading other Modules\7f15534
+Node: Using ellcc\7f17591
+Node: Compile Mode\7f19385
+Node: Initialization Mode\7f20753
+Node: Link Mode\7f25787
+Node: Other ellcc options\7f26932
+Node: Environment Variables\7f29511
+Node: Defining Functions\7f31202
+Node: Using DEFUN\7f33213
+Node: Declaring Functions\7f34924
+Node: Defining Variables\7f36267
+Node: Index\7f38510
\1f
End Tag Table
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
\1f
Indirect:
-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-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
\1f
Tag Table:
(Indirect)
-Node: Top\7f1777
-Node: A History of Emacs\7f7041
-Node: Through Version 18\7f8566
-Node: Lucid Emacs\7f12014
-Node: GNU Emacs 19\7f15032
-Node: GNU Emacs 20\7f17215
-Node: XEmacs\7f17642
-Node: XEmacs From the Outside\7f20821
-Node: The Lisp Language\7f22588
-Node: XEmacs From the Perspective of Building\7f32131
-Node: XEmacs From the Inside\7f38256
-Node: The XEmacs Object System (Abstractly Speaking)\7f46638
-Node: How Lisp Objects Are Represented in C\7f60724
-Node: Rules When Writing New C Code\7f65401
-Node: General Coding Rules\7f66205
-Node: Writing Lisp Primitives\7f72015
-Node: Adding Global Lisp Variables\7f83184
-Node: Coding for Mule\7f86822
-Node: Character-Related Data Types\7f87801
-Node: Working With Character and Byte Positions\7f90798
-Node: Conversion to and from External Data\7f94563
-Node: General Guidelines for Writing Mule-Aware Code\7f100704
-Node: An Example of Mule-Aware Code\7f103392
-Node: Techniques for XEmacs Developers\7f105373
-Node: A Summary of the Various XEmacs Modules\7f113320
-Node: Low-Level Modules\7f114140
-Node: Basic Lisp Modules\7f121601
-Node: Modules for Standard Editing Operations\7f128195
-Node: Editor-Level Control Flow Modules\7f134083
-Node: Modules for the Basic Displayable Lisp Objects\7f137594
-Node: Modules for other Display-Related Lisp Objects\7f140547
-Node: Modules for the Redisplay Mechanism\7f141888
-Node: Modules for Interfacing with the File System\7f144260
-Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f147958
-Node: Modules for Interfacing with the Operating System\7f153411
-Node: Modules for Interfacing with X Windows\7f160967
-Node: Modules for Internationalization\7f164450
-Node: Allocation of Objects in XEmacs Lisp\7f167087
-Node: Introduction to Allocation\7f167608
-Node: Garbage Collection\7f171294
-Node: GCPROing\7f172450
-Node: Garbage Collection - Step by Step\7f179454
-Node: Invocation\7f179846
-Node: garbage_collect_1\7f182859
-Node: mark_object\7f192341
-Node: gc_sweep\7f194153
-Node: sweep_lcrecords_1\7f199216
-Node: compact_string_chars\7f200211
-Node: sweep_strings\7f202391
-Node: sweep_bit_vectors_1\7f203356
-Node: Integers and Characters\7f204032
-Node: Allocation from Frob Blocks\7f204784
-Node: lrecords\7f206388
-Node: Low-level allocation\7f218614
-Node: Cons\7f222721
-Node: Vector\7f223447
-Node: Bit Vector\7f224024
-Node: Symbol\7f224517
-Node: Marker\7f224871
-Node: String\7f225426
-Node: Compiled Function\7f229039
-Node: Dumping\7f229208
-Node: Overview\7f231429
-Node: Data descriptions\7f231999
-Node: Dumping phase\7f234004
-Node: Object inventory\7f234407
-Node: Address allocation\7f237343
-Node: The header\7f238732
-Node: Data dumping\7f239177
-Node: Pointers dumping\7f239838
-Node: Reloading phase\7f241228
-Node: Remaining issues\7f242782
-Node: Events and the Event Loop\7f243743
-Node: Introduction to Events\7f244193
-Node: Main Loop\7f246142
-Node: Specifics of the Event Gathering Mechanism\7f249717
-Node: Specifics About the Emacs Event\7f262170
-Node: The Event Stream Callback Routines\7f262425
-Node: Other Event Loop Functions\7f262670
-Node: Converting Events\7f263810
-Node: Dispatching Events; The Command Builder\7f264419
-Node: Evaluation; Stack Frames; Bindings\7f264654
-Node: Evaluation\7f264996
-Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f271551
-Node: Simple Special Forms\7f273935
-Node: Catch and Throw\7f274718
-Node: Symbols and Variables\7f277293
-Node: Introduction to Symbols\7f277557
-Node: Obarrays\7f278625
-Node: Symbol Values\7f282158
-Node: Buffers and Textual Representation\7f284446
-Node: Introduction to Buffers\7f285104
-Node: The Text in a Buffer\7f287810
-Node: Buffer Lists\7f294960
-Node: Markers and Extents\7f296911
-Node: Bufbytes and Emchars\7f299176
-Node: The Buffer Object\7f299391
-Node: MULE Character Sets and Encodings\7f302871
-Node: Character Sets\7f303933
-Node: Encodings\7f307418
-Node: Japanese EUC (Extended Unix Code)\7f308485
-Node: JIS7\7f309317
-Node: Internal Mule Encodings\7f310667
-Node: Internal String Encoding\7f312497
-Node: Internal Character Encoding\7f314642
-Node: CCL\7f316366
-Node: The Lisp Reader and Compiler\7f323119
-Node: Lstreams\7f323332
-Node: Creating an Lstream\7f324363
-Node: Lstream Types\7f325590
-Node: Lstream Functions\7f325842
-Node: Lstream Methods\7f329408
-Node: Consoles; Devices; Frames; Windows\7f332550
-Node: Introduction to Consoles; Devices; Frames; Windows\7f332865
-Node: Point\7f335398
-Node: Window Hierarchy\7f336677
-Node: The Window Object\7f341129
-Node: The Redisplay Mechanism\7f344566
-Node: Critical Redisplay Sections\7f345358
-Node: Line Start Cache\7f346345
-Node: Redisplay Piece by Piece\7f349581
-Node: Extents\7f351618
-Node: Introduction to Extents\7f352152
-Node: Extent Ordering\7f353294
-Node: Format of the Extent Info\7f354535
-Node: Zero-Length Extents\7f356422
-Node: Mathematics of Extent Ordering\7f357822
-Node: Extent Fragments\7f362579
-Node: Faces\7f363665
-Node: Glyphs\7f363781
-Node: Specifiers\7f365968
-Node: Menus\7f366097
-Node: Subprocesses\7f368355
-Node: Interface to the X Window System\7f370341
-Node: Lucid Widget Library\7f370622
-Node: Generic Widget Interface\7f371913
-Node: Scrollbars\7f375472
-Node: Menubars\7f375615
-Node: Checkboxes and Radio Buttons\7f375758
-Node: Progress Bars\7f375944
-Node: Tab Controls\7f376104
-Node: Index\7f376225
+Node: Top\7f1776
+Node: A History of Emacs\7f7040
+Node: Through Version 18\7f8565
+Node: Lucid Emacs\7f12013
+Node: GNU Emacs 19\7f15031
+Node: GNU Emacs 20\7f17214
+Node: XEmacs\7f17641
+Node: XEmacs From the Outside\7f20820
+Node: The Lisp Language\7f22587
+Node: XEmacs From the Perspective of Building\7f32130
+Node: XEmacs From the Inside\7f38255
+Node: The XEmacs Object System (Abstractly Speaking)\7f46637
+Node: How Lisp Objects Are Represented in C\7f60723
+Node: Rules When Writing New C Code\7f65400
+Node: General Coding Rules\7f66204
+Node: Writing Lisp Primitives\7f72014
+Node: Adding Global Lisp Variables\7f83183
+Node: Coding for Mule\7f86821
+Node: Character-Related Data Types\7f87800
+Node: Working With Character and Byte Positions\7f90797
+Node: Conversion to and from External Data\7f94562
+Node: General Guidelines for Writing Mule-Aware Code\7f100703
+Node: An Example of Mule-Aware Code\7f103391
+Node: Techniques for XEmacs Developers\7f105372
+Node: A Summary of the Various XEmacs Modules\7f113319
+Node: Low-Level Modules\7f114139
+Node: Basic Lisp Modules\7f121600
+Node: Modules for Standard Editing Operations\7f128194
+Node: Editor-Level Control Flow Modules\7f134082
+Node: Modules for the Basic Displayable Lisp Objects\7f137593
+Node: Modules for other Display-Related Lisp Objects\7f140546
+Node: Modules for the Redisplay Mechanism\7f141887
+Node: Modules for Interfacing with the File System\7f144259
+Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f147957
+Node: Modules for Interfacing with the Operating System\7f153410
+Node: Modules for Interfacing with X Windows\7f160966
+Node: Modules for Internationalization\7f164449
+Node: Allocation of Objects in XEmacs Lisp\7f167086
+Node: Introduction to Allocation\7f167607
+Node: Garbage Collection\7f171293
+Node: GCPROing\7f172449
+Node: Garbage Collection - Step by Step\7f179453
+Node: Invocation\7f179845
+Node: garbage_collect_1\7f182858
+Node: mark_object\7f192340
+Node: gc_sweep\7f194152
+Node: sweep_lcrecords_1\7f199215
+Node: compact_string_chars\7f200210
+Node: sweep_strings\7f202390
+Node: sweep_bit_vectors_1\7f203355
+Node: Integers and Characters\7f204031
+Node: Allocation from Frob Blocks\7f204783
+Node: lrecords\7f206387
+Node: Low-level allocation\7f218613
+Node: Cons\7f222720
+Node: Vector\7f223446
+Node: Bit Vector\7f224023
+Node: Symbol\7f224516
+Node: Marker\7f224870
+Node: String\7f225425
+Node: Compiled Function\7f229038
+Node: Dumping\7f229207
+Node: Overview\7f231428
+Node: Data descriptions\7f231998
+Node: Dumping phase\7f234003
+Node: Object inventory\7f234406
+Node: Address allocation\7f237342
+Node: The header\7f238731
+Node: Data dumping\7f239176
+Node: Pointers dumping\7f239837
+Node: Reloading phase\7f241227
+Node: Remaining issues\7f242781
+Node: Events and the Event Loop\7f243742
+Node: Introduction to Events\7f244192
+Node: Main Loop\7f246141
+Node: Specifics of the Event Gathering Mechanism\7f249716
+Node: Specifics About the Emacs Event\7f262169
+Node: The Event Stream Callback Routines\7f262424
+Node: Other Event Loop Functions\7f262669
+Node: Converting Events\7f263809
+Node: Dispatching Events; The Command Builder\7f264418
+Node: Evaluation; Stack Frames; Bindings\7f264653
+Node: Evaluation\7f264995
+Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f271550
+Node: Simple Special Forms\7f273934
+Node: Catch and Throw\7f274717
+Node: Symbols and Variables\7f277292
+Node: Introduction to Symbols\7f277556
+Node: Obarrays\7f278624
+Node: Symbol Values\7f282157
+Node: Buffers and Textual Representation\7f284445
+Node: Introduction to Buffers\7f285103
+Node: The Text in a Buffer\7f287809
+Node: Buffer Lists\7f294959
+Node: Markers and Extents\7f296910
+Node: Bufbytes and Emchars\7f299175
+Node: The Buffer Object\7f299390
+Node: MULE Character Sets and Encodings\7f302870
+Node: Character Sets\7f303932
+Node: Encodings\7f307417
+Node: Japanese EUC (Extended Unix Code)\7f308484
+Node: JIS7\7f309316
+Node: Internal Mule Encodings\7f310666
+Node: Internal String Encoding\7f312496
+Node: Internal Character Encoding\7f314641
+Node: CCL\7f316365
+Node: The Lisp Reader and Compiler\7f323118
+Node: Lstreams\7f323331
+Node: Creating an Lstream\7f324362
+Node: Lstream Types\7f325589
+Node: Lstream Functions\7f325841
+Node: Lstream Methods\7f329407
+Node: Consoles; Devices; Frames; Windows\7f332549
+Node: Introduction to Consoles; Devices; Frames; Windows\7f332864
+Node: Point\7f335397
+Node: Window Hierarchy\7f336676
+Node: The Window Object\7f341128
+Node: The Redisplay Mechanism\7f344565
+Node: Critical Redisplay Sections\7f345357
+Node: Line Start Cache\7f346344
+Node: Redisplay Piece by Piece\7f349580
+Node: Extents\7f351617
+Node: Introduction to Extents\7f352151
+Node: Extent Ordering\7f353293
+Node: Format of the Extent Info\7f354534
+Node: Zero-Length Extents\7f356421
+Node: Mathematics of Extent Ordering\7f357821
+Node: Extent Fragments\7f362578
+Node: Faces\7f363664
+Node: Glyphs\7f363780
+Node: Specifiers\7f370413
+Node: Menus\7f370542
+Node: Subprocesses\7f372800
+Node: Interface to the X Window System\7f374786
+Node: Lucid Widget Library\7f375067
+Node: Generic Widget Interface\7f376358
+Node: Scrollbars\7f379917
+Node: Menubars\7f380060
+Node: Checkboxes and Radio Buttons\7f380203
+Node: Progress Bars\7f380389
+Node: Tab Controls\7f380549
+Node: Index\7f380670
\1f
End Tag Table
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/internals.info, produced by makeinfo version 4.0b from
+This is ../info/internals.info, produced by makeinfo version 4.0 from
internals/internals.texi.
INFO-DIR-SECTION XEmacs Editor
Glyphs are lazily instantiated by calling one of the glyph
functions. This usually occurs within redisplay when `Fglyph_height' is
called. Instantiation causes an image-instance to be created and
-cached. This cache is on a device basis for all glyphs except
-glyph-widgets, and on a window basis for glyph widgets. The caching is
-done by `image_instantiate' and is necessary because it is generally
-possible to display an image-instance in multiple domains. For instance
-if we create a Pixmap, we can actually display this on multiple windows
-- even though we only need a single Pixmap instance to do this. If
-caching wasn't done then it would be necessary to create
+cached. This cache is on a per-device basis for all glyphs except
+widget-glyphs, and on a per-window basis for widgets-glyphs. The
+caching is done by `image_instantiate' and is necessary because it is
+generally possible to display an image-instance in multiple domains.
+For instance if we create a Pixmap, we can actually display this on
+multiple windows - even though we only need a single Pixmap instance to
+do this. If caching wasn't done then it would be necessary to create
image-instances for every displayable occurrence of a glyph - and every
usage - and this would be extremely memory and cpu intensive.
Any action on a glyph first consults the cache before actually
instantiating a widget.
+Glyph Instantiation
+===================
+
+ Glyph instantiation is a hairy topic and requires some explanation.
+The guts of glyph instantiation is contained within
+`image_instantiate'. A glyph contains an image which is a specifier.
+When a glyph function - for instance `Fglyph_height' - asks for a
+property of the glyph that can only be determined from its instantiated
+state, then the glyph image is instantiated and an image instance
+created. The instantiation process is governed by the specifier code
+and goes through a series of steps:
+
+ * Validation. Instantiation of image instances happens dynamically -
+ often within the guts of redisplay. Thus it is often not feasible
+ to catch instantiator errors at instantiation time. Instead the
+ instantiator is validated at the time it is added to the image
+ specifier. This function is defined by `image_validate' and at a
+ simple level validates keyword value pairs.
+
+ * Duplication. The specifier code by default takes a copy of the
+ instantiator. This is reasonable for most specifiers but in the
+ case of widget-glyphs can be problematic, since some of the
+ properties in the instantiator - for instance callbacks - could
+ cause infinite recursion in the copying process. Thus the image
+ code defines a function - `image_copy_instantiator' - which will
+ selectively copy values. This is controlled by the way that a
+ keyword is defined either using `IIFORMAT_VALID_KEYWORD' or
+ `IIFORMAT_VALID_NONCOPY_KEYWORD'. Note that the image caching and
+ redisplay code relies on instantiator copying to ensure that
+ current and new instantiators are actually different rather than
+ referring to the same thing.
+
+ * Normalization. Once the instantiator has been copied it must be
+ converted into a form that is viable at instantiation time. This
+ can involve no changes at all, but typically involves things like
+ converting file names to the actual data. This function is defined
+ by `image_going_to_add' and `normalize_image_instantiator'.
+
+ * Instantiation. When an image instance is actually required for
+ display it is instantiated using `image_instantiate'. This
+ involves calling instantiate methods that are specific to the type
+ of image being instantiated.
+
+ The final instantiation phase also involves a number of steps. In
+order to understand these we need to describe a number of concepts.
+
+ An image is instantiated in a "domain", where a domain can be any
+one of a device, frame, window or image-instance. The domain gives the
+image-instance context and identity and properties that affect the
+appearance of the image-instance may be different for the same glyph
+instantiated in different domains. An example is the face used to
+display the image-instance.
+
+ Although an image is instantiated in a particular domain the
+instantiation domain is not necessarily the domain in which the
+image-instance is cached. For example a pixmap can be instantiated in a
+window be actually be cached on a per-device basis. The domain in which
+the image-instance is actually cached is called the "governing-domain".
+A governing-domain is currently either a device or a window.
+Widget-glyphs and text-glyphs have a window as a governing-domain, all
+other image-instances have a device as the governing-domain. The
+governing domain for an image-instance is determined using the
+governing_domain image-instance method.
+
+Widget-Glyphs
+=============
+
Widget-Glyphs in the MS-Windows Environment
===========================================
widget-glyphs, just as they are supported for features such as menubars
etc.
+ Lwlib is extremely poorly documented and quite hairy so here is my
+understanding of what goes on.
+
+ Lwlib maintains a set of widget_instances which mirror the
+hierarchical state of Xt widgets. I think this is so that widgets can
+be updated and manipulated generically by the lwlib library. For
+instance update_one_widget_instance can cope with multiple types of
+widget and multiple types of toolkit. Each element in the widget
+hierarchy is updated from its corresponding widget_instance by walking
+the widget_instance tree recursively.
+
+ This has desirable properties such as lw_modify_all_widgets which is
+called from `glyphs-x.c' and updates all the properties of a widget
+without having to know what the widget is or what toolkit it is from.
+Unfortunately this also has hairy properties such as making the lwlib
+code quite complex. And of course lwlib has to know at some level what
+the widget is and how to set its properties.
+
\1f
File: internals.info, Node: Specifiers, Next: Menus, Prev: Glyphs, Up: Top
Tab Controls
------------
-\1f
-File: internals.info, Node: Index, Prev: Interface to the X Window System, Up: Top
-
-Index
-*****
-
-* Menu:
-
-* Amdahl Corporation: XEmacs.
-* Andreessen, Marc: XEmacs.
-* asynchronous subprocesses: Modules for Interfacing with the Operating System.
-* Baur, Steve: XEmacs.
-* Benson, Eric: Lucid Emacs.
-* bridge, playing: XEmacs From the Outside.
-* Buchholz, Martin: XEmacs.
-* Bufbyte: Character-Related Data Types.
-* Bufpos: Character-Related Data Types.
-* Bytecount: Character-Related Data Types.
-* bytecount_to_charcount: Working With Character and Byte Positions.
-* Bytind: Character-Related Data Types.
-* C vs. Lisp: The Lisp Language.
-* caller-protects (GCPRO rule): Writing Lisp Primitives.
-* case table: Modules for Other Aspects of the Lisp Interpreter and Object System.
-* Charcount: Character-Related Data Types.
-* charcount_to_bytecount: Working With Character and Byte Positions.
-* charptr_emchar: Working With Character and Byte Positions.
-* charptr_n_addr: Working With Character and Byte Positions.
-* closer: Lstream Methods.
-* closure: The XEmacs Object System (Abstractly Speaking).
-* Coding for Mule: Coding for Mule.
-* Common Lisp: The Lisp Language.
-* compact_string_chars: compact_string_chars.
-* conservative garbage collection: GCPROing.
-* copy-on-write: General Coding Rules.
-* critical redisplay sections: Critical Redisplay Sections.
-* DEC_CHARPTR: Working With Character and Byte Positions.
-* Devin, Matthieu: Lucid Emacs.
-* display order of extents: Mathematics of Extent Ordering.
-* dynamic array: Low-Level Modules.
-* dynamic scoping: The Lisp Language.
-* dynamic types: The Lisp Language.
-* Emchar: Character-Related Data Types.
-* Energize: Lucid Emacs.
-* Epoch <1>: XEmacs.
-* Epoch: Lucid Emacs.
-* Extbyte: Character-Related Data Types.
-* Extcount: Character-Related Data Types.
-* extent fragment: Extent Fragments.
-* extent mathematics: Mathematics of Extent Ordering.
-* extent ordering: Mathematics of Extent Ordering.
-* extents, display order: Mathematics of Extent Ordering.
-* external widget: Modules for Interfacing with X Windows.
-* flusher: Lstream Methods.
-* Free Software Foundation: A History of Emacs.
-* FSF: A History of Emacs.
-* FSF Emacs <1>: GNU Emacs 20.
-* FSF Emacs: GNU Emacs 19.
-* garbage collection: Garbage Collection.
-* garbage collection protection: Writing Lisp Primitives.
-* garbage collection step by step: Garbage Collection - Step by Step.
-* garbage collection, conservative: GCPROing.
-* garbage collection, invocation: Invocation.
-* garbage_collect_1: garbage_collect_1.
-* gc_sweep: gc_sweep.
-* GNU Emacs 19: GNU Emacs 19.
-* GNU Emacs 20: GNU Emacs 20.
-* Gosling, James <1>: The Lisp Language.
-* Gosling, James: Through Version 18.
-* Great Usenet Renaming: Through Version 18.
-* Hackers (Steven Levy): A History of Emacs.
-* hierarchy of windows: Window Hierarchy.
-* history of Emacs: A History of Emacs.
-* Illinois, University of: XEmacs.
-* INC_CHARPTR: Working With Character and Byte Positions.
-* interactive: Modules for Standard Editing Operations.
-* interning: The XEmacs Object System (Abstractly Speaking).
-* ITS (Incompatible Timesharing System): A History of Emacs.
-* Java: The Lisp Language.
-* Java vs. Lisp: The Lisp Language.
-* Jones, Kyle: XEmacs.
-* Kaplan, Simon: XEmacs.
-* Levy, Steven: A History of Emacs.
-* line start cache: Line Start Cache.
-* Lisp vs. C: The Lisp Language.
-* Lisp vs. Java: The Lisp Language.
-* lstream: Modules for Interfacing with the File System.
-* Lstream_close: Lstream Functions.
-* Lstream_fgetc: Lstream Functions.
-* Lstream_flush: Lstream Functions.
-* Lstream_fputc: Lstream Functions.
-* Lstream_fungetc: Lstream Functions.
-* Lstream_getc: Lstream Functions.
-* Lstream_new: Lstream Functions.
-* Lstream_putc: Lstream Functions.
-* Lstream_read: Lstream Functions.
-* Lstream_reopen: Lstream Functions.
-* Lstream_rewind: Lstream Functions.
-* Lstream_set_buffering: Lstream Functions.
-* Lstream_ungetc: Lstream Functions.
-* Lstream_unread: Lstream Functions.
-* Lstream_write: Lstream Functions.
-* Lucid Emacs: Lucid Emacs.
-* Lucid Inc.: Lucid Emacs.
-* mark and sweep: Garbage Collection.
-* mark method <1>: lrecords.
-* mark method: Modules for Other Aspects of the Lisp Interpreter and Object System.
-* mark_object: mark_object.
-* marker: Lstream Methods.
-* mathematics of extents: Mathematics of Extent Ordering.
-* MAX_EMCHAR_LEN: Working With Character and Byte Positions.
-* merging attempts: XEmacs.
-* MIT: A History of Emacs.
-* Mlynarik, Richard: GNU Emacs 19.
-* MULE merged XEmacs appears: XEmacs.
-* NAS: Modules for Interfacing with the Operating System.
-* native sound: Modules for Interfacing with the Operating System.
-* network connections: Modules for Interfacing with the Operating System.
-* network sound: Modules for Interfacing with the Operating System.
-* Niksic, Hrvoje: XEmacs.
-* pane: Modules for the Basic Displayable Lisp Objects.
-* permanent objects: The XEmacs Object System (Abstractly Speaking).
-* pi, calculating: XEmacs From the Outside.
-* pseudo_closer: Lstream Methods.
-* read syntax: The XEmacs Object System (Abstractly Speaking).
-* read-eval-print: XEmacs From the Outside.
-* reader: Lstream Methods.
-* Redisplay Piece by Piece: Redisplay Piece by Piece.
-* relocating allocator: Low-Level Modules.
-* rename to XEmacs: XEmacs.
-* rewinder: Lstream Methods.
-* RMS: A History of Emacs.
-* scanner: Modules for Other Aspects of the Lisp Interpreter and Object System.
-* scoping, dynamic: The Lisp Language.
-* seekable_p: Lstream Methods.
-* selections: Modules for Interfacing with X Windows.
-* set_charptr_emchar: Working With Character and Byte Positions.
-* Sexton, Harlan: Lucid Emacs.
-* sound, native: Modules for Interfacing with the Operating System.
-* sound, network: Modules for Interfacing with the Operating System.
-* SPARCWorks: XEmacs.
-* Stallman, Richard: A History of Emacs.
-* subprocesses, asynchronous: Modules for Interfacing with the Operating System.
-* subprocesses, synchronous: Modules for Interfacing with the Operating System.
-* Sun Microsystems: XEmacs.
-* sweep_bit_vectors_1: sweep_bit_vectors_1.
-* sweep_lcrecords_1: sweep_lcrecords_1.
-* sweep_strings: sweep_strings.
-* synchronous subprocesses: Modules for Interfacing with the Operating System.
-* taxes, doing: XEmacs From the Outside.
-* TECO: A History of Emacs.
-* temporary objects: The XEmacs Object System (Abstractly Speaking).
-* Thompson, Chuck: XEmacs.
-* types, dynamic: The Lisp Language.
-* University of Illinois: XEmacs.
-* Win-Emacs: XEmacs.
-* window (in Emacs): Modules for the Basic Displayable Lisp Objects.
-* window hierarchy: Window Hierarchy.
-* window point internals: The Window Object.
-* Wing, Ben: XEmacs.
-* writer: Lstream Methods.
-* XEmacs: XEmacs.
-* XEmacs goes it alone: XEmacs.
-* Zawinski, Jamie: Lucid Emacs.
-
-
Foundation instead of in the original English.
\1f
-File: internals.info, Node: Index, Prev: Interface to X Windows, Up: Top
+File: internals.info, Node: Index, Prev: Interface to the X Window System, Up: Top
Index
*****
* external widget: Modules for Interfacing with X Windows.
* flusher: Lstream Methods.
* Free Software Foundation: A History of Emacs.
-* frob block: Introduction to Allocation.
* FSF: A History of Emacs.
* FSF Emacs <1>: GNU Emacs 20.
* FSF Emacs: GNU Emacs 19.
* permanent objects: The XEmacs Object System (Abstractly Speaking).
* pi, calculating: XEmacs From the Outside.
* pseudo_closer: Lstream Methods.
-* pure space: Basic Lisp Modules.
* read syntax: The XEmacs Object System (Abstractly Speaking).
* read-eval-print: XEmacs From the Outside.
* reader: Lstream Methods.
-* record type: How Lisp Objects Are Represented in C.
* Redisplay Piece by Piece: Redisplay Piece by Piece.
* relocating allocator: Low-Level Modules.
* rename to XEmacs: XEmacs.
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
\1f
Indirect:
-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
+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
\1f
Tag Table:
(Indirect)
-Node: Top\7f1485
-Node: Copying\7f23800
-Node: Overview\7f25805
-Node: Overview-Footnotes\7f27234
-Ref: Overview-Footnote-1\7f27298
-Node: Using Texinfo\7f27770
-Node: Info Files\7f30257
-Node: Info Files-Footnotes\7f34293
-Ref: Info Files-Footnote-1\7f34361
-Node: Printed Books\7f34540
-Node: Printed Books-Footnotes\7f37212
-Ref: Printed Books-Footnote-1\7f37286
-Node: Formatting Commands\7f37496
-Node: Formatting Commands-Footnotes\7f40323
-Ref: Formatting Commands-Footnote-1\7f40409
-Node: Conventions\7f41025
-Node: Comments\7f43587
-Node: Minimum\7f45010
-Node: Six Parts\7f47196
-Node: Short Sample\7f48708
-Node: Acknowledgements\7f52844
-Node: Texinfo Mode\7f53679
-Node: Texinfo Mode Overview\7f55051
-Node: Emacs Editing\7f55827
-Node: Inserting\7f57957
-Node: Showing the Structure\7f62238
-Node: Updating Nodes and Menus\7f64765
-Node: Updating Commands\7f65838
-Node: Updating Requirements\7f71899
-Node: Other Updating Commands\7f74196
-Node: Info Formatting\7f77464
-Node: Printing\7f78722
-Node: Texinfo Mode Summary\7f81067
-Node: Beginning a File\7f85821
-Node: Four Parts\7f86712
-Node: Sample Beginning\7f88182
-Node: Header\7f89802
-Node: First Line\7f91154
-Node: Start of Header\7f92143
-Node: setfilename\7f92856
-Node: settitle\7f94792
-Node: setchapternewpage\7f96682
-Node: paragraphindent\7f99443
-Node: End of Header\7f100925
-Node: Info Summary and Permissions\7f101764
-Node: Titlepage & Copyright Page\7f102783
-Node: titlepage\7f104389
-Node: titlepage-Footnotes\7f106671
-Ref: titlepage-Footnote-1\7f106737
-Node: titlefont center sp\7f107011
-Node: title subtitle author\7f108237
-Node: Copyright & Permissions\7f110509
-Node: end titlepage\7f112510
-Node: headings on off\7f114216
-Node: The Top Node\7f116261
-Node: Title of Top Node\7f117416
-Node: Master Menu Parts\7f118669
-Node: Software Copying Permissions\7f120906
-Node: Ending a File\7f122074
-Node: Printing Indices & Menus\7f122922
-Node: Contents\7f125231
-Node: File End\7f127571
-Node: Structuring\7f128244
-Node: Tree Structuring\7f129901
-Node: Structuring Command Types\7f131344
-Node: makeinfo top\7f133671
-Node: chapter\7f134204
-Node: unnumbered & appendix\7f135228
-Node: majorheading & chapheading\7f136067
-Node: section\7f136888
-Node: unnumberedsec appendixsec heading\7f137652
-Node: subsection\7f138641
-Node: unnumberedsubsec appendixsubsec subheading\7f139213
-Node: subsubsection\7f140166
-Node: Raise/lower sections\7f141716
-Node: Nodes\7f143851
-Node: Two Paths\7f144788
-Node: Node Menu Illustration\7f146074
-Node: node\7f149769
-Node: Node Names\7f152465
-Node: Writing a Node\7f153541
-Node: Node Line Tips\7f155559
-Node: Node Line Requirements\7f156353
-Node: First Node\7f157954
-Node: makeinfo top command\7f159393
-Node: Top Node Summary\7f160572
-Node: makeinfo Pointer Creation\7f162022
-Node: Menus\7f163269
-Node: Menus-Footnotes\7f164208
-Ref: Menus-Footnote-1\7f164266
-Node: Menu Location\7f164559
-Node: Writing a Menu\7f166236
-Node: Menu Parts\7f167202
-Node: Less Cluttered Menu Entry\7f168360
-Node: Menu Example\7f168985
-Node: Other Info Files\7f170506
-Node: Cross References\7f172374
-Node: References\7f173331
-Node: Cross Reference Commands\7f175078
-Node: Cross Reference Parts\7f176137
-Node: xref\7f178973
-Node: Reference Syntax\7f179772
-Node: One Argument\7f181426
-Node: Two Arguments\7f182438
-Node: Three Arguments\7f183553
-Node: Four and Five Arguments\7f185944
-Node: Top Node Naming\7f188356
-Node: ref\7f189366
-Node: pxref\7f190758
-Node: inforef\7f193140
-Node: uref\7f194433
-Node: Marking Text\7f195432
-Node: Indicating\7f196056
-Node: Useful Highlighting\7f197961
-Node: code\7f199350
-Node: kbd\7f202388
-Node: key\7f204258
-Node: samp\7f205591
-Node: var\7f207178
-Node: file\7f208971
-Node: dfn\7f209578
-Node: cite\7f210488
-Node: url\7f210942
-Node: email\7f211506
-Node: Emphasis\7f212318
-Node: emph & strong\7f213218
-Node: Smallcaps\7f214204
-Node: Fonts\7f215531
-Node: Customized Highlighting\7f216619
-Node: Customized Highlighting-Footnotes\7f219434
-Ref: Customized Highlighting-Footnote-1\7f219528
-Node: Quotations and Examples\7f219654
-Node: Block Enclosing Commands\7f221276
-Node: quotation\7f223301
-Node: example\7f224391
-Node: noindent\7f226446
-Node: Lisp Example\7f227910
-Node: Lisp Example-Footnotes\7f228612
-Ref: Lisp Example-Footnote-1\7f228684
-Node: smallexample & smalllisp\7f228802
-Node: display\7f230827
-Node: format\7f231459
-Node: exdent\7f231920
-Node: flushleft & flushright\7f233000
-Node: cartouche\7f234266
-Node: Lists and Tables\7f235033
-Node: Introducing Lists\7f235709
-Node: itemize\7f237374
-Node: enumerate\7f239521
-Node: Two-column Tables\7f242026
-Node: table\7f242715
-Node: ftable vtable\7f245148
-Node: itemx\7f246249
-Node: Multi-column Tables\7f247260
-Node: Multitable Column Widths\7f247931
-Node: Multitable Rows\7f249385
-Node: Indices\7f251166
-Node: Index Entries\7f252316
-Node: Predefined Indices\7f253449
-Node: Indexing Commands\7f254446
-Node: Combining Indices\7f258986
-Node: syncodeindex\7f260349
-Node: synindex\7f262011
-Node: New Indices\7f262536
-Node: Insertions\7f264361
-Node: Braces Atsigns\7f265545
-Node: Inserting An Atsign\7f266097
-Node: Inserting Braces\7f266371
-Node: Inserting Space\7f266734
-Node: Not Ending a Sentence\7f267238
-Node: Ending a Sentence\7f268592
-Node: Multiple Spaces\7f269721
-Node: dmn\7f270940
-Node: Inserting Accents\7f272147
-Node: Dots Bullets\7f273904
-Node: dots\7f274726
-Node: bullet\7f275250
-Node: TeX and copyright\7f275647
-Node: tex\7f276214
-Node: copyright symbol\7f276630
-Node: pounds\7f276890
-Node: minus\7f277254
-Node: math\7f278176
-Node: Glyphs\7f278904
-Node: Glyphs Summary\7f280017
-Node: result\7f280645
-Node: expansion\7f281130
-Node: Print Glyph\7f282086
-Node: Error Glyph\7f282963
-Node: Equivalence\7f283796
-Node: Point Glyph\7f284484
-Node: Images\7f286041
-Node: Breaks\7f287708
-Node: Break Commands\7f289139
-Node: Line Breaks\7f289980
-Node: - and hyphenation\7f290998
-Node: w\7f292248
-Node: sp\7f292961
-Node: page\7f293370
-Node: group\7f293747
-Node: need\7f295490
-Node: Definition Commands\7f296220
-Node: Def Cmd Template\7f297791
-Node: Optional Arguments\7f300788
-Node: deffnx\7f302376
-Node: Def Cmds in Detail\7f303331
-Node: Functions Commands\7f304441
-Node: Variables Commands\7f307446
-Node: Typed Functions\7f309532
-Node: Typed Variables\7f313074
-Node: Abstract Objects\7f315057
-Node: Data Types\7f320282
-Node: Def Cmd Conventions\7f321537
-Node: Sample Function Definition\7f322100
-Node: Footnotes\7f324984
-Node: Footnotes-Footnotes\7f325372
-Ref: Footnotes-Footnote-1\7f325438
-Node: Footnote Commands\7f325718
-Node: Footnote Commands-Footnotes\7f327215
-Ref: Footnote Commands-Footnote-1\7f327297
-Node: Footnote Styles\7f327333
-Node: Conditionals\7f329919
-Node: Conditional Commands\7f330730
-Node: Conditional Not Commands\7f332223
-Node: Raw Formatter Commands\7f332968
-Node: set clear value\7f334798
-Node: ifset ifclear\7f335599
-Node: value\7f338778
-Node: value Example\7f340190
-Node: Macros\7f341768
-Node: Defining Macros\7f342473
-Node: Invoking Macros\7f343562
-Node: Format/Print Hardcopy\7f344668
-Node: Use TeX\7f346505
-Node: Format with tex/texindex\7f347133
-Node: Format with texi2dvi\7f350774
-Node: Print with lpr\7f351365
-Node: Within Emacs\7f352219
-Node: Texinfo Mode Printing\7f353138
-Node: Compile-Command\7f356548
-Node: Requirements Summary\7f357436
-Node: Preparing for TeX\7f358749
-Node: Overfull hboxes\7f361536
-Node: smallbook\7f363095
-Node: A4 Paper\7f364613
-Node: Cropmarks and Magnification\7f365838
-Node: Create an Info File\7f367779
-Node: makeinfo advantages\7f369082
-Node: Invoking makeinfo\7f369998
-Node: makeinfo options\7f370686
-Node: Pointer Validation\7f376170
-Node: makeinfo in Emacs\7f377514
-Node: texinfo-format commands\7f380072
-Node: Batch Formatting\7f381343
-Node: Tag and Split Files\7f382559
-Node: Install an Info File\7f385913
-Node: Directory file\7f386731
-Node: New Info File\7f388599
-Node: Other Info Directories\7f389660
-Node: Installing Dir Entries\7f392875
-Node: Invoking install-info\7f394868
-Node: Command List\7f397283
-Node: Tips\7f435253
-Node: Sample Texinfo File\7f446663
-Node: Sample Permissions\7f448782
-Node: Inserting Permissions\7f449825
-Node: ifinfo Permissions\7f452131
-Node: Titlepage Permissions\7f453752
-Node: Include Files\7f455014
-Node: Using Include Files\7f456101
-Node: texinfo-multiple-files-update\7f458056
-Node: Include File Requirements\7f460417
-Node: Sample Include File\7f461662
-Node: Include Files Evolution\7f463181
-Node: Headings\7f465152
-Node: Headings Introduced\7f465789
-Node: Heading Format\7f467677
-Node: Heading Choice\7f470129
-Node: Custom Headings\7f471501
-Node: Catching Mistakes\7f475829
-Node: makeinfo Preferred\7f477118
-Node: Debugging with Info\7f478023
-Node: Debugging with TeX\7f481369
-Node: Using texinfo-show-structure\7f485649
-Node: Using occur\7f488748
-Node: Running Info-Validate\7f490285
-Node: Using Info-validate\7f491346
-Node: Unsplit\7f493188
-Node: Tagifying\7f494234
-Node: Splitting\7f495086
-Node: Refilling Paragraphs\7f496702
-Node: Refilling Paragraphs-Footnotes\7f498356
-Ref: Refilling Paragraphs-Footnote-1\7f498444
-Node: Command Syntax\7f498607
-Node: Obtaining TeX\7f501564
-Node: Command and Variable Index\7f503677
-Node: Concept Index\7f519529
+Node: Top\7f1484
+Node: Copying\7f23799
+Node: Overview\7f25804
+Node: Overview-Footnotes\7f27233
+Ref: Overview-Footnote-1\7f27297
+Node: Using Texinfo\7f27769
+Node: Info Files\7f30256
+Node: Info Files-Footnotes\7f34292
+Ref: Info Files-Footnote-1\7f34360
+Node: Printed Books\7f34539
+Node: Printed Books-Footnotes\7f37211
+Ref: Printed Books-Footnote-1\7f37285
+Node: Formatting Commands\7f37495
+Node: Formatting Commands-Footnotes\7f40322
+Ref: Formatting Commands-Footnote-1\7f40408
+Node: Conventions\7f41024
+Node: Comments\7f43586
+Node: Minimum\7f45009
+Node: Six Parts\7f47195
+Node: Short Sample\7f48707
+Node: Acknowledgements\7f52843
+Node: Texinfo Mode\7f53678
+Node: Texinfo Mode Overview\7f55050
+Node: Emacs Editing\7f55826
+Node: Inserting\7f57956
+Node: Showing the Structure\7f62237
+Node: Updating Nodes and Menus\7f64764
+Node: Updating Commands\7f65837
+Node: Updating Requirements\7f71898
+Node: Other Updating Commands\7f74195
+Node: Info Formatting\7f77463
+Node: Printing\7f78721
+Node: Texinfo Mode Summary\7f81066
+Node: Beginning a File\7f85820
+Node: Four Parts\7f86711
+Node: Sample Beginning\7f88181
+Node: Header\7f89801
+Node: First Line\7f91153
+Node: Start of Header\7f92142
+Node: setfilename\7f92855
+Node: settitle\7f94791
+Node: setchapternewpage\7f96681
+Node: paragraphindent\7f99442
+Node: End of Header\7f100924
+Node: Info Summary and Permissions\7f101763
+Node: Titlepage & Copyright Page\7f102782
+Node: titlepage\7f104388
+Node: titlepage-Footnotes\7f106670
+Ref: titlepage-Footnote-1\7f106736
+Node: titlefont center sp\7f107010
+Node: title subtitle author\7f108236
+Node: Copyright & Permissions\7f110508
+Node: end titlepage\7f112509
+Node: headings on off\7f114215
+Node: The Top Node\7f116260
+Node: Title of Top Node\7f117415
+Node: Master Menu Parts\7f118668
+Node: Software Copying Permissions\7f120905
+Node: Ending a File\7f122073
+Node: Printing Indices & Menus\7f122921
+Node: Contents\7f125230
+Node: File End\7f127570
+Node: Structuring\7f128243
+Node: Tree Structuring\7f129900
+Node: Structuring Command Types\7f131343
+Node: makeinfo top\7f133670
+Node: chapter\7f134203
+Node: unnumbered & appendix\7f135227
+Node: majorheading & chapheading\7f136066
+Node: section\7f136887
+Node: unnumberedsec appendixsec heading\7f137651
+Node: subsection\7f138640
+Node: unnumberedsubsec appendixsubsec subheading\7f139212
+Node: subsubsection\7f140165
+Node: Raise/lower sections\7f141715
+Node: Nodes\7f143850
+Node: Two Paths\7f144787
+Node: Node Menu Illustration\7f146073
+Node: node\7f149768
+Node: Node Names\7f152464
+Node: Writing a Node\7f153540
+Node: Node Line Tips\7f155558
+Node: Node Line Requirements\7f156352
+Node: First Node\7f157953
+Node: makeinfo top command\7f159392
+Node: Top Node Summary\7f160571
+Node: makeinfo Pointer Creation\7f162021
+Node: Menus\7f163268
+Node: Menus-Footnotes\7f164207
+Ref: Menus-Footnote-1\7f164265
+Node: Menu Location\7f164558
+Node: Writing a Menu\7f166235
+Node: Menu Parts\7f167201
+Node: Less Cluttered Menu Entry\7f168359
+Node: Menu Example\7f168984
+Node: Other Info Files\7f170505
+Node: Cross References\7f172373
+Node: References\7f173330
+Node: Cross Reference Commands\7f175077
+Node: Cross Reference Parts\7f176136
+Node: xref\7f178972
+Node: Reference Syntax\7f179771
+Node: One Argument\7f181425
+Node: Two Arguments\7f182437
+Node: Three Arguments\7f183552
+Node: Four and Five Arguments\7f185943
+Node: Top Node Naming\7f188355
+Node: ref\7f189365
+Node: pxref\7f190757
+Node: inforef\7f193139
+Node: uref\7f194432
+Node: Marking Text\7f195431
+Node: Indicating\7f196055
+Node: Useful Highlighting\7f197960
+Node: code\7f199349
+Node: kbd\7f202387
+Node: key\7f204257
+Node: samp\7f205590
+Node: var\7f207177
+Node: file\7f208970
+Node: dfn\7f209577
+Node: cite\7f210487
+Node: url\7f210941
+Node: email\7f211505
+Node: Emphasis\7f212317
+Node: emph & strong\7f213217
+Node: Smallcaps\7f214203
+Node: Fonts\7f215530
+Node: Customized Highlighting\7f216618
+Node: Customized Highlighting-Footnotes\7f219433
+Ref: Customized Highlighting-Footnote-1\7f219527
+Node: Quotations and Examples\7f219653
+Node: Block Enclosing Commands\7f221275
+Node: quotation\7f223300
+Node: example\7f224390
+Node: noindent\7f226445
+Node: Lisp Example\7f227909
+Node: Lisp Example-Footnotes\7f228611
+Ref: Lisp Example-Footnote-1\7f228683
+Node: smallexample & smalllisp\7f228801
+Node: display\7f230826
+Node: format\7f231458
+Node: exdent\7f231919
+Node: flushleft & flushright\7f232999
+Node: cartouche\7f234265
+Node: Lists and Tables\7f235032
+Node: Introducing Lists\7f235708
+Node: itemize\7f237373
+Node: enumerate\7f239520
+Node: Two-column Tables\7f242025
+Node: table\7f242714
+Node: ftable vtable\7f245147
+Node: itemx\7f246248
+Node: Multi-column Tables\7f247259
+Node: Multitable Column Widths\7f247930
+Node: Multitable Rows\7f249384
+Node: Indices\7f251165
+Node: Index Entries\7f252315
+Node: Predefined Indices\7f253448
+Node: Indexing Commands\7f254445
+Node: Combining Indices\7f258985
+Node: syncodeindex\7f260348
+Node: synindex\7f262010
+Node: New Indices\7f262535
+Node: Insertions\7f264360
+Node: Braces Atsigns\7f265544
+Node: Inserting An Atsign\7f266096
+Node: Inserting Braces\7f266370
+Node: Inserting Space\7f266733
+Node: Not Ending a Sentence\7f267237
+Node: Ending a Sentence\7f268591
+Node: Multiple Spaces\7f269720
+Node: dmn\7f270939
+Node: Inserting Accents\7f272146
+Node: Dots Bullets\7f273903
+Node: dots\7f274725
+Node: bullet\7f275249
+Node: TeX and copyright\7f275646
+Node: tex\7f276213
+Node: copyright symbol\7f276629
+Node: pounds\7f276889
+Node: minus\7f277253
+Node: math\7f278175
+Node: Glyphs\7f278903
+Node: Glyphs Summary\7f280016
+Node: result\7f280644
+Node: expansion\7f281129
+Node: Print Glyph\7f282085
+Node: Error Glyph\7f282962
+Node: Equivalence\7f283795
+Node: Point Glyph\7f284483
+Node: Images\7f286040
+Node: Breaks\7f287707
+Node: Break Commands\7f289138
+Node: Line Breaks\7f289979
+Node: - and hyphenation\7f290997
+Node: w\7f292247
+Node: sp\7f292960
+Node: page\7f293369
+Node: group\7f293746
+Node: need\7f295489
+Node: Definition Commands\7f296219
+Node: Def Cmd Template\7f297790
+Node: Optional Arguments\7f300787
+Node: deffnx\7f302375
+Node: Def Cmds in Detail\7f303330
+Node: Functions Commands\7f304440
+Node: Variables Commands\7f307445
+Node: Typed Functions\7f309531
+Node: Typed Variables\7f313073
+Node: Abstract Objects\7f315056
+Node: Data Types\7f320281
+Node: Def Cmd Conventions\7f321536
+Node: Sample Function Definition\7f322099
+Node: Footnotes\7f324983
+Node: Footnotes-Footnotes\7f325371
+Ref: Footnotes-Footnote-1\7f325437
+Node: Footnote Commands\7f325717
+Node: Footnote Commands-Footnotes\7f327214
+Ref: Footnote Commands-Footnote-1\7f327296
+Node: Footnote Styles\7f327332
+Node: Conditionals\7f329918
+Node: Conditional Commands\7f330729
+Node: Conditional Not Commands\7f332222
+Node: Raw Formatter Commands\7f332967
+Node: set clear value\7f334797
+Node: ifset ifclear\7f335598
+Node: value\7f338777
+Node: value Example\7f340189
+Node: Macros\7f341767
+Node: Defining Macros\7f342472
+Node: Invoking Macros\7f343561
+Node: Format/Print Hardcopy\7f344667
+Node: Use TeX\7f346504
+Node: Format with tex/texindex\7f347132
+Node: Format with texi2dvi\7f350773
+Node: Print with lpr\7f351364
+Node: Within Emacs\7f352218
+Node: Texinfo Mode Printing\7f353137
+Node: Compile-Command\7f356547
+Node: Requirements Summary\7f357435
+Node: Preparing for TeX\7f358748
+Node: Overfull hboxes\7f361535
+Node: smallbook\7f363094
+Node: A4 Paper\7f364612
+Node: Cropmarks and Magnification\7f365837
+Node: Create an Info File\7f367778
+Node: makeinfo advantages\7f369081
+Node: Invoking makeinfo\7f369997
+Node: makeinfo options\7f370685
+Node: Pointer Validation\7f376169
+Node: makeinfo in Emacs\7f377513
+Node: texinfo-format commands\7f380071
+Node: Batch Formatting\7f381342
+Node: Tag and Split Files\7f382558
+Node: Install an Info File\7f385912
+Node: Directory file\7f386730
+Node: New Info File\7f388598
+Node: Other Info Directories\7f389659
+Node: Installing Dir Entries\7f392874
+Node: Invoking install-info\7f394867
+Node: Command List\7f397282
+Node: Tips\7f435252
+Node: Sample Texinfo File\7f446662
+Node: Sample Permissions\7f448781
+Node: Inserting Permissions\7f449824
+Node: ifinfo Permissions\7f452130
+Node: Titlepage Permissions\7f453751
+Node: Include Files\7f455013
+Node: Using Include Files\7f456100
+Node: texinfo-multiple-files-update\7f458055
+Node: Include File Requirements\7f460416
+Node: Sample Include File\7f461661
+Node: Include Files Evolution\7f463180
+Node: Headings\7f465151
+Node: Headings Introduced\7f465788
+Node: Heading Format\7f467676
+Node: Heading Choice\7f470128
+Node: Custom Headings\7f471500
+Node: Catching Mistakes\7f475828
+Node: makeinfo Preferred\7f477117
+Node: Debugging with Info\7f478022
+Node: Debugging with TeX\7f481368
+Node: Using texinfo-show-structure\7f485648
+Node: Using occur\7f488747
+Node: Running Info-Validate\7f490284
+Node: Using Info-validate\7f491345
+Node: Unsplit\7f493187
+Node: Tagifying\7f494233
+Node: Splitting\7f495085
+Node: Refilling Paragraphs\7f496701
+Node: Refilling Paragraphs-Footnotes\7f498355
+Ref: Refilling Paragraphs-Footnote-1\7f498443
+Node: Command Syntax\7f498606
+Node: Obtaining TeX\7f501563
+Node: Command and Variable Index\7f503676
+Node: Concept Index\7f519528
\1f
End Tag Table
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
-This is ../info/texinfo.info, produced by makeinfo version 4.0b from
+This is ../info/texinfo.info, produced by makeinfo version 4.0 from
texinfo.texi.
INFO-DIR-SECTION Texinfo documentation system
\1f
Indirect:
xemacs-faq.info-1: 205
-xemacs-faq.info-2: 50001
-xemacs-faq.info-3: 99619
-xemacs-faq.info-4: 149494
-xemacs-faq.info-5: 199356
+xemacs-faq.info-2: 49999
+xemacs-faq.info-3: 99617
+xemacs-faq.info-4: 149492
+xemacs-faq.info-5: 199354
\1f
Tag Table:
(Indirect)
Node: Q1.0.9\7f25102
Node: Q1.0.10\7f25380
Node: Q1.0.11\7f25623
-Node: Q1.0.12\7f26012
-Node: Q1.0.13\7f26380
-Node: Q1.0.14\7f26629
-Node: Q1.1.1\7f27141
-Node: Q1.1.2\7f28183
-Node: Q1.1.3\7f28576
-Node: Q1.2.1\7f29527
-Node: Q1.2.2\7f30583
-Node: Q1.2.3\7f31017
-Node: Q1.3.1\7f32101
-Node: Q1.3.2\7f32752
-Node: Q1.3.3\7f33216
-Node: Q1.3.4\7f33457
-Node: Q1.3.5\7f34230
-Node: Q1.3.6\7f36635
-Node: Q1.3.7\7f38166
-Node: Q1.4.1\7f39101
-Node: Q1.4.2\7f39963
-Node: Q1.4.3\7f40304
-Node: Q1.4.4\7f40723
-Node: Q1.4.5\7f42263
-Node: Q1.4.6\7f42567
-Node: Installation\7f43560
-Node: Q2.0.1\7f46135
-Node: Q2.0.2\7f46935
-Node: Q2.0.3\7f48703
-Node: Q2.0.4\7f50001
-Node: Q2.0.5\7f50593
-Node: Q2.0.6\7f50941
-Node: Q2.0.7\7f51322
-Node: Q2.0.8\7f51703
-Node: Q2.0.9\7f53280
-Node: Q2.0.10\7f54718
-Node: Q2.0.11\7f55562
-Node: Q2.0.12\7f56503
-Node: Q2.0.13\7f58026
-Node: Q2.0.14\7f58515
-Node: Q2.1.1\7f59573
-Node: Q2.1.2\7f62315
-Node: Q2.1.3\7f63492
-Node: Q2.1.4\7f64785
-Node: Q2.1.5\7f65584
-Node: Q2.1.6\7f65946
-Node: Q2.1.7\7f66423
-Node: Q2.1.8\7f66776
-Node: Q2.1.9\7f68310
-Node: Q2.1.10\7f68732
-Node: Q2.1.11\7f69489
-Node: Q2.1.12\7f70354
-Node: Q2.1.13\7f71309
-Node: Q2.1.14\7f72340
-Node: Q2.1.15\7f73451
-Node: Q2.1.16\7f80483
-Node: Q2.1.17\7f81177
-Node: Q2.1.18\7f81774
-Node: Q2.1.19\7f81901
-Node: Q2.1.20\7f82431
-Node: Q2.1.21\7f82813
-Node: Q2.1.22\7f83006
-Node: Q2.1.23\7f84303
-Node: Q2.1.24\7f84971
-Node: Q2.1.25\7f85443
-Node: Customization\7f86078
-Node: Q3.0.1\7f90916
-Node: Q3.0.2\7f91622
-Node: Q3.0.3\7f92186
-Node: Q3.0.4\7f92603
-Node: Q3.0.5\7f93436
-Node: Q3.0.6\7f94217
-Node: Q3.0.7\7f94797
-Node: Q3.0.8\7f95461
-Node: Q3.0.9\7f96419
-Node: Q3.1.1\7f96980
-Node: Q3.1.2\7f97717
-Node: Q3.1.3\7f98148
-Node: Q3.1.4\7f98337
-Node: Q3.1.5\7f98526
-Node: Q3.1.6\7f98910
-Node: Q3.1.7\7f99619
-Node: Q3.1.8\7f101843
-Node: Q3.2.1\7f102385
-Node: Q3.2.2\7f104038
-Node: Q3.2.3\7f104837
-Node: Q3.2.4\7f105439
-Node: Q3.2.5\7f106473
-Node: Q3.2.6\7f106940
-Node: Q3.3.1\7f107865
-Node: Q3.3.2\7f108295
-Node: Q3.3.3\7f108926
-Node: Q3.3.4\7f109307
-Node: Q3.3.5\7f110408
-Node: Q3.4.1\7f111902
-Node: Q3.4.2\7f112545
-Node: Q3.5.1\7f113057
-Node: Q3.5.2\7f114506
-Node: Q3.5.3\7f114924
-Node: Q3.5.4\7f115762
-Node: Q3.5.5\7f116594
-Node: Q3.5.6\7f117734
-Node: Q3.5.7\7f118724
-Node: Q3.5.8\7f120164
-Node: Q3.5.9\7f120911
-Node: Q3.5.10\7f121691
-Node: Q3.5.11\7f122327
-Node: Q3.6.1\7f122880
-Node: Q3.6.2\7f123625
-Node: Q3.6.3\7f124053
-Node: Q3.7.1\7f124553
-Node: Q3.7.2\7f125441
-Node: Q3.7.3\7f126100
-Node: Q3.7.4\7f126522
-Node: Q3.7.5\7f126865
-Node: Q3.7.6\7f127333
-Node: Q3.7.7\7f128048
-Node: Q3.7.8\7f129068
-Node: Q3.8.1\7f129487
-Node: Q3.8.2\7f129947
-Node: Q3.8.3\7f130410
-Node: Q3.8.4\7f131016
-Node: Q3.8.5\7f131735
-Node: Q3.9.1\7f132520
-Node: Q3.9.2\7f133460
-Node: Q3.9.3\7f134058
-Node: Q3.9.4\7f134720
-Node: Q3.10.1\7f135599
-Node: Q3.10.2\7f136417
-Node: Q3.10.3\7f137422
-Node: Q3.10.4\7f138150
-Node: Q3.10.5\7f138533
-Node: Subsystems\7f139585
-Node: Q4.0.1\7f142072
-Node: Q4.0.2\7f142597
-Node: Q4.0.3\7f143155
-Node: Q4.0.4\7f143476
-Node: Q4.0.5\7f143718
-Node: Q4.0.6\7f143949
-Node: Q4.0.7\7f144537
-Node: Q4.0.8\7f144862
-Node: Q4.0.9\7f146089
-Node: Q4.0.10\7f148127
-Node: Q4.0.11\7f148616
-Node: Q4.0.12\7f149494
-Node: Q4.1.1\7f150467
-Node: Q4.1.2\7f150870
-Node: Q4.1.3\7f151197
-Node: Q4.2.1\7f151506
-Node: Q4.2.2\7f152136
-Node: Q4.2.3\7f152376
-Node: Q4.2.4\7f152920
-Node: Q4.3.1\7f153573
-Node: Q4.3.2\7f154157
-Node: Q4.3.3\7f155638
-Node: Q4.3.4\7f155910
-Node: Q4.3.5\7f156587
-Node: Q4.4.1\7f157215
-Node: Q4.4.2\7f158701
-Node: Q4.5.1\7f159905
-Node: Q4.6.1\7f160674
-Node: Q4.7.1\7f165934
-Node: Q4.7.2\7f166889
-Node: Q4.7.3\7f167186
-Node: Q4.7.4\7f167372
-Node: Q4.7.5\7f168256
-Node: Q4.7.6\7f169897
-Node: Miscellaneous\7f170186
-Node: Q5.0.1\7f173599
-Node: Q5.0.2\7f174338
-Node: Q5.0.3\7f175192
-Node: Q5.0.4\7f175894
-Node: Q5.0.5\7f176833
-Node: Q5.0.6\7f178813
-Node: Q5.0.7\7f179470
-Node: Q5.0.8\7f180075
-Node: Q5.0.9\7f180594
-Node: Q5.0.10\7f181108
-Node: Q5.0.11\7f181356
-Node: Q5.0.12\7f181894
-Node: Q5.0.13\7f182811
-Node: Q5.0.14\7f183495
-Node: Q5.0.15\7f184260
-Node: Q5.0.16\7f184557
-Node: Q5.0.17\7f185069
-Node: Q5.0.18\7f185334
-Node: Q5.0.19\7f185528
-Node: Q5.0.20\7f185952
-Node: Q5.1.1\7f186867
-Node: Q5.1.2\7f188936
-Node: Q5.1.3\7f189672
-Node: Q5.1.4\7f193066
-Node: Q5.1.5\7f193601
-Node: Q5.1.6\7f195725
-Node: Q5.1.7\7f197211
-Node: Q5.1.8\7f198804
-Node: Q5.1.9\7f199356
-Node: Q5.1.10\7f200241
-Node: Q5.1.11\7f201372
-Node: Q5.2.1\7f201921
-Node: Q5.2.2\7f202491
-Node: Q5.2.3\7f202908
-Node: Q5.2.4\7f203143
-Node: Q5.3.1\7f204053
-Node: Q5.3.2\7f205274
-Node: Q5.3.3\7f206050
-Node: Q5.3.4\7f206534
-Node: Q5.3.5\7f207201
-Node: Q5.3.6\7f208070
-Node: Q5.3.7\7f208315
-Node: Q5.3.8\7f210505
-Node: Q5.3.9\7f210752
-Node: Q5.3.10\7f211705
-Node: Q5.3.11\7f213789
-Node: Q5.3.12\7f215380
-Node: MS Windows\7f216654
-Node: Q6.0.1\7f218131
-Node: Q6.0.2\7f218878
-Node: Q6.0.3\7f219343
-Node: Q6.0.4\7f219623
-Node: Q6.1.1\7f221902
-Node: Q6.1.2\7f222773
-Node: Q6.1.3\7f223228
-Node: Q6.1.4\7f223510
-Node: Q6.1.5\7f223888
-Node: Q6.1.6\7f224756
-Node: Q6.2.1\7f227062
-Node: Q6.2.2\7f227963
-Node: Q6.2.3\7f228375
-Node: Q6.3.1\7f228664
-Node: Q6.3.2\7f229758
-Node: Q6.3.3\7f232939
-Node: Q6.4.1\7f233208
-Node: Current Events\7f234543
-Node: Q7.0.1\7f235197
-Node: Q7.0.2\7f235836
-Node: Q7.0.3\7f236909
-Node: Q7.0.4\7f237137
+Node: Q1.0.12\7f26010
+Node: Q1.0.13\7f26378
+Node: Q1.0.14\7f26627
+Node: Q1.1.1\7f27139
+Node: Q1.1.2\7f28181
+Node: Q1.1.3\7f28574
+Node: Q1.2.1\7f29525
+Node: Q1.2.2\7f30581
+Node: Q1.2.3\7f31015
+Node: Q1.3.1\7f32099
+Node: Q1.3.2\7f32750
+Node: Q1.3.3\7f33214
+Node: Q1.3.4\7f33455
+Node: Q1.3.5\7f34228
+Node: Q1.3.6\7f36633
+Node: Q1.3.7\7f38164
+Node: Q1.4.1\7f39099
+Node: Q1.4.2\7f39961
+Node: Q1.4.3\7f40302
+Node: Q1.4.4\7f40721
+Node: Q1.4.5\7f42261
+Node: Q1.4.6\7f42565
+Node: Installation\7f43558
+Node: Q2.0.1\7f46133
+Node: Q2.0.2\7f46933
+Node: Q2.0.3\7f48701
+Node: Q2.0.4\7f49999
+Node: Q2.0.5\7f50591
+Node: Q2.0.6\7f50939
+Node: Q2.0.7\7f51320
+Node: Q2.0.8\7f51701
+Node: Q2.0.9\7f53278
+Node: Q2.0.10\7f54716
+Node: Q2.0.11\7f55560
+Node: Q2.0.12\7f56501
+Node: Q2.0.13\7f58024
+Node: Q2.0.14\7f58513
+Node: Q2.1.1\7f59571
+Node: Q2.1.2\7f62313
+Node: Q2.1.3\7f63490
+Node: Q2.1.4\7f64783
+Node: Q2.1.5\7f65582
+Node: Q2.1.6\7f65944
+Node: Q2.1.7\7f66421
+Node: Q2.1.8\7f66774
+Node: Q2.1.9\7f68308
+Node: Q2.1.10\7f68730
+Node: Q2.1.11\7f69487
+Node: Q2.1.12\7f70352
+Node: Q2.1.13\7f71307
+Node: Q2.1.14\7f72338
+Node: Q2.1.15\7f73449
+Node: Q2.1.16\7f80481
+Node: Q2.1.17\7f81175
+Node: Q2.1.18\7f81772
+Node: Q2.1.19\7f81899
+Node: Q2.1.20\7f82429
+Node: Q2.1.21\7f82811
+Node: Q2.1.22\7f83004
+Node: Q2.1.23\7f84301
+Node: Q2.1.24\7f84969
+Node: Q2.1.25\7f85441
+Node: Customization\7f86076
+Node: Q3.0.1\7f90914
+Node: Q3.0.2\7f91620
+Node: Q3.0.3\7f92184
+Node: Q3.0.4\7f92601
+Node: Q3.0.5\7f93434
+Node: Q3.0.6\7f94215
+Node: Q3.0.7\7f94795
+Node: Q3.0.8\7f95459
+Node: Q3.0.9\7f96417
+Node: Q3.1.1\7f96978
+Node: Q3.1.2\7f97715
+Node: Q3.1.3\7f98146
+Node: Q3.1.4\7f98335
+Node: Q3.1.5\7f98524
+Node: Q3.1.6\7f98908
+Node: Q3.1.7\7f99617
+Node: Q3.1.8\7f101841
+Node: Q3.2.1\7f102383
+Node: Q3.2.2\7f104036
+Node: Q3.2.3\7f104835
+Node: Q3.2.4\7f105437
+Node: Q3.2.5\7f106471
+Node: Q3.2.6\7f106938
+Node: Q3.3.1\7f107863
+Node: Q3.3.2\7f108293
+Node: Q3.3.3\7f108924
+Node: Q3.3.4\7f109305
+Node: Q3.3.5\7f110406
+Node: Q3.4.1\7f111900
+Node: Q3.4.2\7f112543
+Node: Q3.5.1\7f113055
+Node: Q3.5.2\7f114504
+Node: Q3.5.3\7f114922
+Node: Q3.5.4\7f115760
+Node: Q3.5.5\7f116592
+Node: Q3.5.6\7f117732
+Node: Q3.5.7\7f118722
+Node: Q3.5.8\7f120162
+Node: Q3.5.9\7f120909
+Node: Q3.5.10\7f121689
+Node: Q3.5.11\7f122325
+Node: Q3.6.1\7f122878
+Node: Q3.6.2\7f123623
+Node: Q3.6.3\7f124051
+Node: Q3.7.1\7f124551
+Node: Q3.7.2\7f125439
+Node: Q3.7.3\7f126098
+Node: Q3.7.4\7f126520
+Node: Q3.7.5\7f126863
+Node: Q3.7.6\7f127331
+Node: Q3.7.7\7f128046
+Node: Q3.7.8\7f129066
+Node: Q3.8.1\7f129485
+Node: Q3.8.2\7f129945
+Node: Q3.8.3\7f130408
+Node: Q3.8.4\7f131014
+Node: Q3.8.5\7f131733
+Node: Q3.9.1\7f132518
+Node: Q3.9.2\7f133458
+Node: Q3.9.3\7f134056
+Node: Q3.9.4\7f134718
+Node: Q3.10.1\7f135597
+Node: Q3.10.2\7f136415
+Node: Q3.10.3\7f137420
+Node: Q3.10.4\7f138148
+Node: Q3.10.5\7f138531
+Node: Subsystems\7f139583
+Node: Q4.0.1\7f142070
+Node: Q4.0.2\7f142595
+Node: Q4.0.3\7f143153
+Node: Q4.0.4\7f143474
+Node: Q4.0.5\7f143716
+Node: Q4.0.6\7f143947
+Node: Q4.0.7\7f144535
+Node: Q4.0.8\7f144860
+Node: Q4.0.9\7f146087
+Node: Q4.0.10\7f148125
+Node: Q4.0.11\7f148614
+Node: Q4.0.12\7f149492
+Node: Q4.1.1\7f150465
+Node: Q4.1.2\7f150868
+Node: Q4.1.3\7f151195
+Node: Q4.2.1\7f151504
+Node: Q4.2.2\7f152134
+Node: Q4.2.3\7f152374
+Node: Q4.2.4\7f152918
+Node: Q4.3.1\7f153571
+Node: Q4.3.2\7f154155
+Node: Q4.3.3\7f155636
+Node: Q4.3.4\7f155908
+Node: Q4.3.5\7f156585
+Node: Q4.4.1\7f157213
+Node: Q4.4.2\7f158699
+Node: Q4.5.1\7f159903
+Node: Q4.6.1\7f160672
+Node: Q4.7.1\7f165932
+Node: Q4.7.2\7f166887
+Node: Q4.7.3\7f167184
+Node: Q4.7.4\7f167370
+Node: Q4.7.5\7f168254
+Node: Q4.7.6\7f169895
+Node: Miscellaneous\7f170184
+Node: Q5.0.1\7f173597
+Node: Q5.0.2\7f174336
+Node: Q5.0.3\7f175190
+Node: Q5.0.4\7f175892
+Node: Q5.0.5\7f176831
+Node: Q5.0.6\7f178811
+Node: Q5.0.7\7f179468
+Node: Q5.0.8\7f180073
+Node: Q5.0.9\7f180592
+Node: Q5.0.10\7f181106
+Node: Q5.0.11\7f181354
+Node: Q5.0.12\7f181892
+Node: Q5.0.13\7f182809
+Node: Q5.0.14\7f183493
+Node: Q5.0.15\7f184258
+Node: Q5.0.16\7f184555
+Node: Q5.0.17\7f185067
+Node: Q5.0.18\7f185332
+Node: Q5.0.19\7f185526
+Node: Q5.0.20\7f185950
+Node: Q5.1.1\7f186865
+Node: Q5.1.2\7f188934
+Node: Q5.1.3\7f189670
+Node: Q5.1.4\7f193064
+Node: Q5.1.5\7f193599
+Node: Q5.1.6\7f195723
+Node: Q5.1.7\7f197209
+Node: Q5.1.8\7f198802
+Node: Q5.1.9\7f199354
+Node: Q5.1.10\7f200239
+Node: Q5.1.11\7f201370
+Node: Q5.2.1\7f201919
+Node: Q5.2.2\7f202489
+Node: Q5.2.3\7f202906
+Node: Q5.2.4\7f203141
+Node: Q5.3.1\7f204051
+Node: Q5.3.2\7f205272
+Node: Q5.3.3\7f206048
+Node: Q5.3.4\7f206532
+Node: Q5.3.5\7f207199
+Node: Q5.3.6\7f208068
+Node: Q5.3.7\7f208313
+Node: Q5.3.8\7f210503
+Node: Q5.3.9\7f210750
+Node: Q5.3.10\7f211703
+Node: Q5.3.11\7f213787
+Node: Q5.3.12\7f215378
+Node: MS Windows\7f216652
+Node: Q6.0.1\7f218129
+Node: Q6.0.2\7f218876
+Node: Q6.0.3\7f219341
+Node: Q6.0.4\7f219621
+Node: Q6.1.1\7f221900
+Node: Q6.1.2\7f222771
+Node: Q6.1.3\7f223226
+Node: Q6.1.4\7f223508
+Node: Q6.1.5\7f223886
+Node: Q6.1.6\7f224754
+Node: Q6.2.1\7f227060
+Node: Q6.2.2\7f227961
+Node: Q6.2.3\7f228373
+Node: Q6.3.1\7f228662
+Node: Q6.3.2\7f229756
+Node: Q6.3.3\7f232937
+Node: Q6.4.1\7f233206
+Node: Current Events\7f234541
+Node: Q7.0.1\7f235195
+Node: Q7.0.2\7f235834
+Node: Q7.0.3\7f236907
+Node: Q7.0.4\7f237135
\1f
End Tag Table
Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS
8.5.1 by Pitts Jarvis <pjarvis@ispchannel.com>. It's available at
-`http://my.ispchannel.com/~pjarvis/xemacs.html'.
+`http://homepage.mac.com/pjarvis/xemacs.html'.
\1f
File: xemacs-faq.info, Node: Q1.0.12, Next: Q1.0.13, Prev: Q1.0.11, Up: Introduction
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
\1f
Indirect:
-xemacs.info-1: 1351
+xemacs.info-1: 1350
xemacs.info-2: 48996
-xemacs.info-3: 96093
-xemacs.info-4: 145333
-xemacs.info-5: 194484
-xemacs.info-6: 242144
-xemacs.info-7: 282227
-xemacs.info-8: 332190
-xemacs.info-9: 379660
-xemacs.info-10: 428178
-xemacs.info-11: 476002
-xemacs.info-12: 525173
-xemacs.info-13: 574356
-xemacs.info-14: 623433
-xemacs.info-15: 672813
-xemacs.info-16: 722680
-xemacs.info-17: 771316
-xemacs.info-18: 820011
-xemacs.info-19: 868928
-xemacs.info-20: 915111
-xemacs.info-21: 964515
-xemacs.info-22: 1007101
+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
\1f
Tag Table:
(Indirect)
-Node: Top\7f1351
-Node: License\7f22791
+Node: Top\7f1350
+Node: License\7f22790
Node: Distrib\7f36072
Node: Intro\7f37736
Node: Frame\7f40607
Node: Echo Area\7f46619
Node: Mode Line\7f48996
Node: GUI Components\7f53427
-Node: Menubar Basics\7f54657
-Node: Scrollbar Basics\7f56573
-Node: Toolbar Basics\7f57464
-Node: Gutter Basics\7f58131
-Node: Inhibiting\7f60185
-Node: Customizing\7f62556
-Node: XEmacs under X\7f62805
-Node: XEmacs under MS Windows\7f66019
-Node: Keystrokes\7f66434
-Node: Intro to Keystrokes\7f67278
-Node: Representing Keystrokes\7f69381
-Node: Key Sequences\7f70738
-Node: String Key Sequences\7f74079
-Node: Meta Key\7f74462
-Node: Super and Hyper Keys\7f75935
-Node: Character Representation\7f82180
-Node: Commands\7f83200
-Node: Pull-down Menus\7f86049
-Node: File Menu\7f89398
-Node: Edit Menu\7f93220
-Node: Apps Menu\7f95603
-Node: Options Menu\7f96093
-Node: Buffers Menu\7f100111
-Node: Tools Menu\7f100418
-Node: Help Menu\7f100909
-Node: Menu Customization\7f101310
-Node: Entering Emacs\7f105540
-Node: Exiting\7f108437
-Node: Command Switches\7f112910
-Node: Startup Paths\7f122932
-Node: Basic\7f130262
-Node: Inserting Text\7f131666
-Node: Moving Point\7f134662
-Node: Erasing\7f138268
-Node: Basic Files\7f139573
-Node: Basic Help\7f141495
-Node: Blank Lines\7f142090
-Node: Continuation Lines\7f143666
-Node: Position Info\7f145333
-Node: Arguments\7f148749
-Node: Undo\7f152848
-Node: Minibuffer\7f155795
-Node: Minibuffer File\7f158405
-Node: Minibuffer Edit\7f160210
-Node: Completion\7f163151
-Node: Completion Example\7f165082
-Node: Completion Commands\7f166177
-Node: Strict Completion\7f169153
-Node: Completion Options\7f170934
-Node: Minibuffer History\7f172442
-Node: Repetition\7f175626
-Node: M-x\7f178471
-Node: Help\7f183565
-Node: Help Summary\7f184975
-Node: Key Help\7f187761
-Node: Name Help\7f188720
-Node: Apropos\7f191365
-Node: Library Keywords\7f194484
-Node: Help Mode\7f196805
-Node: Misc Help\7f197302
-Node: Mark\7f200450
-Node: Setting Mark\7f202304
-Node: Using Region\7f205426
-Node: Marking Objects\7f206163
-Node: Mark Ring\7f208001
-Node: Mouse Selection\7f209717
-Node: Additional Mouse Operations\7f211724
-Node: Killing\7f215928
-Node: Yanking\7f221564
-Node: Kill Ring\7f222367
-Node: Appending Kills\7f223969
-Node: Earlier Kills\7f226006
-Node: Using X Selections\7f228619
-Node: X Clipboard Selection\7f229869
-Node: X Selection Commands\7f232046
-Node: X Cut Buffers\7f233132
-Node: Active Regions\7f234491
-Node: Accumulating Text\7f239071
-Node: Rectangles\7f242144
-Node: Registers\7f245663
-Node: RegPos\7f247117
-Node: RegText\7f248273
-Node: RegRect\7f249379
-Node: RegConfig\7f250258
-Node: RegNumbers\7f251198
-Node: RegFiles\7f251916
-Node: Bookmarks\7f252574
-Node: Display\7f255946
-Node: Scrolling\7f257441
-Node: Horizontal Scrolling\7f261584
-Node: Selective Display\7f262779
-Node: Display Vars\7f263998
-Node: Search\7f266676
-Node: Incremental Search\7f267869
-Node: Non-Incremental Search\7f276797
-Node: Word Search\7f278239
-Node: Regexp Search\7f279857
-Node: Regexps\7f282227
-Node: Search Case\7f296224
-Node: Replace\7f297005
-Node: Unconditional Replace\7f297953
-Node: Regexp Replace\7f299088
-Node: Replacement and Case\7f300023
-Node: Query Replace\7f301003
-Node: Other Repeating Search\7f304230
-Node: Fixit\7f305485
-Node: Kill Errors\7f306065
-Node: Transpose\7f307398
-Node: Fixing Case\7f309802
-Node: Spelling\7f310448
-Node: Files\7f311909
-Node: File Names\7f313219
-Node: Visiting\7f317556
-Node: Saving\7f324388
-Node: Backup\7f329311
-Node: Backup Names\7f330707
-Node: Backup Deletion\7f332190
-Node: Backup Copying\7f333340
-Node: Interlocking\7f335046
-Node: Reverting\7f339174
-Node: Auto Save\7f341086
-Node: Auto Save Files\7f342053
-Node: Auto Save Control\7f343894
-Node: Recover\7f345732
-Node: Version Control\7f346887
-Node: Concepts of VC\7f348925
-Node: Editing with VC\7f350535
-Node: Variables for Check-in/out\7f355791
-Node: Log Entries\7f357690
-Node: Change Logs and VC\7f358870
-Node: Old Versions\7f362137
-Node: VC Status\7f364140
-Node: Renaming and VC\7f365854
-Node: Snapshots\7f366533
-Node: Making Snapshots\7f367034
-Node: Snapshot Caveats\7f368327
-Node: Version Headers\7f370136
-Node: ListDir\7f372835
-Node: Comparing Files\7f374884
-Node: Dired\7f376417
-Node: Dired Enter\7f377088
-Node: Dired Edit\7f377913
-Node: Dired Deletion\7f379660
-Node: Dired Immed\7f382883
-Node: Misc File Ops\7f384159
-Node: Buffers\7f386647
-Node: Select Buffer\7f388805
-Node: List Buffers\7f390600
-Node: Misc Buffer\7f392358
-Node: Kill Buffer\7f394001
-Node: Several Buffers\7f395131
-Node: Windows\7f398998
-Node: Basic Window\7f399709
-Node: Split Window\7f401428
-Node: Other Window\7f403561
-Node: Pop Up Window\7f405992
-Node: Change Window\7f407497
-Node: Mule\7f410405
-Node: Mule Intro\7f411668
-Node: Language Environments\7f412684
-Node: Input Methods\7f414791
-Node: Select Input Method\7f418511
-Node: Coding Systems\7f420666
-Node: Recognize Coding\7f424852
-Node: Specify Coding\7f428178
-Node: Major Modes\7f433109
-Node: Choosing Modes\7f435328
-Node: Indentation\7f437718
-Node: Indentation Commands\7f439813
-Node: Tab Stops\7f442542
-Node: Just Spaces\7f444391
-Node: Text\7f445206
-Node: Text Mode\7f447189
-Node: Nroff Mode\7f449268
-Node: TeX Mode\7f450911
-Node: TeX Editing\7f453163
-Node: TeX Print\7f456597
-Node: Outline Mode\7f459816
-Node: Outline Format\7f461297
-Node: Outline Motion\7f464097
-Node: Outline Visibility\7f465650
-Node: Words\7f468571
-Node: Sentences\7f471518
-Node: Paragraphs\7f473714
-Node: Pages\7f476002
-Node: Filling\7f478602
-Node: Auto Fill\7f479173
-Node: Fill Commands\7f481320
-Node: Fill Prefix\7f483485
-Node: Case\7f485673
-Node: Programs\7f487701
-Node: Program Modes\7f490251
-Node: Lists\7f492483
-Node: Defuns\7f498323
-Node: Grinding\7f500976
-Node: Basic Indent\7f501604
-Node: Multi-line Indent\7f503625
-Node: Lisp Indent\7f505241
-Node: C Indent\7f508691
-Node: Matching\7f513931
-Node: Comments\7f515453
-Node: Balanced Editing\7f521905
-Node: Lisp Completion\7f522919
-Node: Documentation\7f523934
-Node: Change Log\7f525173
-Node: Tags\7f527751
-Node: Tag Syntax\7f529400
-Node: Create Tags Table\7f533344
-Node: Etags Regexps\7f537404
-Node: Select Tags Table\7f542062
-Node: Find Tag\7f545835
-Node: Tags Search\7f548799
-Node: List Tags\7f552255
-Node: Fortran\7f553284
-Node: Fortran Motion\7f554360
-Node: Fortran Indent\7f555180
-Node: ForIndent Commands\7f555865
-Node: ForIndent Num\7f557010
-Node: ForIndent Conv\7f558284
-Node: ForIndent Vars\7f559060
-Node: Fortran Comments\7f560228
-Node: Fortran Columns\7f563826
-Node: Fortran Abbrev\7f565249
-Node: Asm Mode\7f566158
-Node: Running\7f566710
-Node: Compilation\7f567679
-Node: Lisp Modes\7f572529
-Node: Lisp Libraries\7f573802
-Node: Loading\7f574356
-Node: Compiling Libraries\7f578816
-Node: Mocklisp\7f581707
-Node: Lisp Eval\7f582384
-Node: Lisp Debug\7f586024
-Node: Lisp Interaction\7f591451
-Node: External Lisp\7f592806
-Node: Packages\7f594880
-Node: Package Terminology\7f595735
-Node: Using Packages\7f597093
-Node: Building Packages\7f605971
-Node: Creating Packages\7f608514
-Node: Available Packages\7f613514
-Node: Abbrevs\7f618787
-Node: Defining Abbrevs\7f620986
-Node: Expanding Abbrevs\7f623433
-Node: Editing Abbrevs\7f626135
-Node: Saving Abbrevs\7f628008
-Node: Dynamic Abbrevs\7f629963
-Node: Picture\7f631265
-Node: Basic Picture\7f633698
-Node: Insert in Picture\7f635983
-Node: Tabs in Picture\7f637405
-Node: Rectangles in Picture\7f638926
-Node: Sending Mail\7f640834
-Node: Mail Format\7f642545
-Node: Mail Headers\7f643895
-Node: Mail Mode\7f650303
-Node: Reading Mail\7f653916
-Node: Calendar/Diary\7f655491
-Node: Calendar Motion\7f657165
-Node: Calendar Unit Motion\7f658048
-Node: Move to Beginning or End\7f660371
-Node: Specified Dates\7f661504
-Node: Scroll Calendar\7f662392
-Node: Mark and Region\7f664183
-Node: General Calendar\7f666089
-Node: LaTeX Calendar\7f667697
-Node: Holidays\7f669711
-Node: Sunrise/Sunset\7f672813
-Node: Lunar Phases\7f675852
-Node: Other Calendars\7f677237
-Node: Calendar Systems\7f678724
-Node: To Other Calendar\7f681835
-Node: From Other Calendar\7f683826
-Node: Mayan Calendar\7f686131
-Node: Diary\7f689326
-Node: Diary Commands\7f691075
-Node: Format of Diary File\7f694398
-Node: Date Formats\7f697268
-Node: Adding to Diary\7f699842
-Node: Special Diary Entries\7f701473
-Node: Calendar Customization\7f706812
-Node: Calendar Customizing\7f707674
-Node: Holiday Customizing\7f710909
-Node: Date Display Format\7f717396
-Node: Time Display Format\7f718354
-Node: Daylight Savings\7f719492
-Node: Diary Customizing\7f722680
-Node: Hebrew/Islamic Entries\7f727301
-Node: Fancy Diary Display\7f730641
-Node: Included Diary Files\7f732557
-Node: Sexp Diary Entries\7f733538
-Node: Appt Customizing\7f738628
-Node: Sorting\7f739674
-Node: Shell\7f744480
-Node: Single Shell\7f745773
-Node: Interactive Shell\7f747387
-Node: Shell Mode\7f751152
-Node: Terminal emulator\7f753643
-Node: Term Mode\7f755952
-Node: Paging in Term\7f756866
-Node: Narrowing\7f757664
-Node: Hardcopy\7f759614
-Node: Recursive Edit\7f760586
-Node: Dissociated Press\7f763573
-Node: CONX\7f766136
-Node: Amusements\7f767160
-Node: Emulation\7f767640
-Node: Customization\7f769500
-Node: Minor Modes\7f771316
-Node: Variables\7f772948
-Node: Examining\7f774904
-Node: Easy Customization\7f776365
-Node: Customization Groups\7f777379
-Node: Changing an Option\7f780308
-Node: Face Customization\7f786578
-Node: Specific Customization\7f788342
-Node: Edit Options\7f790949
-Node: Locals\7f792533
-Node: File Variables\7f795712
-Node: Keyboard Macros\7f800262
-Node: Basic Kbd Macro\7f802433
-Node: Save Kbd Macro\7f804365
-Node: Kbd Macro Query\7f806023
-Node: Key Bindings\7f807965
-Node: Keymaps\7f808839
-Node: Rebinding\7f812689
-Node: Interactive Rebinding\7f813388
-Node: Programmatic Rebinding\7f815577
-Node: Key Bindings Using Strings\7f818384
-Node: Disabling\7f820011
-Node: Syntax\7f821790
-Node: Syntax Entry\7f822671
-Node: Syntax Change\7f826755
-Node: Init File\7f828924
-Node: Init Syntax\7f830388
-Node: Init Examples\7f832739
-Node: Terminal Init\7f836929
-Node: Audible Bell\7f838666
-Node: Faces\7f842097
-Node: Frame Components\7f846939
-Node: X Resources\7f847384
-Node: Geometry Resources\7f849043
-Node: Iconic Resources\7f851491
-Node: Resource List\7f851963
-Node: Face Resources\7f858470
-Node: Widgets\7f862147
-Node: Menubar Resources\7f863086
-Node: Quitting\7f864600
-Node: Lossage\7f867578
-Node: Stuck Recursive\7f868222
-Node: Screen Garbled\7f868928
-Node: Text Garbled\7f870062
-Node: Unasked-for Search\7f870701
-Node: Emergency Escape\7f871486
-Node: Total Frustration\7f873265
-Node: Bugs\7f873896
-Node: Glossary\7f883457
-Node: Manifesto\7f915111
-Node: Key Index\7f938588
-Node: Command Index\7f964515
-Node: Variable Index\7f1007101
-Node: Concept Index\7f1023187
+Node: Menubar Basics\7f54708
+Node: Scrollbar Basics\7f56624
+Node: Mode Line Basics\7f57517
+Node: Toolbar Basics\7f58349
+Node: Gutter Basics\7f59016
+Node: Inhibiting\7f61070
+Node: Customizing\7f63441
+Node: XEmacs under X\7f63690
+Node: XEmacs under MS Windows\7f66904
+Node: Keystrokes\7f67319
+Node: Intro to Keystrokes\7f68163
+Node: Representing Keystrokes\7f70266
+Node: Key Sequences\7f71623
+Node: String Key Sequences\7f74964
+Node: Meta Key\7f75347
+Node: Super and Hyper Keys\7f76820
+Node: Character Representation\7f83065
+Node: Commands\7f84085
+Node: Pull-down Menus\7f86934
+Node: File Menu\7f90283
+Node: Edit Menu\7f94105
+Node: Apps Menu\7f96488
+Node: Options Menu\7f96978
+Node: Buffers Menu\7f100996
+Node: Tools Menu\7f101303
+Node: Help Menu\7f101794
+Node: Menu Customization\7f102195
+Node: Entering Emacs\7f106425
+Node: Exiting\7f109322
+Node: Command Switches\7f113795
+Node: Startup Paths\7f123817
+Node: Basic\7f131147
+Node: Inserting Text\7f132551
+Node: Moving Point\7f135547
+Node: Erasing\7f139153
+Node: Basic Files\7f140458
+Node: Basic Help\7f142380
+Node: Blank Lines\7f142975
+Node: Continuation Lines\7f144551
+Node: Position Info\7f146218
+Node: Arguments\7f149634
+Node: Undo\7f153733
+Node: Minibuffer\7f156680
+Node: Minibuffer File\7f159290
+Node: Minibuffer Edit\7f161095
+Node: Completion\7f164036
+Node: Completion Example\7f165967
+Node: Completion Commands\7f167062
+Node: Strict Completion\7f170038
+Node: Completion Options\7f171819
+Node: Minibuffer History\7f173327
+Node: Repetition\7f176511
+Node: M-x\7f179356
+Node: Help\7f184450
+Node: Help Summary\7f185860
+Node: Key Help\7f188646
+Node: Name Help\7f189605
+Node: Apropos\7f192250
+Node: Library Keywords\7f195369
+Node: Help Mode\7f197690
+Node: Misc Help\7f198187
+Node: Mark\7f201335
+Node: Setting Mark\7f203189
+Node: Using Region\7f206311
+Node: Marking Objects\7f207048
+Node: Mark Ring\7f208886
+Node: Mouse Selection\7f210602
+Node: Additional Mouse Operations\7f212609
+Node: Killing\7f216813
+Node: Yanking\7f222449
+Node: Kill Ring\7f223252
+Node: Appending Kills\7f224854
+Node: Earlier Kills\7f226891
+Node: Using X Selections\7f229504
+Node: X Clipboard Selection\7f230754
+Node: X Selection Commands\7f232931
+Node: X Cut Buffers\7f234017
+Node: Active Regions\7f235376
+Node: Accumulating Text\7f239956
+Node: Rectangles\7f243029
+Node: Registers\7f246548
+Node: RegPos\7f248002
+Node: RegText\7f249158
+Node: RegRect\7f250264
+Node: RegConfig\7f251143
+Node: RegNumbers\7f252083
+Node: RegFiles\7f252801
+Node: Bookmarks\7f253459
+Node: Display\7f256831
+Node: Scrolling\7f258326
+Node: Horizontal Scrolling\7f262469
+Node: Selective Display\7f263664
+Node: Display Vars\7f264883
+Node: Search\7f267561
+Node: Incremental Search\7f268754
+Node: Non-Incremental Search\7f277682
+Node: Word Search\7f279124
+Node: Regexp Search\7f280742
+Node: Regexps\7f283112
+Node: Search Case\7f297109
+Node: Replace\7f297890
+Node: Unconditional Replace\7f298838
+Node: Regexp Replace\7f299973
+Node: Replacement and Case\7f300908
+Node: Query Replace\7f301888
+Node: Other Repeating Search\7f305115
+Node: Fixit\7f306370
+Node: Kill Errors\7f306950
+Node: Transpose\7f308283
+Node: Fixing Case\7f310687
+Node: Spelling\7f311333
+Node: Files\7f312794
+Node: File Names\7f314104
+Node: Visiting\7f318441
+Node: Saving\7f325273
+Node: Backup\7f330196
+Node: Backup Names\7f331592
+Node: Backup Deletion\7f333075
+Node: Backup Copying\7f334225
+Node: Interlocking\7f335931
+Node: Reverting\7f340059
+Node: Auto Save\7f341971
+Node: Auto Save Files\7f342938
+Node: Auto Save Control\7f344779
+Node: Recover\7f346617
+Node: Version Control\7f347772
+Node: Concepts of VC\7f349810
+Node: Editing with VC\7f351420
+Node: Variables for Check-in/out\7f356676
+Node: Log Entries\7f358575
+Node: Change Logs and VC\7f359755
+Node: Old Versions\7f363022
+Node: VC Status\7f365025
+Node: Renaming and VC\7f366739
+Node: Snapshots\7f367418
+Node: Making Snapshots\7f367919
+Node: Snapshot Caveats\7f369212
+Node: Version Headers\7f371021
+Node: ListDir\7f373720
+Node: Comparing Files\7f375769
+Node: Dired\7f377302
+Node: Dired Enter\7f377973
+Node: Dired Edit\7f378798
+Node: Dired Deletion\7f380545
+Node: Dired Immed\7f383768
+Node: Misc File Ops\7f385044
+Node: Buffers\7f387532
+Node: Select Buffer\7f389690
+Node: List Buffers\7f391485
+Node: Misc Buffer\7f393243
+Node: Kill Buffer\7f394886
+Node: Several Buffers\7f396016
+Node: Windows\7f399883
+Node: Basic Window\7f400594
+Node: Split Window\7f402313
+Node: Other Window\7f404446
+Node: Pop Up Window\7f406877
+Node: Change Window\7f408382
+Node: Mule\7f411290
+Node: Mule Intro\7f412553
+Node: Language Environments\7f413569
+Node: Input Methods\7f415676
+Node: Select Input Method\7f419396
+Node: Coding Systems\7f421551
+Node: Recognize Coding\7f425737
+Node: Specify Coding\7f429063
+Node: Major Modes\7f433994
+Node: Choosing Modes\7f436213
+Node: Indentation\7f438603
+Node: Indentation Commands\7f440698
+Node: Tab Stops\7f443427
+Node: Just Spaces\7f445276
+Node: Text\7f446091
+Node: Text Mode\7f448074
+Node: Nroff Mode\7f450153
+Node: TeX Mode\7f451796
+Node: TeX Editing\7f454048
+Node: TeX Print\7f457482
+Node: Outline Mode\7f460701
+Node: Outline Format\7f462182
+Node: Outline Motion\7f464982
+Node: Outline Visibility\7f466535
+Node: Words\7f469456
+Node: Sentences\7f472403
+Node: Paragraphs\7f474599
+Node: Pages\7f476887
+Node: Filling\7f479487
+Node: Auto Fill\7f480058
+Node: Fill Commands\7f482205
+Node: Fill Prefix\7f484370
+Node: Case\7f486558
+Node: Programs\7f488586
+Node: Program Modes\7f491136
+Node: Lists\7f493368
+Node: Defuns\7f499208
+Node: Grinding\7f501861
+Node: Basic Indent\7f502489
+Node: Multi-line Indent\7f504510
+Node: Lisp Indent\7f506126
+Node: C Indent\7f509576
+Node: Matching\7f514816
+Node: Comments\7f516338
+Node: Balanced Editing\7f522790
+Node: Lisp Completion\7f523804
+Node: Documentation\7f524819
+Node: Change Log\7f526058
+Node: Tags\7f528636
+Node: Tag Syntax\7f530285
+Node: Create Tags Table\7f534229
+Node: Etags Regexps\7f538289
+Node: Select Tags Table\7f542947
+Node: Find Tag\7f546720
+Node: Tags Search\7f549684
+Node: List Tags\7f553140
+Node: Fortran\7f554169
+Node: Fortran Motion\7f555245
+Node: Fortran Indent\7f556065
+Node: ForIndent Commands\7f556750
+Node: ForIndent Num\7f557895
+Node: ForIndent Conv\7f559169
+Node: ForIndent Vars\7f559945
+Node: Fortran Comments\7f561113
+Node: Fortran Columns\7f564711
+Node: Fortran Abbrev\7f566134
+Node: Asm Mode\7f567043
+Node: Running\7f567595
+Node: Compilation\7f568564
+Node: Lisp Modes\7f573414
+Node: Lisp Libraries\7f574687
+Node: Loading\7f575241
+Node: Compiling Libraries\7f579701
+Node: Mocklisp\7f582592
+Node: Lisp Eval\7f583269
+Node: Lisp Debug\7f586909
+Node: Lisp Interaction\7f592336
+Node: External Lisp\7f593691
+Node: Packages\7f595765
+Node: Package Terminology\7f596620
+Node: Using Packages\7f597978
+Node: Building Packages\7f606856
+Node: Creating Packages\7f609399
+Node: Available Packages\7f614399
+Node: Abbrevs\7f619672
+Node: Defining Abbrevs\7f621871
+Node: Expanding Abbrevs\7f624318
+Node: Editing Abbrevs\7f627020
+Node: Saving Abbrevs\7f628893
+Node: Dynamic Abbrevs\7f630848
+Node: Picture\7f632150
+Node: Basic Picture\7f634583
+Node: Insert in Picture\7f636868
+Node: Tabs in Picture\7f638290
+Node: Rectangles in Picture\7f639811
+Node: Sending Mail\7f641719
+Node: Mail Format\7f643430
+Node: Mail Headers\7f644780
+Node: Mail Mode\7f651188
+Node: Reading Mail\7f654801
+Node: Calendar/Diary\7f656376
+Node: Calendar Motion\7f658050
+Node: Calendar Unit Motion\7f658933
+Node: Move to Beginning or End\7f661256
+Node: Specified Dates\7f662389
+Node: Scroll Calendar\7f663277
+Node: Mark and Region\7f665068
+Node: General Calendar\7f666974
+Node: LaTeX Calendar\7f668582
+Node: Holidays\7f670596
+Node: Sunrise/Sunset\7f673698
+Node: Lunar Phases\7f676737
+Node: Other Calendars\7f678122
+Node: Calendar Systems\7f679609
+Node: To Other Calendar\7f682720
+Node: From Other Calendar\7f684711
+Node: Mayan Calendar\7f687016
+Node: Diary\7f690211
+Node: Diary Commands\7f691960
+Node: Format of Diary File\7f695283
+Node: Date Formats\7f698153
+Node: Adding to Diary\7f700727
+Node: Special Diary Entries\7f702358
+Node: Calendar Customization\7f707697
+Node: Calendar Customizing\7f708559
+Node: Holiday Customizing\7f711794
+Node: Date Display Format\7f718281
+Node: Time Display Format\7f719239
+Node: Daylight Savings\7f720377
+Node: Diary Customizing\7f723565
+Node: Hebrew/Islamic Entries\7f728186
+Node: Fancy Diary Display\7f731526
+Node: Included Diary Files\7f733442
+Node: Sexp Diary Entries\7f734423
+Node: Appt Customizing\7f739513
+Node: Sorting\7f740559
+Node: Shell\7f745365
+Node: Single Shell\7f746658
+Node: Interactive Shell\7f748272
+Node: Shell Mode\7f752037
+Node: Terminal emulator\7f754528
+Node: Term Mode\7f756837
+Node: Paging in Term\7f757751
+Node: Narrowing\7f758549
+Node: Hardcopy\7f760499
+Node: Recursive Edit\7f761471
+Node: Dissociated Press\7f764458
+Node: CONX\7f767021
+Node: Amusements\7f768045
+Node: Emulation\7f768525
+Node: Customization\7f770385
+Node: Minor Modes\7f772201
+Node: Variables\7f773833
+Node: Examining\7f775789
+Node: Easy Customization\7f777250
+Node: Customization Groups\7f778264
+Node: Changing an Option\7f781193
+Node: Face Customization\7f787463
+Node: Specific Customization\7f789227
+Node: Edit Options\7f791834
+Node: Locals\7f793418
+Node: File Variables\7f796597
+Node: Keyboard Macros\7f801147
+Node: Basic Kbd Macro\7f803318
+Node: Save Kbd Macro\7f805250
+Node: Kbd Macro Query\7f806908
+Node: Key Bindings\7f808850
+Node: Keymaps\7f809724
+Node: Rebinding\7f813574
+Node: Interactive Rebinding\7f814273
+Node: Programmatic Rebinding\7f816462
+Node: Key Bindings Using Strings\7f819269
+Node: Disabling\7f820896
+Node: Syntax\7f822675
+Node: Syntax Entry\7f823556
+Node: Syntax Change\7f827640
+Node: Init File\7f829809
+Node: Init Syntax\7f831273
+Node: Init Examples\7f833624
+Node: Terminal Init\7f837814
+Node: Audible Bell\7f839551
+Node: Faces\7f842982
+Node: Frame Components\7f847824
+Node: X Resources\7f848269
+Node: Geometry Resources\7f849928
+Node: Iconic Resources\7f852376
+Node: Resource List\7f852848
+Node: Face Resources\7f859355
+Node: Widgets\7f863032
+Node: Menubar Resources\7f863971
+Node: Quitting\7f865485
+Node: Lossage\7f868463
+Node: Stuck Recursive\7f869107
+Node: Screen Garbled\7f869813
+Node: Text Garbled\7f870947
+Node: Unasked-for Search\7f871586
+Node: Emergency Escape\7f872371
+Node: Total Frustration\7f874150
+Node: Bugs\7f874781
+Node: Glossary\7f884342
+Node: Manifesto\7f915996
+Node: Key Index\7f939473
+Node: Command Index\7f965400
+Node: Variable Index\7f1007986
+Node: Concept Index\7f1024072
\1f
End Tag Table
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
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
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
* Menubar Basics:: How XEmacs uses the menubar.
* Scrollbar Basics:: How XEmacs uses scrollbars.
+* Mode Line Basics:: How XEmacs uses modelines.
* Toolbar Basics:: How XEmacs uses toolbars.
* Gutter Basics:: How XEmacs uses gutters.
* Inhibiting:: What if you don't like GUI?
XEmacsen, the `Mule' menu will be moved under `Options'.)
\1f
-File: xemacs.info, Node: Scrollbar Basics, Next: Toolbar Basics, Prev: Menubar Basics, Up: GUI Components
+File: xemacs.info, Node: Scrollbar Basics, Next: Mode Line Basics, Prev: Menubar Basics, Up: GUI Components
XEmacs Scrollbars
=================
horizontal scrollbar.
\1f
-File: xemacs.info, Node: Toolbar Basics, Next: Gutter Basics, Prev: Scrollbar Basics, Up: GUI Components
+File: xemacs.info, Node: Mode Line Basics, Next: Toolbar Basics, Prev: Scrollbar Basics, Up: GUI Components
+
+XEmacs Mode Lines
+=================
+
+ When used in a windowing system, the XEmacs modelines can be dragged
+vertically. The effect is to resize the windows above and below the
+modeline (this includes the minibuffer window).
+
+ Additionally, a modeline can be dragged horizontally, in which case
+it scrolls its own text. This behavior is not enabled by default
+because it could be considered as disturbing when dragging vertically.
+When this behavior is enabled, the modeline's text can be dragged
+either in the same direction as the mouse, or in the opposite sense,
+making the modeline act as a scrollbar for its own text.
+
+ You can select the behavior you want from the `Display' submenu of
+the `Options' menu.
+
+\1f
+File: xemacs.info, Node: Toolbar Basics, Next: Gutter Basics, Prev: Mode Line Basics, Up: GUI Components
XEmacs Toolbars
===============
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
-This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+This is ../info/xemacs.info, produced by makeinfo version 4.0 from
xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
* files.el (insert-file-contents-literally): Treat file as binary;
call file-name-handlers. [sync with Emacs 20.3.10]
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
+2001-01-12 Andy Piper <andy@xemacs.org>
+
+ * package-get.el (package-get-custom): call
+ package-net-update-installed-db.
+
+ * package-ui.el (pui-install-selected-packages): call
+ package-net-update-installed-db.
+
+ * package-net.el (package-net-update-installed-db): use
+ packages-package-list so that we reflect reality.
+
+ * packages.el (packages-package-list): Make docstring reflect
+ reality.
+
+ * package-net.el (package-net-convert-index-to-ini): exclude mule entries.
+
+ * postinstall.cc (do_postinstall): don't pick up shells if cygwin
+ isn't installed.
+
+2001-01-17 Andy Piper <andy@xemacs.org>
+
+ * wid-edit.el (widget-activation-glyph-mapper): activate or
+ deactivate native widgets.
+ (widget-glyph-insert-glyph): record instantiator.
+ (widget-push-button-value-create): use it.
+
+ * gui.el (gui-button-action): new function. Make button's domain
+ buffer current when calling.
+ (make-gui-button): update to use gui-button-action.
+
+2001-01-16 Didier Verna <didier@xemacs.org>
+
+ * menubar-items.el (default-menubar): add an entry for modeline
+ horizontal scrolling in Options -> Display.
+
+2001-01-17 Steve Youngs <youngs@xemacs.org>
+
+ * package-get.el (package-get-require-signed-base): Set to nil
+ by default.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
(set-face-foreground 'gui-button-face '(((x color) . "black")
((mswindows color) . "black")))))
+
+(defun gui-button-action (instance action user-data)
+ (let ((domain (image-instance-domain instance)))
+ (with-current-buffer (if (windowp domain)
+ (window-buffer domain) nil)
+ (funcall action user-data))))
+
(defun make-gui-button (string &optional action user-data)
"Make a GUI button whose label is STRING and whose action is ACTION.
If the button is inserted in a buffer and then clicked on, and ACTION
-is non-nil, ACTION will be called with one argument, USER-DATA."
+is non-nil, ACTION will be called with one argument, USER-DATA.
+When ACTION is called, the buffer containing the button is made current."
(vector 'button
:descriptor string
:face 'gui-button-face
- :callback `(funcall (quote ,action) (quote ,user-data))))
+ :callback-ex `(lambda (image-instance event)
+ (gui-button-action image-instance
+ (quote ,action)
+ (quote ,user-data)))))
(defun insert-gui-button (button &optional pos buffer)
"Insert GUI button BUTTON at POS in BUFFER."
;; hack-o-matic, we can't force a load of package-base here
;; since it triggers dialog box interactions which we can't
;; deal with while using a menu
- ("Using %_Custom"
+ ("Using %_Custom"
:filter (lambda (&rest junk)
(if package-get-base
(submenu-generate-accelerator-spec
(cdr (custom-menu-create 'packages)))
'("Please load Package Index"))))
-
+
["%_Help" (Info-goto-node "(xemacs)Packages")])
("%_Internet"
["Read Mail %_1 (VM)..." vm
(eq browse-url-browser-function 'browse-url-grail))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-grail))]
- ["%_Kfm"
+ ["%_Kfm"
(customize-set-variable 'browse-url-browser-function
'browse-url-kfm)
:style radio
(eq browse-url-browser-function 'browse-url-kfm))
:active (and (boundp 'browse-url-browser-function)
(fboundp 'browse-url-kfm))]
- ))
+ ))
("%_Troubleshooting"
["%_Debug on Error"
(customize-set-variable 'debug-on-error (not debug-on-error))
(not scrollbars-visible-p))
:style toggle
:selected scrollbars-visible-p]))
- ["%_3D Modeline"
- (customize-set-variable 'modeline-3d-p
- (not modeline-3d-p))
- :style toggle
- :selected modeline-3d-p]
["%_Wrap Long Lines"
(progn;; becomes buffer-local
(setq truncate-lines (not truncate-lines))
(customize-set-variable 'truncate-lines truncate-lines))
:style toggle
:selected (not truncate-lines)]
+ "----"
+ ["%_3D Modeline"
+ (customize-set-variable 'modeline-3d-p
+ (not modeline-3d-p))
+ :style toggle
+ :selected modeline-3d-p]
+ ("Modeline %_Horizontal Scrolling"
+ ["%_None"
+ (customize-set-variable 'modeline-scrolling-method nil)
+ :style radio
+ :selected (not modeline-scrolling-method)]
+ ["As %_Text"
+ (customize-set-variable 'modeline-scrolling-method t)
+ :style radio
+ :selected (eq modeline-scrolling-method t)]
+ ["As %_Scrollbar"
+ (customize-set-variable 'modeline-scrolling-method 'scrollbar)
+ :style radio
+ :selected (eq modeline-scrolling-method 'scrollbar)]
+ )
,@(if (featurep 'toolbar)
'("---"
["%_Toolbars Visible"
(not column-number-mode))
(redraw-modeline))
:style toggle :selected column-number-mode]
-
+
("\"Other %_Window\" Location"
["%_Always in Same Frame"
(customize-set-variable
:selected (and (boundp 'gnuserv-frame) (eq gnuserv-frame t))
:active (boundp 'gnuserv-frame)]
)
- )
+ )
("%_Menubars"
["%_Frame-Local Font Menu"
(customize-set-variable 'font-menu-this-frame-only-p
:type 'boolean
:group 'package-get)
-(defcustom package-get-require-signed-base-updates t
+(defcustom package-get-require-signed-base-updates nil
"*If set to a non-nil value, require explicit user confirmation for updates
to the package-get database which cannot have their signature verified via PGP.
When nil, updates which are not PGP signed are allowed without confirmation."
(if (eval (intern (concat (symbol-name (car pkg)) "-package")))
(package-get (car pkg) nil))
t)
- package-get-base))
+ package-get-base)
+ (package-net-update-installed-db))
(defun package-get-ever-installed-p (pkg &optional notused)
(string-match "-package$" (symbol-name pkg))
"Write out the installed package index in a net install suitable format.
If DESTDIR is non-nil then use that as the destination directory.
DESTDIR defaults to the value of `package-net-setup-directory'."
- ;; Need the local version
- (package-get-require-base)
- (setq destdir (file-name-as-directory
- (or destdir (package-net-setup-directory))))
- (let ((buf (get-buffer-create "*installed.db*")))
- (unwind-protect
- (save-excursion
- (set-buffer buf)
- (erase-buffer buf)
- (goto-char (point-min))
- (let ((entries package-get-base) entry plist)
- (while entries
- (setq entry (car entries))
- (setq plist (car (cdr entry)))
- (insert (format "%s %s %s\n" (symbol-name (car entry))
- (plist-get plist 'filename)
- (plist-get plist 'size)))
- (setq entries (cdr entries))))
- (make-directory-path destdir)
- (write-region (point-min) (point-max) (concat destdir "installed.db")))
- (kill-buffer buf))))
+ (when (or (eq system-type 'cygwin32)
+ (eq system-type 'window-nt))
+ (setq destdir (file-name-as-directory
+ (or destdir (package-net-setup-directory))))
+ (let ((buf (get-buffer-create "*installed.db*")))
+ (unwind-protect
+ (save-excursion
+ (set-buffer buf)
+ (erase-buffer buf)
+ (goto-char (point-min))
+ ;; we use packages-package-list here as we actually want to
+ ;; update relative to the installed reality
+ (let ((entries packages-package-list) entry version)
+ (while entries
+ (setq entry (car entries))
+ (setq version (plist-get (cdr entry) :version))
+ ;; Unfortunately we can't read the size from this
+ (insert (format "%s %s-%3.2f-pkg.tar.gz 0\n" (symbol-name (car entry))
+ (symbol-name (car entry))
+ version))
+ (setq entries (cdr entries))))
+ (make-directory-path destdir)
+ (write-region (point-min) (point-max) (concat destdir "installed.db")))
+ (kill-buffer buf)))))
(defun package-net-convert-download-sites-to-mirrors (&optional destdir)
"Write out the download site list in a net install suitable format.
(if pui-deleted-packages
(pui-list-packages)
(error "No packages have been selected!")))
+ ;; sync with windows type systems
+ (package-net-update-installed-db)
))
(defun pui-add-required-packages ()
;;; Package versioning
(defvar packages-package-list nil
- "Database of loaded packages and version numbers")
+ "Database of installed packages and version numbers")
(defvar packages-hierarchy-depth 1
"Depth of package hierarchies.")
(let* ((glyph-widget (extent-property extent 'glyph-widget))
(up-glyph (widget-get glyph-widget :glyph-up))
(inactive-glyph (widget-get glyph-widget :glyph-inactive))
+ (instantiator (widget-get glyph-widget :glyph-instantiator))
(new-glyph (if activate-p up-glyph inactive-glyph)))
+ (cond
+ ;; Assume that an instantiator means a native widget.
+ (instantiator
+ (setq instantiator
+ (set-instantiator-property instantiator :active activate-p))
+ (widget-put glyph-widget :glyph-instantiator instantiator)
+ (set-glyph-image up-glyph instantiator))
;; Check that the new glyph exists, and differs from the
;; default one.
- (and up-glyph inactive-glyph (not (eq up-glyph inactive-glyph))
- ;; Check if the glyph is already installed.
- (not (eq (extent-end-glyph extent) new-glyph))
- ;; Change it.
- (set-extent-end-glyph extent new-glyph)))))
+ ((and up-glyph inactive-glyph (not (eq up-glyph inactive-glyph))
+ ;; Check if the glyph is already installed.
+ (not (eq (extent-end-glyph extent) new-glyph)))
+ ;; Change it.
+ (set-extent-end-glyph extent new-glyph))))))
nil)
(defun widget-specify-inactive (widget from to)
(insert tag))
glyph))
-(defun widget-glyph-insert-glyph (widget glyph &optional down inactive)
+(defun widget-glyph-insert-glyph (widget glyph &optional down inactive
+ instantiator)
"In WIDGET, insert GLYPH.
If optional arguments DOWN and INACTIVE are given, they should be
-glyphs used when the widget is pushed and inactive, respectively."
+glyphs used when the widget is pushed and inactive, respectively.
+INSTANTIATOR is the vector used to create the glyph."
(insert "*")
(let ((extent (make-extent (point) (1- (point))))
(help-echo (and widget (widget-get widget :help-echo)))
(when widget
(widget-put widget :glyph-up glyph)
(when down (widget-put widget :glyph-down down))
+ (when instantiator (widget-put widget :glyph-instantiator instantiator))
(when inactive (widget-put widget :glyph-inactive inactive))))
\f
(tag-glyph (widget-get widget :tag-glyph))
(text (concat widget-push-button-prefix
tag widget-push-button-suffix))
- gui)
+ gui inst)
(cond (tag-glyph
(widget-glyph-insert widget text tag-glyph))
;; We must check for console-on-window-system-p here,
((and widget-push-button-gui
(console-on-window-system-p))
(let* ((gui-button-shadow-thickness 1))
- (setq gui (make-glyph
- (make-gui-button tag 'widget-gui-action widget))))
- (widget-glyph-insert-glyph widget gui))
+ (setq inst (make-gui-button tag 'widget-gui-action widget))
+ (setq gui (make-glyph inst)))
+ (widget-glyph-insert-glyph widget gui nil nil inst))
(t
(insert text)))))
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
+2001-01-18 Martin Buchholz <martin@xemacs.org>
+
+ * xemacs-faq.texi (Q1.0.11): Change XEmacs for MacOS URL.
+
+2001-01-17 Andy Piper <andy@xemacs.org>
+
+ * internals.texi: some glyph documentation.
+
+2001-01-16 Didier Verna <didier@xemacs.org>
+
+ * frame.texi (Mode Line Basics): new node ...
+ * frame.texi (GUI Components): ... under this one ...
+ * frame.texi (Scrollbar Basics): ... after this one ...
+ * frame.texi (Toolbar Basics): ... before this one.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
2000-07-09 Martin Buchholz <martin@xemacs.org>
- * lispref/postgresql.texi:
+ * lispref/postgresql.texi:
- Don't mention ".so" extension.
- Make installation instructions more generic.
- Mention M-x describe-installation.
Glyphs are lazily instantiated by calling one of the glyph
functions. This usually occurs within redisplay when
@code{Fglyph_height} is called. Instantiation causes an image-instance
-to be created and cached. This cache is on a device basis for all glyphs
-except glyph-widgets, and on a window basis for glyph widgets. The
+to be created and cached. This cache is on a per-device basis for all glyphs
+except widget-glyphs, and on a per-window basis for widgets-glyphs. The
caching is done by @code{image_instantiate} and is necessary because it
is generally possible to display an image-instance in multiple
domains. For instance if we create a Pixmap, we can actually display
Any action on a glyph first consults the cache before actually
instantiating a widget.
+@section Glyph Instantiation
+
+Glyph instantiation is a hairy topic and requires some explanation. The
+guts of glyph instantiation is contained within
+@code{image_instantiate}. A glyph contains an image which is a
+specifier. When a glyph function - for instance @code{Fglyph_height} -
+asks for a property of the glyph that can only be determined from its
+instantiated state, then the glyph image is instantiated and an image
+instance created. The instantiation process is governed by the specifier
+code and goes through a series of steps:
+
+@itemize @bullet
+@item
+Validation. Instantiation of image instances happens dynamically - often
+within the guts of redisplay. Thus it is often not feasible to catch
+instantiator errors at instantiation time. Instead the instantiator is
+validated at the time it is added to the image specifier. This function
+is defined by @code{image_validate} and at a simple level validates
+keyword value pairs.
+@item
+Duplication. The specifier code by default takes a copy of the
+instantiator. This is reasonable for most specifiers but in the case of
+widget-glyphs can be problematic, since some of the properties in the
+instantiator - for instance callbacks - could cause infinite recursion
+in the copying process. Thus the image code defines a function -
+@code{image_copy_instantiator} - which will selectively copy values.
+This is controlled by the way that a keyword is defined either using
+@code{IIFORMAT_VALID_KEYWORD} or
+@code{IIFORMAT_VALID_NONCOPY_KEYWORD}. Note that the image caching and
+redisplay code relies on instantiator copying to ensure that current and
+new instantiators are actually different rather than referring to the
+same thing.
+@item
+Normalization. Once the instantiator has been copied it must be
+converted into a form that is viable at instantiation time. This can
+involve no changes at all, but typically involves things like converting
+file names to the actual data. This function is defined by
+@code{image_going_to_add} and @code{normalize_image_instantiator}.
+@item
+Instantiation. When an image instance is actually required for display
+it is instantiated using @code{image_instantiate}. This involves calling
+instantiate methods that are specific to the type of image being
+instantiated.
+@end itemize
+
+The final instantiation phase also involves a number of steps. In order
+to understand these we need to describe a number of concepts.
+
+An image is instantiated in a @dfn{domain}, where a domain can be any
+one of a device, frame, window or image-instance. The domain gives the
+image-instance context and identity and properties that affect the
+appearance of the image-instance may be different for the same glyph
+instantiated in different domains. An example is the face used to
+display the image-instance.
+
+Although an image is instantiated in a particular domain the
+instantiation domain is not necessarily the domain in which the
+image-instance is cached. For example a pixmap can be instantiated in a
+window be actually be cached on a per-device basis. The domain in which
+the image-instance is actually cached is called the
+@dfn{governing-domain}. A governing-domain is currently either a device
+or a window. Widget-glyphs and text-glyphs have a window as a
+governing-domain, all other image-instances have a device as the
+governing-domain. The governing domain for an image-instance is
+determined using the governing_domain image-instance method.
+
+@section Widget-Glyphs
+
@section Widget-Glyphs in the MS-Windows Environment
To Do
so that different toolkits can be supported for widget-glyphs, just as
they are supported for features such as menubars etc.
+Lwlib is extremely poorly documented and quite hairy so here is my
+understanding of what goes on.
+
+Lwlib maintains a set of widget_instances which mirror the hierarchical
+state of Xt widgets. I think this is so that widgets can be updated and
+manipulated generically by the lwlib library. For instance
+update_one_widget_instance can cope with multiple types of widget and
+multiple types of toolkit. Each element in the widget hierarchy is updated
+from its corresponding widget_instance by walking the widget_instance
+tree recursively.
+
+This has desirable properties such as lw_modify_all_widgets which is
+called from @file{glyphs-x.c} and updates all the properties of a widget
+without having to know what the widget is or what toolkit it is from.
+Unfortunately this also has hairy properties such as making the lwlib
+code quite complex. And of course lwlib has to know at some level what
+the widget is and how to set its properties.
+
@node Specifiers, Menus, Glyphs, Top
@chapter Specifiers
@finalout
@titlepage
@title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/11/14 23:29:27 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/01/18 13:35:02 $
@sp 1
@author Tony Rossini <rossini@@biostat.washington.edu>
@author Ben Wing <ben@@xemacs.org>
Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS
8.5.1 by @email{pjarvis@@ispchannel.com, Pitts Jarvis}. It's available
-at @uref{http://my.ispchannel.com/~pjarvis/xemacs.html}.
+at @uref{http://homepage.mac.com/pjarvis/xemacs.html}.
@node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
@unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep?
running XEmacs under the X window system, that means you can have several
@dfn{XEmacs windows} inside the X window that contains the XEmacs frame.
You can even have multiple frames in different X windows, each with
-their own set of subwindows.
+their own set of subwindows.
@refill
@end table
-Each XEmacs frame displays a variety of information:
+Each XEmacs frame displays a variety of information:
@itemize @bullet
@item
The biggest area usually displays the text you are editing. It may
consist of one window or of two or more windows if you need to look at two
-buffers a the same time.
+buffers a the same time.
@item
Below each text window's last line is a @dfn{mode line} (@pxref{Mode
Line}), which describes what is going on in that window. The mode line
@menu
-* Point:: The place in the text where editing commands operate.
-* Echo Area:: Short messages appear at the bottom of the frame.
+* Point:: The place in the text where editing commands operate.
+* Echo Area:: Short messages appear at the bottom of the frame.
* Mode Line:: Interpreting the mode line.
* GUI Components:: Menubar, toolbars, gutters.
-* XEmacs under X:: Some information on using XEmacs under the X
- Window System.
+* XEmacs under X:: Some information on using XEmacs under the X
+ Window System.
* XEmacs under MS Windows:: Some information on using XEmacs under
Microsoft Windows.
@end menu
@var{ch} contains two stars (@samp{**}) if the text in the buffer has been
edited (the buffer is ``modified''), or two dashes (@samp{--}) if the
-buffer has not been edited. Exception: for a read-only buffer, it is
+buffer has not been edited. Exception: for a read-only buffer, it is
@samp{%%}.
@var{buf} is the name of the window's chosen @dfn{buffer}. The chosen
@var{pos} tells you whether there is additional text above the top of
the screen or below the bottom. If your file is small and it is
-completely visible on the screen, @var{pos} is @samp{All}. Otherwise,
+completely visible on the screen, @var{pos} is @samp{All}. Otherwise,
@var{pos} is @samp{Top} if you are looking at the beginning of the file,
@samp{Bot} if you are looking at the end of the file, or
@samp{@var{nn}%}, where @var{nn} is the percentage of the file above the
the terminal supports it); @code{nil} means no inverse video. The
default is @code{t}. For X frames, simply set the foreground and
background colors appropriately.
-
+
@node GUI Components, XEmacs under X, Mode Line, Frame
@comment node-name, next, previous, up
@section GUI Components
@menu
* Menubar Basics:: How XEmacs uses the menubar.
* Scrollbar Basics:: How XEmacs uses scrollbars.
+* Mode Line Basics:: How XEmacs uses modelines.
* Toolbar Basics:: How XEmacs uses toolbars.
* Gutter Basics:: How XEmacs uses gutters.
* Inhibiting:: What if you don't like GUI?
detailed descriptions of these menus, @ref{Pull-down Menus}. (In 21.2
XEmacsen, the @samp{Mule} menu will be moved under @samp{Options}.)
-@node Scrollbar Basics, Toolbar Basics, Menubar Basics, GUI Components
+@node Scrollbar Basics, Mode Line Basics, Menubar Basics, GUI Components
@comment node-name, next, previous, up
@section XEmacs Scrollbars
present in all windows (except the minibuffer), and there is no
horizontal scrollbar.
-@node Toolbar Basics, Gutter Basics, Scrollbar Basics, GUI Components
+@node Mode Line Basics, Toolbar Basics, Scrollbar Basics, GUI Components
+@comment node-name, next, previous, up
+@section XEmacs Mode Lines
+
+When used in a windowing system, the XEmacs modelines can be dragged
+vertically. The effect is to resize the windows above and below the
+modeline (this includes the minibuffer window).
+
+Additionally, a modeline can be dragged horizontally, in which case it
+scrolls its own text. This behavior is not enabled by default because it
+could be considered as disturbing when dragging vertically. When this
+behavior is enabled, the modeline's text can be dragged either in the
+same direction as the mouse, or in the opposite sense, making the
+modeline act as a scrollbar for its own text.
+
+You can select the behavior you want from the @samp{Display} submenu of
+the @samp{Options} menu.
+
+@node Toolbar Basics, Gutter Basics, Mode Line Basics, GUI Components
@comment node-name, next, previous, up
@section XEmacs Toolbars
You can specify a different default frame size other than the one provided.
Use the variable @code{default-frame-alist}, which is an alist of default
values for frame creation other than the first one. These may be set in
-your init file, like this:
+your init file, like this:
@example
(setq default-frame-alist '((width . 80) (height . 55)))
is called with one argument, the frame just created.
If you want to close one or more of the X windows you created using
-@b{New Frame}, use the @b{Delete Frame} menu item from the @b{File} menu.
+@b{New Frame}, use the @b{Delete Frame} menu item from the @b{File} menu.
@vindex frame-title-format
@vindex frame-icon-title-format
Where possible, native MS Windows GUI components and capabilities are
used in XEmacs.
-
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
+2001-01-17 Andy Piper <andy@xemacs.org>
+
+ * ini.h: move extern "C" to aid win32 compilation. From Fabrice
+ Popineau.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
* all: port from cygwin setup.
-%%% $Id: ChangeLog,v 1.1.2.9 2001/01/12 16:11:12 andyp Exp $
-$Revision: 1.1.2.9 $
+%%% $Id: ChangeLog,v 1.1.2.11 2001/01/17 21:54:32 andyp Exp $
+$Revision: 1.1.2.11 $
} info[NTRUST+1]; /* +1 for TRUST_UNKNOWN */
} Package;
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern Package *package;
extern Package *xemacs_package;
extern int npackages;
-#ifdef __cplusplus
-extern "C" {
-#endif
-
Package *new_package (char *name);
void ini_init (char *string);
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
run -nd -batch -l ../lisp/update-elc.el
}
-document dump-temacs << 'end'
-Usage: dump-temacs
+document dmp << 'end'
+Usage: dmp
Run the dumping part of the build procedure.
Use when debugging temacs, not xemacs!
Use this when temacs builds successfully, but xemacs does not.
end
-function dump-temacs {
+function dmp {
environment-to-run-temacs
run -nd -batch -l ../lisp/loadup.el dump
}
Use this when temacs builds successfully, but xemacs does not.
end
-define dump-temacs
+define dmp
environment-to-run-temacs
run -nd -batch -l ../lisp/loadup.el dump
end
-document dump-temacs
-Usage: dump-temacs
+document dmp
+Usage: dmp
Run the dumping part of the build procedure.
Use when debugging temacs, not xemacs!
Use this when temacs builds successfully, but xemacs does not.
(Vcharset_thai_tis620): Likewise.
(Vcharset_katakana_jisx0201): Likewise.
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * console-x.h: typo fix du jour. Remove #if 0'ed code.
+
+2001-01-19 Martin Buchholz <martin@xemacs.org>
+
+ De-kludgify FIXED_TYPE free list frobbing.
+ Fix crashes on 64-bit platforms introduced by my patch of 2001-01-13.
+ * alloc.c (DECLARE_FIXED_TYPE_ALLOC): Use Lisp_Free.
+ * alloc.c (ALLOCATE_FIXED_TYPE_1): Use new definitions.
+ * alloc.c (Lisp_Free): New pseudo lisp object definition.
+ * alloc.c (LRECORD_FREE_P): New.
+ * alloc.c (MARK_LRECORD_AS_FREE): New.
+ * alloc.c (MARK_LRECORD_AS_NOT_FREE): New.
+ * alloc.c (STRUCT_FREE_P): Deleted.
+ * alloc.c (MARK_STRUCT_AS_FREE): Deleted.
+ * alloc.c (MARK_STRUCT_AS_NOT_FREE): Deleted.
+ * alloc.c (STRING_CHARS_FREE_P): New.
+ * alloc.c (MARK_STRING_CHARS_AS_FREE): New.
+ * alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Use new definitions.
+ * alloc.c (FREE_FIXED_TYPE): Use new definitions.
+ * alloc.c (STRING_CHARS_FREE_P): Use new definitions.
+ * alloc.c (resize_string): Use new definitions.
+ * alloc.c (SWEEP_FIXED_TYPE_BLOCK): Use new definitions.
+ * alloc.c (verify_string_chars_integrity): Use new definitions.
+ * alloc.c (compact_string_chars): Use new definitions.
+ * alloc.c: Update monster comments.
+ * lrecord.h (lrecord_type): Add some new lrecord types for
+ alloc.c's use.
+
+2001-01-18 Martin Buchholz <martin@xemacs.org>
+
+ Improve alignment hackery.
+ * lisp.h (ALIGNOF): Better definition for the non-gcc case.
+ (max_align_t): Moved from opaque.h - general purpose.
+ (ALIGN_PTR): Use size_t, not long.
+ * opaque.h (max_align_t): Move to lisp.h.
+
+2001-01-18 Norbert Koch <nk@LF.net>
+
+ * gui.h: Fix and add prototypes to fix build problems.
+
+2001-01-18 Martin Buchholz <martin@xemacs.org>
+
+ temacs is going away, so `dump-temacs' is now a bad name.
+ * .dbxrc (dump-temacs): Rename to `dmp'.
+ * .gdbinit (dump-temacs): Rename to `dmp'.
+
+2001-01-17 Andy Piper <andy@xemacs.org>
+
+ * glyphs.c (print_image_instance): comment to make martin happy.
+
+ * glyphs-x.c (x_redisplay_widget): update faces after a frame
+ change.
+
+ * glyphs-msw.c (mswindows_redisplay_widget): add code to cope with
+ activation.
+ (mswindows_tab_control_redisplay): warning suppression.
+
+ * glyphs-widget.c (widget_update): re-write to cope with updated
+ items.
+ (widget_instantiate): use new gui_item functions.
+ (tab_control_update): deleted.
+ (progress_gauge_update): deleted.
+ (image_instantiator_progress_guage): take out update reference.
+ (image_instantiator_tree_view): ditto.
+ (image_instantiator_tab_control): ditto.
+
+ * gui.c (widget_gui_parse_item_keywords): new function. Do things
+ Right the new way.
+ (gui_item_add_keyval_pair): re-write to cope with descriptors and
+ return whether anything was changed.
+ (update_gui_item_keywords): as it sounds.
+
+ * gui.h: declare widget_gui_parse_item_keywords.
+
+ * fns.c (safe_copy_tree): new function taken from Fcopy_tree.
+ (Fcopy_tree): use it. Stops infloop death in bogus instantiators.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
currently executing functions; the gcpro list; etc.) and
recursively marking all objects that are accessible.
- At the beginning of the sweep stage, the conses in the cons
- blocks are in one of three states: in use and marked, in use
- but not marked, and not in use (already freed). Any conses
- that are marked have been marked in the mark stage just
- executed, because as part of the sweep stage we unmark any
- marked objects. The way we tell whether or not a cons cell
- is in use is through the FREE_STRUCT_P macro. This basically
- looks at the first 4 bytes (or however many bytes a pointer
- fits in) to see if all the bits in those bytes are 1. The
- resulting value (0xFFFFFFFF) is not a valid pointer and is
- not a valid Lisp_Object. All current fixed-size types have
- a pointer or Lisp_Object as their first element with the
- exception of strings; they have a size value, which can
- never be less than zero, and so 0xFFFFFFFF is invalid for
- strings as well. Now assuming that a cons cell is in use,
- the way we tell whether or not it is marked is to look at
- the mark bit of its car (each Lisp_Object has one bit
- reserved as a mark bit, in case it's needed). Note that
- different types of objects use different fields to indicate
- whether the object is marked, but the principle is the same.
-
- Conses on the free_cons_list are threaded through a pointer
- stored in the bytes directly after the bytes that are set
- to 0xFFFFFFFF (we cannot overwrite these because the cons
- is still in a cons_block and needs to remain marked as
- not in use for the next time that GC happens). This
- implies that all fixed-size types must be at least big
- enough to store two pointers, which is indeed the case
- for all current fixed-size types.
+ At the beginning of the sweep stage, the conses in the cons blocks
+ are in one of three states: in use and marked, in use but not
+ marked, and not in use (already freed). Any conses that are marked
+ have been marked in the mark stage just executed, because as part
+ of the sweep stage we unmark any marked objects. The way we tell
+ whether or not a cons cell is in use is through the LRECORD_FREE_P
+ macro. This uses a special lrecord type `lrecord_type_free',
+ which is never associated with any valid object.
+
+ Conses on the free_cons_list are threaded through a pointer stored
+ in the conses themselves. Because the cons is still in a
+ cons_block and needs to remain marked as not in use for the next
+ time that GC happens, we need room to store both the "free"
+ indicator and the chaining pointer. So this pointer is stored
+ after the lrecord header (actually where C places a pointer after
+ the lrecord header; they are not necessarily contiguous). This
+ implies that all fixed-size types must be big enough to contain at
+ least one pointer. This is true for all current fixed-size types,
+ with the possible exception of Lisp_Floats, for which we define the
+ meat of the struct using a union of a pointer and a double to
+ ensure adequate space for the free list chain pointer.
Some types of objects need additional "finalization" done
when an object is converted from in use to not in use;
WARNING: Things are in an extremely bizarre state when
the ADDITIONAL_FREE_type macros are called, so beware!
- When ERROR_CHECK_GC is defined, we do things differently
- so as to maximize our chances of catching places where
- there is insufficient GCPROing. The thing we want to
- avoid is having an object that we're using but didn't
- GCPRO get freed by GC and then reallocated while we're
- in the process of using it -- this will result in something
- seemingly unrelated getting trashed, and is extremely
- difficult to track down. If the object gets freed but
- not reallocated, we can usually catch this because we
- set all bytes of a freed object to 0xDEADBEEF. (The
- first four bytes, however, are 0xFFFFFFFF, and the next
- four are a pointer used to chain freed objects together;
- we play some tricks with this pointer to make it more
+ When ERROR_CHECK_GC is defined, we do things differently so as to
+ maximize our chances of catching places where there is insufficient
+ GCPROing. The thing we want to avoid is having an object that
+ we're using but didn't GCPRO get freed by GC and then reallocated
+ while we're in the process of using it -- this will result in
+ something seemingly unrelated getting trashed, and is extremely
+ difficult to track down. If the object gets freed but not
+ reallocated, we can usually catch this because we set most of the
+ bytes of a freed object to 0xDEADBEEF. (The lisp object type is set
+ to the invalid type `lrecord_type_free', however, and a pointer
+ used to chain freed objects together is stored after the lrecord
+ header; we play some tricks with this pointer to make it more
bogus, so crashes are more likely to occur right away.)
We want freed objects to stay free as long as possible,
static struct type##_block *current_##type##_block; \
static int current_##type##_block_index; \
\
-static structtype *type##_free_list; \
-static structtype *type##_free_list_tail; \
+static Lisp_Free *type##_free_list; \
+static Lisp_Free *type##_free_list_tail; \
\
static void \
init_##type##_alloc (void) \
cell was not GC-protected and was getting collected before
free_cons() was called. */
-#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) \
-do \
-{ \
- if (gc_count_num_##type##_freelist > \
- MINIMUM_ALLOWED_FIXED_TYPE_CELLS_##type) \
- { \
- result = type##_free_list; \
- /* Before actually using the chain pointer, we complement all its \
- bits; see FREE_FIXED_TYPE(). */ \
- type##_free_list = \
- (structtype *) ~(unsigned long) \
- (* (structtype **) ((char *) result + sizeof (void *))); \
- gc_count_num_##type##_freelist--; \
- } \
- else \
- ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \
- MARK_STRUCT_AS_NOT_FREE (result); \
+#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) do { \
+ if (gc_count_num_##type##_freelist > \
+ MINIMUM_ALLOWED_FIXED_TYPE_CELLS_##type) \
+ { \
+ result = (structtype *) type##_free_list; \
+ /* Before actually using the chain pointer, \
+ we complement all its bits; see FREE_FIXED_TYPE(). */ \
+ type##_free_list = (Lisp_Free *) \
+ (~ (EMACS_UINT) (type##_free_list->chain)); \
+ gc_count_num_##type##_freelist--; \
+ } \
+ else \
+ ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \
+ MARK_LRECORD_AS_NOT_FREE (result); \
} while (0)
#else /* !ERROR_CHECK_GC */
-#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) \
-do \
-{ \
+#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) do { \
if (type##_free_list) \
{ \
- result = type##_free_list; \
- type##_free_list = \
- * (structtype **) ((char *) result + sizeof (void *)); \
+ result = (structtype *) type##_free_list; \
+ type##_free_list = type##_free_list->chain; \
} \
else \
ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \
- MARK_STRUCT_AS_NOT_FREE (result); \
+ MARK_LRECORD_AS_NOT_FREE (result); \
} while (0)
#endif /* !ERROR_CHECK_GC */
+
#define ALLOCATE_FIXED_TYPE(type, structtype, result) \
do \
{ \
NOSEEUM_INCREMENT_CONS_COUNTER (sizeof (structtype), #type); \
} while (0)
-/* INVALID_POINTER_VALUE should be a value that is invalid as a pointer
- to a Lisp object and invalid as an actual Lisp_Object value. We have
- to make sure that this value cannot be an integer in Lisp_Object form.
- 0xFFFFFFFF could be so on a 64-bit system, so we extend it to 64 bits.
- On a 32-bit system, the type bits will be non-zero, making the value
- be a pointer, and the pointer will be misaligned.
-
- Even if Emacs is run on some weirdo system that allows and allocates
- byte-aligned pointers, this pointer is at the very top of the address
- space and so it's almost inconceivable that it could ever be valid. */
-
-#if INTBITS == 32
-# define INVALID_POINTER_VALUE 0xFFFFFFFF
-#elif INTBITS == 48
-# define INVALID_POINTER_VALUE 0xFFFFFFFFFFFF
-#elif INTBITS == 64
-# define INVALID_POINTER_VALUE 0xFFFFFFFFFFFFFFFF
+
+/* Lisp_Free is the type to represent a free list member inside a frob
+ block of any lisp object type. */
+typedef struct Lisp_Free
+{
+ struct lrecord_header lheader;
+ struct Lisp_Free *chain;
+} Lisp_Free;
+
+#define LRECORD_FREE_P(ptr) \
+((ptr)->lheader.type == lrecord_type_free)
+
+#define MARK_LRECORD_AS_FREE(ptr) \
+((void) ((ptr)->lheader.type = lrecord_type_free))
+
+#ifdef ERROR_CHECK_GC
+#define MARK_LRECORD_AS_NOT_FREE(ptr) \
+((void) ((ptr)->lheader.type = lrecord_type_undefined))
#else
-You have some weird system and need to supply a reasonable value here.
+#define MARK_LRECORD_AS_NOT_FREE(ptr) DO_NOTHING
#endif
-/* The construct (* (void **) (ptr)) would cause aliasing problems
- with modern optimizing compilers like `gcc -O3 -fstrict-aliasing'.
- But `char *' can legally alias any pointer. Hence this union trick...
-
- It turned out that the union trick was not good enough for xlC -O3;
- and it is questionable whether it really complies with the C standard.
- so we use memset instead, which should be safe from optimizations. */
-typedef union { char c; void *p; } *aliasing_voidpp;
-#define ALIASING_VOIDPP_DEREFERENCE(ptr) \
- (((aliasing_voidpp) (ptr))->p)
-#define FREE_STRUCT_P(ptr) \
- (ALIASING_VOIDPP_DEREFERENCE (ptr) == (void *) INVALID_POINTER_VALUE)
-#define MARK_STRUCT_AS_FREE(ptr) memset (ptr, 0xff, sizeof (void *))
-#define MARK_STRUCT_AS_NOT_FREE(ptr) memset (ptr, 0x00, sizeof (void *))
-
#ifdef ERROR_CHECK_GC
-#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) \
-do { if (type##_free_list_tail) \
- { \
- /* When we store the chain pointer, we complement all \
- its bits; this should significantly increase its \
- bogosity in case someone tries to use the value, and \
- should make us dump faster if someone stores something \
- over the pointer because when it gets un-complemented in \
- ALLOCATED_FIXED_TYPE(), the resulting pointer will be \
- extremely bogus. */ \
- * (structtype **) \
- ((char *) type##_free_list_tail + sizeof (void *)) = \
- (structtype *) ~(unsigned long) ptr; \
- } \
- else \
- type##_free_list = ptr; \
- type##_free_list_tail = ptr; \
- } while (0)
+#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) do { \
+ if (type##_free_list_tail) \
+ { \
+ /* When we store the chain pointer, we complement all \
+ its bits; this should significantly increase its \
+ bogosity in case someone tries to use the value, and \
+ should make us crash faster if someone overwrites the \
+ pointer because when it gets un-complemented in \
+ ALLOCATED_FIXED_TYPE(), the resulting pointer will be \
+ extremely bogus. */ \
+ type##_free_list_tail->chain = \
+ (Lisp_Free *) ~ (EMACS_UINT) (ptr); \
+ } \
+ else \
+ type##_free_list = (Lisp_Free *) (ptr); \
+ type##_free_list_tail = (Lisp_Free *) (ptr); \
+} while (0)
#else /* !ERROR_CHECK_GC */
-#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) \
-do { * (structtype **) ((char *) (ptr) + sizeof (void *)) = \
- type##_free_list; \
- type##_free_list = (ptr); \
- } while (0)
+#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) do { \
+ ((Lisp_Free *) (ptr))->chain = type##_free_list; \
+ type##_free_list = (Lisp_Free *) (ptr); \
+} while (0) \
#endif /* !ERROR_CHECK_GC */
ADDITIONAL_FREE_##type (FFT_ptr); \
deadbeef_memory (FFT_ptr, sizeof (structtype)); \
PUT_FIXED_TYPE_ON_FREE_LIST (type, structtype, FFT_ptr); \
- MARK_STRUCT_AS_FREE (FFT_ptr); \
+ MARK_LRECORD_AS_FREE (FFT_ptr); \
} while (0)
/* Like FREE_FIXED_TYPE() but used when we are explicitly
#define BIG_STRING_FULLSIZE_P(fullsize) ((fullsize) >= STRING_CHARS_BLOCK_SIZE)
#define BIG_STRING_SIZE_P(size) (BIG_STRING_FULLSIZE_P (STRING_FULLSIZE(size)))
+#define STRING_CHARS_FREE_P(ptr) ((ptr)->string == NULL)
+#define MARK_STRING_CHARS_AS_FREE(ptr) ((void) ((ptr)->string = NULL))
+
struct string_chars
{
Lisp_String *string;
/* Sanity check to make sure we aren't hosed by strange
alignment/padding. */
assert (old_s_chars->string == s);
- MARK_STRUCT_AS_FREE (old_s_chars);
+ MARK_STRING_CHARS_AS_FREE (old_s_chars);
((struct unused_string_chars *) old_s_chars)->fullsize =
oldfullsize;
}
{ \
obj_type *SFTB_victim = &(SFTB_current->block[SFTB_iii]); \
\
- if (FREE_STRUCT_P (SFTB_victim)) \
+ if (LRECORD_FREE_P (SFTB_victim)) \
{ \
num_free++; \
} \
{ \
int SFTB_iii; \
int SFTB_empty = 1; \
- obj_type *SFTB_old_free_list = typename##_free_list; \
+ Lisp_Free *SFTB_old_free_list = typename##_free_list; \
\
for (SFTB_iii = 0; SFTB_iii < SFTB_limit; SFTB_iii++) \
{ \
obj_type *SFTB_victim = &(SFTB_current->block[SFTB_iii]); \
\
- if (FREE_STRUCT_P (SFTB_victim)) \
+ if (LRECORD_FREE_P (SFTB_victim)) \
{ \
num_free++; \
PUT_FIXED_TYPE_ON_FREE_LIST (typename, obj_type, SFTB_victim); \
int size;
int fullsize;
- /* If the string_chars struct is marked as free (i.e. the STRING
- pointer is 0xFFFFFFFF) then this is an unused chunk of string
- storage. (See below.) */
+ /* If the string_chars struct is marked as free (i.e. the
+ STRING pointer is NULL) then this is an unused chunk of
+ string storage. (See below.) */
- if (FREE_STRUCT_P (s_chars))
+ if (STRING_CHARS_FREE_P (s_chars))
{
fullsize = ((struct unused_string_chars *) s_chars)->fullsize;
pos += fullsize;
int size;
int fullsize;
- /* If the string_chars struct is marked as free (i.e. the STRING
- pointer is 0xFFFFFFFF) then this is an unused chunk of string
- storage. This happens under Mule when a string's size changes
- in such a way that its fullsize changes. (Strings can change
- size because a different-length character can be substituted
- for another character.) In this case, after the bogus string
- pointer is the "fullsize" of this entry, i.e. how many bytes
- to skip. */
+ /* If the string_chars struct is marked as free (i.e. the
+ STRING pointer is NULL) then this is an unused chunk of
+ string storage. This happens under Mule when a string's
+ size changes in such a way that its fullsize changes.
+ (Strings can change size because a different-length
+ character can be substituted for another character.)
+ In this case, after the bogus string pointer is the
+ "fullsize" of this entry, i.e. how many bytes to skip. */
- if (FREE_STRUCT_P (from_s_chars))
+ if (STRING_CHARS_FREE_P (from_s_chars))
{
fullsize = ((struct unused_string_chars *) from_s_chars)->fullsize;
from_pos += fullsize;
}
string = from_s_chars->string;
- assert (!(FREE_STRUCT_P (string)));
+ assert (!(LRECORD_FREE_P (string)));
size = string_length (string);
fullsize = STRING_FULLSIZE (size);
#include <X11/cursorfont.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
-
-#if 0 /* mrb - Xos sux. */
-#ifdef USG
-#undef USG /* ####KLUDGE for Solaris 2.2 and up */
-#include <X11/Xos.h>
-#define USG
-#else
-#include <X11/Xos.h>
-#endif
-#endif /* 0 */
-
#include <X11/StringDefs.h>
#ifdef HAVE_XPM
/* Xt application info. */
Widget Xt_app_shell;
- /* Cache of GC's for frame's on this device. */
+ /* Cache of GC's for frames on this device. */
struct gc_cache *gc_cache;
/* Selected visual, depth and colormap for this device */
Lisp_Object Qidentity;
static int internal_old_equal (Lisp_Object, Lisp_Object, int);
+Lisp_Object safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth);
static Lisp_Object
mark_bit_vector (Lisp_Object obj)
*/
(arg, vecp))
{
+ return safe_copy_tree (arg, vecp, 0);
+}
+
+Lisp_Object
+safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth)
+{
+ if (depth > 200)
+ signal_simple_error ("Stack overflow in copy-tree", arg);
+
if (CONSP (arg))
{
Lisp_Object rest;
Lisp_Object elt = XCAR (rest);
QUIT;
if (CONSP (elt) || VECTORP (elt))
- XCAR (rest) = Fcopy_tree (elt, vecp);
+ XCAR (rest) = safe_copy_tree (elt, vecp, depth + 1);
if (VECTORP (XCDR (rest))) /* hack for (a b . [c d]) */
- XCDR (rest) = Fcopy_tree (XCDR (rest), vecp);
+ XCDR (rest) = safe_copy_tree (XCDR (rest), vecp, depth +1);
rest = XCDR (rest);
}
}
Lisp_Object elt = XVECTOR_DATA (arg) [j];
QUIT;
if (CONSP (elt) || VECTORP (elt))
- XVECTOR_DATA (arg) [j] = Fcopy_tree (elt, vecp);
+ XVECTOR_DATA (arg) [j] = safe_copy_tree (elt, vecp, depth + 1);
}
}
return arg;
SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
WM_SETTEXT, 0, (LPARAM)lparam);
}
+ /* Set active state. */
+ if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
+ {
+ Lisp_Object item = IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p);
+ LONG style = GetWindowLong
+ (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
+ GWL_STYLE);
+
+ if (CONSP (item))
+ item = XCAR (item);
+
+ if (gui_item_active_p (item))
+ SetWindowLong (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
+ GWL_STYLE, style & ~WS_DISABLED);
+ else
+ SetWindowLong (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
+ GWL_STYLE, style | WS_DISABLED);
+ }
}
/* register widgets into our hashtable so that we can cope with the
IMAGE_INSTANCE_WIDGET_ACTION_OCCURRED (ii))
{
HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
- int i = 0, selected = 0;
+ int i = 0, selected_idx = 0;
Lisp_Object rest;
assert (!NILP (IMAGE_INSTANCE_WIDGET_ITEMS (ii)));
add_tab_item (image_instance, wnd, XCAR (rest),
IMAGE_INSTANCE_FRAME (ii), i);
if (gui_item_selected_p (XCAR (rest)))
- selected = i;
+ selected_idx = i;
i++;
}
- SendMessage (wnd, TCM_SETCURSEL, selected, 0);
+ SendMessage (wnd, TCM_SETCURSEL, selected_idx, 0);
}
}
}
{
Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
struct image_instantiator_methods* meths;
+ struct gcpro gcpro1;
Lisp_Object text = find_keyword_in_vector (instantiator, Q_text);
+ Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor);
+ Lisp_Object items = find_keyword_in_vector (instantiator, Q_items);
+ Lisp_Object descriptor_item = Qnil;
+
+ GCPRO1 (descriptor_item);
+
/* Pick up any generic properties that we might need to keep hold
- of. */
+ of.
+ #### This is potentially bogus because it is changing the items
+ in place rather than in the pending items. */
if (!NILP (text))
{
IMAGE_INSTANCE_WIDGET_TEXT (ii) = text;
IMAGE_INSTANCE_TEXT_CHANGED (ii) = 1;
}
+ /* Retrieve the gui item information. This is easy if we have been
+ provided with a vector, more difficult if we have just been given
+ keywords.
+
+ #### This is inconsistent with instantiation in that you have to
+ have the :descriptor keyword for updates in order to recognise
+ changes. */
+ if (VECTORP (desc))
+ {
+ descriptor_item = gui_parse_item_keywords_no_errors (desc);
+ }
+ else
+ {
+ /* Since we are updating the instantiator could be incomplete
+ and hence the gui item descriptor not well formed. We
+ therefore try updating and discard the results if nothing
+ changed. */
+ descriptor_item = copy_gui_item (IMAGE_INSTANCE_WIDGET_ITEM (ii));
+ if (!update_gui_item_keywords (descriptor_item, instantiator))
+ descriptor_item = Qnil;
+ }
+
+ /* Record new items for update. *_redisplay will do the
+ rest. */
+ if (!EQ (IMAGE_INSTANCE_WIDGET_TYPE (ii), Qlayout)
+ &&
+ !EQ (IMAGE_INSTANCE_WIDGET_TYPE (ii), Qnative_layout))
+ {
+ if (!NILP (items))
+ {
+ if (NILP (descriptor_item))
+ descriptor_item = IMAGE_INSTANCE_WIDGET_ITEM (ii);
+
+ check_valid_item_list (items);
+#ifdef DEBUG_WIDGET_OUTPUT
+ stderr_out ("items for widget %p updated\n",
+ IMAGE_INSTANCE_SUBWINDOW_ID (ii));
+#endif
+ /* Don't set the actual items since we might decide not to use
+ the new ones (because nothing has really changed). If we did
+ set them and didn't use them then we would get into whole
+ heaps of trouble when the old items get GC'd. */
+ descriptor_item = Fcons (descriptor_item, parse_gui_item_tree_children (items));
+ }
+ /* If the descriptor was updated but not the items we need to fill
+ in the `new' items. */
+ else if (!NILP (descriptor_item)
+ &&
+ CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
+ {
+ descriptor_item = Fcons
+ (descriptor_item,
+ copy_gui_item_tree (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))));
+ }
+ }
+
+ if (!NILP (descriptor_item))
+ {
+ IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = descriptor_item;
+ IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1;
+ }
+
+ UNGCPRO;
+
/* Now try device specific methods first ... */
meths = decode_device_ii_format (image_instance_device (image_instance),
IMAGE_INSTANCE_WIDGET_TYPE (ii),
if (!NILP (face))
SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Fget_face (face));
- /* retrieve the gui item information. This is easy if we have been
+ /* Retrieve the gui item information. This is easy if we have been
provided with a vector, more difficult if we have just been given
- keywords */
- if (STRINGP (desc) || NILP (desc))
+ keywords. Note that standard gui descriptor shortcuts will not work
+ because of keyword parsing.
+
+ #### This is bogus in that descriptor and items share the same slot,
+ we should rationalize. */
+ if (VECTORP (desc))
{
- /* big cheat - we rely on the fact that a gui item looks like an instantiator */
IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
- gui_parse_item_keywords_no_errors (instantiator);
- IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc;
+ gui_parse_item_keywords_no_errors (desc);
}
else
- IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
- gui_parse_item_keywords_no_errors (desc);
+ {
+ /* big cheat - we rely on the fact that a gui item looks like an instantiator */
+ IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
+ widget_gui_parse_item_keywords (instantiator);
+ }
/* Pick up the orientation before we do our first layout. */
if (EQ (orient, Qleft) || EQ (orient, Qright) || EQ (orient, Qvertical))
}
}
-/* Update the contents of a tab control. */
-static void
-tab_control_update (Lisp_Object image_instance,
- Lisp_Object instantiator)
-{
- Lisp_Object items = find_keyword_in_vector (instantiator, Q_items);
- /* Record new items for update. *_tab_control_redisplay will do the
- rest. */
- if (!NILP (items))
- {
- Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
- check_valid_item_list (items);
-#ifdef DEBUG_WIDGET_OUTPUT
- stderr_out ("tab control %p updated\n", IMAGE_INSTANCE_SUBWINDOW_ID (ii));
-#endif
- /* Don't set the actual items since we might decide not to use
- the new ones (because nothing has really changed). If we did
- set them and didn't use them then we would get into whole
- heaps of trouble when the old items get GC'd. */
- IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) =
- Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
- parse_gui_item_tree_children (items));
- IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1;
- }
-}
-
/* Determine whether only the order has changed for a tab. */
int tab_control_order_only_changed (Lisp_Object image_instance)
{
return found;
}
-/* Set the properties of a progress gauge */
-static void
-progress_gauge_update (Lisp_Object image_instance,
- Lisp_Object instantiator)
-{
- Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
- Lisp_Object value = find_keyword_in_vector (instantiator, Q_value);
-
- if (!NILP (value))
- {
- CHECK_INT (value);
-#ifdef DEBUG_WIDGET_OUTPUT
- stderr_out ("progress gauge value set to %ld\n", XINT (value));
-#endif
- IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) =
- copy_gui_item_tree (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
-#ifdef ERROR_CHECK_GLYPHS
- assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)));
-#endif
- if (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)))
- XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value = value;
-
- IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1;
- }
-}
-
\f
/*****************************************************************************
* widget layout *
IIFORMAT_HAS_SHARED_METHOD (progress_gauge, instantiate, widget);
IIFORMAT_HAS_SHARED_METHOD (progress_gauge, post_instantiate, widget);
IIFORMAT_HAS_SHARED_METHOD (progress_gauge, governing_domain, subwindow);
- IIFORMAT_HAS_METHOD (progress_gauge, update);
VALID_WIDGET_KEYWORDS (progress_gauge);
VALID_GUI_KEYWORDS (progress_gauge);
IIFORMAT_HAS_SHARED_METHOD (tree_view, instantiate, widget);
IIFORMAT_HAS_SHARED_METHOD (tree_view, post_instantiate, widget);
IIFORMAT_HAS_SHARED_METHOD (tree_view, governing_domain, subwindow);
- IIFORMAT_HAS_SHARED_METHOD (tree_view, update, tab_control);
IIFORMAT_HAS_METHOD (tree_view, query_geometry);
VALID_WIDGET_KEYWORDS (tree_view);
VALID_GUI_KEYWORDS (tree_view);
IIFORMAT_HAS_SHARED_METHOD (tab_control, post_instantiate, widget);
IIFORMAT_HAS_SHARED_METHOD (tab_control, governing_domain, subwindow);
IIFORMAT_HAS_METHOD (tab_control, query_geometry);
- IIFORMAT_HAS_METHOD (tab_control, update);
VALID_WIDGET_KEYWORDS (tab_control);
VALID_GUI_KEYWORDS (tab_control);
IIFORMAT_VALID_KEYWORD (tab_control, Q_orientation,
/* Possibly update the colors and font */
if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p)
||
+ /* #### This is not sufficient because it will not cope with widgets
+ that are not currently visible. Once redisplay has done the
+ visible ones it will clear this flag so that when new ones
+ become visible they will not be updated. */
XFRAME (IMAGE_INSTANCE_FRAME (p))->faces_changed
||
+ XFRAME (IMAGE_INSTANCE_FRAME (p))->frame_changed
+ ||
IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
{
update_widget_face (wv, p, IMAGE_INSTANCE_FRAME (p));
print_internal
(IMAGE_INSTANCE_WIDGET_FACE (ii), printcharfun, 0);
}
-
+ /* fallthrough */
case IMAGE_SUBWINDOW:
sprintf (buf, " %dx%d", IMAGE_INSTANCE_WIDTH (ii),
Lisp_Object Vmenu_no_selection_hook;
static Lisp_Object parse_gui_item_tree_list (Lisp_Object list);
+Lisp_Object find_keyword_in_vector (Lisp_Object vector, Lisp_Object keyword);
#ifdef HAVE_POPUPS
* structure. If KEY is not a keyword, or is an unknown keyword, then
* error is signaled.
*/
-void
+int
gui_item_add_keyval_pair (Lisp_Object gui_item,
Lisp_Object key, Lisp_Object val,
Error_behavior errb)
{
Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item);
+ int retval = 0;
if (!KEYWORDP (key))
syntax_error_2 ("Non-keyword in gui item", key, pgui_item->name);
- if (EQ (key, Q_suffix)) pgui_item->suffix = val;
- else if (EQ (key, Q_active)) pgui_item->active = val;
- else if (EQ (key, Q_included)) pgui_item->included = val;
- else if (EQ (key, Q_config)) pgui_item->config = val;
- else if (EQ (key, Q_filter)) pgui_item->filter = val;
- else if (EQ (key, Q_style)) pgui_item->style = val;
- else if (EQ (key, Q_selected)) pgui_item->selected = val;
- else if (EQ (key, Q_keys)) pgui_item->keys = val;
- else if (EQ (key, Q_callback)) pgui_item->callback = val;
- else if (EQ (key, Q_callback_ex)) pgui_item->callback_ex = val;
- else if (EQ (key, Q_value)) pgui_item->value = val;
+ if (EQ (key, Q_descriptor))
+ {
+ if (!EQ (pgui_item->name, val))
+ {
+ retval = 1;
+ pgui_item->name = val;
+ }
+ }
+#define FROB(slot) \
+ else if (EQ (key, Q_##slot)) \
+ { \
+ if (!EQ (pgui_item->slot, val)) \
+ { \
+ retval = 1; \
+ pgui_item->slot = val; \
+ } \
+ }
+ FROB (suffix)
+ FROB (active)
+ FROB (included)
+ FROB (config)
+ FROB (filter)
+ FROB (style)
+ FROB (selected)
+ FROB (keys)
+ FROB (callback)
+ FROB (callback_ex)
+ FROB (value)
+#undef FROB
else if (EQ (key, Q_key_sequence)) ; /* ignored for FSF compatibility */
else if (EQ (key, Q_label)) ; /* ignored for 21.0 implement in 21.2 */
else if (EQ (key, Q_accelerator))
{
- if (SYMBOLP (val) || CHARP (val))
- pgui_item->accelerator = val;
- else if (ERRB_EQ (errb, ERROR_ME))
- syntax_error ("Bad keyboard accelerator", val);
+ if (!EQ (pgui_item->accelerator, val))
+ {
+ retval = 1;
+ if (SYMBOLP (val) || CHARP (val))
+ pgui_item->accelerator = val;
+ else if (ERRB_EQ (errb, ERROR_ME))
+ syntax_error ("Bad keyboard accelerator", val);
+ }
}
else if (ERRB_EQ (errb, ERROR_ME))
syntax_error_2 ("Unknown keyword in gui item", key,
pgui_item->name);
+ return retval;
}
void
return gui_item;
}
+/* This will only work with descriptors in the new format. */
+Lisp_Object
+widget_gui_parse_item_keywords (Lisp_Object item)
+{
+ int i, length;
+ Lisp_Object *contents;
+ Lisp_Object gui_item = allocate_gui_item ();
+ Lisp_Object desc = find_keyword_in_vector (item, Q_descriptor);
+
+ CHECK_VECTOR (item);
+ length = XVECTOR_LENGTH (item);
+ contents = XVECTOR_DATA (item);
+
+ if (!NILP (desc) && !STRINGP (desc) && !VECTORP (desc))
+ syntax_error ("Invalid GUI item descriptor", item);
+
+ if (length & 1)
+ {
+ if (!SYMBOLP (contents [0]))
+ syntax_error ("Invalid GUI item descriptor", item);
+ contents++; /* Ignore the leading symbol. */
+ length--;
+ }
+
+ for (i = 0; i < length;)
+ {
+ Lisp_Object key = contents [i++];
+ Lisp_Object val = contents [i++];
+ gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_NOT);
+ }
+
+ return gui_item;
+}
+
+/* Update a gui item from a partial descriptor. */
+int
+update_gui_item_keywords (Lisp_Object gui_item, Lisp_Object item)
+{
+ int i, length, retval = 0;
+ Lisp_Object *contents;
+
+ CHECK_VECTOR (item);
+ length = XVECTOR_LENGTH (item);
+ contents = XVECTOR_DATA (item);
+
+ if (length & 1)
+ {
+ if (!SYMBOLP (contents [0]))
+ syntax_error ("Invalid GUI item descriptor", item);
+ contents++; /* Ignore the leading symbol. */
+ length--;
+ }
+
+ for (i = 0; i < length;)
+ {
+ Lisp_Object key = contents [i++];
+ Lisp_Object val = contents [i++];
+ if (gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_NOT))
+ retval = 1;
+ }
+ return retval;
+}
+
Lisp_Object
gui_parse_item_keywords (Lisp_Object item)
{
write_c_string (buf, printcharfun);
}
-static Lisp_Object
+Lisp_Object
copy_gui_item (Lisp_Object gui_item)
{
Lisp_Object ret = allocate_gui_item ();
void get_gui_callback (Lisp_Object, Lisp_Object *, Lisp_Object *);
int gui_item_equal_sans_selected (Lisp_Object obj1, Lisp_Object obj2, int depth);
+
+
+
extern int popup_up_p;
/************************************************************************/
#define CHECK_GUI_ITEM(x) CHECK_RECORD (x, gui_item)
#define CONCHECK_GUI_ITEM(x) CONCHECK_RECORD (x, gui_item)
-void gui_item_add_keyval_pair (Lisp_Object,
- Lisp_Object key, Lisp_Object val,
- Error_behavior errb);
+int update_gui_item_keywords (Lisp_Object gui_item, Lisp_Object item);
+Lisp_Object copy_gui_item (Lisp_Object gui_item);
+Lisp_Object widget_gui_parse_item_keywords (Lisp_Object item);
+int gui_item_add_keyval_pair (Lisp_Object gui_item,
+ Lisp_Object key, Lisp_Object val,
+ Error_behavior errb);
Lisp_Object gui_parse_item_keywords (Lisp_Object item);
Lisp_Object gui_parse_item_keywords_no_errors (Lisp_Object item);
void gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item);
# endif /* GNUC */
#endif
+/* No type has a greater alignment requirement than max_align_t.
+ (except perhaps for types we don't use, like long double) */
+typedef union
+{
+ struct { long l; } l;
+ struct { void *p; } p;
+ struct { void (*f)(void); } f;
+ struct { double d; } d;
+} max_align_t;
+
#ifndef ALIGNOF
# if defined (__GNUC__) && (__GNUC__ >= 2)
-# define ALIGNOF(x) __alignof__ (x)
+/* gcc has an extension that gives us exactly what we want. */
+# define ALIGNOF(type) __alignof__ (type)
+# elif ! defined (__cplusplus)
+/* The following is mostly portable, except that:
+ - it doesn't work for inside out declarations like void (*) (void).
+ (so just call ALIGNOF with a typedef'ed name)
+ - it doesn't work with C++. The C++ committee has decided,
+ in its infinite wisdom, that:
+ "Types must be declared in declarations, not in expressions." */
+# define ALIGNOF(type) offsetof (struct { char c; type member; }, member)
# else
-# define ALIGNOF(x) sizeof (x)
+/* The following should be completely portable, but might give values
+ that are larger than necessary. But never larger than the maximum
+ possible alignment. */
+# define ALIGNOF(type) \
+((sizeof (type) % sizeof (max_align_t)) == 0 ? \
+ sizeof (max_align_t) : \
+ (sizeof (type) % sizeof (max_align_t)))
# endif
-#endif
+#endif /* ALIGNOF */
#define ALIGN_SIZE(len, unit) \
((((len) + (unit) - 1) / (unit)) * (unit))
/* #### Yuck, this is kind of evil */
#define ALIGN_PTR(ptr, unit) \
- ((void *) ALIGN_SIZE ((long) (ptr), unit))
+ ((void *) ALIGN_SIZE ((size_t) (ptr), unit))
#ifndef DO_NOTHING
#define DO_NOTHING do {} while (0)
lrecord_type_devmode,
lrecord_type_mswindows_dialog_id,
lrecord_type_case_table,
+ lrecord_type_free, /* only used for "free" lrecords */
+ lrecord_type_undefined, /* only used for debugging */
lrecord_type_last_built_in_type /* must be last */
};
#ifndef INCLUDED_opaque_h_
#define INCLUDED_opaque_h_
-typedef union
-{
- struct { Lisp_Object obj; } obj;
- struct { void *p; } p;
- struct { double d; } d;
-} max_align_t;
-
typedef struct Lisp_Opaque
{
struct lcrecord_header header;
+2001-01-20 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.42 "Poseidon" is released.
+
2001-01-17 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.41 "Polyhymnia" is released.
emacs_is_beta=t
emacs_major_version=21
emacs_minor_version=2
-emacs_beta_version=41
-xemacs_codename="Polyhymnia"
+emacs_beta_version=42
+xemacs_codename="Poseidon"
infodock_major_version=4
infodock_minor_version=0
infodock_build_version=8