Sync up with r21-4-14-chise-0_21-22.
[chise/xemacs-chise.git-] / PROBLEMS
index 5ef0d6a..dab9c7c 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -2,7 +2,7 @@
 
 This file describes various problems that have been encountered
 in compiling, installing and running XEmacs.  It has been updated for
-XEmacs 21.4.
+XEmacs 21.0.
 
 This file is rather large, but we have tried to sort the entries by
 their respective relevance for XEmacs, but may have not succeeded
@@ -17,48 +17,19 @@ Use `C-c C-f' to move to the next equal level of outline, and
 `C-c C-b' to move to previous equal level.  `C-h m' will give more
 info about the Outline mode.
 
-Also, try finding the things you need using one of the search commands
+Also, Try finding the things you need using one of the search commands
 XEmacs provides (e.g. `C-s').
 
-General advice:
-
-    WATCH OUT for your init file! (~/.xemacs/init.el or ~/.emacs)  If
-    you observe strange problems, invoke XEmacs with the `-vanilla'
-    option and see if you can repeat the problem.
-
-    Note that most of the problems described here manifest at RUN
-    time, even those described as BUILD problems.  It is quite unusual
-    for a released XEmacs to fail to build.  So a "build problem"
-    requires you to tweak the build environment, then rebuild XEmacs.
-    A "runtime problem" is one that can be fixed by proper
-    configuration of the existing build.  Compatibility problems and
-    Mule issues are generally runtime problems, but are treated
-    separately for convenience.
+A general advice:
+    WATCH OUT for .emacs file!  ~/.emacs is your Emacs init file.  If
+    you observe strange problems, invoke XEmacs with the `-q' option
+    and see if you can repeat the problem.
 
 
 * Problems with building XEmacs
 ===============================
 
 ** General
-    Much general information is in INSTALL.  If it's covered in
-    INSTALL, we don't repeat it here.
-
-*** How does I configure to get the buffer tabs/progress bars?
-
-These features depend on support for "native widgets".  Use the
---with-widgets option to configure.  Configuration of widgets is
-automatic for "modern" toolkits (MS Windows, GTK, and Motif), but if
-you are using Xt and the Athena widgets, you will probably want to
-specify a "3d" widget set.  See configure --usage, and don't forget to
-install the corresponding development libraries.
-
-*** I know I have libfoo installed, but configure doesn't find it.
-
-Typical of Linux systems with package managers.  To link with a shared
-library, you only need the shared library.  To compile objects that
-link with it, you need the headers---and distros don't provide them with
-the libraries.  You need the additional "development" package, too.
-
 *** Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
 without also using `-fno-schedule-insns'.
 
@@ -216,33 +187,6 @@ Valdis.Kletnieks@vt.edu writes:
 
 
 ** SunOS/Solaris
-*** Crashes when using Motif libraries, especially with multiple frames.
-
-Crashes that produce C-backtraces like this:
-
-#0  0xfec9a118 in _libc_kill () from /usr/lib/libc.so.1
-#1  0x77f48 in fatal_error_signal (sig=11)
-    at /codes/rpluim/xemacs-21.4/src/emacs.c:539
-#2  <signal handler called>
-#3  0xfee929f4 in XFindContext () from /usr/openwin/lib/libX11.so.4
-#4  0xfee92930 in XFindContext () from /usr/openwin/lib/libX11.so.4
-#5  0xff297e54 in DisplayDestroy () from /usr/dt/lib/libXm.so.4
-#6  0xfefbece0 in XtCallCallbackList () from /usr/openwin/lib/libXt.so.4
-#7  0xfefc486c in XtPhase2Destroy () from /usr/openwin/lib/libXt.so.4
-#8  0xfefc45d0 in _XtDoPhase2Destroy () from /usr/openwin/lib/libXt.so.4
-#9  0xfefc43b4 in XtDestroyWidget () from /usr/openwin/lib/libXt.so.4
-#10 0x15cf9c in x_delete_device (d=0x523f00)
-
-are caused by buggy Motif libraries.  Installing the following patches
-has been reported to solve the problem on Solaris 2.7:
-
-107081-40 107656-07
-
-For information (although they have not been confirmed to work), the
-equivalent patches for Solaris 2.8 are:
-
-108940-33 108652-25
-
 *** Dumping error when using GNU binutils / GNU ld on a Sun.
 
 Errors similar to the following:
@@ -268,10 +212,6 @@ normally held in /usr/ccs/bin.  This can be done by one of:
 
 - uninstalling GNU ld.
 
-- configuring XEmacs with these environment settings (suggested by
-  Goran Koruga <goran.koruga@hermes.si>):
-  LD=/usr/ccs/bin/ld AS=/usr/ccs/bin/as configure
-
 The Solaris2 FAQ claims:
 
     When you install gcc, don't make the mistake of installing
@@ -612,38 +552,12 @@ Note: Much of the above entry is probably not valid for XEmacs 21.0
 and later.
 
 ** Cygwin
-
 *** In general use etc/check_cygwin_setup.sh to trap environment problems.
 
 The script etc/check_cygwin_setup.sh will attempt to detect whether
-you have a suitable environment for building.  This script may not work
+you have a suitable environment for building. This script may not work
 correctly if you are using ash instead of bash (see below).
 
-*** Syntax errors running configure scripts, make failing with exit code 127
-    in inexplicable situations, etc.
-
-This may be because you are using the default cygwin shell.  The
-default cygwin shell (/bin/sh.exe) is ash which appears to work in
-most circumstances but has some weird failure modes.  You need to
-replace the symlink with bash.exe.
-
-*** Lots of compile errors, esp. on lines containing macro definitions
-    terminated by backslashes.
-
-Your partition holding the source files is mounted binary.  It needs
-to be mounted text. (This will not screw up any binary files because
-the Cygwin utilities specify explicitly whether they want binary or
-text mode when working with source vs. binary files, which overrides
-the mount type.) To fix this, you just need to run the appropriate
-mount command once -- afterwards, the settings are remembered in the
-registry.
-
-*** Errors from make like /c:not found.
-
-make sure you set the environment variable MAKE_MODE to UNIX in your
-.bashrc, Control Panel (Windows 2000/NT), or AUTOEXEC.BAT (Windows
-98/95).
-
 *** X11 not detected.
 
 This is usually because xmkmf is not in your path or because you are
@@ -654,9 +568,10 @@ mean configure is slower but more reliable.
 
 *** Subprocesses do not work.
 
-You do not have "tty" in your CYGWIN environment variable. This must
-be set in your autoexec.bat (win95) or the system properties (winnt)
-as it must be read before the cygwin DLL initializes.
+You do not have "tty" in your CYGWIN32 (for b19) or CYGWIN (for b20)
+environment variable. This must be set in your autoexec.bat (win95) or
+the system properties (winnt) as it must be read before the cygwin dll
+initializes.
 
 *** ^G does not work on hung subprocesses.
 
@@ -664,6 +579,17 @@ This is a known problem. It can be remedied with cygwin b20 or greater
 by defining BROKEN_SIGIO in src/s/cygwin32.h, however this currently
 leads to instability in XEmacs.
 
+*** The XEmacs executable crashes at startup.
+
+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.
+
+If you are running with cygwin b19 make sure you are using egcs 1.0.2
+rather than vanilla gcc. XEmacs builds by default with -O3 which does
+not work with the gcc that ships with b19. Alternatively use -O2.
+
 *** The info files will not build.
 
 makeinfo that ships with cygwin (all versions) is a noop. You need to
@@ -671,9 +597,9 @@ obtain makeinfo from somewhere or build it yourself.
 
 *** I have no graphics.
 
-You need to obtain the various graphics libraries.  Pre-built versions
+You need to obtain the various graphics libraries. Pre-built versions
 of these and the X libraries are located on the XEmacs website in
-ftp://ftp.xemacs.org/pub/aux/cygwin/.
+ftp://ftp.xemacs.org/pub/aux/cygwin*.
 
 *** There are no images in the toolbar buttons.
 
@@ -685,83 +611,6 @@ microsoft website.
 * Problems with running XEmacs
 ==============================
 ** General
-
-*** XEmacs crashes mysteriously.
-
-Check whether XEmacs was configured --use-union-type.  Many compilers
-are known to treat union types incompatibly with proper functioning of
-the Lisp_Object type.  (Whether this is a compiler bug or nonstandard-
-conforming code in XEmacs is a moot point.)  Especially with
---with-mule, --pdump, and/or non-null --error-checking, this is known
-to produce an unreliable build with many versions of MS VC++ and GCC,
-and similar problems are likely to occur with other compilers.
-
-Symptoms are similar to garbage collection and other "wild pointer"
-bugs, ie, stack-smashing and other hard-to-debug crashes in unrelated
-code.  Try reconfiguring and building without --use-union-type.
-
---use-union-type _is_ useful to get improved _static_ type checking of
-Lisp objects.  It is theoretically possible that it might help with
-aliasing bugs under optimization and improve runtime stability, but in
-practice exactly the opposite seems to be true.  If you don't work on
-XEmacs C code directly, then avoid --use-union-type entirely for now.
-
-*** XEmacs crashes mysteriously in regexp-intensive applications (eg, Gnus)
-
-The regexp implementation used in XEmacs uses alloca by default for
-efficiency.  alloca provides no reliable way to check for out of
-memory (in this case, stack).  Normally not a problem, except for
-systems with very small default stack allocations, and applications
-that use multi-line regular expressions (ie, explicitly including ?\n)
-in moderately large files (> 100kB or so).
-
-You may get relief by increasing the amount of stack space allocated
-to your XEmacs process (a system-dependent operation, ask your
-administrator or local experts for help), or by recompiling the regexp
-module regex.c with REGEX_MALLOC defined, relinking, and redumping.
-
-*** At startup I get a warning on stderr about missing charsets:
-
-    Warning: Missing charsets in String to FontSet conversion
-
-You need to specify appropriate charsets for your locale (usually the
-value of the LANG environment variable) in .Xresources.  See
-etc/Emacs.ad for the relevant resources (mostly menubar fonts and
-fontsets).  Do not edit this file, it's purely informative.
-
-If you have no satisfactory fonts for iso-8859-1, XEmacs will crash.
-
-It looks like XFree86 4.x (the usual server on Linux and *BSD) has
-some braindamage where .UTF-8 locales will always generate this
-message, because the XFree86 (font)server doesn't know that UTF-8 will
-use the ISO10646-1 font registry (or a Cmap or something).
-
-If you are not using a .UTF-8 locale and see this warning for a
-character set not listed in the default in Emacs.ad, please let
-xemacs-beta@xemacs.org know about it, so we can add fonts to the
-appropriate fontsets and stifle this warning.  (Unfortunately it's
-buried in Xlib, so we can't easily get rid of it otherwise.)
-
-*** Whenever I try to retrieve a remote file, I have problems.
-
-A typical error: FTP Error: USER request failed; 500 AUTH not understood.
-Thanks to giacomo boffi <giacomo.boffi@polimi.it> on comp.emacs.xemacs:
-
-   tell your ftp client to not attempt AUTH authentication (or do not
-   use FTP servers that don't understand AUTH)
-
-and notes that you need to add an element (often "-u") to
-`efs-ftp-program-args'.  Use M-x customize-variable, and verify the
-needed flag with `man ftp' or other local documentation.
-
-*** gnuserv is running, some clients can connect, but others cannot.
-
-The code in gnuslib.c respects the value of TMPDIR.  If the server and
-the client have different values in their environment, you lose.
-One program known to set TMPDIR and manifest this problem is exmh.
-You can defeat the use of TMPDIR by unsetting USE_TMPDIR at the top of
-gnuserv.h at build time.
-
 *** C-z just refreshes the screen instead of suspending Emacs.
 
 You are probably using a shell that doesn't support job control, even
@@ -877,7 +726,7 @@ may need to add "#define static" to the m- or the s- file.
 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
-xemacs-beta@xemacs.org if you figure this one out.
+xemacs@xemacs.org if you figure this one out.
 
 *** When emacs starts up, I get lots of warnings about unknown keysyms.
 
@@ -1056,7 +905,7 @@ 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
-<xemacs-beta@xemacs.org>.
+<xemacs@xemacs.org>.
 
 *** Screen is updated wrong, but only on one kind of terminal.
 
@@ -1246,20 +1095,6 @@ Use the following instead
        Emacs*EmacsFrame.geometry:              81x56--9--1
 
 
-** MacOS/X, Darwin
-*** XEmacs crashes on MacOS within font-lock, or when dealing
-with large compilation buffers, or in other regex applications.
-
-The default stack size under MacOS/X is rather small (512k as opposed
-to Solaris 8M), hosing the regexp code, which uses alloca()
-extensively, overflowing the stack when complex regexps are used.
-Workarounds:
-
-1) Increase your stack size, using `ulimit -s 8192' or a (t)csh
-   equivalent;
-
-2) Recompile regex.c with REGEX_MALLOC defined.
-
 ** AIX
 *** Your Delete key sends a Backspace to the terminal, using an AIXterm.
 
@@ -1462,76 +1297,6 @@ affected virtually all ioctl() calls.
 
 
 ** Linux
-*** XEmacs crashes on exit.
-
-This is known to happen with Lesstif version 0.93.36.  It is
-apparently due to breakage in Lesstif.  There is a patch for Lesstif.
-
-Frank McIngvale <frankm@hiwaay.net> says:
-
-    Ok, 0.93.34 works, and I tracked down the crash to a section
-    marked "experimental" in 0.93.36. Patch attached, "works for me".
-
-diff -u -r lesstif-0.93.36/lib/Xm/ImageCache.c lesstif-0.93.36-mod/lib/Xm/ImageCache.c
---- lesstif-0.93.36/lib/Xm/ImageCache.c        2002-08-05 14:53:24.000000000 -0500
-+++ lesstif-0.93.36-mod/lib/Xm/ImageCache.c    2002-11-11 11:13:12.000000000 -0600
-@@ -1166,5 +1166,4 @@
-       DEBUGOUT(_LtDebug0(__FILE__, NULL, "_LtImageCacheScreenDestroy (XmGetPixmapByDepth) %p\n",
-               s));
--      (void) _LTHashTableForEachItem(PixmapCache, YowIter, (XtPointer)s);
- }
-
-
-*** XEmacs crashes on startup, in make-frame.
-
-Typically the Lisp backtrace includes
-
-   make-frame(nil #<x-device on ":0.0" 0x2558>)
-
-somewhere near the top.  One problem is due to an improvement in GNU
-ld that sorts the ELF reloc sections in the executable, giving
-dramatic speedups in startup for large executables.  It also confuses
-the traditional unexec code in XEmacs, leading to the core dump.  The
-solution is to use either the `--ldflags="-z nocombreloc" or the
-"--pdump" option to configure.  "--pdump" is recommended.
-
-Recent 21.4 and 21.5 versions of XEmacs autodetect this feature of ld
-in configure.  Unfortunately, Red Hat and SuSE (at least) distributed
-prerelease versions of ld (numbered around 2.11.90.x.y, nicknamed
-"Hannibal Lecter" at XEmacs.ORG) where autodetection fails but the
-feature is enabled by default.  The recommended procedure is to
-upgrade to binutils >= 2.12 and rerun configure.  Otherwise you must
-apply the flags by hand.
-
-Andrew Jaffe reported a problem on Red Hat 7.3 with identical
-symptoms, except that ld was already being invoked with -z
-nocombreloc.  Switching dialogs and widgets from Motif to Athena
-eliminated the problem.  Both LessTif and OpenMotif were installed,
-and a bad interaction is suspected.  This problem has not yet been
-fully analyzed.
-
-*** Debian
-**** XEmacs warns "Symbol `toggleClassRec' has different size in shared
-     object, consider re-linking / Symbol `labelClassRec' has different
-     size in shared object, consider re-linking / Warning: Representation
-     size 4 must match superclass's to override value"
-
-Sometimes this results in segfaults when using the tab control widget
-or a progress bar widget.
-
-Some versions of Debian install 3D versions of the Athena widget
-library as /usr/X11R6/lib/libXaw.so.  We have not yet solved the
-problem of identifying the actual library in use in ./configure, so it
-is possible for XEmacs to be compiled with reference to headers for
-"flat" Xaw but find a "3D" Xaw when loading.
-
-The straightforward solution is to rebuild XEmacs with additional
-configure options: --with-widgets=athena --with-athena=3d.
-
-There are several 3D Athena widget sets available; to see which ones
-are supported by XEmacs, use ./configure --usage.
-
 *** Mandrake
 
 The Mandrake Linux distribution is attempting to comprehensively
@@ -1550,19 +1315,6 @@ XEmacs to use the Alt key" below.
 The color-gcc wrapper (see below) is in common use on the Mandrake
 platform.
 
-*** XEmacs configured with ESD crashes with a segmentation violation
-
-This often occurs when a progress bar pops up.
-
-The problem is that the ESD sound daemon manipulates interrupts in a
-way that disagrees with XEmacs.  The currently available workaround is
-not very satisfactory: remove ESD support.  Rebuild after
-reconfiguring with the option --with-sound=none[,native][,nas]
-
-The funny syntax (requiring the initial "none") is for backward
-compatibility, and may change.  Native sound and NAS do not cause the
-problem, so they may be added to the option to get some sound support.
-
 *** I want XEmacs to use the Alt key, not the XXX key, for Meta commands
 
 For historical reasons, XEmacs looks for a Meta key, then an Alt key.
@@ -1605,6 +1357,30 @@ http://www.geocities.com/kensanata/color-emacs.html#ansicolors
 This is written for the mainline GNU Emacs but the author has made
 efforts to adapt it to XEmacs.  YMMV.
 
+*** You get crashes in a non-C locale with Linux GNU Libc 2.0.
+
+Internationalization was not the top priority for GNU Libc 2.0.
+As of this writing (1998-12-28) you may get crashes while running
+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
+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.
+
+If you build with `gpm' support on Linux, you cannot suspend XEmacs
+because gpm installs a buggy SIGTSTP handler.  Either compile with
+`--with-gpm=no', or don't suspend XEmacs on the Linux console until
+this bug is fixed.
+
+*** With certain fonts, when the cursor appears on a character, the
+character doesn't appear--you get a solid box instead.
+
+One user on a Linux system reported that this problem went away with
+installation of a new X server.  The failing server was XFree86 3.1.1.
+XFree86 3.1.2 works.
+
 *** Slow startup on Linux.
 
 People using systems based on the Linux kernel sometimes report that
@@ -1653,9 +1429,9 @@ file is not necessary with this approach.
 A newer problem is due to XEmacs changing to use the modern
 getaddrinfo() interface from the older gethostbyname() interface.  The
 solution above is insufficient, because getaddrinfo() by default tries
-to get IPv6 information for localhost (including the local X server).
-This always involves a dns lookup to get the CNAME, and the strategies
-above don't work.  It then falls back to IPv4 behavior.
+to get IPv6 information for localhost.  This always involves a dns
+lookup to get the CNAME, and the strategies above don't work.  It then
+falls back to IPv4 behavior.  This is good[tm]; trust us.
 
 ***** Robust network case
 
@@ -1671,45 +1447,23 @@ IPv4 behavior.  Explicitly setting DISPLAY=127.0.0.1:0.0 (or whatever
 is appropriate) works in most cases.
 
 If you cannot or do not want to do that, you can hard code IPv4
-behavior in src/process-unix.c.  Add `--with-ipv6-cname=no" to your
-configure options and rebuild XEmacs.
-
-*** XEmacs disappears after several sound events in succession
+behavior in src/process-unix.c.  This is bad[tm], on your own head be
+it.  In the function unix_canonicalize_host_name() about ten lines
+down, change the statement
 
-If esd is not running (e.g. you unchecked the run esd checkbox in the
-GNOME Configuration tool), every sound event will cause the esound
-client library to signal SIGUSR1.  It is not that difficult (hold down
-PgUp or PgDn, for example) to cause XEmacs to generate additional
-SIGUSR1 signals before the first handler has a chance to reset, so the
-second SIGUSR1 causes the default behavior of ending the process.
+  hints.ai_family = AF_UNSPEC;
 
-The solution is either to build XEmacs with -sound=native,noesd or to make sure
-that esd is in fact running. 
-
-*** You get crashes in a non-C locale with Linux GNU Libc 2.0.
+to
 
-Internationalization was not the top priority for GNU Libc 2.0.
-As of this writing (1998-12-28) you may get crashes while running
-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
-everyone will upgrade to GNU Libc 2.1 and this problem will go away.
+  hints.ai_family = PF_INET;
 
-*** `C-z', or `M-x suspend-emacs' hangs instead of suspending.
+and rebuild XEmacs.
 
-If you build with `gpm' support on Linux, you cannot suspend XEmacs
-because gpm installs a buggy SIGTSTP handler.  Either compile with
-`--with-gpm=no', or don't suspend XEmacs on the Linux console until
-this bug is fixed.
+getaddrinfo() is also called in src/sysdep.c:init_system_name() and in
+src/process-unix.c:unix_open_network_stream().  It should not be
+useful to make this change in either of those places.
 
-*** With certain fonts, when the cursor appears on a character, the
-character doesn't appear--you get a solid box instead.
 
-One user on a Linux system reported that this problem went away with
-installation of a new X server.  The failing server was XFree86 3.1.1.
-XFree86 3.1.2 works.
 ** IRIX
 *** On Irix, I don't see the toolbar icons and I'm getting lots of
 entries in the warnings buffer.
@@ -1744,7 +1498,7 @@ systems is a C++ lib, which apparently XEmacs cannot cope with.
 
 ** Digital UNIX/OSF/VMS/Ultrix
 *** XEmacs crashes on Digital Unix within font-lock, or when dealing
-with large compilation buffers, or in other regex applications.
+with large compilation buffers.
 
 The default stack size under Digital Unix is rather small (2M as
 opposed to Solaris 8M), hosing the regexp code, which uses alloca()
@@ -1942,46 +1696,14 @@ GCC.
 
 
 ** Windows
-*** In general, the Windows code is less mature than the Unix code.
-
-The Windows code base is still changing quickly.  If you are
-experiencing problems, try the latest beta version to see if the
-problem still exists.  Also ask on xemacs-nt@xemacs.org.
-
-
-** Cygwin
-*** XEmacs fails to start because cygXpm-noX4.dll was not found.
+*** Emacs exits with "X protocol error" when run with an X server for
+Windows.
 
-Andy Piper <andy@xemacs.org> sez:
+A certain X server for Windows had a bug which caused this.
+Supposedly the newer 32-bit version of this server doesn't have the
+problem.
 
-    cygXpm-noX4 is part of the cygwin distribution under libraries or
-    graphics, but is not installed by default. You need to run the
-    cygwin setup again and select this package.
-
-*** Subprocesses do not work.
-You do not have "tty" in your CYGWIN environment variable.  This must
-be set in your autoexec.bat (win95) or the system properties (winnt)
-as it must be read before the cygwin DLL initializes.
-
-*** ^G does not work on hung subprocesses.
 
-This is a known problem. It can be remedied by defining BROKEN_SIGIO
-in src/s/cygwin.h, however this currently leads to instability in XEmacs.
-(#### is this still true?)
-
-*** Errors from make like `/c:not found' when running `M-x compile'.
-
-Make sure you set the environment variable MAKE_MODE to UNIX in your
-init file (.xemacs/init.el), Control Panel (Windows 2000/NT), or
-AUTOEXEC.BAT (Windows 98/95).
-
-*** There are no images in the toolbar buttons.
-
-You need version 4.71 of commctrl.dll which does not ship with windows
-95. You can get this by installing IE 4.0 or downloading it from the
-microsoft website.
 
 * Compatibility problems (with Emacs 18, GNU Emacs, or previous XEmacs/lemacs)
 ==============================================================================