+Q1.4.1: Where can I get help?
+-----------------------------
+
+Probably the easiest way, if everything is installed, is to use Info, by
+pressing `C-h i', or looking for an Info item on the Help Menu. `M-x
+apropos' can be used to look for particular commands.
+
+ For items not found in the manual, try reading this FAQ and reading
+the Usenet group comp.emacs.xemacs.
+
+ If you choose to post to a newsgroup, *please use
+comp.emacs.xemacs*. Please do not post XEmacs related questions to
+gnu.emacs.help.
+
+ If you cannot post or read Usenet news, there is a corresponding
+mailing list <xemacs-news@xemacs.org> which is available. It can be
+subscribed to via the Mailman Web interface or by sending mail to to
+<xemacs-news-request@xemacs.org> with `subscribe' in the body of the
+message. See also `http://www.xemacs.org/Lists/#xemacs-news'. To
+cancel a subscription, you may use the <xemacs-news-request@xemacs.org>
+address or the Web interface. Send a message with a subject of
+`unsubscribe' to be removed.
+
+\1f
+File: xemacs-faq.info, Node: Q1.4.2, Next: Q1.4.3, Prev: Q1.4.1, Up: Introduction
+
+Q1.4.2: Which mailing lists are there?
+--------------------------------------
+
+For complete, up-to-date info on the lists and how to subscribe, see
+`http://www.xemacs.org/Lists/'.
+
+`comp.emacs.xemacs'
+ is a Usenet newsgroup for XEmacs users to discuss problems and
+ issues that arise for them. It's not generally an appropriate
+ place to ask about apparent bugs (use `xemacs-beta'), or future
+ plans (use `xemacs-design').
+
+`xemacs-announce'
+ is a read-only, low volume list for announcements concerning the
+ XEmacs project and new releases of the XEmacs software.
+
+`xemacs-beta'
+ is an open list for bug reports about beta versions of XEmacs.
+ This includes the bug reports themselves, by both users and
+ developers, as well as queries, follow-ups, and discussions
+ further determining their nature and status. This is the primary
+ channel for this kind of discussion; related code changes will
+ usually not be applied until they have been discussed here. When
+ such discussions touch on significant changes to the code (in
+ particular, structural changes), or on changes to API's or
+ external functionality, they should be moved to `xemacs-design'.
+ Requests and proposals for non-bug-related changes do not belong
+ on `xemacs-beta', and should be sent to `xemacs-design' instead.
+
+`xemacs-beta-ja'
+ is an open list for bug reports and design discussion related to
+ Mule features, including Japanese handling, in beta versions of
+ XEmacs. Japanese is the preferred language of discussion. For
+ most timely presentation to reviewers, please consider sending
+ appropriate discussion to `xemacs-mule' or `xemacs-design' in
+ English when convenient for the participants in discussion. When
+ possible, bug reports not related to Mule (including Japanese)
+ should be reported on `xemacs-beta' in English.
+
+`xemacs-buildreports'
+ is an open list for submission of build-reports on beta versions
+ of XEmacs. For information on what the build-reports should
+ contain, please see the `etc/BETA' file which is included in each
+ beta distribution.
+
+`xemacs-cvs'
+ is a read-only list for notices and information on what has been
+ committed to the XEmacs CVS trees, by whom, and for what.
+
+`xemacs-design'
+ is an open list for discussing the design of XEmacs. This
+ includes discussion about planned and ongoing changes to
+ functionality and API changes and additions as well as requests
+ for them. This is the primary channel for this kind of
+ discussion; related code changes will usually not be applied until
+ they have been discussed here. This does not include bug reports,
+ which go to `xemacs-beta'.
+
+`xemacs-mule'
+ is an open mailing list for discussion of International extensions
+ to XEmacs including Mule, XIM, I18n issues, etc, and is not
+ confined to developmental issues. This list is not restricted to
+ English, postings in all languages are welcome.
+
+`xemacs-news'
+ is an open list for discussion and bug reporting for XEmacs. This
+ mailing list is bi-directionally gatewayed with the USENET
+ newsgroup comp.emacs.xemacs.
+
+`xemacs-nt'
+ is a developers-only mailing list and is intended for people who
+ wish to work actively on the porting of XEmacs to Microsoft
+ Windows NT and Microsoft Windows '95.
+
+`xemacs-patches'
+ is an open, moderated list for submission of patches to the XEmacs
+ distribution and its packages. Anyone may subscribe or submit to
+ xemacs-patches, but all submissions are reviewed by the list
+ moderator before they are distributed to the list. Discussion is
+ not appropriate on xemacs-patches.
+
+`xemacs-users-ja'
+ is an open list for discussion and bug reporting for XEmacs.
+ Japanese is the preferred language of discussion. It is not gated
+ to comp.emacs.xemacs or the `xemacs' list. For fastest response,
+ bugs not specifically related to Japanese or Mule features should
+ be reported on `xemacs-beta' (in English).
+
+`xemacs-users-ru'
+ is an open list for discussion and bug reporting for XEmacs.
+ Russian is the preferred language of discussion. It is not gated
+ to comp.emacs.xemacs or the `xemacs' list. For fastest response,
+ bugs not specifically related to Russian or Mule features should
+ be reported on `xemacs-beta' (in English).
+
+\1f
+File: xemacs-faq.info, Node: Q1.4.3, Next: Q1.4.4, Prev: Q1.4.2, Up: Introduction
+
+Q1.4.3: Where are the mailing lists archived?
+---------------------------------------------
+
+The archives can be found at `http://list-archive.xemacs.org'
+
+\1f
+File: xemacs-faq.info, Node: Q1.4.4, Next: Q1.4.5, Prev: Q1.4.3, Up: Introduction
+
+Q1.4.4: How can I get two instances of info?
+--------------------------------------------
+
+Before 21.4, you can't. The `info' package does not provide for
+multiple info buffers. In 21.4, this should be fixed. #### how?
+
+\1f
+File: xemacs-faq.info, Node: Q1.4.5, Next: Q1.5.1, Prev: Q1.4.4, Up: Introduction
+
+Q1.4.5: How do I add new Info directories?
+------------------------------------------
+
+You use something like:
+
+ (setq Info-directory-list (cons
+ (expand-file-name "~/info")
+ Info-default-directory-list))
+
+ David Masterson <davidm@prism.kla.com> writes:
+
+ Emacs Info and XEmacs Info do many things differently. If you're
+ trying to support a number of versions of Emacs, here are some
+ notes to remember:
+
+ 1. Emacs Info scans `Info-directory-list' from right-to-left
+ while XEmacs Info reads it from left-to-right, so append to
+ the _correct_ end of the list.
+
+ 2. Use `Info-default-directory-list' to initialize
+ `Info-directory-list' _if_ it is available at startup, but not
+ all Emacsen define it.
+
+ 3. Emacs Info looks for a standard `dir' file in each of the
+ directories scanned from #1 and magically concatenates them
+ together.
+
+ 4. XEmacs Info looks for a `localdir' file (which consists of
+ just the menu entries from a `dir' file) in each of the
+ directories scanned from #1 (except the first), does a simple
+ concatenation of them, and magically attaches the resulting
+ list to the end of the menu in the `dir' file in the first
+ directory.
+
+ Another alternative is to convert the documentation to HTML with
+ texi2html and read it from a web browser like Lynx or W3.
+
+1.5: Contributing to XEmacs
+===========================
+
+\1f
+File: xemacs-faq.info, Node: Q1.5.1, Next: Q1.5.2, Prev: Q1.4.5, Up: Introduction
+
+Q1.5.1: How do I submit changes to the FAQ?
+-------------------------------------------
+
+The FAQ is actively maintained and modified regularly. All links should
+be up to date. Unfortunately, some of the information is out of date -
+a situation which the FAQ maintainer is working on. All submissions are
+welcome, please e-mail submissions to XEmacs FAQ maintainers
+<faq@xemacs.org>.
+
+ Please make sure that `XEmacs FAQ' appears on the Subject: line. If
+you think you have a better way of answering a question, or think a
+question should be included, we'd like to hear about it. Questions and
+answers included into the FAQ will be edited for spelling and grammar
+and will be attributed. Answers appearing without attribution are
+either from versions of the FAQ dated before May 1996 or are from
+previous FAQ maintainers. Answers quoted from Usenet news articles will
+always be attributed, regardless of the author.
+
+\1f
+File: xemacs-faq.info, Node: Q1.5.2, Next: Q1.5.3, Prev: Q1.5.1, Up: Introduction
+
+Q1.5.2: How do I become a beta tester?
+--------------------------------------
+
+Send an email message to <xemacs-beta-request@xemacs.org> with the line
+`subscribe' in the body of the message.
+
+ Be prepared to get your hands dirty, as beta testers are expected to
+identify problems as best they can.
+
+\1f
+File: xemacs-faq.info, Node: Q1.5.3, Next: Q1.5.4, Prev: Q1.5.2, Up: Introduction
+
+Q1.5.3: How do I contribute to XEmacs itself?
+---------------------------------------------
+
+It depends on the knowledge and time you possess. If you are able, by
+all means become a beta tester (*note Q1.5.2::). If you are a
+programmer, try to build XEmacs and see if you can improve it.
+
+ Otherwise, you can still help by using XEmacs as your everyday editor
+(for pre-built binary versions, *note Q1.1.2::) and reporting bugs you
+find to the mailing list.
+
+ Another area where we need help is the documentation: We need good
+documentation for building XEmacs and for using it. This FAQ is a
+small step in that direction.
+
+ Ben Wing <ben@xemacs.org> writes:
+
+ BTW if you have a wish list of things that you want added, you
+ have to speak up about it! More specifically, you can do the
+ following if you want a feature added (in increasing order of
+ usefulness):
+
+ * Make a posting about a feature you want added.
+
+ * Become a beta tester and make more postings about those same
+ features.
+
+ * Convince us that you're going to use the features in some
+ cool and useful way.
+
+ * Come up with a clear and well-thought-out API concerning the
+ features.
+
+ * Write the code to implement a feature and send us a patch.
+
+ (not that we're necessarily requiring you to write the code, but
+ we can always hope :)
+
+\1f
+File: xemacs-faq.info, Node: Q1.5.4, Next: Q1.5.5, Prev: Q1.5.3, Up: Introduction
+
+Q1.5.4: How do I get started developing XEmacs?
+-----------------------------------------------
+
+First, get yourself set up under CVS so that you can access the CVS
+repositories containing the XEmacs sources and the XEmacs packages.
+
+ Next, set up your layout. This is important, as a good layout will
+facilitate getting things done efficiently, while a bad layout will
+could lead to disaster, as you can't figure out which code is the most
+recent, which can be thrown away, etc. We suggest the following
+layout: (feel free to make changes)
+
+ * Everything goes under `/src/xemacs' (use a different directory if
+ you want). From now, instead of saying `/src/xemacs', we use
+ `<xsrc-top>', to make it easier in case someone picked a different
+ directory.
+
+ * Package source is in `<xsrc-top>/package-src'.
+
+ * Installed packages go under `<xsrc-top>/xemacs-packages', and
+ `<xsrc-top>/mule-packages'.
+
+ * A "workspace" is a complete copy of the sources, in which you do
+ work of a particular kind. Workspaces can be differentiated by
+ which branch of the source tree they extend off of - usually
+ either the stable or experimental, unless other branches have been
+ created (for example, Ben created a branch for his Mule work
+ because (1) the project was long-term and involved an enormous
+ number of changes, (2) people wanted to be able to look at what
+ his work in progress, and (3) he wanted to be able to check things
+ in and in general use source-code control, since it was a
+ long-term project). Workspaces are also differentiated in what
+ their purpose is - general working workspace, workspace for
+ particular projects, workspace keeping the latest copy of the code
+ in one of the branches without mods, etc.
+
+ * Various workspaces are subdirectories under `<xsrc-top>', e.g.:
+
+ * `<xsrc-top>/working' (the workspace you're actively working
+ on, periodically synched up with the latest trunk)
+
+ * `<xsrc-top>/stable' (for making changes to the stable version
+ of XEmacs, which sits on a branch)
+
+ * `<xsrc-top>/unsigned-removal' (a workspace for a specific,
+ difficult task that's going to affect lots of source and take
+ a long time, and so best done in its own workspace without
+ the interference of other work you're doing. Also, you can
+ commit just this one large change, separate from all the
+ other changes).
+
+ * `<xsrc-top>/latest' (a copy of the latest sources on the
+ trunk, i.e. the experimental version of XEmacs, with no
+ patches in it; either update it periodically, by hand, or set
+ up a cron job to do it automatically). Set it up so it can
+ be built, and build it so you have a working XEmacs.
+ (Building it might also go into the cron job.)
+
+ This workspace serves a number of purposes:
+ 1. You always have a recent version of XEmacs you can
+ compare against when something you're working on breaks.
+ It's true that you can do this with cvs diff, but when
+ you need to do some serious investigation, this method
+ just fails.
+
+ 2. You (almost) always have a working, up-to-date
+ executable that can be used when your executable is
+ crashing and you need to keep developing it, or when you
+ need an `xemacs' to build packages, etc.
+
+ 3. When creating new workspaces, you can just copy the
+ `latest' workspace using GNU `cp -a'. You have all the
+ .elc's built, everything else probably configured, any
+ spare files in place (e.g. some annoying xpm.dll under
+ Windows, etc.).
+
+ * `<xsrc-top>/latest-stable/' (equivalent to
+ `<xsrc-top>/latest/', but for the Stable branch of XEmacs,
+ rather than the Experimental branch of XEmacs). This may or
+ may not be necessary depending on how much development you do
+ of the stable branch.
+
+ * `<xsrc-top>/xemacsweb' is a workspace for working on the XEmacs
+ web site.
+
+ * `<xsrc-top>/in-patches' for patches received from email and saved
+ to files.
+
+ * `<xsrc-top>/out-patches' for locally-generated patches to be sent
+ to <xemacs-patches@xemacs.org>. Less useful now that the patcher
+ util has been developed.
+
+ * `<xsrc-top>/build', for build trees when compiling and testing
+ XEmacs with various configuration options turned off and on. The
+ scripts in xemacs-builds/ben (see below) can be used to automate
+ building XEmacs workspaces with many different configuration
+ options and automatically filtering out the normal output so that
+ you see only the abnormal output.
+
+ * `<xsrc-top>/xemacs-builds', for the xemacs-builds module, which
+ you need to check out separately in CVS. This contains scripts
+ used for building XEmacs, automating and simplifying using CVS,
+ etc. Under various people's directories are their own build and
+ other scripts. The currently most-maintained scripts are under
+ ben/, where there are easily configurable scripts that can be used
+ to easily build any workspace (esp. if you've more or less
+ followed the layout presented above) unattended, with one or more
+ configuration states (there's a pre-determined list of the most
+ useful, but it's easy to change). The output is filtered and
+ split up in various ways so that you can identify which output
+ came from where, and you can see the output either full or with
+ all "normal" output except occasional status messages filtered so
+ that you only see the abnormal ones.
+
+\1f
+File: xemacs-faq.info, Node: Q1.5.5, Next: Q1.6.1, Prev: Q1.5.4, Up: Introduction
+
+Q1.5.5: What's the basic layout of the code?
+--------------------------------------------
+
+The file `configure' is a shell script to acclimate XEmacs to the
+oddities of your processor and operating system. It will create a file
+named `Makefile' (a script for the `make' program), which helps
+automate the process of building and installing emacs. See INSTALL for
+more detailed information.
+
+ The file `configure.in' is the input used by the autoconf program to
+construct the `configure' script. Since XEmacs has configuration
+requirements that autoconf can't meet, `configure.in' uses an unholy
+marriage of custom-baked configuration code and autoconf macros; it may
+be wise to avoid rebuilding `configure' from `configure.in' when
+possible.
+
+ The file `Makefile.in' is a template used by `configure' to create
+`Makefile'.
+
+ There are several subdirectories:
+
+ 1. `src' holds the C code for XEmacs (the XEmacs Lisp interpreter and
+ its primitives, the redisplay code, and some basic editing
+ functions).
+
+ 2. `lisp' holds the XEmacs Lisp code for XEmacs (most everything
+ else).
+
+ 3. `lib-src' holds the source code for some utility programs for use
+ by or with XEmacs, like movemail and etags.
+
+ 4. `etc' holds miscellaneous architecture-independent data files
+ XEmacs uses, like the tutorial text. The contents of the `lisp',
+ `info' and `man' subdirectories are architecture-independent too.
+
+ 5. `lwlib' holds the C code for the X toolkit objects used by XEmacs.
+
+ 6. `info' holds the Info documentation tree for XEmacs.
+
+ 7. `man' holds the source code for the XEmacs online documentation.
+
+ 8. `nt' holds files used compiling XEmacs under Microsoft Windows.
+
+1.6: Politics (XEmacs vs. GNU Emacs)
+====================================
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.1, Next: Q1.6.2, Prev: Q1.5.5, Up: Introduction
+
+Q1.6.1: What is GNU Emacs?
+--------------------------
+
+GNU Emacs and XEmacs are related open-source text editors. Both derive
+from GNU Emacs version 18; the split between the two happened in 1991
+(for comparison, the oldest versions of GNU Emacs date from 1984). For
+information on GNU Emacs, see
+`http://www.gnu.org/software/emacs/emacs.html'.
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.2, Next: Q1.6.3, Prev: Q1.6.1, Up: Introduction
+
+Q1.6.2: How does XEmacs differ from GNU Emacs?
+----------------------------------------------
+
+For a detailed description of the differences between GNU Emacs and
+XEmacs and a detailed history of XEmacs, check out the
+ NEWS file (http://www.xemacs.org/About/XEmacsVsGNUemacs.html)
+
+*User-Visible Editing Features*
+ XEmacs in general tries hard to conform to exist user-interface
+ standards, and to work "out-of-the-box" without the need for
+ obscure customization changes. GNU Emacs, particularly version
+ 21, has gotten better about this (in many cases by copying the
+ XEmacs behavior!), but still has some weirdnesses. For example,
+ the standard method of selecting text using the Shift key works
+ out-of-the-box in XEmacs.
+
+ XEmacs has a built-in toolbar. Four toolbars can actually be
+ configured simultaneously: top, bottom, left, and right toolbars.
+
+ XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs
+ 19 (which provides a primitive form of vertical scrollbar), these
+ are true toolkit scrollbars. A look-alike Motif scrollbar is
+ provided for those who don't have Motif. (Even for those who do,
+ the look-alike may be preferable as it is faster.)
+
+ XEmacs has buffer tabs along the top of the frame (although the
+ position can be changed) that make it very easy to switch buffers.
+
+ The menubar under XEmacs is better-designed, with more thought put
+ into it.
+
+ XEmacs can ask questions using popup dialog boxes. Any command
+ executed from a menu will ask yes/no questions with dialog boxes,
+ while commands executed via the keyboard will use the minibuffer.
+
+ XEmacs under MS Windows provides uses the standard file-dialog box
+ for opening and saving files. Standard menu-accelerator behavior
+ can easily be enabled using the Options menu, and integrates well
+ into the existing keymap.
+
+ XEmacs has (still experimental) support for widgets of various
+ sorts - buttons, text boxes, sliders, progress bars, etc. A
+ progress bar is used in font lock to show the progress.
+
+ Experimental support for drag-and-drop protocols is provided from
+ XEmacs 21.
+
+*General Platform Support*
+ If you're running on a machine with audio hardware, you can specify
+ sound files for XEmacs to play instead of the default X beep. See
+ the documentation of the function load-sound-file and the variable
+ sound-alist. XEmacs also supports the network sound protocols NAS
+ and EsounD.
+
+ XEmacs 21 supports database protocols with LISP bindings, currently
+ including Berkeley DB, LDAP, and PostgreSQL (21.2 only).
+
+ XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input
+ method servers directly, as well as through the X Input Method
+ (XIM) protocol. GNU Emacs 20 supports only the XIM protocol. Both
+ Emacsen support the Quail family of input methods (implemented in
+ LISP) for many languages.
+
+ XEmacs provides support for ToolTalk on systems that have it.
+
+*Packaged LISP Libraries*
+ Many more packages are provided standard with XEmacs than with GNU
+ Emacs 19 or 20.
+
+ XEmacs 21 supports an integrated package management system which
+ uses EFS to download, then automatically install prebuilt LISP
+ libraries. This allows XEmacs users much more straightforward
+ access to the "latest and greatest" version of any given library.
+
+ We are working on a standard method for enabling, disabling and
+ otherwise controlling packages, which should make them very easy
+ to use.
+
+*LISP Programming*
+ From XEmacs 20 on, characters are a separate type. Characters can
+ be converted to integers (and many integers can be converted to
+ characters), but characters are not integers. GNU Emacs 19, XEmacs
+ 19, Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and
+ GNU Emacs 20 (incorporating Mule 3 and later Mule 4) represent
+ them as integers.
+
+ From XEmacs 20 on, the buffer is treated as an array of
+ characters, and the representation of buffer text is not exposed
+ to LISP. The GNU Emacs 20 functions like buffer-as-multibyte are
+ not supported.
+
+ In XEmacs, events are first-class objects. GNU Emacs 19 represents
+ them as integers, which obscures the differences between a key
+ gesture and the ancient ASCII code used to represent a particular
+ overlapping subset of them.
+
+ In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19
+ represents them as complicated combinations of association lists
+ and vectors. If you use the advertised functional interface to
+ manipulation of keymaps, the same code will work in XEmacs, GNU
+ Emacs 18, and GNU Emacs 19; if your code depends on the underlying
+ implementation of keymaps, it will not.
+
+ XEmacs uses "extents" to represent all non-textual aspects of
+ buffers; GNU Emacs 19 uses two distinct objects, "text properties"
+ and "overlays", which divide up the functionality between them.
+ Extents are a superset of the union of the functionality of the
+ two GNU Emacs data types. The full GNU Emacs 19 interface to text
+ properties and overlays is supported in XEmacs (with extents being
+ the underlying representation).
+
+ Extents can be made to be copied into strings, and then restored,
+ by kill and yank. Thus, one can specify this behavior on either
+ "extents" or "text properties", whereas in GNU Emacs 19 text
+ properties always have this behavior and overlays never do.
+
+*Window System Programming Interface*
+ XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
+ makes it be a more well-behaved X citizen (and also improves
+ portability). A result of this is that it is possible to include
+ other Xt "Widgets" in the XEmacs window. Also, XEmacs understands
+ the standard Xt command-line arguments.
+
+ XEmacs supports Motif applications, generic Xt (e.g. Athena)
+ applications, and raw Xlib applications. An XEmacs variant which
+ supports GTK+ is available (integration as an option in the XEmacs
+ mainline is planned for XEmacs 22), although code to take
+ advantage of the support is as yet scarce.
+
+ An XEmacs frame can be placed within an "external client widget"
+ managed by another application. This allows an application to use
+ an XEmacs frame as its text pane rather than the standard Text
+ widget that is provided with Motif or Athena.
+
+*Community Participation*
+ Joining the XEmacs development team is simple. Mail to XEmacs
+ Developers <xemacs-beta@xemacs.org>, and you're in! (If you want
+ to be, of course. You're also welcome to just post
+ development-related questions and bug reports.) The GNU Emacs
+ development team and internal mailing lists are still by invitation
+ only.
+
+ The "bleeding edge" of mainline XEmacs development is available by
+ anonymous CVS as are some subsidiary branches (check out the
+ xemacs-gtk module for the latest in GUI features!)
+
+ Development and maintenance of Lisp libraries is separated from
+ the core editor development at a fairly low level. This provides
+ better modularization and a better division of responsibility
+ between external library maintainers and the XEmacs core
+ development team. Even for packages the size of Gnus, XEmacs users
+ normally have access to a pre-built version within a few weeks of
+ a major release, and minor updates often within days.
+
+ CVS commit authority is broadly dispersed. Recognized maintainers
+ of LISP libraries who are willing to maintain XEmacs packaged
+ versions automatically qualify for CVS accounts for their packages.
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.3, Next: Q1.6.4, Prev: Q1.6.2, Up: Introduction
+
+Q1.6.3: How much does XEmacs differ?
+------------------------------------
+
+RMS has asserted at times that XEmacs is merely a "patch" on top of GNU
+Emacs (*note Q1.6.4::). In fact, probably not more than 5% of the
+code, if that, remains unchanged, and nearly 14 years of work has gone
+into XEmacs at this point. (GNU Emacs itself is only than 20 years old,
+and thus XEmacs has existed as a separate product for over 2/3 of the
+lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has
+perhaps 65,000 more lines of C code than GNU Emacs 21.2.
+
+ However, the XEmacs developers strive to keep their code compatible
+with GNU Emacs, especially on the Lisp level. Much effort goes into
+"synching" the XEmacs Elisp code with recent GNU Emacs releases so as to
+benefit from GNU Emacs development work. (In contrast, almost no code
+from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs
+developers are instructed by RMS not to even look at XEmacs source code!
+This stems from self-imposed licensing restrictions on the part of GNU
+Emacs - and almost certainly out of hostility, as well.)
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.4, Next: Q1.6.5, Prev: Q1.6.3, Up: Introduction
+
+Q1.6.4: Is XEmacs "GNU"?
+------------------------
+
+RMS insists on the term "GNU XEmacs" and maintains that
+
+ XEmacs is GNU software because it's a modified version of a GNU
+ program. And it is GNU software because the FSF is the copyright
+ holder for most of it, and therefore the legal responsibility for
+ protecting its free status falls on us whether we want it or not.
+ This is why the term "GNU XEmacs" is legitimate.
+
+ In fact, FSF is _not_ the copyright holder for most of the code, as
+very little unmodified FSF code remains (*note Q1.6.3::).
+
+ Furthermore, RMS's assertion that XEmacs is "GNU" seems rather
+bizarre to the XEmacs developers given RMS's hostility and general lack
+of interest in cooperation. "GNU" software in general is part of the
+GNU Project, is distributed by it on their FTP site, and receives
+support (or at least cooperation), as well as implicit endorsement,
+from it. The GNU Project, however, has never supported XEmacs and never
+distributed XEmacs, and RMS's hostility is the farthest thing possible
+from an endorsement. In fact, the GNU Project distributes a number of
+non-GNU software projects on the FSF web site, but again XEmacs is not
+one of them.
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.5, Next: Q1.6.6, Prev: Q1.6.4, Up: Introduction
+
+Q1.6.5: What is the correct way to refer to XEmacs and GNU Emacs?
+-----------------------------------------------------------------
+
+Unfortunately even the naming of these two applications has become
+politicized. Much of this stems from RMS, who has a history of
+politicizing similar issues. (Compare the controversy over "Lignux" and
+"GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU Emacs"
+be used, which are neutral and acceptable to most people. RMS,
+however, is not willing to accept these terms. He insists that, if his
+product is called "GNU Emacs", then ours must be called "GNU XEmacs".
+(For our opinion of this term, *Note Q1.6.4::.) On the other hand, if
+our product is to be called "XEmacs", as we prefer, then his product
+must simply be called "Emacs". The intent of this seems clear: RMS
+wants to make sure the names reflect his view that his version is the
+"real" Emacs and ours is merely a derivative, second-class product
+(*note Q1.6.3::).
+
+ The XEmacs developers hope that you will use the neutral terms
+"XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on
+the other hand, is a generic term for a class of programmable text
+editors with a similar look-and-feel, and usually a Lisp-based
+extension language. These trace themselves back to early editors such
+as EINE, ZWEI, ZMACS and Multics Emacs. *Note A History of Emacs:
+(internals)A History of Emacs.
+
+ We also call upon RMS, in the spirit of furthering cooperation, to
+stop politicizing this issue and use the neutral terms "XEmacs" and
+"GNU Emacs". We have already acceded to RMS' wishes in this respect,
+and we expect him to do the same. (In the past, the XEmacs developers
+often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in reference
+to GNU Emacs; these terms were apparently modeled after RMS' own usage
+of "Gosmacs" and "Gosling Emacs" in reference to Unipress Emacs,
+produced by James Gosling. RMS, however, considers such terms to be
+insulting, so we refrain from using them as much as possible in
+preference to GNU Emacs.)
+
+\1f
+File: xemacs-faq.info, Node: Q1.6.6, Next: Q1.7.1, Prev: Q1.6.5, Up: Introduction
+
+Q1.6.6: Why haven't XEmacs and GNU Emacs merged?
+------------------------------------------------
+
+There are currently irreconcilable differences in the views about
+technical, programming, design, organizational and legal matters
+between Richard Stallman (RMS), the author and leader of the GNU Emacs
+project, and the XEmacs development team which provide little hope for
+a merge to take place in the short-term future. There have been
+repeated attempts at merging by all of the major XEmacs developers,
+starting from the early days of Lucid Emacs (in 1991), but they have
+all failed. RMS has very strong views about how GNU Emacs should be
+structured and how his project should be run, and during the repeated
+merge efforts has never demonstrated any realistic interest in
+sufficiently compromising or ceding control to allow a middle ground to
+be found. The basic problem seems to be the very different goals of
+RMS and the XEmacs project. The primary goals of the XEmacs project
+are technical and organizational - we want to create the best editor
+possible, and to make it as easy as possible for people around the
+world to contribute. The primary goals of RMS, on the other hand, are
+political, and GNU Emacs, and any potential merge efforts with XEmacs,
+are strictly subservient to these goals. In fact, in many ways RMS
+sees GNU Emacs as the "poster child" of his aims, the one program in
+the GNU project that above all others must set an example to the world.
+(This has to do with the fact that GNU Emacs was the first program in
+the GNU project, and the only one that he is still personally involved
+with on a day-to-day basis.) Given his goals, his position is
+completely reasonable - but unfortunately, makes any merge impossible.
+
+ From the XEmacs perspective, the most intractable issues appear to be
+legal and organizational, specifically:
+
+ * RMS requires "legal papers" to be signed for all contributions of
+ code to GNU Emacs over 10 lines or so, transferring the copyright
+ and all legal rights to the code to the Free Software Foundation.
+ XEmacs does not and has never required this, since it has the
+ practical effect of discouraging individual and in particular
+ corporate contributions - corporations will almost never sign away
+ their legal rights to code since it makes it impossible to reuse
+ the code in any product that whose license is not compatible with
+ the GNU General Public License. Since RMS has shown no
+ inclination to compromise on this issue, a merge would require
+ that most of the existing XEmacs code would need to be thrown away
+ and rewritten - something the XEmacs developers are understandably
+ reluctant to do.
+
+ * A repeated stumbling block in the merge talks has been the issue of
+ organizational control over the resulting product. RMS has made it
+ clear that he intends to have final say over design issues in a
+ merged Emacs. Unfortunately, RMS and the XEmacs developers have
+ repeatedly clashed over design decisions, and RMS' insistence on
+ getting his way in such disagreements was the very reason for the
+ split in the first place. This same issue has come up again and
+ again in merge talks and we have never been able to come to a
+ satisfactory resolution. To the extent that RMS is willing to
+ compromise at all, it appears to be of a purely political rather
+ than technical nature - "If we support this feature of yours, we
+ also get to support this other feature of mine." The XEmacs
+ developers cannot see how such a process would lead to anything
+ but a mess of incompatible things hodgepodged together.
+
+ * Because of the years of separate development, distinct and
+ incompatible interfaces have developed and merging would be
+ extremely difficult even with the above non-technical issues
+ resolved. The problem has been exacerbated by the issue of legal
+ papers - because XEmacs code is not "kosher" from RMS'
+ perspective, he discourages developers from even looking at it out
+ of legal concerns. Although it is still possible to read the
+ XEmacs documentation and run the program, the practical effect of
+ this prohibition has been to strongly discourage code-sharing and
+ cooperative development - although a great deal of GNU Emacs code
+ has been incorporated into XEmacs, practically none has gone the
+ other direction.
+
+ If you have a comment to add regarding the merge, it is a good idea
+to avoid posting to the newsgroups, because of the very heated flamewars
+that often result. Mail your questions to <xemacs-beta@xemacs.org> and
+<emacs-devel@gnu.org>.
+
+1.7: External Packages
+======================
+
+\1f
+File: xemacs-faq.info, Node: Q1.7.1, Next: Q1.7.2, Prev: Q1.6.6, Up: Introduction
+
+Q1.7.1: What is the package system?
+-----------------------------------
+
+In order to reduce the size and increase the maintainability of XEmacs,
+the majority of the Elisp packages that came with previous releases
+have been unbundled. They have been replaced by the package system.
+Each elisp add-on (or groups of them when they are small) now comes in
+its own tarball that contains a small search hierarchy.
+
+ You select just the ones you need. Install them by untarring them
+into the right place. On startup XEmacs will find them, set up the load
+path correctly, install autoloads, etc, etc.
+
+ *Note Q2.1.1::, for more info on how to download and install the
+packages.
+
+\1f
+File: xemacs-faq.info, Node: Q1.7.2, Next: Q1.7.3, Prev: Q1.7.1, Up: Introduction
+
+Q1.7.2: Which external packages are there?
+------------------------------------------
+
+Normal Packages
+---------------
+
+A very broad collection of elisp packages.
+
+Sun
+ Support for Sparcworks.
+
+ada
+ Ada language support.
+
+apel
+ A Portable Emacs Library. Used by XEmacs MIME support.
+
+auctex
+ Basic TeX/LaTeX support.
+
+bbdb
+ The Big Brother Data Base: a rolodex-like database program.
+
+build
+ Build XEmacs from within (UNIX, Windows).
+
+c-support
+ Basic single-file add-ons for editing C code.
+
+calc
+ Emacs calculator.
+
+calendar
+ Calendar and diary support.
+
+cc-mode
+ C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language
+ support.
+
+clearcase
+ New Clearcase Version Control for XEmacs (UNIX, Windows).
+
+clearcase
+ Support for the Clearcase version control system.
+
+cookie
+ "Fortune cookie"-style messages. Includes Spook (suspicious
+ phrases) and Yow (Zippy quotes).
+
+crisp
+ Crisp/Brief emulation.
+
+debug
+ GUD, gdb, dbx debugging support.
+
+dictionary
+ Interface to RFC2229 dictionary servers.
+
+dired
+ The DIRectory EDitor is for manipulating, and running commands on
+ files in a directory.
+
+docbookide
+ DocBook editing support.
+
+ecb
+ Emacs source code browser.
+
+ecrypto
+ Crypto functionality in Emacs Lisp.
+
+edebug
+ An Emacs Lisp debugger.
+
+ediff
+ Interface over GNU patch.
+
+edit-utils
+ Miscellaneous editor extensions, you probably need this.
+
+edt
+ DEC EDIT/EDT emulation.
+
+efs
+ Treat files on remote systems the same as local files.
+
+eieio
+ Enhanced Implementation of Emacs Interpreted Objects.
+
+elib
+ Portable Emacs Lisp utilities library.
+
+emerge
+ Another interface over GNU patch.
+
+erc
+ ERC is an Emacs InternetRelayChat client.
+
+escreen
+ Multiple editing sessions withing a single frame (like screen).
+
+eshell
+ Command shell implemented entirely in Emacs Lisp.
+
+ess
+ ESS: Emacs Speaks Statistics.
+
+eterm
+ Terminal emulation.
+
+eudc
+ Emacs Unified Directory Client (LDAP, PH).
+
+footnote
+ Footnoting in mail message editing modes.
+
+forms
+ Forms editing support (obsolete, use Widget instead).
+
+fortran-modes
+ Fortran support.
+
+fortran-modes
+ Fortran language support.
+
+frame-icon
+ Set up mode-specific icons for each frame under XEmacs.
+
+fsf-compat
+ GNU Emacs compatibility files.
+
+games
+ Tetris, Sokoban, and Snake.
+
+general-docs
+ General documentation. Presently, empty.
+
+gnats
+ XEmacs bug reports.
+
+gnus
+ The Gnus Newsreader and Mailreader.
+
+haskell-mode
+ Haskell editing support.
+
+hm-html-menus
+ HTML editing.
+
+hyperbole
+ Hyperbole: The Everyday Info Manager.
+
+ibuffer
+ Advanced replacement for buffer-menu.
+
+idlwave
+ Editing and Shell mode for the Interactive Data Language.
+
+igrep
+ Enhanced front-end for Grep.
+
+ilisp
+ Front-end for interacting with Inferior Lisp (external lisps).
+
+ispell
+ Spell-checking with GNU ispell.
+
+jde
+ Integrated Development Environment for Java.
+
+liece
+ IRC (Internet Relay Chat) client for Emacs. Note, this package is
+ deprecated and will be removed, use riece instead.
+
+mail-lib
+ Fundamental lisp files for providing email support.
+
+mailcrypt
+ Support for messaging encryption with PGP.
+
+mew
+ Messaging in an Emacs World; a MIME-based email program.
+
+mh-e
+ The XEmacs Interface to the MH Mail System.
+
+mine
+ Elisp implementation of the game 'Minehunt'.
+
+misc-games
+ Other amusements and diversions.
+
+mmm-mode
+ Support for Multiple Major Modes within a single buffer.
+
+net-utils
+ Miscellaneous Networking Utilities.
+
+ocaml
+ Objective Caml editing support.
+
+oo-browser
+ OO-Browser: The Multi-Language Object-Oriented Code Browser.
+
+ocaml
+ Objective Caml editing support.
+
+os-utils
+ Miscellaneous single-file O/S utilities, for printing, archiving,
+ compression, remote shells, etc.
+
+pc
+ PC style interface emulation.
+
+pcl-cvs
+ CVS frontend.
+
+pcomplete
+ Provides programmatic completion.
+
+perl-modes
+ Perl support.
+
+pgg
+ Emacs interface to various PGP implementations.
+
+prog-modes
+ Support for various programming languages.
+
+ps-print
+ Printing functions and utilities.
+
+psgml
+ Validated HTML/SGML editing.
+
+psgml-dtds
+ A collection of DTDs for psgml. Note that this package is
+ deprecated and will be removed in the future, most likely Q2/2003.
+ Instead of using this, you should install needed DTDs yourself.
+
+python-modes
+ Python language support.
+
+reftex
+ Emacs support for LaTeX cross-references, citations.
+
+riece
+ IRC (Internet Relay Chat) client for Emacs.
+
+rmail
+ An obsolete Emacs mailer. If you do not already use it don't
+ start.
+
+ruby-modes
+ Ruby support.
+
+sasl
+ Simple Authentication and Security Layer (SASL) library.
+
+scheme
+ Front-end support for Inferior Scheme.
+
+semantic
+ Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator.
+
+sgml
+ SGML/Linuxdoc-SGML editing.
+
+sh-script
+ Support for editing shell scripts.
+
+sieve
+ Manage Sieve email filtering scripts.
+
+slider
+ User interface tool.
+
+sml-mode
+ SML editing support.
+
+sounds-au
+ XEmacs Sun sound files.
+
+sounds-wav
+ XEmacs Microsoft sound files.
+
+speedbar
+ Provides a separate frame with convenient references.
+
+strokes
+ Mouse enhancement utility.
+
+supercite
+ An Emacs citation tool for News & Mail messages.
+
+texinfo
+ XEmacs TeXinfo support.
+
+text-modes
+ Miscellaneous support for editing text files.
+
+textools
+ Miscellaneous TeX support.
+
+time
+ Display time & date on the modeline.
+
+tm
+ Emacs MIME support. Not needed for gnus >= 5.8.0.
+
+tooltalk
+ Support for building with Tooltalk.
+
+tpu
+ DEC EDIT/TPU support.
+
+tramp
+ Remote shell-based file editing. This is similar to EFS or
+ Ange-FTP, but works with rsh/ssh and rcp/scp.
+
+vc
+ Version Control for Free systems.
+
+vc-cc
+ Version Control for ClearCase (UnFree) systems.
+
+vhdl
+ Support for VHDL.
+
+view-process
+ A Unix process browsing tool.
+
+viper
+ VI emulation support.
+
+vm
+ An Emacs mailer.
+
+w3
+ A Web browser.
+
+x-symbol
+ Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
+
+xemacs-base
+ Fundamental XEmacs support, you almost certainly need this.
+
+xemacs-devel
+ XEmacs Lisp developer support. This package contains utilities for
+ supporting Lisp development. It is a single-file package so it
+ may be tailored.
+
+xlib
+ Emacs interface to X server.
+
+xslide
+ XSL editing support.
+
+xslt-process
+ A minor mode for (X)Emacs which allows running an XSLT processor
+ on a buffer.
+
+xwem
+ X Emacs Window Manager.
+
+zenirc
+ ZENIRC IRC Client.
+
+Mule Support (mule)
+-------------------
+
+MULti-lingual Enhancement. Support for world scripts such as Latin,
+Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. To use these
+packages your XEmacs must be compiled with Mule support.
+
+edict
+ MULE: Lisp Interface to EDICT, Kanji Dictionary.
+
+egg-its
+ MULE: Wnn (4.2 and 6) support. SJ3 support.
+
+latin-unity
+ MULE: find single ISO 8859 character set to encode a buffer.
+
+latin-unity
+ Unify character sets in a buffer. When characters belong to
+ disjoint character sets, this attempts to translate the characters
+ so that they belong to one character set. If the buffer coding
+ system is not sufficient, this suggests different coding systems.
+
+leim
+ MULE: Quail. All non-English and non-Japanese language support.
+
+locale
+ MULE: Localized menubars and localized splash screens.
+
+lookup
+ Dictionary support. (This isn't an English dictionary program)
+
+mule-base
+ MULE: Basic Mule support, required for building with Mule.
+
+mule-ucs
+ MULE: Extended coding systems (including Unicode) for XEmacs.
+
+mule-ucs
+ Extended coding systems (including Unicode) for XEmacs.
+
+skk
+ Another Japanese Language Input Method. Can be used without a
+ separate process running as a dictionary server.
+
+\1f
+File: xemacs-faq.info, Node: Q1.7.3, Next: Q1.7.4, Prev: Q1.7.2, Up: Introduction
+
+Q1.7.3: Do I need to have the packages to run XEmacs?
+-----------------------------------------------------
+
+Strictly speaking, no. XEmacs will build and install just fine without
+any packages installed. However, only the most basic editing functions
+will be available with no packages installed, so installing packages is
+an essential part of making your installed XEmacs _useful_.
+
+\1f
+File: xemacs-faq.info, Node: Q1.7.4, Next: Q1.8.1, Prev: Q1.7.3, Up: Introduction
+
+Q1.7.4: Is there a way to find which package has particular functionality?
+--------------------------------------------------------------------------
+
+If you want to find out which package contains the functionality you
+are looking for, use `M-x package-get-package-provider', and give it a
+symbol that is likely to be in that package.
+
+ For example, if some code you want to use has a `(require
+'thingatpt)' in it:
+
+ M-x package-get-package-provider RET thingatpt RET
+
+ which will return something like: `(fsf-compat "1.08").'
+
+1.8: Internationalization
+=========================
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.1, Next: Q1.8.2, Prev: Q1.7.4, Up: Introduction
+
+Q1.8.1: What is the status of internationalization support aka MULE (including Asian language support)?
+-------------------------------------------------------------------------------------------------------
+
+Both the stable and development versions of XEmacs include
+internationalization support (aka MULE). MULE currently (21.4) works on
+UNIX and Linux systems. It is possible to build with MULE on Windows
+systems, but if you really need MULE on Windows, it is recommended that
+you build and use the development (21.5) version, and deal with the
+instability of the development tree. Binaries compiled without MULE
+support run faster than MULE capable XEmacsen.
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.2, Next: Q1.8.3, Prev: Q1.8.1, Up: Introduction
+
+Q1.8.2: How can I help with internationalization?
+-------------------------------------------------
+
+If you would like to help, you may want to join the
+<xemacs-mule@xemacs.org> mailing list. Especially needed are people
+who speak/write languages other than English, who are willing to use
+XEmacs/MULE regularly, and have some experience with Elisp.
+
+ Translations of the TUTORIAL and man page are welcome, and XEmacs
+does support multilingual menus, but we have few current translations.
+
+ *Note How do I become a Beta Tester?: Q1.5.2.
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.3, Next: Q1.8.4, Prev: Q1.8.2, Up: Introduction
+
+Q1.8.3: How do I type non-ASCII characters?
+-------------------------------------------
+
+*Note How can you type in special characters in XEmacs?: Q3.0.6, in
+part 3 of this FAQ, for some simple methods that also work in non-MULE
+builds of XEmacs (but only for one-octet coded character sets, and
+mostly for ISO 8859/1). Many of the methods available for Cyrillic
+(*note How about Cyrillic modes?: Q1.8.7.) work without MULE. MULE has
+more general capabilities. *Note Please explain the various input
+methods in MULE/XEmacs: Q1.8.5.
+
+ *Note How do I display non-ASCII characters?: Q4.0.8, which covers
+display of non-ASCII characters.
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.4, Next: Q1.8.5, Prev: Q1.8.3, Up: Introduction
+
+Q1.8.4: Can XEmacs messages come out in a different language?
+-------------------------------------------------------------
+
+The message-catalog support was written but is badly bit-rotted. XEmacs
+20 and 21 did _not_ support it, and early releases of XEmacs 22 will
+not either.
+
+ However, menubar localization _does_ work. To enable it, add to
+your `Emacs' file entries like this:
+
+ Emacs*XlwMenu.resourceLabels: True
+ Emacs*XlwMenu.file.labelString: Fichier
+ Emacs*XlwMenu.openInOtherWindow.labelString: In anderem Fenster oeffnen
+
+ The name of the resource is derived from the non-localized entry by
+removing punctuation and capitalizing as above.
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.5, Next: Q1.8.6, Prev: Q1.8.4, Up: Introduction
+
+Q1.8.5: Please explain the various input methods in MULE/XEmacs
+---------------------------------------------------------------
+
+Mule supports a wide variety of input methods. There are three basic
+classes: Lisp implementations, generic platform support, and library
+interfaces.
+
+ _Lisp implementations_ include Quail, which provides table-driven
+input methods for almost all the character sets that Mule supports
+(including all of the ISO 8859 family, the Indic languages, Thai, and
+so on), and SKK, for Japanese. (SKK also supports an interface to an
+external "dictionary server" process.) Quail supports both typical
+"dead-key" methods (eg, in the "latin-1-prefix" method, `" a' produces
+ä, LATIN SMALL LETTER A WITH DIAERESIS), and the complex
+dictionary-based phonetic methods used for Asian ideographic languages
+like Chinese.
+
+ Lisp implementations can be less powerful (but they are not
+perceptibly inefficient), and of course are not portable to non-Emacs
+applications. The incompatibility can be very annoying. On the other
+hand, they require no special platform support or external libraries,
+so if you can display the characters, Mule can input them for you and
+you can edit, anywhere.
+
+ _Generic platform support_ is currently limited to the X Input
+Method (XIM) framework, although support for MSIME (for MS Windows) is
+planned, and IIIMF (Sun's Internet-Intranet Input Method Framework)
+support is extremely desirable. XIM is enabled at build time by use of
+the `--with-xim' flag to `configure'. For use of XIM, see your
+platform documentation. However, normally the input method you use is
+specified via the `LANG' and `XMODIFIERS' environment variables.
+
+ Of course, input skills are portable across most applications.
+However, especially in modern GUI systems the habit of using bucky bits
+has fallen into sad disuse, and many XIM systems are poorly configured
+for use with Emacs. For example, the kinput2 input manager (a separate
+process providing an interface between Japanese dictionary servers such
+as Canna and Wnn, and the application) tends to gobble up keystrokes
+generating Meta characters. This means that to edit while using an XIM
+input method, you must toggle the input method off every time you want
+to use `M-f'. Your mileage may vary.
+
+ _Library interfaces_ are most common for Japanese, although Wnn
+supports Chinese (traditional and simplified) and Korean. There are
+Chinese and Korean input servers available, but we do not know of any
+patches for XEmacs to use them directly. You can use them via
+IM-enabled terminals, by manipulating the terminal coding systems. We
+describe only the Japanese-oriented systems here. The advantage of
+these systems is that they are very powerful, and on platforms where
+they are available there is typically a wide range of applications that
+support them. Thus your input skills are portable across applications.
+
+ Mule provides built-in interfaces to the following input methods:
+Wnn4, Wnn6, Canna, and SJ3. These can be configured at build time.
+There are patches available (no URL, sorry) to support the SKK server,
+as well. Wnn and SJ3 use the `egg' user interface. The interface for
+Canna is specialized to Canna.
+
+ Wnn supports Japanese, Chinese and Korean. It is made by OMRON and
+Kyôto University. It is a powerful and complex system. Wnn4 is free
+and Wnn6 is not. Wnn uses grammatical hints and probability of word
+association, so in principle Wnn can be cleverer than other methods.
+
+ Canna, made by NEC, supports only Japanese. It is a simple and
+powerful system. Canna uses only grammar, but its grammar and
+dictionary are quite sophisticated. So for standard modern Japanese,
+Canna seems cleverer than Wnn4. In addition, the UNIX version of Canna
+is free (now there is a Microsoft Windows version).
+
+ SJ3, by Sony, supports only Japanese.
+
+ Egg consists of following parts:
+
+ 1. Input character Translation System (ITS) layer. It translates
+ ASCII inputs to Kana/PinYin/Hangul characters.
+
+ 2. Kana/PinYin/Hangul to Kanji transfer layer. The interface layer
+ to network Kana-Kanji server (Wnn and Sj3).
+
+ These input methods are modal. They have a raw (alphabet) mode, a
+phonetic input mode, and Kana-Kanji transfer mode. However there are
+mode-less input methods for Egg and Canna. `boiled-egg' is a mode-less
+input method running on Egg. For Canna, `canna.el' has a tiny
+boiled-egg-like command, `(canna-boil)', and there are some
+boiled-egg-like utilities.
+
+ Much of this information was provided by MORIOKA Tomohiko
+<morioka@jaist.ac.jp>.
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.6, Next: Q1.8.7, Prev: Q1.8.5, Up: Introduction
+
+Q1.8.6: How do I portably code for MULE/XEmacs?
+-----------------------------------------------
+
+MULE has evolved rapidly over the last few years, and the original third
+party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite
+different implementations. The APIs also vary although recent versions
+of XEmacs have tended to converge to the GNU Emacs standard.
+
+ MULE implementations are going to continue to evolve. Both GNU Emacs
+and XEmacs are working hard on Unicode support, which will involve new
+APIs and probably variations on old ones. For XEmacs 22, the old ISO
+2022-based system for recognizing encodings will be replaced by a much
+more flexible system, which should improve accuracy of automatic coding
+detections, but will also involve new APIs.
+
+ MORIOKA Tomohiko <morioka@jaist.ac.jp> writes:
+
+ The application implementor must write separate code for these mule
+ variants. [Please don't hesitate to report these variants to us;
+ they are not, strictly speaking, bugs, but they give third-party
+ developers the same kind of creepy-crawly feeling. We'll do what
+ we can. - Ed.]
+
+ MULE and the next version of Emacs are similar but the symbols are
+ very different--requiring separate code as well.
+
+ Namely we must support 3 kinds of mule variants and 4 or 5 or 6
+ kinds of emacs variants... (;_;) I'm shocked, so I wrote a wrapper
+ package called `emu' to provide a common interface. [There is an
+ XEmacs package of APEL which provides much more comprehensive
+ coverage. Be careful, however; APEL has problems of its own. -
+ Ed.]
+
+ I have the following suggestions about dealing with mule variants:
+
+ * `(featurep 'mule)' `t' on all mule variants
+
+ * `(boundp 'MULE)' is `t' on only MULE. Maybe the next version
+ of Emacs will not have this symbol.
+
+ * MULE has a variable `mule-version'. Perhaps the next version
+ of Emacs will have this variable as well.
+
+ Following is a sample to distinguish mule variants:
+
+ (if (featurep 'mule)
+ (cond ((boundp 'MULE)
+ ;; for original Mule
+ )
+ ((string-match "XEmacs" emacs-version)
+ ;; for XEmacs with Mule
+ )
+ (t
+ ;; for next version of Emacs
+ ))
+ ;; for old emacs variants
+ )
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.7, Next: Q1.8.8, Prev: Q1.8.6, Up: Introduction
+
+Q1.8.7: How about Cyrillic modes?
+---------------------------------
+
+Ilya Zakharevich <ilya@math.ohio-state.edu> writes:
+
+ There is a cyrillic mode in the file `mysetup.zip' in
+ `ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/'. This is a
+ modification to Valery Alexeev's <ava@math.jhu.ed> `russian.el'
+ which can be obtained from
+
+ `http://www.math.uga.edu/~valery/russian.el'.
+
+ Dima Barsky <d.barsky@ee.surrey.ac.uk> writes:
+
+ There is another cyrillic mode for both GNU Emacs and XEmacs by
+ Dmitrii (Mitya) Manin <manin@camelot.mssm.edu> at
+ `http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el'.
+
+ Rebecca Ore <rebecca.ore@op.net> writes:
+
+ The fullest resource I found on Russian language use (in and out of
+ XEmacs) is `http://www.ibiblio.org/sergei/Software/Software.html'
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.8, Next: Q1.8.9, Prev: Q1.8.7, Up: Introduction
+
+Q1.8.8: Does XEmacs support Unicode?
+------------------------------------
+
+To get Unicode support, you need a Mule-enabled XEmacs.
+
+ 21.5 has internal support for Unicode and supports it fully,
+although we don't yet use it as the internal encoding.
+
+ 21.4 supports Unicode partially - as an external encoding for files,
+processes, and terminals, but without font support. *Note How does
+XEmacs display Unicode?: Q1.8.9. To get Unicode support in 21.4,
+install Mule-UCS from packages in the usual way, and put
+
+ (require 'un-define)
+ (set-coding-priority-list '(utf-8))
+ (set-coding-category-system 'utf-8 'utf-8)
+
+ in your init file to enable the UTF-8 coding system. You may wish to
+view the documentation of `set-coding-priority-list' if you find that
+files that are not UTF-8 are being mis-recognized as UTF-8.
+
+ Install standard national fonts (not Unicode fonts) for all character
+sets you use. *Note How does XEmacs display Unicode??: Q1.8.9.
+
+ Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not
+support 31-bit forms of Unicode (UTF-32 or UCS-4).
+
+\1f
+File: xemacs-faq.info, Node: Q1.8.9, Prev: Q1.8.8, Up: Introduction
+
+Q1.8.9: How does XEmacs display Unicode?
+----------------------------------------
+
+Mule doesn't have a Unicode charset internally, so there's nothing to
+bind a Unicode registry to. It would not be straightforward to create,
+either, because Unicode is not ISO 2022-compatible. You'd have to
+translate it to multiple 96x96 pages.
+
+ This means that Mule-UCS uses ordinary national fonts for display.
+This is not really a problem, except for those languages that use the
+Unified Han characters. The problem here is that Mule-UCS maps from
+Unicode code points to national character sets in a deterministic way.
+By default, this means that Japanese fonts are tried first, then
+Chinese, then Korean. To change the priority ordering, use the command
+`un-define-change-charset-order'.
+
+ It also means you can't use Unicode fonts directly, at least not
+without extreme hackery. You can run -nw with
+(set-terminal-coding-system 'utf-8) if you really want a Unicode font
+for some reason.
+
+ Real Unicode support will be introduced in XEmacs 22.0.
+
+\1f
+File: xemacs-faq.info, Node: Installation, Next: Editing, Prev: Introduction, Up: Top
+
+2 Installation and Troubleshooting
+**********************************
+
+This is part 2 of the XEmacs Frequently Asked Questions list. This
+section is devoted to Installation, Maintenance and Troubleshooting.
+
+* Menu:
+
+2.0: Installation (General)
+* Q2.0.1:: How do I build and install XEmacs?
+* Q2.0.2:: Where do I find external libraries?
+* Q2.0.3:: How do I specify the paths that XEmacs uses for finding files?
+* Q2.0.4:: Running XEmacs without installing
+* Q2.0.5:: XEmacs is too big
+
+2.1: Package Installation
+* Q2.1.1:: How do I install the packages?
+* Q2.1.2:: Can I install the packages individually?
+* Q2.1.3:: Can I install the packages automatically?
+* Q2.1.4:: Can I upgrade or remove packages?
+* Q2.1.5:: Which packages to install?
+* Q2.1.6:: Can you describe the package location process in more detail?
+* Q2.1.7:: EFS fails with "500 AUTH not understood"
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+* Q2.2.1:: Libraries in non-standard locations
+* Q2.2.2:: Why can't I strip XEmacs?
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+* Q2.3.1:: What exactly are all the different ways to build XEmacs under Windows?
+* Q2.3.2:: What compiler/libraries do I need to compile XEmacs?
+* Q2.3.3:: How do I compile the native port?
+* Q2.3.4:: What do I need for Cygwin?
+* Q2.3.5:: How do I compile under Cygwin?
+* Q2.3.6:: How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
+* Q2.3.7:: How do I compile with X support?
+* Q2.3.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW)
+
+2.4: General Troubleshooting
+* Q2.4.1:: How do I deal with bugs or with problems building, installing, or running?
+* Q2.4.2:: Help! XEmacs just crashed on me!
+* Q2.4.3:: XEmacs crashes and I compiled it myself.
+* Q2.4.4:: How to debug an XEmacs problem with a debugger
+* Q2.4.5:: I get a cryptic error message when trying to do something.
+* Q2.4.6:: XEmacs hangs when I try to do something.
+* Q2.4.7:: I get an error message when XEmacs is running in batch mode.
+* Q2.4.8:: The keyboard or mouse is not working properly, or I have some other event-related problem.
+* Q2.4.9:: C-g doesn't work for me. Is it broken?
+* Q2.4.10:: How do I debug process-related problems?
+* Q2.4.11:: XEmacs is outputting lots of X errors.
+* Q2.4.12:: After upgrading, XEmacs won't do `foo' any more!
+
+2.5: Startup-Related Problems
+* Q2.5.1:: XEmacs cannot connect to my X Terminal!
+* Q2.5.2:: Startup problems related to paths or package locations.
+* Q2.5.3:: XEmacs won't start without network.
+* Q2.5.4:: Startup warnings about deducing proper fonts?
+* Q2.5.5:: Warnings from incorrect key modifiers.
+* Q2.5.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
+
+2.0: Installation (General)
+===========================
+
+\1f
+File: xemacs-faq.info, Node: Q2.0.1, Next: Q2.0.2, Prev: Installation, Up: Installation
+
+Q2.0.1: How do I build and install XEmacs?
+------------------------------------------
+
+See the file `etc/NEWS' for information on new features and other
+user-visible changes since the last version of XEmacs.
+
+ The file `INSTALL' in the top-level directory says how to bring up
+XEmacs on Unix and Cygwin, once you have loaded the entire subtree of
+this directory.
+
+ See the file `nt/README' for instructions on building XEmacs for
+Microsoft Windows.
+
+ *Note Q2.1.1::, for the installation of (essential) add on packages.
+
+\1f
+File: xemacs-faq.info, Node: Q2.0.2, Next: Q2.0.3, Prev: Q2.0.1, Up: Installation
+
+Q2.0.2: Where do I find external libraries?
+-------------------------------------------
+
+All external libraries used by XEmacs can be found on the XEmacs web
+site `http://www.xemacs.org/Download/optLibs.html'.
+
+ The library versions available here are known to work with XEmacs.
+(Newer versions will probably work as well but we can't guarantee it.)
+We try to keep the libraries up-to-date but may not always succeed.
+Check the above page for the canonical locations of the external
+libraries, allowing you to download the latest, bleeding-edge versions.
+
+\1f
+File: xemacs-faq.info, Node: Q2.0.3, Next: Q2.0.4, Prev: Q2.0.2, Up: Installation
+
+Q2.0.3: How do I specify the paths that XEmacs uses for finding files?
+----------------------------------------------------------------------
+
+You can specify what paths to use by using a number of different flags
+when running configure. See the section MAKE VARIABLES in the top-level
+file INSTALL in the XEmacs distribution for a listing of those flags.
+
+ Most of the time, however, the simplest fix is: *do not* specify
+paths as you might for GNU Emacs. XEmacs can generally determine the
+necessary paths dynamically at run time. The only path that generally
+needs to be specified is the root directory to install into. That can
+be specified by passing the `--prefix' flag to configure. For a
+description of the XEmacs install tree, please consult the `NEWS' file.
+
+\1f
+File: xemacs-faq.info, Node: Q2.0.4, Next: Q2.0.5, Prev: Q2.0.3, Up: Installation
+
+Q2.0.4: Running XEmacs without installing
+-----------------------------------------
+
+How can I just try XEmacs without installing it?
+
+ XEmacs will run in place without requiring installation and copying
+of the Lisp directories, and without having to specify a special
+build-time flag. It's the copying of the Lisp directories that
+requires so much space. XEmacs is largely written in Lisp.
+
+ A good method is to make a shell alias for xemacs:
+
+ alias xemacs=/src/xemacs-21.5/src/xemacs
+
+ (You will obviously use whatever directory you downloaded the source
+tree to instead of `/src/xemacs-21.5').
+
+ This will let you run XEmacs without massive copying.
+
+\1f
+File: xemacs-faq.info, Node: Q2.0.5, Next: Q2.1.1, Prev: Q2.0.4, Up: Installation
+
+Q2.0.5: XEmacs is too big
+-------------------------
+
+The space required by the installation directories can be reduced
+dramatically if desired. Gzip all the .el files. Remove all the
+packages you'll never want to use. Remove the TexInfo manuals. Remove
+the Info (and use just hardcopy versions of the manual). Remove most
+of the stuff in etc. Remove or gzip all the source code. Gzip or
+remove the C source code. Configure it so that copies are not made of
+the support lisp.
+
+ These are all Emacs Lisp source code and bytecompiled object code.
+You may safely gzip everything named *.el here. You may remove any
+package you don't use. _Nothing bad will happen if you delete a package
+that you do not use_. You must be sure you do not use it though, so be
+conservative at first.
+
+ Any package with the possible exceptions of xemacs-base, and EFS are
+candidates for removal. Ask yourself, _Do I ever want to use this
+package?_ If the answer is no, then it is a candidate for removal.
+
+ First, gzip all the .el files. Then go about package by package and
+start gzipping the .elc files. Then run XEmacs and do whatever it is
+you normally do. If nothing bad happens, then remove the package. You
+can remove a package via the PUI interface (`M-x pui-list-packages',
+then press `d' to mark the packages you wish to delete, and then `x' to
+delete them.
+
+ Another method is to do `M-x package-get-delete-package'.
+
+2.1: Package Installation
+=========================
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.1, Next: Q2.1.2, Prev: Q2.0.5, Up: Installation
+
+Q2.1.1: How do I install the packages?
+--------------------------------------
+
+There are three ways to install the packages.
+
+ 1. Manually, all at once, using the 'Sumo Tarball'.
+
+ 2. Manually, using individual package tarballs.
+
+ 3. Automatically, using the package tools from XEmacs.
+
+ If you don't want to mess with the packages, it is easiest to just
+grab them manually, all at once. (For the other two ways, *Note
+Q2.1.2::, and *Note Q2.1.3::.) Download the file
+
+ `xemacs-sumo.tar.gz'
+
+ For an XEmacs compiled with Mule you also need
+
+ `xemacs-mule-sumo.tar.gz'
+
+ These are in the `packages' directory on your XEmacs mirror archive:
+`ftp://ftp.xemacs.org/pub/xemacs/packages' or its mirrors. N.B. They
+are called 'Sumo Tarballs' for good reason. They are currently about
+19MB and 4.5MB (gzipped) respectively.
+
+ Install them on Unix and Mac OS X using the shell/Terminal command
+
+ `cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -'
+
+ Where `$prefix' is what you gave to the `--prefix' flag to
+`configure', and defaults to `/usr/local'.
+
+ If you have GNU tar you can use:
+
+ `cd $prefix/lib/xemacs ; tar zxvf <tarballname>'
+
+ If you have the packages somewhere nonstandard and don't want to
+bother with `$prefix' (for example, you're a developer and are compiling
+the packages yourself, and want your own private copy of everything),
+you can also directly specify this using `configure'. To do this with
+21.5 and above use the `--with-package-prefix' parameter to specify the
+directory under which you untarred the above tarballs. Under 21.4 and
+previous you need to use `--package-path'. Using these options looks
+something like this:
+
+ configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ...
+
+ Under Windows, you need to place the above `tar.gz' files in the
+directory specified using the `PACKAGE_PREFIX' value in `nt/config.inc'
+and by default is `\Program Files\XEmacs'. (To untar a `tar.gz' file
+you will need to use a utility such as WinZip, unless you have Cygwin
+or a similar environment installed, in which case the above Unix shell
+command should work fine.) If you want the packages somewhere else,
+just change `PACKAGE_PREFIX'.
+
+ Note that XEmacs finds the packages automatically anywhere underneath
+the directory tree where it expects to find the packages. All you need
+to do is put stuff there; you don't need to run any program to tell
+XEmacs to find the packges, or do anything of that sort.
+
+ However, XEmacs will only notice newly installed packages when it
+starts up, so you will have to restart if you are already running
+XEmacs.
+
+ For more details, *Note Startup Paths: (xemacs)Startup Paths, and
+*Note Packages: (xemacs)Packages.
+
+ As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
+ _NOTE_: For detailed information about how the package hierarchies
+work, *Note Package Overview: (lispref)Package Overview.
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.2, Next: Q2.1.3, Prev: Q2.1.1, Up: Installation
+
+Q2.1.2: Can I install the packages individually?
+------------------------------------------------
+
+Yes, you can download individual packages from the FTP site (*note
+Q2.1.1::). Since packages are automatically noticed at startup, you
+just have to put them in the right place.
+
+ Note: If you are upgrading packages already installed, it's best to
+remove the old package first (*note Q2.1.4::).
+
+ For example if we are installing the `xemacs-base' package (version
+1.48):
+
+ mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+ cd $prefix/lib/xemacs/xemacs-packages RET
+ gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+ Or if you have GNU tar, the last step can be:
+
+ tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
+
+ For MULE related packages, it is best to untar into the
+`mule-packages' hierarchy, i.e. for the `mule-base' package, version
+1.37:
+
+ mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+ cd $prefix/lib/xemacs/mule-packages RET
+ gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+ Or if you have GNU tar, the last step can be:
+
+ tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.3, Next: Q2.1.4, Prev: Q2.1.2, Up: Installation
+
+Q2.1.3: Can I install the packages automatically?
+-------------------------------------------------
+
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+ Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages you
+need are:
+
+ efs - To fetch the files from the FTP site or mirrors.
+ xemacs-base - Needed by efs.
+
+ and optionally:
+
+ mailcrypt - For PGP verification of the package-index file.
+
+ After installing these by hand, fire up XEmacs and follow these
+steps.
+
+ 1. Choose a download site.
+ * via menu: Tools -> Packages -> Set Download Site
+
+ * via keyb: M-x customize-variable RET package-get-remote RET
+ (put in the details of remote host and directory)
+
+ If the package tarballs _AND_ the package-index file are in a
+ local directory, you can: M-x pui-set-local-package-get-directory
+ RET
+
+ 2. Obtain a list of packages and display the list in a buffer named
+ "*Packages*".
+ * menu: Tools -> Packages -> List & Install
+
+ * keyb: M-x pui-list-packages RET
+
+ XEmacs will now connect to the remote site and download the latest
+ package-index file.
+
+ The resulting buffer, "*Packages*" has brief instructions at the
+ end of the buffer.
+
+ 3. Choose the packages you wish to install.
+ * mouse: Click button 2 on the package name.
+
+ * keyb: RET on the package name
+
+ 4. Make sure you have everything you need.
+ * menu: Packages -> Add Required
+
+ * keyb: r
+
+ XEmacs will now search for packages that are required by the ones
+ that you have chosen to install and offer to select those packages
+ also.
+
+ For novices and gurus alike, this step can save your bacon. It's
+ easy to forget to install a critical package.
+
+ 5. Download and install the packages.
+ * menu: Packages -> Install/Remove Selected
+
+ * keyb: x
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.4, Next: Q2.1.5, Prev: Q2.1.3, Up: Installation
+
+Q2.1.4: Can I upgrade or remove packages?
+-----------------------------------------
+
+As the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
+pgkinfo/MANIFEST.pkgname file which list all the files belong to the
+package. M-x package-admin-delete-binary-package RET can be used to
+remove a package using this file.
+
+ Note that the interactive package tools included with XEmacs already
+do this for you.
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.5, Next: Q2.1.6, Prev: Q2.1.4, Up: Installation
+
+Q2.1.5: Which packages to install?
+----------------------------------
+
+Unless you are an advanced user, just install everything.
+
+ If you really want to install only what's absolutely needed, a good
+minimal set of packages for XEmacs-latin1 would be
+
+ xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+ edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+ text-modes, time, mailcrypt
+
+ If you are using the XEmacs package tools, don't forget to do:
+
+ Packages -> Add Required
+
+ To make sure you have everything that the packages you have chosen to
+install need.
+
+ *Note Q1.7.2::, for a description of the various packages.
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.6, Next: Q2.1.7, Prev: Q2.1.5, Up: Installation
+
+Q2.1.6: Can you describe the package location process in more detail?
+---------------------------------------------------------------------
+
+On startup XEmacs looks for packages in so-called package hierarchies.
+Normally, there are three system wide hierarchies, like this:
+
+ $prefix/lib/xemacs/xemacs-packages/
+ Normal packages go here.
+
+ $prefix/lib/xemacs/mule-packages/
+ Mule packages go here and are only searched by MULE-enabled XEmacsen.
+
+ $prefix/lib/xemacs/site-packages/
+ Local and 3rd party packages go here.
+
+ This is what you get when you untar the SUMO tarballs under
+`$prefix/lib/xemacs'.
+
+ `$prefix' is specified using the `--prefix' parameter to
+`configure', and defaults to `usr/local'.
+
+ If the package path is not explicitly specified, XEmacs looks for the
+package directory `xemacs-packages' (and `mule-packages' and
+`site-packages') first under `~/.xemacs', then for a sister directory
+`lib/xemacs-VERSION' of the directory in which the XEmacs executable is
+located, then for a sister directory `lib/xemacs'. The XEmacs
+executable (under Unix at least) is installed by default in
+`/usr/local/bin'; this explains why XEmacs in its default installation
+will find packages that you put under `/usr/local/lib/xemacs'.
+
+ You can specify where exactly XEmacs looks for packages by using the
+`--with-package-prefix' or `--with-package-path' parameters to
+`configure' (or the equivalent settings in `config.inc', under
+Windows), or setting the `EMACSPACKAGEPATH' environment variable (which
+has the same format as `--with-package-path'). *Note Q2.1.1::.
+
+ See `configure.usage' for more info about the format of these
+`configure' parameters.
+
+ In addition to the system wide packages, each user can have his own
+packages installed under `~/.xemacs/'. If you want to install packages
+there using the interactive tools, you need to set
+`package-get-install-to-user-init-directory' to `t'.
+
+ The site-packages hierarchy replaces the old `site-lisp' directory.
+XEmacs no longer looks into a `site-lisp' directly by default. A good
+place to put `site-start.el' would be in
+`$prefix/lib/xemacs/site-packages/lisp/'.
+
+\1f
+File: xemacs-faq.info, Node: Q2.1.7, Next: Q2.2.1, Prev: Q2.1.6, Up: Installation
+
+Q2.1.7: EFS fails with "500 AUTH not understood" (NEW)
+------------------------------------------------------
+
+A typical error: FTP Error: USER request failed; 500 AUTH not
+understood.
+
+ Thanks to giacomo boffi <giacomo.boffi@polimi.it> who recommends 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.
+
+2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
+================================================================
+
+\1f
+File: xemacs-faq.info, Node: Q2.2.1, Next: Q2.2.2, Prev: Q2.1.7, Up: Installation
+
+Q2.2.1: Libraries in non-standard locations
+-------------------------------------------
+
+If your libraries are in a non-standard location, you can specify the
+location using the following flags to `configure'. Under 21.4 or
+earlier:
+
+ --site-libraries=WHATEVER
+ --site-includes=WHATEVER
+
+ Under 21.5 or later:
+
+ --with-site-libraries=WHATEVER
+ --with-site-includes=WHATEVER
+
+ If you have multiple paths to specify, use the following syntax:
+
+ --site-libraries='/path/one /path/two /path/etc'
+
+ If the libraries and headers reside in the directories `lib' and
+`include' of a common root (say `/sw') then both can be specified with
+a single option:
+
+ --site-prefixes=WHATEVER
+
+ or for 21.5:
+
+ --with-site-prefixes=WHATEVER
+
+\1f
+File: xemacs-faq.info, Node: Q2.2.2, Next: Q2.3.1, Prev: Q2.2.1, Up: Installation
+
+Q2.2.2: Why can't I strip XEmacs?
+---------------------------------
+
+Richard Cognot <cognot@fronsac.ensg.u-nancy.fr> writes:
+
+ Because of the way XEmacs (and every other Emacsen, AFAIK) is
+ built. The link gives you a bare-boned emacs (called temacs).
+ temacs is then run, preloading some of the lisp files. The result
+ is then dumped into a new executable, named xemacs, which will
+ contain all of the preloaded lisp functions and data.
+
+ Now, during the dump itself, the executable (code+data+symbols) is
+ written on disk using a special unexec() function. This function is
+ obviously heavily system dependent. And on some systems, it leads
+ to an executable which, although valid, cannot be stripped without
+ damage. If memory serves, this is especially the case for AIX
+ binaries. On other architectures it might work OK.
+
+ The Right Way to strip the emacs binary is to strip temacs prior to
+ dumping xemacs. This will always work, although you can do that
+ only if you install from sources (as temacs is `not' part of the
+ binary kits).
+
+ Nat Makarevitch <nat@nataa.fr.eu.org> writes:
+
+ Here is the trick:
+
+ 1. [ ./configure; make ]
+
+ 2. rm src/xemacs
+
+ 3. strip src/temacs
+
+ 4. make
+
+ 5. cp src/xemacs /usr/local/bin/xemacs
+
+ 6. cp lib-src/DOC-19.16-XEmacs
+ /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout
+
+2.3: Windows Installation (Windows, Cygwin, MinGW)
+==================================================
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.1, Next: Q2.3.2, Prev: Q2.2.2, Up: Installation
+
+Q2.3.1: What exactly are all the different ways to build XEmacs under Windows?
+------------------------------------------------------------------------------
+
+XEmacs can be built in several ways in the MS Windows environment.
+
+ The standard way is what we call the "native" port. It uses the
+Win32 API and has no connection with X whatsoever - it does not require
+X libraries to build, nor does it require an X server to run. The
+native port is the most reliable version and provides the best graphical
+support. Almost all development is geared towards this version, and
+there is little reason not to use it.
+
+ The second way to build is the Cygwin port. It takes advantage of
+Cygnus emulation library under Win32. *Note What are Cygwin and MinGW:
+Q1.2.5, for more information.
+
+ A third way is the MinGW port. It uses the Cygwin environment to
+build but does not require it at runtime. *Note What are Cygwin and
+MinGW: Q1.2.5, for more information.
+
+ Finally, you might also be able to build the non-Cygwin, non-MinGW
+"X" port. This was actually the first version of XEmacs that ran under
+MS Windows, and although the code is still in XEmacs, it's essentially
+orphaned and it's unlikely it will compile without a lot of work. If
+you want an MS Windows versin of XEmacs that supports X, use the Cygwin
+version. (The X support there is actively maintained, so that Windows
+developers can test the X support in XEmacs.)
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.2, Next: Q2.3.3, Prev: Q2.3.1, Up: Installation
+
+Q2.3.2: What compiler/libraries do I need to compile XEmacs?
+------------------------------------------------------------
+
+You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have
+some beta testers currently trying to compile with VC.NET, aka version
+7.0, but we can't yet report complete success.) For the Cygwin and
+MinGW versions, you need the Cygwin environment, which comes with GCC,
+the compiler used for those versions. *Note What are Cygwin and MinGW:
+Q1.2.5, for more information on Cygwin and MinGW.
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.3, Next: Q2.3.4, Prev: Q2.3.2, Up: Installation
+
+Q2.3.3: How do I compile the native port?
+-----------------------------------------
+
+Please read the file `nt/README' in the XEmacs distribution, which
+contains the full description.
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.4, Next: Q2.3.5, Prev: Q2.3.3, Up: Installation
+
+Q2.3.4: What do I need for Cygwin?
+----------------------------------
+
+You can find the Cygwin tools and compiler at:
+
+ `http://www.cygwin.com/'
+
+ Click on the `Install or update now!' link, which will download a
+file `setup.exe', which you can use to download everything else. (You
+will need to pick a mirror site; `mirrors.rcn.net' is probably the
+best.) You should go ahead and install everything - you'll get various
+ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG,
+TIFF, etc. You can also get X Windows here, if you want to compile
+under X.
+
+ If you want to compile without X, you will need the `xpm-nox'
+library, which must be specifically selected in the Cygwin netinstaller;
+it is not selected by default. The package has had various names.
+Currently it is called `cygXpm-noX4.dll'.
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.5, Next: Q2.3.6, Prev: Q2.3.4, Up: Installation
+
+Q2.3.5: How do I compile under Cygwin?
+--------------------------------------
+
+Similar as on Unix; use the usual `configure' and `make' process. Some
+problems to watch out for:
+
+ * make sure HOME is set. This controls where you `init.el' file
+ comes from;
+
+ * `CYGWIN' needs to be set to `tty' for process support to work;
+
+ * picking up some other grep or other UNIX-like tools can kill
+ configure;
+
+ * static heap too small, adjust `src/sheap-adjust.h' to a more
+ positive number;
+
+ * (Unconfirmed) The Cygwin version doesn't understand
+ `//machine/path' type paths so you will need to manually mount a
+ directory of this form under a unix style directory for a build to
+ work on the directory;
+
+ * If you're building *WITHOUT* X11, don't forget to change symlinks
+ `/usr/lib/libXpm.a' and `/usr/lib/libXpm.dll.a' to point to the
+ non-X versions of these libraries. By default they point to the X
+ versions. So:
+
+ /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a
+ /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
+
+ (This advice may now be obsolete because of the availability of the
+ cygXpm-noX4.dll package from Cygwin. Send confirmation to
+ <faq@xemacs.org>.)
+
+ * Other problems are listed in the `PROBLEMS' file, in the top-level
+ directory of the XEmacs sources.
+
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.6, Next: Q2.3.7, Prev: Q2.3.5, Up: Installation
+
+Q2.3.6: How do I compile using MinGW (aka `the -mno-cygwin flag to gcc')?
+-------------------------------------------------------------------------
+
+Similar to the method for Unix. Things to remember:
+
+ * Specify the target host on the command line for `./configure', e.g.
+ `./configure i586-pc-mingw32'.
+
+ * Be sure that your build directory is mounted such that it has the
+ same path either as a cygwin path (`/build/xemacs') or as a Windows
+ path (`c:\build\xemacs').
+
+ * Build `gcc -mno-cygwin' versions of the extra libs, i.e. `libpng',
+ `compface', etc.
+
+ * Specify the target location of the extra libs on the command line
+ to `configure', e.g.for 21.4 or earlier `./configure
+ --site-prefixes=/build/libs i586-pc-mingw32' and for 21.5 or later
+ `./configure --with-site-prefixes=/build/libs i586-pc-mingw32'.
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.7, Next: Q2.3.8, Prev: Q2.3.6, Up: Installation
+
+Q2.3.7: How do I compile with X support?
+----------------------------------------
+
+To compile under Cygwin, all you need to do is install XFree86, which
+is available as part of the standard Cygwin installation.
+`http://www.cygwin.com/'. Once installed, `configure' should
+automatically find the X libraries and compile with X support.
+
+ As noted above, the non-Cygwin X support is basically orphaned, and
+probably won't work. But if it want to try, it's described in
+`nt/README' in some detail. Basically, you need to get X11 libraries
+from `http://ftp.x.org', and compile them. If the precompiled versions
+are available somewhere, we don't know of it.
+
+\1f
+File: xemacs-faq.info, Node: Q2.3.8, Next: Q2.4.1, Prev: Q2.3.7, Up: Installation
+
+Q2.3.8: Cygwin XEmacs won't start - cygXpm-noX4.dll was not found (NEW)
+-----------------------------------------------------------------------
+
+The Cygwin binary distributed with the netinstaller uses an external DLL
+to handle XPM images (such as toolbar buttons). You may get an error
+like
+
+ This application has failed to start because cygXpm-noX4.dll was not found.
+ Re-installing the application may fix this problem.
+
+ Andy Piper <andy@xemacs.org> sez:
+
+ 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.
+
+ Ie, reinstalling XEmacs won't help because it is not part of the
+XEmacs distribution.
+
+2.4: General Troubleshooting
+============================
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.1, Next: Q2.4.2, Prev: Q2.3.8, Up: Installation
+
+Q2.4.1: How do I deal with bugs or with problems building, installing, or running?
+----------------------------------------------------------------------------------
+
+The file `PROBLEMS' contains information on many common problems that
+occur in building, installing and running XEmacs.
+
+ Reports of bugs in XEmacs should be sent to
+<xemacs-beta@xemacs.org>. You can also post to the newsgroup
+comp.emacs.xemacs (or equivalentlt, send to the mailing list
+<xemacs@xemacs.org>), but it is less likely that the developers will
+see it in a timely fashion. *Note Bugs: (xemacs)Bugs, for more
+information on how to report bugs. *Note Q1.4.2::, for more
+information on mailing lists relating to XEmacs.
+
+ There are three ways to read the Bugs section.
+
+ 1. In a printed copy of the XEmacs manual.
+
+ 2. With Info. First, start XEmacs. From the menu, select
+ `Help->Info (Online Docs)->Info Contents' to enter Info, then
+ click on `XEmacs', then on `Bugs'. Or, use the keyboard: do `C-h
+ i' to enter Info, then `m XEmacs RET' to get to the Emacs manual,
+ then `m Bugs RET' to get to the section on bugs. Or use
+ standalone Info in a like manner. (Standalone Info is part of the
+ Texinfo distribution, not part of the XEmacs distribution.)
+
+ 3. By hand. Do
+ cat info/xemacs* | more "+/^File: xemacs.info, Node: Bugs,"
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.2, Next: Q2.4.3, Prev: Q2.4.1, Up: Installation
+
+Q2.4.2: Help! XEmacs just crashed on me!
+-----------------------------------------
+
+First of all, don't panic. Whenever XEmacs crashes, it tries extremely
+hard to auto-save all of your files before dying. (The main time that
+this will not happen is if the machine physically lost power or if you
+killed the XEmacs process using `kill -9'). The next time you try to
+edit those files, you will be informed that a more recent auto-save
+file exists. You can use `M-x recover-file' to retrieve the auto-saved
+version of the file.
+
+ You can use the command `M-x recover-session' after a crash to pick
+up where you left off.
+
+ Now, XEmacs is not perfect, and there may occasionally be times, or
+particular sequences of actions, that cause it to crash. If you can
+come up with a reproducible way of doing this (or even if you have a
+pretty good memory of exactly what you were doing at the time), the
+maintainers would be very interested in knowing about it. The best way
+to report a bug is using `M-x report-emacs-bug' (or by selecting `Send
+Bug Report...' from the Help menu). If that won't work (e.g. you can't
+get XEmacs working at all), send ordinary mail to
+<xemacs-beta@xemacs.org>. _MAKE SURE_ to include the output from the
+crash, especially including the Lisp backtrace, as well as the XEmacs
+configuration from `M-x describe-installation' (or equivalently, the
+file `Installation' in the top of the build tree). Note that the
+developers do _not_ usually follow `comp.emacs.xemacs' on a regular
+basis; thus, this is better for general questions about XEmacs than bug
+reports.
+
+ If at all possible, include a C stack backtrace of the core dump that
+was produced. This shows where exactly things went wrong, and makes it
+much easier to diagnose problems. To do this under Unix and Mac OS X,
+you need to locate the core file (it's called `core', and is usually
+sitting in the directory that you started XEmacs from, or your home
+directory if that other directory was not writable). Then, go to that
+directory and execute a command like:
+
+ gdb `which xemacs` core
+
+ and then issue the command `where' to get the stack backtrace. You
+might have to use `dbx' or some similar debugger in place of `gdb'. If
+you don't have any such debugger available, complain to your system
+administrator.
+
+ It's possible that a core file didn't get produced or the stack trace
+from gdb is garbage, in which case you're out of luck unless you can
+reproduce the bug. A nonexistent core file can happen in some
+circumstances on some operating systems, depending on what exactly
+triggered the crash. It's also possible, however, that your limits are
+set to turn them off. You may be able to reenable them using a command
+like `unlimit coredumpsize' or `ulimit -c'. (To find out how your
+limits are set, use the command `limit'.) However, if you didn't
+explicitly set your limits this way, go complain to your system
+administrator and tell him not to disable core files by default.
+
+ A garbaged stack trace can happen for various reasons. Some versions
+of gdb are broken on certain operating systems and aren't able to read
+the core file. It's also possible that the stack got overwritten
+during the crash. A very simple reason, however, is that your version
+of XEmacs was compiled without debugging information or had the
+debugging information stripped. A compilation with optimization can
+also result in partly or completely garbaged stack trace. In such
+cases, you will need to recompile XEmacs with debugging information and
+without optimization; *Note How to debug an XEmacs problem with a
+debugger: Q2.4.4. Note also that core files currently don't work at
+all under Cygwin, and the only way to get a backtrace is to run XEmacs
+from gdb.
+
+ If you cannot get a backtrace from the core dump, but can reproduce
+the problem, try running XEmacs under gdb. The goal is to get clean C
+and Lisp backtraces and submit a bug report including full
+configuration information as described above, as this will greatly
+assist in the process of tracking down the bug. However, even partial
+information is better than none. The process of getting backtraces
+from gdb is described in detail in *Note How to debug an XEmacs problem
+with a debugger: Q2.4.4.
+
+ If you're under Microsoft Windows, you're out of luck unless you
+happen to have a debugging aid installed on your system, for example
+Visual C++. In this case, the crash will result in a message giving
+you the option to enter a debugger (for example, by pressing `Cancel').
+Do this and locate the stack-trace window. (If your XEmacs was built
+without debugging information, the stack trace may not be very useful.)
+
+ When making a problem report make sure that:
+
+ 1. Report *all* of the information output by XEmacs during the crash.
+
+ 2. You mention what O/S and Hardware you are running XEmacs on.
+
+ 3. What version of XEmacs you are running.
+
+ 4. What build options you are using.
+
+ 5. If the problem is related to graphics and you are running Unix or
+ Mac OS X, we will also need to know what version of the X Window
+ System you are running, and what window manager you are using.
+
+ 6. If the problem happened on a TTY, please include the terminal type.
+
+ 7. Try very hard to get both C and Lisp backtraces, as described
+ above.
+
+ Much of the information above is automatically generated by `M-x
+report-emacs-bug'. Even more, and often useful, information can be
+generated by redirecting the output of `make' and `make check' to a
+file (`beta.err' is the default used by `build-report'), and executing
+`M-x build-report'.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.3, Next: Q2.4.4, Prev: Q2.4.2, Up: Installation
+
+Q2.4.3: XEmacs crashes and I compiled it myself.
+------------------------------------------------
+
+There have been a variety of reports of crashes due to compilers with
+buggy optimizers. If you are compiling with optimization, consider
+turning it off (*note How to debug an XEmacs problem with a debugger:
+Q2.4.4.) and recompiling.
+
+ Please see the `PROBLEMS' file that comes with XEmacs (it's in the
+top-level source directory) to read what it says about your platform.
+
+ If you compiled XEmacs 21.4 or ealier using `--use-union-type', or
+21.5 or later using `--enable-union-type' (or in either case used the
+option `USE_UNION_TYPE' in `config.inc' under Windows), try recompiling
+again without it. The union type has been known to trigger compiler
+errors in a number of cases.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.4, Next: Q2.4.5, Prev: Q2.4.3, Up: Installation
+
+Q2.4.4: How to debug an XEmacs problem with a debugger
+------------------------------------------------------
+
+If XEmacs does crash on you, one of the most productive things you can
+do to help get the bug fixed is to poke around a bit with the debugger.
+Here are some hints:
+
+ * First of all, if the crash is at all reproducible, consider very
+ strongly recompiling your XEmacs with debugging symbols and with no
+ optimization (e.g. with GCC use the compiler flags `-g -O0' -
+ that's an "oh" followed by a zero), and with the configure options
+ `--debug=yes' and `--error-checking=all' (`--enable-debug=yes' and
+ `--enable-error-checking=all' on XEmacs 21.5 or later). This will
+ make your XEmacs run somewhat slower, but you are a lot more
+ likely to catch the problem earlier (closer to its source). It
+ makes it a lot easier to determine what's going on with a
+ debugger. The way to control the compiler flags is with the
+ configuration option `--cflags' (`--with-cflags' in 21.5). If you
+ have a recent version of 21.5, you should use
+ `--without-optimization' in preference to directly setting
+ `--cflags'.
+
+ * If it's not a true crash (_i.e._, XEmacs is hung, or a zombie
+ process), or it's inconvenient to run XEmacs again because XEmacs
+ is already running or is running in batch mode as part of a bunch
+ of scripts, you may be able to attach to the existing process with
+ your debugger. Under Unix and Mac OS X, the typical way to do
+ this is to first use some variant of the `ps' command to figure
+ out the process ID of XEmacs, for example `ps -auxww | grep
+ xemacs' under a BSD variant, `ps -elf | grep xemacs' under Linux
+ or System V, or `ps -aW | grep xemacs' under Cygwin. Then run
+
+ gdb /path/to/xemacs/xemacs ####
+
+ Where `####' is the process id of your XEmacs. (If you're not
+ sure, try using `which xemacs'.) When gdb attaches, the xemacs
+ will stop and you can type `where' in gdb to get a stack trace as
+ usual. To get things moving again, you can just type `quit' in
+ gdb. It'll tell you the program is running and ask if you want to
+ quit anyways. Say `y' and it'll quit and have your emacs continue
+ from where it was at.
+
+ If you're running another debugger, a similar method may work, or
+ you may have to run the debugger first and then use the `attach'
+ command or something similar.
+
+ Under Microsoft Windows, use the menu item `Build->Start
+ Debug->Attach to Process...' and select the XEmacs process from
+ the list given.
+
+ * If you're able to run XEmacs under a debugger and reproduce the
+ crash, here are some things you can do:
+
+ * If XEmacs is hitting an assertion failure, put a breakpoint on
+ `assert_failed()'.
+
+ * If XEmacs is hitting some weird Lisp error that's causing it to
+ crash (e.g. during startup), put a breakpoint on
+ `signal_1()'--this is declared static in `eval.c'.
+
+ * If XEmacs is outputting lots of X errors, put a breakpoint on
+ `x_error_handler()'; that will tell you which call is causing
+ them. Note that the result may not be very useful by default
+ because X Windows normally operates asynchronously: A bunch of
+ commands are buffered up and then sent to the server all at once.
+ This greatly improves performance over a network but means that an
+ error may not be reported until the server receives the commands,
+ which can be long after XEmacs made the erroneous calls. For best
+ results, you need to make the X server synchronous before getting
+ the backtrace. This can be done by starting XEmacs with the
+ `-sync' option or executing the Lisp code `(x-debug-mode t)'.
+
+ * Internally, you will probably see lots of variables that hold
+ objects of type `Lisp_Object'. These are references to Lisp
+ objects. Printing them out with the debugger probably won't be too
+ useful--you'll likely just see a number. To decode them, do this:
+
+ call debug_print (OBJECT)
+
+ where OBJECT is whatever you want to decode (it can be a variable,
+ a function call, etc.). This uses the Lisp printing routines to
+ out a readable representation on the TTY from which the xemacs
+ process was invoked.
+
+ Under 21.5 and later, `dp' is defined as an easier-to-type
+ equivalent of `debug_print'. You can also try `dpa' if you can't
+ see the output from `debug_print' (this will return a string
+ containing the output), or use `debug_p3' if `debug_print' itself
+ triggers a crash (this is a less comprehensive but super-safe way
+ to print out a Lisp object).
+
+ * If you want to get a Lisp backtrace showing the Lisp call stack,
+ do this:
+
+ call debug_backtrace ()
+
+ Under 21.5 and later, `db' is defined as an easier-to-type
+ equivalent of `debug_backtrace'.
+
+ * Using `debug_print' and `debug_backtrace' has two disadvantages -
+ they can only be used with a running (including hung or zombie)
+ xemacs process, and they do not display the internal C structure
+ of a Lisp Object. Even if all you've got is a core dump, all is
+ not lost.
+
+ If you're using GDB, there are some macros in the file
+ `src/.gdbinit' in the XEmacs source distribution that should make
+ it easier for you to decode Lisp objects. This file is
+ automatically read by gdb if gdb is run in the directory where
+ xemacs was built, and contains these useful macros to inspect the
+ state of xemacs:
+
+ `pobj'
+ Usage: pobj lisp_object
+ Print the internal C representation of a lisp object.
+
+ `xtype'
+ Usage: xtype lisp_object
+ Print the Lisp type of a lisp object.
+
+ `lbt'
+ Usage: lbt
+ Print the current Lisp stack trace. Requires a running
+ xemacs process. (It works by calling the db routine
+ described above.)
+
+ `ldp'
+ Usage: ldp lisp_object
+ Print a Lisp Object value using the Lisp printer. Requires a
+ running xemacs process. (It works by calling the dp routine
+ described above.)
+
+ `run-temacs'
+ Usage: run-temacs
+ Run temacs interactively, like xemacs. Use this with
+ debugging tools (like purify) that cannot deal with dumping,
+ or when temacs builds successfully, but xemacs does not.
+
+ `dump-temacs'
+ Usage: dump-temacs
+ Run the dumping part of the build procedure. Use when
+ debugging temacs, not xemacs! Use this when temacs builds
+ successfully, but xemacs does not.
+
+ `check-xemacs'
+ Usage: check-xemacs
+ Run the test suite. Equivalent to 'make check'.
+
+ `check-temacs'
+ Usage: check-temacs
+ Run the test suite on temacs. Equivalent to 'make
+ check-temacs'. Use this with debugging tools (like purify)
+ that cannot deal with dumping, or when temacs builds
+ successfully, but xemacs does not.
+
+ If you are using Sun's `dbx' debugger, there is an equivalent file
+ `src/.dbxrc', which defines the same commands for dbx.
+
+ * If you're using a debugger to get a C stack backtrace and you're
+ seeing stack traces with some of the innermost frames mangled, it
+ may be due to dynamic linking. (This happens especially under
+ Linux.) Consider reconfiguring with `--dynamic=no'
+ (`--with-dynamic=no' in 21.5 or later). Also, sometimes (again
+ under Linux), stack backtraces of core dumps will have the frame
+ where the fatal signal occurred mangled; if you can obtain a stack
+ trace while running the XEmacs process under a debugger, the stack
+ trace should be clean.
+
+ Curtiss <1CMC3466@ibm.mtsac.edu> suggests upgrading to ld.so
+ version 1.8 if dynamic linking and debugging is a problem on Linux.
+
+ * If you're using a debugger to get a C stack backtrace and you're
+ getting a completely mangled and bogus stack trace, it's probably
+ due to one of the following:
+
+ a. Your executable has been stripped. Bad news. Tell your
+ sysadmin not to do this--it doesn't accomplish anything
+ except to save a bit of disk space, and makes debugging much
+ much harder.
+
+ b. Your stack is getting trashed. Debugging this is hard; you
+ have to do a binary-search type of narrowing down where the
+ crash occurs, until you figure out exactly which line is
+ causing the problem. Of course, this only works if the bug
+ is highly reproducible. Also, in many cases if you run
+ XEmacs from the debugger, the debugger can protect the stack
+ somewhat. However, if the stack is being smashed, it is
+ typically the case that there is a wild pointer somewhere in
+ the program, often quite far from where the crash occurs.
+
+ c. If your stack trace has exactly one frame in it, with address
+ 0x0, this could simply mean that XEmacs attempted to execute
+ code at that address, e.g. through jumping to a null function
+ pointer. Unfortunately, under those circumstances, GDB under
+ Linux doesn't know how to get a stack trace. (Yes, this is
+ the fourth Linux-related problem I've mentioned. I have no
+ idea why GDB under Linux is so bogus. Complain to the GDB
+ authors, or to comp.os.linux.development.system.) Again,
+ you'll have to use the narrowing-down process described above.
+
+ d. You will get a Lisp backtrace output when XEmacs crashes, so
+ you'll have something useful.
+
+
+ * If you compile with the newer gcc variants gcc-2.8 or egcs, you
+ will also need gdb 4.17 or above. Earlier releases of gdb can't
+ handle the debug information generated by the newer compilers.
+
+ * In versions of XEmacs before 21.2.27, `src/.gdbinit' was named
+ `src/gdbinit'. This had the disadvantage of not being sourced
+ automatically by gdb, so you had to set that up yourself.
+
+ * If you are running Microsoft Windows, the the file `nt/README' for
+ further information about debugging XEmacs.
+
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.5, Next: Q2.4.6, Prev: Q2.4.4, Up: Installation
+
+Q2.4.5: I get a cryptic error message when trying to do something.
+------------------------------------------------------------------
+
+When I try to use some particular option of some particular package, I
+get a cryptic error message in the minibuffer.
+
+ If the message went by too quickly, use `Help->Recent Messages' from
+the menubar (or type `C-h l') to see recent messages.
+
+ If you can't figure out what's going on, select
+`Options->Troubleshooting->Debug on Error' from the menubar (or type
+`M-:' then `(setq debug-on-error t)') then try and make the error
+happen again. This will put in the debugger (you can get out of this
+and continue what you were doing before by typing `c') and give you a
+backtrace that may be enlightening. If not, try reading through this
+FAQ; if that fails, you could try posting to `comp.emacs.xemacs'
+(making sure to include the backtrace) and someone may be able to help.
+If you can identify which XEmacs Lisp source file the error is coming
+from you can get a more detailed stack backtrace by doing the following:
+
+ 1. Visit the .el file in an XEmacs buffer.
+
+ 2. Issue the command `M-x eval-current-buffer'.
+
+ 3. Reproduce the error.
+
+ For more information on debugging Lisp code, *Note Debugging:
+(lispref)Debugging.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.6, Next: Q2.4.7, Prev: Q2.4.5, Up: Installation
+
+Q2.4.6: XEmacs hangs when I try to do something.
+------------------------------------------------
+
+XEmacs might just be slow; some operations take a long time. XEmacs
+may also be waiting on a response from the network, for example when
+you are trying to send mail.
+
+ You can usually interrupt XEmacs by typing `C-g'. If not (for
+example, Lisp code explicitly disabled this by setting `inhibit-quit'),
+you can use the "critical quit" mechanism by typing `Control-Shift-G'.
+This should also pop you into the debugger and give you a backtrace,
+which can tell you where the problem is (*note How to debug an XEmacs
+problem with a debugger: Q2.4.4.). (Note that setting `debug-on-quit'
+or selecting `Options->Troubleshooting->Debug on Quit' will also cause
+regular `C-g' to enter the debugger and give you a backtrace.)
+
+ If you can't interrupt XEmacs this way, or for some reason XEmacs is
+not talking to the keyboard, you can try sending the `SIGINT' signal
+using the `kill' command.
+
+ If the Lisp backtrace isn't enlightening, or if XEmacs is so hung
+that you can't interrupt it at all, you could try attaching to the
+process and getting a C stack backtrace. *Note How to debug an XEmacs
+problem with a debugger: Q2.4.4.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.7, Next: Q2.4.8, Prev: Q2.4.6, Up: Installation
+
+Q2.4.7: I get an error message when XEmacs is running in batch mode.
+--------------------------------------------------------------------
+
+Typically this happens when you are trying to compile some Elisp code.
+If you are doing this as part of XEmacs or the XEmacs packages, you
+should automatically get a backtrace, which can help you determine the
+source of the problem. In other cases, you can get equivalent results
+by setting the environment variable `XEMACSDEBUG' to `(setq
+stack-trace-on-error t load-always-display-messages t
+load-ignore-out-of-date-elc-files t load-show-full-path-in-messages t)'
+(this needs to be all on one line; to set an environment variable, use
+`export XEMACSDEBUG='FOO'' under `bash', `zsh', etc. or `setenv
+XEMACSDEBUG 'FOO'' under `csh' and `tcsh'). `XEMACSDEBUG' specifies
+Lisp code that will be executed at startup time.
+
+ If the backtrace is not sufficiently useful in helping you diagnose
+the problem, you should consider using a debugger such as GDB. *Note
+How to debug an XEmacs problem with a debugger: Q2.4.4. You probably
+want to set a breakpoint on `signal_1'. Since such errors often occur
+during compiling, which is often triggered by a complex command run
+from a make suite, it may be easier to attach to the process once it's
+running.
+
+ Under Microsoft Windows (and perhaps other operating systems), there
+is another useful trick you can do if you have configured with debugging
+support (configure option `--debug' (`--with-debug' in 21.5) or setting
+`DEBUG_XEMACS' in `nt/config.inc'). Set the environment variable
+`XEMACSDEBUG' (as described above) to `(setq debug-on-error t)'. Then,
+when an error occurs noninteractively, instead of trying to invoke the
+Lisp debugger (which obviously won't work), XEmacs will break out to a
+C debugger using `(force-debugging-signal t)'. _NOTE_: This runs
+`abort()'!!! (As well as and after executing INT 3 under MS Windows,
+which should invoke a debugger if it's active.) This is guaranteed to
+kill XEmacs! (But in this situation, XEmacs is about to die anyway, and
+if no debugger is present, this will usefully dump core.)
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.8, Next: Q2.4.9, Prev: Q2.4.7, Up: Installation
+
+Q2.4.8: The keyboard or mouse is not working properly, or I have some other event-related problem.
+--------------------------------------------------------------------------------------------------
+
+XEmacs has various facilities for debugging event handling.
+
+ First, try setting the variable `debug-emacs-events' to non-zero.
+This will output various information showing which events are being
+received and how they are being translated. This may show you, for
+example, that a key command is getting intercepted using
+`key-translation-map'; this problem can otherwise be very tricky to
+debug.
+
+ Under X, you can see exactly which events are being received from the
+window system by setting `x-debug-events' to non-zero. (The value `1'
+gives you regular output, and `2' gives you verbose output, including
+all parameters.)
+
+ A similar facility exists under MS Windows: Set
+`debug-mswindows-events' to non-zero. (The value `1' gives you regular
+output. The value `2' gives you verbose output, including all
+parameters. The value `3' gives you super-gorily-detailed output.)
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.9, Next: Q2.4.10, Prev: Q2.4.8, Up: Installation
+
+Q2.4.9: `C-g' doesn't work for me. Is it broken?
+-------------------------------------------------
+
+`C-g' does work for most people in most circumstances. If it doesn't,
+there are two possible explanations:
+
+ 1. XEmacs is hung in a way that prevents `C-g' from working. This
+ can happen when code is wrapped with a binding of `inhibit-quit'
+ to `t'; you should still be able interrupt XEmacs using "critical
+ quit". On the other hand, XEmacs may be seriously wedged. (If
+ you're lucky, sending `SIGINT' to the XEmacs process will
+ interrupt it.) *Note XEmacs hangs when I try to do something.:
+ Q2.4.6.
+
+ 2. `C-g' is indeed broken on your system. To test, try executing
+ `(while t)' from the `*scratch*' buffer. If `C-g' doesn't
+ interrupt, then it's broken. This used to happen with systems
+ where `SIGIO' was broken, but `BROKEN_SIGIO' wasn't defined.
+ However, there may not be very many such systems nowadays.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.10, Next: Q2.4.11, Prev: Q2.4.9, Up: Installation
+
+Q2.4.10: How do I debug process-related problems?
+-------------------------------------------------
+
+Under MS Windows, you can set the variable
+`debug-mswindows-process-command-lines' to non-`nil' to get information
+on exactly what is getting passed to a process. This can be useful in
+determining problems with quoting. (Under Unix, a process receives each
+argument separately, but under MS Windows a single command line is
+received, and arguments with spaces or other special characters in them
+must be quoted. Unfortunately this means that each process,
+potentially at least, has its own quoting conventions, and the code to
+process quoting conventions in `cmd.exe', the Visual C++ startup code
+and the like is baroque and poorly documented. XEmacs uses the variable
+`mswindows-construct-process-command-line-alist' to construct a command
+line from a list of arguments based on the command to be run, but it is
+(and cannot be) a perfect solution.)
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.11, Next: Q2.4.12, Prev: Q2.4.10, Up: Installation
+
+Q2.4.11: XEmacs is outputting lots of X errors.
+-----------------------------------------------
+
+If this is happening, we would very much like to know what's causing
+them. To find this out, see *Note How to debug an XEmacs problem with
+a debugger: Q2.4.4. Try to get both a C and Lisp backtrace, and send
+them along with the full error output to <xemacs-beta@xemacs.org>.
+
+\1f
+File: xemacs-faq.info, Node: Q2.4.12, Next: Q2.5.1, Prev: Q2.4.11, Up: Installation
+
+Q2.4.12: After upgrading, XEmacs won't do `foo' any more!
+---------------------------------------------------------
+
+You have been used to doing `foo', but now when you invoke it (or click
+the toolbar button or select the menu item), nothing (or an error)
+happens. The simplest explanation is that you are missing a package
+that is essential to you. You can either track it down and install it
+(there is a list of packages and brief descriptions of their contents
+in `etc/PACKAGES'), or install the `Sumo Tarball' (*note How do I
+figure out which packages to install?: Q2.1.2.).
+
+2.5: Startup-Related Problems
+=============================
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.1, Next: Q2.5.2, Prev: Q2.4.12, Up: Installation
+
+Q2.5.1: XEmacs cannot connect to my X Terminal!
+-----------------------------------------------
+
+Help! I can not get XEmacs to display on my Envizex X-terminal!
+
+ Try setting the `DISPLAY' variable using the numeric IP address of
+the host you are running XEmacs from.
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.2, Next: Q2.5.3, Prev: Q2.5.1, Up: Installation
+
+Q2.5.2 Startup problems related to paths or package locations.
+--------------------------------------------------------------
+
+First of all, if XEmacs can't find the packages, check to make sure
+that you put the packages in the right place, or that you told XEmacs
+where to look for the packages when you compiled it. *Note Q2.1.1::.
+
+ If something is still going wrong, or you get a startup warning about
+not being able to deduce some paths, you can get detailed information
+on the path-searching process at startup by setting the environment
+variable `EMACSDEBUGPATHS' to a non-null value. One thing to look for
+if you're having package problems is the value of
+`configure-package-path'. This corresponds to what was compiled into
+XEmacs using the `--package-prefix' or `--package-path' parameter
+(*note Q2.1.1::). If this has the value of `nil', this means that no
+value was compiled into XEmacs using these parameters.
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.3, Next: Q2.5.4, Prev: Q2.5.2, Up: Installation
+
+Q2.5.3: XEmacs won't start without network.
+-------------------------------------------
+
+If XEmacs starts when you're on the network, but fails when you're not
+on the network, you may be missing a "localhost" entry in your
+`/etc/hosts' file. The file should contain an entry like:
+
+ 127.0.0.1 localhost
+
+ Add that line, and XEmacs will be happy.
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.4, Next: Q2.5.5, Prev: Q2.5.3, Up: Installation
+
+Q2.5.4: Startup warnings about deducing proper fonts?
+-----------------------------------------------------
+
+How can I avoid the startup warnings about deducing proper fonts?
+
+ This is highly dependent on your installation, but try with the
+following font as your base font for XEmacs and see what it does:
+
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+
+ More precisely, do the following in your resource file:
+
+Emacs.default.attributeFont: \
+-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
+
+ If you just don't want to see the `*Warnings*' buffer at startup
+time, you can set this:
+
+ (setq display-warning-minimum-level 'error)
+
+ The buffer still exists; it just isn't in your face.
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.5, Next: Q2.5.6, Prev: Q2.5.4, Up: Installation
+
+Q2.5.5: Warnings from incorrect key modifiers.
+----------------------------------------------
+
+The following information comes from the `PROBLEMS' file that comes
+with XEmacs.
+
+ If you're having troubles with HP/UX it is because HP/UX defines the
+modifiers wrong in X. Here is a shell script to fix the problem; be
+sure that it is run after VUE configures the X server.
+
+ #! /bin/sh
+ xmodmap 2> /dev/null - << EOF
+ keysym Alt_L = Meta_L
+ keysym Alt_R = Meta_R
+ EOF
+
+ xmodmap - << EOF
+ clear mod1
+ keysym Mode_switch = NoSymbol
+ add mod1 = Meta_L
+ keysym Meta_R = Mode_switch
+ add mod2 = Mode_switch
+ EOF
+
+\1f
+File: xemacs-faq.info, Node: Q2.5.6, Prev: Q2.5.5, Up: Installation
+
+Q2.5.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed?
+-----------------------------------------------------------------------------------------------------------
+
+Yes.
+
+ The console was there because `temacs' (and in turn, `xemacs') was a
+console application, and Windows typically creates a new console for a
+console process unless the creating process requests that one isn't
+created. This used to be fixed with `runemacs', a small Windows
+application that existed merely to start `xemacs', stating that it
+didn't want a console.
+
+ XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI"
+application. The explanation of what that means is included for
+educational value.
+
+ When building an application to be run in a Win32 environment, you
+must state which sub-system it is to run in. Valid subsystems include
+"console" and "gui". The subsystem you use affects the run time
+libraries linked into your application, the start up function that is
+run before control is handed over to your application, the entry point
+to your program, and how Windows normally invokes your program. (Console
+programs automatically get a console created for them at startup if
+their stdin/stdout don't point anywhere useful, which is the case when
+run from the GUI. This is a stupid design, of course - instead, the
+console should get created only when the first I/O actually occurs!
+GUI programs have an equally stupid design: When called from
+`CMD.EXE'/`COMMAND.COM', their stdin/stdout will be set to point
+nowhere useful, even though the command shell has its own stdin/stdout.
+It's as if someone who had learned a bit about stdio but had no actual
+knowledge of interprocess communication designed the scheme;
+unfortunately, the whole process-communication aspect of the Win32 API
+is equally badly designed.) For example, the entry point for a console
+app is "main" (which is what you'd expect for a C/C++ program), but the
+entry point for a "gui" app is "WinMain". This confuses and annoys a
+lot of programmers who've grown up on Unix systems, where the kernel
+doesn't really care whether your application is a gui program or not.
+
+ For reasons not altogether clear, and are lost in the mists of time
+and tradition, XEmacs on Win32 started out as a console application, and
+therefore a console was automatically created for it. (It may have been
+made a console application partly because a console is needed in some
+circumstances, especially under Win95, to interrupt, terminate, or send
+signals to a child process, and because of the bogosity mentioned above
+with GUI programs and the standard command shell. Currently, XEmacs
+just creates and immediately hides a console when necessary, and works
+around the "no useful stdio" problem by creating its own console window
+as necessary to display messages in.)
+
+\1f
+File: xemacs-faq.info, Node: Editing, Next: Display, Prev: Installation, Up: Top
+
+3 Editing Functions
+*******************
+
+This is part 3 of the XEmacs Frequently Asked Questions list. This
+section is devoted to the editing-related capabilities of XEmacs (the
+keyboard, mouse, buffers, text selections, etc.) and how to customize
+them.
+
+* Menu:
+
+3.0: The Keyboard
+* Q3.0.1:: How can I customize the keyboard?
+* Q3.0.2:: How can I bind complex functions (or macros) to keys?
+* Q3.0.3:: How do I bind C-. and C-; to scroll one line up and down?
+* Q3.0.4:: Globally binding Delete?
+* Q3.0.5:: How to map Help key alone on Sun type4 keyboard?
+* Q3.0.6:: How can you type in special characters in XEmacs?
+* Q3.0.7:: Can I turn on "sticky" modifier keys?
+* Q3.0.8:: How do I map the arrow keys?
+* Q3.0.9:: HP Alt key as Meta.
+* Q3.0.10:: Why does edt emulation not work?
+* Q3.0.11:: How can I emulate VI and use it as my default mode?
+
+3.1: The Mouse
+* Q3.1.1:: How can I turn off Mouse pasting?
+* Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons?
+* Q3.1.3:: Clicking the left button does not do anything in buffer list.
+* Q3.1.4:: How can I get a list of buffers when I hit mouse button 3?
+* Q3.1.5:: How can I set XEmacs up so that it pastes where the text cursor is?
+
+3.2: Buffers, Text Editing
+* Q3.2.1:: Can I have the end of the buffer delimited in some way?
+* Q3.2.2:: How do I insert today's date into a buffer?
+* Q3.2.3:: How do I get a single minibuffer frame?
+* Q3.2.4:: How can I enable auto-indent and/or Filladapt?
+* Q3.2.5:: How can I get XEmacs to come up in text/auto-fill mode by default?
+
+3.3: Text Selections
+* Q3.3.1:: How do I select a rectangular region?
+* Q3.3.2:: How can I turn off or change highlighted selections?
+* Q3.3.3:: How do I cause typing on an active region to remove it?
+* Q3.3.4:: Can I turn off the highlight during isearch?
+* Q3.3.5:: Why is killing so slow?
+* Q3.3.6:: Why does M-w take so long?
+
+3.4: Editing Source Code
+* Q3.4.1:: I do not like cc-mode. How do I use the old c-mode?
+* Q3.4.2:: How do you make XEmacs indent CL if-clauses correctly?
+
+3.0: The Keyboard
+=================
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.1, Next: Q3.0.2, Prev: Editing, Up: Editing
+
+Q3.0.1: How can I customize the keyboard?
+-----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.2, Next: Q3.0.3, Prev: Q3.0.1, Up: Editing
+
+Q3.0.2: How can I bind complex functions (or macros) to keys?
+-------------------------------------------------------------
+
+As an example, say you want the `paste' key on a Sun keyboard to insert
+the current Primary X selection at point. You can accomplish this with:
+
+ (define-key global-map [f18] 'x-insert-selection)
+
+ However, this only works if there is a current X selection (the
+selection will be highlighted). The functionality I like is for the
+`paste' key to insert the current X selection if there is one,
+otherwise insert the contents of the clipboard. To do this you need to
+pass arguments to `x-insert-selection'. This is done by wrapping the
+call in a 'lambda form:
+
+ (global-set-key [f18]
+ (lambda () (interactive) (x-insert-selection t nil)))
+
+ This binds the f18 key to a "generic" functional object. The
+interactive spec is required because only interactive functions can be
+bound to keys.
+
+ For the FAQ example you could use:
+
+ (global-set-key [(control ?.)]
+ (lambda () (interactive) (scroll-up 1)))
+ (global-set-key [(control ?;)]
+ (lambda () (interactive) (scroll-up -1)))
+
+ This is fine if you only need a few functions within the lambda body.
+If you're doing more it's cleaner to define a separate function. *Note
+How do I bind C-. and C-; to scroll one line up and down?: Q3.0.3.
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.3, Next: Q3.0.4, Prev: Q3.0.2, Up: Editing
+
+Q3.0.3: How do I bind C-. and C-; to scroll one line up and down?
+-----------------------------------------------------------------
+
+Add the following (Thanks to Richard Mlynarik <mly@adoc.xerox.com> and
+Wayne Newberry <wayne@zen.cac.stratus.com>) to `.emacs':
+
+ (defun scroll-up-one-line ()
+ (interactive)
+ (scroll-up 1))
+
+ (defun scroll-down-one-line ()
+ (interactive)
+ (scroll-down 1))
+
+ (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-.
+ (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-;
+
+ The key point is that you can only bind simple functions to keys; you
+can not bind a key to a function that you're also passing arguments to.
+(*note How can I bind complex functions (or macros) to keys?: Q3.0.2.
+for a better answer).
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.4, Next: Q3.0.5, Prev: Q3.0.3, Up: Editing
+
+Q3.0.4: Globally binding `Delete'?
+----------------------------------
+
+I cannot manage to globally bind my `Delete' key to something other
+than the default. How does one do this?
+
+ Answer: The problem is that many modes explicitly bind `Delete'. To
+get around this, try the following:
+
+ (defun foo ()
+ (interactive)
+ (message "You hit DELETE"))
+
+ (define-key key-translation-map 'delete 'redirected-delete)
+ (global-set-key 'redirected-delete 'foo)
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.5, Next: Q3.0.6, Prev: Q3.0.4, Up: Editing
+
+Q3.0.5: How to map `Help' key alone on Sun type4 keyboard?
+----------------------------------------------------------
+
+The following works in GNU Emacs 19:
+
+ (global-set-key [help] 'help-command);; Help
+
+ The following works in XEmacs with the addition of shift:
+
+ (global-set-key [(shift help)] 'help-command);; Help
+
+ But it doesn't work alone. This is in the file `PROBLEMS' which
+should have come with your XEmacs installation: _Emacs ignores the
+`help' key when running OLWM_.
+
+ OLWM grabs the `help' key, and retransmits it to the appropriate
+client using `XSendEvent'. Allowing Emacs to react to synthetic events
+is a security hole, so this is turned off by default. You can enable
+it by setting the variable `x-allow-sendevents' to t. You can also
+cause fix this by telling OLWM to not grab the help key, with the null
+binding `OpenWindows.KeyboardCommand.Help:'.
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.6, Next: Q3.0.7, Prev: Q3.0.5, Up: Editing
+
+Q3.0.6: How can you type in special characters in XEmacs?
+---------------------------------------------------------
+
+One way is to use the package `x-compose'. Then you can use sequences
+like `Compose " a' to get ä, etc.
+
+ Another way is to use the `iso-insert' package. Then you can use
+sequences like `C-x 8 " a' to get ä, etc.
+
+ Glynn Clements <glynn@sensei.co.uk> writes:
+
+ It depends upon your X server.
+
+ Generally, the simplest way is to define a key as Multi_key with
+ xmodmap, e.g.
+ xmodmap -e 'keycode 0xff20 = Multi_key'
+
+ You will need to pick an appropriate keycode. Use xev to find out
+ the keycodes for each key.
+
+ [NB: On a `Windows' keyboard, recent versions of XFree86
+ automatically define the right `Windows' key as Multi_key'.]
+
+ Once you have Multi_key defined, you can use e.g.
+ Multi a ' => á
+ Multi e " => ë
+ Multi c , => ç
+
+ etc.
+
+ Also, recent versions of XFree86 define various AltGr-<key>
+ combinations as dead keys, i.e.
+ AltGr [ => dead_diaeresis
+ AltGr ] => dead_tilde
+ AltGr ; => dead_acute
+ etc.
+
+ Running `xmodmap -pk' will list all of the defined keysyms.
+
+ For the related problem of _displaying_ non-ASCII characters in a
+non-Mule XEmacs, *Note How do I display non-ASCII characters?: Q4.0.8.
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.7, Next: Q3.0.8, Prev: Q3.0.6, Up: Editing
+
+Q3.0.7: Can I turn on "sticky" modifier keys?
+---------------------------------------------
+
+Yes, with `(setq modifier-keys-are-sticky t)'. This will give the
+effect of being able to press and release Shift and have the next
+character typed come out in upper case. This will affect all the other
+modifier keys like Control and Meta as well.
+
+ Ben Wing <ben@xemacs.org> writes:
+
+ One thing about the sticky modifiers is that if you move the mouse
+ out of the frame and back in, it cancels all currently "stuck"
+ modifiers.
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.8, Next: Q3.0.9, Prev: Q3.0.7, Up: Editing
+
+Q3.0.8: How do I map the arrow keys?
+------------------------------------
+
+Say you want to map `C-<right>' to forward-word:
+
+ Sam Steingold <sds@usa.net> writes:
+
+ ; both XEmacs and Emacs
+ (define-key global-map [(control right)] 'forward-word)
+ or
+ ; Emacs only
+ (define-key global-map [C-right] 'forward-word)
+ or
+ ; ver > 20, both
+ (define-key global-map (kbd "C-<right>") 'forward-word)
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.9, Next: Q3.0.10, Prev: Q3.0.8, Up: Editing
+
+Q3.0.9: HP Alt key as Meta.
+---------------------------
+
+How can I make XEmacs recognize the Alt key of my HP workstation as a
+Meta key?
+
+ Put the following line into a file and load it with xmodmap(1) before
+starting XEmacs:
+
+ remove Mod1 = Mode_switch
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.10, Next: Q3.0.11, Prev: Q3.0.9, Up: Editing
+
+Q3.0.10: Why does edt emulation not work?
+-----------------------------------------
+
+We don't know, but you can use tpu-edt emulation instead, which works
+fine and is a little fancier than the standard edt emulation. To do
+this, add the following line to your `init.el':
+
+ (tpu-edt)
+
+ If you don't want it to replace `C-h' with an edt-style help menu
+add this as well:
+
+ (global-set-key [(control h)] 'help-for-help)
+
+\1f
+File: xemacs-faq.info, Node: Q3.0.11, Next: Q3.1.1, Prev: Q3.0.10, Up: Editing
+
+Q3.0.11: How can I emulate VI and use it as my default mode?
+------------------------------------------------------------
+
+Our recommended VI emulator is viper. To make viper-mode the default,
+add this to your `init.el':
+
+ (viper-mode)
+
+ Michael Kifer <kifer@CS.SunySB.EDU> writes:
+
+ This should be added as close to the top of `init.el' as you can
+ get it, otherwise some minor modes may not get viper-ized.
+
+3.1: The Mouse
+==============
+
+\1f
+File: xemacs-faq.info, Node: Q3.1.1, Next: Q3.1.2, Prev: Q3.0.11, Up: Editing
+
+Q3.1.1: How can I turn off Mouse pasting?
+-----------------------------------------
+
+I keep hitting the middle mouse button by accident and getting stuff
+pasted into my buffer so how can I turn this off?
+
+ Here is an alternative binding, whereby the middle mouse button
+selects (but does not cut) the expression under the mouse. Clicking
+middle on a left or right paren will select to the matching one. Note
+that you can use `define-key' or `global-set-key'.
+
+ (defun mouse-set-point-and-select (event)
+ "Sets the point at the mouse location, then marks following form"
+ (interactive "@e")
+ (mouse-set-point event)
+ (mark-sexp 1))
+ (define-key global-map [button2] 'mouse-set-point-and-select)
+
+\1f
+File: xemacs-faq.info, Node: Q3.1.2, Next: Q3.1.3, Prev: Q3.1.1, Up: Editing
+
+Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons?
+-----------------------------------------------------------------
+
+Use, for instance, `[(meta button1)]'. For example, here is a common
+setting for Common Lisp programmers who use the bundled `ilisp'
+package, whereby meta-button1 on a function name will find the file
+where the function name was defined, and put you at that location in
+the source file.
+
+ [Inside a function that gets called by the lisp-mode-hook and
+ilisp-mode-hook]
+
+ (local-set-key [(meta button1)] 'edit-definitions-lisp)
+
+\1f
+File: xemacs-faq.info, Node: Q3.1.3, Next: Q3.1.4, Prev: Q3.1.2, Up: Editing
+
+Q3.1.3: Clicking the left button does not do anything in buffer list.
+---------------------------------------------------------------------
+
+I do `C-x C-b' to get a list of buffers and the entries get highlighted
+when I move the mouse over them but clicking the left mouse does not do
+anything.
+
+ Use the middle mouse button.
+
+\1f
+File: xemacs-faq.info, Node: Q3.1.4, Next: Q3.1.5, Prev: Q3.1.3, Up: Editing
+
+Q3.1.4: How can I get a list of buffers when I hit mouse button 3?
+------------------------------------------------------------------
+
+The following code will replace the default popup on button3:
+
+ (global-set-key [button3] 'popup-buffer-menu)
+
+\1f
+File: xemacs-faq.info, Node: Q3.1.5, Next: Q3.2.1, Prev: Q3.1.4, Up: Editing
+
+Q3.1.5: How can I set XEmacs up so that it pastes where the text cursor is?
+---------------------------------------------------------------------------
+
+By default XEmacs pastes X selections where the mouse pointer is. How
+do I disable this?
+
+ Examine the function `mouse-yank', by typing `C-h f mouse-yank
+<RET>'.
+
+ To get XEmacs to paste at the text cursor, add this your `init.el':
+
+ (setq mouse-yank-at-point t)
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...' or
+type `M-x customize <RET> mouse <RET>'.
+
+3.2: Buffers, Text Editing
+==========================
+
+\1f
+File: xemacs-faq.info, Node: Q3.2.1, Next: Q3.2.2, Prev: Q3.1.5, Up: Editing
+
+Q3.2.1: Can I have the end of the buffer delimited in some way?
+---------------------------------------------------------------
+
+Say, with: `[END]'?
+
+ Try this:
+
+ (let ((ext (make-extent (point-min) (point-max))))
+ (set-extent-property ext 'start-closed t)
+ (set-extent-property ext 'end-closed t)
+ (set-extent-property ext 'detachable nil)
+ (set-extent-end-glyph ext (make-glyph [string :data "[END]"])))
+
+ Since this is XEmacs, you can specify an icon to be shown on
+window-system devices. To do so, change the `make-glyph' call to
+something like this:
+
+ (make-glyph '([xpm :file "~/something.xpm"]
+ [string :data "[END]"]))
+
+ You can inline the XPM definition yourself by specifying `:data'
+instead of `:file'. Here is such a full-featured version that works on
+both X and TTY devices:
+
+ (let ((ext (make-extent (point-min) (point-max))))
+ (set-extent-property ext 'start-closed t)
+ (set-extent-property ext 'end-closed t)
+ (set-extent-property ext 'detachable nil)
+ (set-extent-end-glyph ext (make-glyph '([xpm :data "\
+ /* XPM */
+ static char* eye = {
+ \"20 11 7 2\",
+ \"__ c None\"
+ \"_` c #7f7f7f\",
+ \"_a c #fefefe\",
+ \"_b c #7f0000\",
+ \"_c c #fefe00\",
+ \"_d c #fe0000\",
+ \"_e c #bfbfbf\",
+ \"___________`_`_`___b_b_b_b_________`____\",
+ \"_________`_`_`___b_c_c_c_b_b____________\",
+ \"_____`_`_`_e___b_b_c_c_c___b___b_______`\",
+ \"___`_`_e_a___b_b_d___b___b___b___b______\",
+ \"_`_`_e_a_e___b_b_d_b___b___b___b___b____\",
+ \"_`_`_a_e_a___b_b_d___b___b___b___b___b__\",
+ \"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\",
+ \"___`_`_e_a___b_b_b_d_c___b___b___d_b____\",
+ \"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\",
+ \"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\",
+ \"___`_____`_`_`_`___b_b_b_b_b_b__________\",
+ } ;"]
+ [string :data "[END]"]))))
+
+ Note that you might want to make this a function, and put it to a
+hook. We leave that as an exercise for the reader.
+
+\1f
+File: xemacs-faq.info, Node: Q3.2.2, Next: Q3.2.3, Prev: Q3.2.1, Up: Editing
+
+Q3.2.2: How do I insert today's date into a buffer?
+---------------------------------------------------
+
+Like this:
+
+ (insert (current-time-string))
+
+\1f
+File: xemacs-faq.info, Node: Q3.2.3, Next: Q3.2.4, Prev: Q3.2.2, Up: Editing
+
+Q3.2.3: How do I get a single minibuffer frame?
+-----------------------------------------------
+
+Vin Shelton <acs@acm.org> writes:
+
+ (setq initial-frame-plist '(minibuffer nil))
+ (setq default-frame-plist '(minibuffer nil))
+ (setq default-minibuffer-frame
+ (make-frame
+ '(minibuffer only
+ width 86
+ height 1
+ menubar-visible-p nil
+ default-toolbar-visible-p nil
+ name "minibuffer"
+ top -2
+ left -2
+ has-modeline-p nil)))
+ (frame-notice-user-settings)
+
+ *Please note:* The single minibuffer frame may not be to everyone's
+taste, and there any number of other XEmacs options settings that may
+make it difficult or inconvenient to use.
+
+\1f
+File: xemacs-faq.info, Node: Q3.2.4, Next: Q3.2.5, Prev: Q3.2.3, Up: Editing
+
+Q3.2.4: How can I enable auto-indent and/or Filladapt?
+------------------------------------------------------
+
+Put the following line in your `init.el':
+
+ (setq indent-line-function 'indent-relative-maybe)
+
+ If you want to get fancy, try the `filladapt' package available
+standard with XEmacs. Put this into your `init.el':
+
+ (require 'filladapt)
+ (setq-default filladapt-mode t)
+ (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
+
+ This will enable Filladapt for all modes except C mode, where it
+doesn't work well. To turn Filladapt on only in particular major
+modes, remove the `(setq-default ...)' line and use
+`turn-on-filladapt-mode', like this:
+
+ (add-hook 'text-mode-hook 'turn-on-filladapt-mode)
+
+ You can customize filling and adaptive filling with Customize.
+Select from the `Options' menu `Advanced
+(Customize)->Emacs->Editing->Fill->Fill...' or type `M-x customize
+<RET> fill <RET>'.
+
+ Note that well-behaving text-lookalike modes will run
+`text-mode-hook' by default (e.g. that's what Message does). For the
+nasty ones, you'll have to provide the `add-hook's yourself.
+
+ Please note that the `fa-extras' package is no longer useful.
+
+\1f
+File: xemacs-faq.info, Node: Q3.2.5, Next: Q3.3.1, Prev: Q3.2.4, Up: Editing
+
+Q3.2.5: How can I get XEmacs to come up in text/auto-fill mode by default?
+--------------------------------------------------------------------------
+
+Try the following lisp in your `init.el':
+
+ (setq default-major-mode 'text-mode)
+ (add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+ *WARNING*: note that changing the value of `default-major-mode' from
+`fundamental-mode' can break a large amount of built-in code that
+expects newly created buffers to be in `fundamental-mode'. (Changing
+from `fundamental-mode' to `text-mode' might not wreak too much havoc,
+but changing to something more exotic like a lisp-mode would break many
+Emacs packages).
+
+ Note that Emacs by default starts up in buffer `*scratch*' in
+`initial-major-mode', which defaults to `lisp-interaction-mode'. Thus
+adding the following form to your Emacs init file will cause the
+initial `*scratch*' buffer to be put into auto-fill'ed `text-mode':
+
+ (setq initial-major-mode
+ (lambda ()
+ (text-mode)
+ (turn-on-auto-fill)))
+
+ Note that after your init file is loaded, if
+`inhibit-startup-message' is `nil' (the default) and the startup buffer
+is `*scratch*' then the startup message will be inserted into
+`*scratch*'; it will be removed after a timeout by erasing the entire
+`*scratch*' buffer. Keep in mind this default usage of `*scratch*' if
+you desire any prior manipulation of `*scratch*' from within your Emacs
+init file. In particular, anything you insert into `*scratch*' from
+your init file will be later erased. Also, if you change the mode of
+the `*scratch*' buffer, be sure that this will not interfere with
+possible later insertion of the startup message (e.g. if you put
+`*scratch*' into a nonstandard mode that has automatic font lock rules,
+then the startup message might get fontified in a strange foreign
+manner, e.g. as code in some programming language).
+
+3.3: Text Selections
+====================
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.1, Next: Q3.3.2, Prev: Q3.2.5, Up: Editing
+
+Q3.3.1: How do I select a rectangular region?
+---------------------------------------------
+
+Just select the region normally, then use the rectangle commands (e.g.
+`kill-rectangle' on it. The region does not highlight as a rectangle,
+but the commands work just fine.
+
+ To actually sweep out rectangular regions with the mouse you can use
+`mouse-track-do-rectangle' which is assigned to `M-button1'. Then use
+rectangle commands.
+
+ You can also do the following to change default behavior to sweep out
+rectangular regions:
+
+ (setq mouse-track-rectangle-p t)
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...'
+or type `M-x customize <RET> mouse <RET>'.
+
+ mouse-track-do-rectangle: (event)
+ -- an interactive compiled Lisp function.
+ Like `mouse-track' but selects rectangles instead of regions.
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.2, Next: Q3.3.3, Prev: Q3.3.1, Up: Editing
+
+Q3.3.2: How can I turn off or change highlighted selections?
+------------------------------------------------------------
+
+The `zmacs' mode allows for what some might call gratuitous
+highlighting for selected regions (either by setting mark or by using
+the mouse). This is the default behavior. To turn off, add the
+following line to your `init.el' file:
+
+ (setq zmacs-regions nil)
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions' or
+type `M-x customize <RET> editing-basics <RET>'.
+
+ To change the face for selection, look at `Options->Advanced
+(Customize)' on the menubar.
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.3, Next: Q3.3.4, Prev: Q3.3.2, Up: Editing
+
+Q3.3.3: How do I cause typing on an active region to remove it?
+---------------------------------------------------------------
+
+I want to change things so that if I select some text and start typing,
+the typed text replaces the selected text, similar to Motif.
+
+ You want to use something called "pending delete". Pending delete
+is what happens when you select a region (with the mouse or keyboard)
+and you press a key to replace the selected region by the key you typed.
+Usually backspace kills the selected region.
+
+ To get this behavior, ensure that you have the `pc' package
+installed, and add the following lines to your `init.el':
+
+ (cond
+ ((fboundp 'turn-on-pending-delete)
+ (turn-on-pending-delete))
+ ((fboundp 'pending-delete-on)
+ (pending-delete-on t)))
+
+ Note that this will work with both Backspace and Delete. This code
+is a tad more complicated than it has to be for XEmacs in order to make
+it more portable.
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.4, Next: Q3.3.5, Prev: Q3.3.3, Up: Editing
+
+Q3.3.4: Can I turn off the highlight during isearch?
+----------------------------------------------------
+
+I do not like my text highlighted while I am doing isearch as I am not
+able to see what's underneath. How do I turn it off?
+
+ Put the following in your `init.el':
+
+ (setq isearch-highlight nil)
+
+ You can also change this with Customize. Type `M-x
+customize-variable <RET> isearch-highlight <RET>'.
+
+ Note also that isearch-highlight affects query-replace and ispell.
+Instead of disabling isearch-highlight you may find that a better
+solution consists of customizing the `isearch' face.
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.5, Next: Q3.3.6, Prev: Q3.3.4, Up: Editing
+
+Q3.3.5: Why is killing so slow?
+-------------------------------
+
+This actually is an X Windows question, although you'll notice it with
+keyboard operations as well as while using the GUI. Basically, there
+are four ways to communicate interprogram via the X server:
+
+*Primary selection*
+ a transient selection that gets replaced every time a new
+ selection is made
+
+*Secondary selection*
+ for "exchanging" with the primary selection
+
+*Cut buffers*
+ a clipboard internal to the X server (deprecated)
+
+*Clipboard selection*
+ a selection with a notification protocol that allows a separate
+ app to manage the clipboard
+
+ The cut buffers are deprecated because managing them is even more
+inefficient than the clipboard notification protocol. The primary
+selection works fine for many users and applications, but is not very
+robust under intensive or sophisticated use.
+
+ In Motif and MS Windows, a clipboard has become the primary means for
+managing cut and paste. These means that "modern" applications tend to
+be oriented toward a true clipboard, rather than the primary selection.
+(On Windows, there is nothing equivalent to the primary selection.)
+It's not that XEmacs doesn't support the simple primary selection
+method, it's that more and more other applications don't.
+
+ So the slowdown occurs because XEmacs now engages in the clipboard
+notification protocol on _every_ kill. This is especially slow on
+Motif.
+
+ With most people running most clients and server on the same host,
+and many of the rest working over very fast communication, you may
+expect that the situation is not going to improve.
+
+ There are a number of workarounds. The most effective is to use a
+special command to do selection ownership only when you intend to paste
+to another application. Useful commands are `kill-primary-selection'
+and `copy-primary-selection'. These work only on text selected with
+the mouse (probably; experiment), and are bound by default to the `Cut'
+and `Copy', respectively, buttons on the toolbar.
+`copy-primary-selection' is also bound to `C-Insert'. You can yank the
+clipboard contents with `yank-primary-selection', bound to the `Paste'
+toolbar button and `Sh-Insert'.
+
+ If you are communicating by cut and paste with applications that use
+the primary selection, then you can customize
+`interprogram-cut-function' to `nil', restoring the XEmacs version 20
+behavior. How can you tell if a program will support this?
+Motifly-correct programs require the clipboard; you lose. For others,
+only by trying it. You also need to customize the complementary
+`interprogram-paste-function' to `nil'. (Otherwise XEmacs-to-XEmacs
+pastes will not work correctly.)
+
+ You may get some relief on Motif by setting
+`x-selection-strict-motif-ownership' to nil, but this means you will
+only intermittently be able to paste XEmacs kills to Motif applications.
+
+ Thanks to Jeff Mincy and Glynn Clements for corrections.
+
+\1f
+File: xemacs-faq.info, Node: Q3.3.6, Next: Q3.4.1, Prev: Q3.3.5, Up: Editing
+
+Q3.3.6: Why does `M-w' take so long?
+------------------------------------
+
+It actually doesn't. It leaves the region visible for a second so that
+you can see what area is being yanked. If you start working, though, it
+will immediately complete its operation. In other words, it will only
+delay for a second if you let it.
+
+3.4: Editing Source Code
+========================
+
+\1f
+File: xemacs-faq.info, Node: Q3.4.1, Next: Q3.4.2, Prev: Q3.3.6, Up: Editing
+
+Q3.4.1: I do not like cc-mode. How do I use the old c-mode?
+------------------------------------------------------------
+
+Well, first off, consider if you really want to do this. cc-mode is
+much more powerful than the old c-mode. If you're having trouble
+getting your old offsets to work, try using `c-set-offset' instead.
+You might also consider using the package `cc-compat'.
+
+ But, if you still insist, add the following lines to your `init.el':
+
+ (fmakunbound 'c-mode)
+ (makunbound 'c-mode-map)
+ (fmakunbound 'c++-mode)
+ (makunbound 'c++-mode-map)
+ (makunbound 'c-style-alist)
+ (load-library "old-c-mode")
+ (load-library "old-c++-mode")
+
+ This must be done before any other reference is made to either
+c-mode or c++-mode.
+
+\1f
+File: xemacs-faq.info, Node: Q3.4.2, Prev: Q3.4.1, Up: Editing
+
+Q3.4.2: How do you make XEmacs indent CL if-clauses correctly?
+--------------------------------------------------------------
+
+I'd like XEmacs to indent all the clauses of a Common Lisp `if' the
+same amount instead of indenting the 3rd clause differently from the
+first two.
+
+ The package `cl-indent' that comes with XEmacs sets up this kind of
+indentation by default. `cl-indent' also knows about many other
+CL-specific forms. To use `cl-indent', one can do this:
+
+ (setq lisp-indent-function 'common-lisp-indent-function)
+
+ One can also customize `cl-indent.el' so it mimics the default `if'
+indentation `then' indented more than the `else'. Here's how:
+
+ (put 'if 'common-lisp-indent-function '(nil nil &body))
+
+\1f
+File: xemacs-faq.info, Node: Display, Next: External Subsystems, Prev: Editing, Up: Top
+
+4 Display Functions
+*******************
+
+This is part 4 of the XEmacs Frequently Asked Questions list. This
+section is devoted to the display-related capabilities of XEmacs
+(fonts, colors, modeline, menubar, toolbar, scrollbar, etc.) and how to
+customize them.
+
+* Menu:
+
+4.0: Textual Fonts and Colors
+* Q4.0.1:: How do I specify a font?
+* Q4.0.2:: How do I set the text, menu and modeline fonts?
+* Q4.0.3:: How can I set color options from `init.el'?
+* Q4.0.4:: How can I set the colors when highlighting a region?
+* Q4.0.5:: How can I limit color map usage?
+* Q4.0.6:: My tty supports color, but XEmacs doesn't use them.
+* Q4.0.7:: Can I have pixmap backgrounds in XEmacs?
+* Q4.0.8:: How do I display non-ASCII characters?
+* Q4.0.9:: Font selections in don't get saved after `Save Options'.
+
+4.1: Syntax Highlighting (Font Lock)
+* Q4.1.1:: How can I do source code highlighting using font-lock?
+* Q4.1.2:: How do I get `More' Syntax Highlighting on by default?
+
+4.2: The Modeline
+* Q4.2.1:: How can I make the modeline go away?
+* Q4.2.2:: How do you have XEmacs display the line number in the modeline?
+* Q4.2.3:: How do I get XEmacs to put the time of day on the modeline?
+* Q4.2.4:: How can I change the modeline color based on the mode used?
+
+4.3: The Cursor
+* Q4.3.1:: Is there a way to make the bar cursor thicker?
+* Q4.3.2:: Is there a way to get back the block cursor?
+* Q4.3.3:: Can I make the cursor blink?
+
+4.4: The Menubar
+* Q4.4.1:: How do I get rid of the menubar?
+* Q4.4.2:: How can I customize the menubar?
+* Q4.4.3:: How do I enable use of the keyboard (Alt) to access menu items?
+* Q4.4.4:: How do I control how many buffers are listed in the menu `Buffers List'?
+* Q4.4.5:: Resources like `Emacs*menubar*font' are not working?
+
+4.5: The Toolbar
+* Q4.5.1:: How do I get rid of the toolbar?
+* Q4.5.2:: How can I customize the toolbar?
+* Q4.5.3:: How can I bind a key to a function to toggle the toolbar?
+* Q4.5.4:: `Can't instantiate image error...' in toolbar
+
+4.6: Scrollbars and Scrolling
+* Q4.6.1:: How can I disable the scrollbar?
+* Q4.6.2:: How can I change the scrollbar width?
+* Q4.6.3:: How can I use resources to change scrollbar colors?
+* Q4.6.4:: Moving the scrollbar can move the point; can I disable this?
+* Q4.6.5:: Scrolling one line at a time.
+* Q4.6.6:: How can I turn off automatic horizontal scrolling in specific modes?
+* Q4.6.7:: I find auto-show-mode disconcerting. How do I turn it off?
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+* Q4.7.1:: How can I disable the gutter tabs?
+* Q4.7.2:: How can I disable the progress bar?
+* Q4.7.3:: There are bugs in the gutter or widgets.
+* Q4.7.4:: How can I customize the gutter or gutter tabs?
+
+4.0: Textual Fonts and Colors
+=============================
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.1, Next: Q4.0.2, Prev: Display, Up: Display
+
+Q4.0.1: How do I specify a font?
+--------------------------------
+
+#### Update me.
+
+ In 21.4 and above, you can use the `Options' menu to change the font.
+You can also do it in your init file, e.g. like this (for MS Windows):
+
+ (set-face-font 'default "Lucida Console:Regular:10")
+ (set-face-font 'modeline "MS Sans Serif:Regular:10")
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.2, Next: Q4.0.3, Prev: Q4.0.1, Up: Display
+
+Q4.0.2: How do I set the text, menu and modeline fonts?
+-------------------------------------------------------
+
+#### Update me.
+
+ Note that you should use `Emacs.' and not `Emacs*' when setting face
+values.
+
+ In `.Xresources':
+
+ Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-*
+ Emacs*menubar*font: fixed
+ Emacs.modeline.attributeFont: fixed
+
+ This is confusing because `default' and `modeline' are face names,
+and can be found listed with all faces in the current mode by using
+`M-x set-face-font (enter) ?'. They use the face-specific resource
+`attributeFont'.
+
+ On the other hand, `menubar' is a normal X thing that uses the
+resource `font'. With Motif it _may be_ necessary to use `fontList'
+_instead of_ `font'. In _non-Motif_ configurations with Mule it _is_
+necessary to use `fontSet' instead of `font'. (Sorry, there just is no
+simple recipe here.)
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.3, Next: Q4.0.4, Prev: Q4.0.2, Up: Display
+
+Q4.0.3: How can I set color options from `init.el'?
+---------------------------------------------------
+
+How can I set the most commonly used color options from my `init.el'
+instead of from my `.Xresources'?
+
+ Like this:
+
+ (set-face-background 'default "bisque") ; frame background
+ (set-face-foreground 'default "black") ; normal text
+ (set-face-background 'zmacs-region "red") ; When selecting w/
+ ; mouse
+ (set-face-foreground 'zmacs-region "yellow")
+ (set-face-font 'default "*courier-bold-r*120-100-100*")
+ (set-face-background 'highlight "blue") ; Ie when selecting
+ ; buffers
+ (set-face-foreground 'highlight "yellow")
+ (set-face-background 'modeline "blue") ; Line at bottom
+ ; of buffer
+ (set-face-foreground 'modeline "white")
+ (set-face-font 'modeline "*bold-r-normal*140-100-100*")
+ (set-face-background 'isearch "yellow") ; When highlighting
+ ; while searching
+ (set-face-foreground 'isearch "red")
+ (setq x-pointer-foreground-color "black") ; Adds to bg color,
+ ; so keep black
+ (setq x-pointer-background-color "blue") ; This is color
+ ; you really
+ ; want ptr/crsr
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.4, Next: Q4.0.5, Prev: Q4.0.3, Up: Display
+
+Q4.0.4: How can I set the colors when highlighting a region?
+------------------------------------------------------------
+
+How can I set the background/foreground colors when highlighting a
+region?
+
+ You can change the face `zmacs-region' either in your `.Xresources':
+
+ Emacs.zmacs-region.attributeForeground: firebrick
+ Emacs.zmacs-region.attributeBackground: lightseagreen
+
+ or in your `init.el':
+
+ (set-face-background 'zmacs-region "red")
+ (set-face-foreground 'zmacs-region "yellow")
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.5, Next: Q4.0.6, Prev: Q4.0.4, Up: Display
+
+Q4.0.5: How can I limit color map usage?
+----------------------------------------
+
+I'm using Netscape (or another color grabber like XEmacs); is there any
+way to limit the number of available colors in the color map?
+
+ Answer: No, but you can start Netscape before XEmacs, and it will use
+the closest available color if the colormap is full. You can also limit
+the number of colors Netscape uses, using the flags -mono, -ncols <#> or
+-install (for mono, limiting to <#> colors, or for using a private color
+map).
+
+ If you have the money, another solution would be to use a truecolor
+or direct color video.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.6, Next: Q4.0.7, Prev: Q4.0.5, Up: Display
+
+Q4.0.6: My tty supports color, but XEmacs doesn't use them.
+-----------------------------------------------------------
+
+XEmacs tries to automatically determine whether your tty supports color,
+but sometimes guesses wrong. In that case, you can make XEmacs Do The
+Right Thing using this Lisp code:
+
+ (if (eq 'tty (device-type))
+ (set-device-class nil 'color))
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.7, Next: Q4.0.8, Prev: Q4.0.6, Up: Display
+
+Q4.0.7: Can I have pixmap backgrounds in XEmacs?
+------------------------------------------------
+
+Juan Villacis <jvillaci@wahnsinnig.extreme.indiana.edu> writes:
+
+ There are several ways to do it. For example, you could specify a
+ default pixmap image to use in your `~/.Xresources', e.g.,
+
+ Emacs*EmacsFrame.default.attributeBackgroundPixmap: /path/to/image.xpm
+
+ and then reload ~/.Xresources and restart XEmacs. Alternatively,
+ since each face can have its own pixmap background, a better way
+ would be to set a face's pixmap within your XEmacs init file, e.g.,
+
+ (set-face-background-pixmap 'default "/path/to/image.xpm")
+ (set-face-background-pixmap 'bold "/path/to/another_image.xpm")
+
+ and so on. You can also do this interactively via `M-x
+ edit-faces'.
+
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.8, Next: Q4.0.9, Prev: Q4.0.7, Up: Display
+
+Q4.0.8: How do I display non-ASCII characters?
+----------------------------------------------
+
+If you're using a Mule-enabled XEmacs, then display is automatic. If
+you're not seeing the characters you expect, either (1) you don't have
+appropriate fonts available or (2) XEmacs did not correctly detect the
+coding system (*note Recognize Coding: (xemacs)Recognize Coding.). In
+case (1), install fonts as is customary for your platform. In case
+(2), you need to tell XEmacs explicitly what coding systems you're
+using. *Note Specify Coding: (xemacs)Specify Coding.
+
+ If your XEmacs is not Mule-enabled, and for some reason getting a
+Mule-enabled XEmacs seems like the wrong thing to do, all is not lost.
+You can arrange it by brute force. In `event-Xt.c' (suppress the urge
+to look in this file--play Doom instead, because you'll survive
+longer), it is written:
+
+ In a non-Mule world, a user can still have a multi-lingual editor,
+ by doing `(set-face-font "-*-iso8859-2" (current-buffer))' for all
+ their Latin-2 buffers, etc.
+
+ For the related problem of _inputting_ non-ASCII characters in a
+non-Mule XEmacs, *Note How can you type in special characters in
+XEmacs?: Q3.0.6.
+
+\1f
+File: xemacs-faq.info, Node: Q4.0.9, Next: Q4.1.1, Prev: Q4.0.8, Up: Display
+
+Q4.0.9: Font selections in don't get saved after `Save Options'.
+----------------------------------------------------------------
+
+John Mann <mannj@ll.mit.edu> writes:
+
+ You have to go to `Options->Menubars' and unselect `Frame-Local
+ Font Menu'. If this option is selected, font changes are only
+ applied to the _current_ frame and do _not_ get saved when you
+ save options.
+
+ Also, set the following in your `init.el':
+
+ (setq options-save-faces t)
+
+4.1: Syntax Highlighting (Font Lock)
+====================================
+
+\1f
+File: xemacs-faq.info, Node: Q4.1.1, Next: Q4.1.2, Prev: Q4.0.9, Up: Display
+
+Q4.1.1: How can I do source code highlighting using font-lock?
+--------------------------------------------------------------
+
+For most modes, font-lock is already set up and just needs to be turned
+on. This can be done by adding the line:
+
+ (require 'font-lock)
+
+ to your `init.el'. (You can turn it on for the current buffer and
+session only by `M-x font-lock-mode'.) See the file
+`etc/sample.init.el' (`etc/sample.emacs' in XEmacs versions prior to
+21.4) for more information.
+
+ See also `Syntax Highlighting' from the `Options' menu. Remember to
+save options.
+
+\1f
+File: xemacs-faq.info, Node: Q4.1.2, Next: Q4.2.1, Prev: Q4.1.1, Up: Display
+
+Q4.1.2: How do I get `More' Syntax Highlighting on by default?
+--------------------------------------------------------------
+
+Use the following code in your `init.el':
+
+ (setq-default font-lock-maximum-decoration t)
+
+ See also `Syntax Highlighting' from the `Options' menu. Remember to
+save options.
+
+4.2: The Modeline
+=================
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.1, Next: Q4.2.2, Prev: Q4.1.2, Up: Display
+
+Q4.2.1: How can I make the modeline go away?
+--------------------------------------------
+
+ (set-specifier has-modeline-p nil)
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.2, Next: Q4.2.3, Prev: Q4.2.1, Up: Display
+
+Q4.2.2: How do you have XEmacs display the line number in the modeline?
+-----------------------------------------------------------------------
+
+Add the following line to your `init.el' file to display the line
+number:
+
+ (line-number-mode 1)
+
+ Use the following to display the column number:
+
+ (column-number-mode 1)
+
+ Or select from the `Options' menu `Advanced
+(Customize)->Emacs->Editing->Basics->Line Number Mode' and/or `Advanced
+(Customize)->Emacs->Editing->Basics->Column Number Mode'
+
+ Or type `M-x customize <RET> editing-basics <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.3, Next: Q4.2.4, Prev: Q4.2.2, Up: Display
+
+Q4.2.3: How do I get XEmacs to put the time of day on the modeline?
+-------------------------------------------------------------------
+
+Add the following line to your `init.el' file to display the time:
+
+ (display-time)
+
+ See `Customize' from the `Options' menu for customization.
+
+\1f
+File: xemacs-faq.info, Node: Q4.2.4, Next: Q4.3.1, Prev: Q4.2.3, Up: Display
+
+Q4.2.4: How can I change the modeline color based on the mode used?
+-------------------------------------------------------------------
+
+You can use something like the following:
+
+ (add-hook 'lisp-mode-hook
+ (lambda ()
+ (set-face-background 'modeline "red" (current-buffer))))
+
+ Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
+colors change from the default set in your `init.el'. The change will
+only be made in the buffer you just entered (which contains the Lisp
+file you are editing) and will not affect the modeline colors anywhere
+else.
+
+ Notes:
+
+ * The hook is the mode name plus `-hook'. eg. c-mode-hook,
+ c++-mode-hook, emacs-lisp-mode-hook (used for your `init.el' or a
+ `xx.el' file), lisp-interaction-mode-hook (the `*scratch*' buffer),
+ text-mode-hook, etc.
+
+ * Be sure to use `add-hook', not `(setq c-mode-hook xxxx)',
+ otherwise you will erase anything that anybody has already put on
+ the hook.
+
+ * You can also do `(set-face-font 'modeline FONT)', eg.
+ `(set-face-font 'modeline "*bold-r-normal*140-100-100*"
+ (current-buffer))' if you wish the modeline font to vary based on
+ the current mode.
+
+ There are additional modeline faces, `modeline-buffer-id',
+`modeline-mousable', and `modeline-mousable-minor-mode', which you may
+want to customize.
+
+4.3: The Cursor
+===============
+
+\1f
+File: xemacs-faq.info, Node: Q4.3.1, Next: Q4.3.2, Prev: Q4.2.4, Up: Display
+
+Q4.3.1: Is there a way to make the bar cursor thicker?
+------------------------------------------------------
+
+I'd like to have the bar cursor a little thicker, as I tend to "lose" it
+often.
+
+ For a 1 pixel bar cursor, use:
+
+ (setq bar-cursor t)
+
+ For a 2 pixel bar cursor, use:
+
+ (setq bar-cursor 'anything-else)
+
+ You can also change these with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...'
+or type `M-x customize <RET> display <RET>'.
+
+ You can use a color to make it stand out better:
+
+ Emacs*cursorColor: Red
+
+\1f
+File: xemacs-faq.info, Node: Q4.3.2, Next: Q4.3.3, Prev: Q4.3.1, Up: Display
+
+Q4.3.2: Is there a way to get back the block cursor?
+----------------------------------------------------
+
+ (setq bar-cursor nil)
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...'
+or type `M-x customize <RET> display <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.3.3, Next: Q4.4.1, Prev: Q4.3.2, Up: Display
+
+Q4.3.3: Can I make the cursor blink?
+------------------------------------
+
+Yes, like this:
+
+ (blink-cursor-mode)
+
+ This function toggles between a steady cursor and a blinking cursor.
+You may also set this mode from the menu bar by selecting
+`Options->Display->Blinking Cursor'. Remember to save options.
+
+4.4: The Menubar
+================
+
+\1f
+File: xemacs-faq.info, Node: Q4.4.1, Next: Q4.4.2, Prev: Q4.3.3, Up: Display
+
+Q4.4.1: How do I get rid of the menubar?
+----------------------------------------
+
+ (set-specifier menubar-visible-p nil)
+
+\1f
+File: xemacs-faq.info, Node: Q4.4.2, Next: Q4.4.3, Prev: Q4.4.1, Up: Display
+
+Q4.4.2: How can I customize the menubar?
+----------------------------------------
+
+For an extensive menubar, add this line to your `init.el':
+
+ (load "big-menubar")
+
+ If you'd like to write your own, this file provides as good a set of
+examples as any to start from. The file is located in edit-utils
+package.
+
+\1f
+File: xemacs-faq.info, Node: Q4.4.3, Next: Q4.4.4, Prev: Q4.4.2, Up: Display
+
+Q4.4.3: How do I enable use of the keyboard (`Alt') to access menu items?
+-------------------------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.4.4, Next: Q4.4.5, Prev: Q4.4.3, Up: Display
+
+Q4.4.4: How do I control how many buffers are listed in the menu `Buffers List'?
+--------------------------------------------------------------------------------
+
+Add the following to your `init.el' (suit to fit):
+
+ (setq buffers-menu-max-size 20)
+
+ For no limit, use an argument of `nil'.
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max
+Size...' or type `M-x customize <RET> buffers-menu <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.4.5, Next: Q4.5.1, Prev: Q4.4.4, Up: Display
+
+Q4.4.5: Resources like `Emacs*menubar*font' are not working?
+------------------------------------------------------------
+
+I am trying to use a resource like `Emacs*menubar*font' to set the font
+of the menubar but it's not working.
+
+ In Motif, the use of `font' resources is obsoleted in order to
+support internationalization. If you are using the real Motif menubar,
+this resource is not recognized at all; you have to say:
+
+ Emacs*menubar*fontList: FONT
+
+ If you are using the Lucid menubar, for backward compatibility with
+existing user configurations, the `font' resource is recognized. Since
+this is not supported by Motif itself, the code is a kludge and the
+`font' resource will be recognized only if the `fontList' resource
+resource is unset. This means that the resource
+
+ *fontList: FONT
+
+ will override
+
+ Emacs*menubar*font: FONT
+
+ even though the latter is more specific.
+
+ In non-Motif configurations using `--with-mule' and `--with-xfs' it
+_is_ necessary to use the `fontSet' resource _instead of_ the `font'
+resource. The backward compatibility kludge was never implemented for
+non-Motif builds. Example:
+
+ *fontSet: FONT
+
+4.5: The Toolbar
+================
+
+\1f
+File: xemacs-faq.info, Node: Q4.5.1, Next: Q4.5.2, Prev: Q4.4.5, Up: Display
+
+Q4.5.1: How do I get rid of the toolbar?
+----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.5.2, Next: Q4.5.3, Prev: Q4.5.1, Up: Display
+
+Q4.5.2: How can I customize the toolbar?
+----------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.5.3, Next: Q4.5.4, Prev: Q4.5.2, Up: Display
+
+Q4.5.3: How can I bind a key to a function to toggle the toolbar?
+-----------------------------------------------------------------
+
+Try something like:
+
+ (defun my-toggle-toolbar ()
+ (interactive)
+ (set-specifier default-toolbar-visible-p
+ (not (specifier-instance default-toolbar-visible-p))))
+ (global-set-key "\C-xT" 'my-toggle-toolbar)
+
+ Thanks to Martin Buchholz <martin@xemacs.org> for the correct code.
+
+\1f
+File: xemacs-faq.info, Node: Q4.5.4, Next: Q4.6.1, Prev: Q4.5.3, Up: Display
+
+Q4.5.4: `Can't instantiate image error...' in toolbar
+-----------------------------------------------------
+
+Dr. Ram Samudrala <expt@alanine.ram.org> writes:
+
+ I just installed the XEmacs (20.4-2) RPMS that I downloaded from
+`http://www.xemacs.org/'. Everything works fine, except that when I
+place my mouse over the toolbar, it beeps and gives me this message:
+
+ Can't instantiate image (probably cached):
+ [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data
+ (16 16 <strange control characters> ...
+
+ Kyle Jones <kyle_jones@wonderworks.com> writes:
+
+ This is problem specific to some Chips and Technologies video
+ chips, when running XFree86. Putting
+
+ `Option "sw_cursor"'
+
+ in `XF86Config' gets rid of the problem.
+
+4.6: Scrollbars and Scrolling
+=============================
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.1, Next: Q4.6.2, Prev: Q4.5.4, Up: Display
+
+Q4.6.1: How can I disable the scrollbar?
+----------------------------------------
+
+To disable them for all frames, add the following line to your
+`.Xresources':
+
+ Emacs.scrollBarWidth: 0
+
+ Or select `Options->Display->Scrollbars'. Remember to save options.
+
+ To turn the scrollbar off on a per-frame basis, use the following
+function:
+
+ (set-specifier scrollbar-width 0 (selected-frame))
+
+ You can actually turn the scrollbars on at any level you want by
+substituting for (selected-frame) in the above command. For example, to
+turn the scrollbars off only in a single buffer:
+
+ (set-specifier scrollbar-width 0 (current-buffer))
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.2, Next: Q4.6.3, Prev: Q4.6.1, Up: Display
+
+Q4.6.2: How can I change the scrollbar width?
+---------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.3, Next: Q4.6.4, Prev: Q4.6.2, Up: Display
+
+Q4.6.3: How can I use resources to change scrollbar colors?
+-----------------------------------------------------------
+
+Here's a recap of how to use resources to change your scrollbar colors:
+
+ ! Motif scrollbars
+
+ Emacs*XmScrollBar.Background: skyblue
+ Emacs*XmScrollBar.troughColor: lightgray
+
+ ! Athena scrollbars
+
+ Emacs*Scrollbar.Foreground: skyblue
+ Emacs*Scrollbar.Background: lightgray
+
+ Note the capitalization of `Scrollbar' for the Athena widget.
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.4, Next: Q4.6.5, Prev: Q4.6.3, Up: Display
+
+Q4.6.4: Moving the scrollbar can move the point; can I disable this?
+--------------------------------------------------------------------
+
+When I move the scrollbar in an XEmacs window, it moves the point as
+well, which should not be the default behavior. Is this a bug or a
+feature? Can I disable it?
+
+ The current behavior is a feature, not a bug. Point remains at the
+same buffer position as long as that position does not scroll off the
+screen. In that event, point will end up in either the upper-left or
+lower-left hand corner.
+
+ This cannot be changed.
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.5, Next: Q4.6.6, Prev: Q4.6.4, Up: Display
+
+Q4.6.5: Scrolling one line at a time.
+-------------------------------------
+
+Can the cursor keys scroll the screen a line at a time, rather than the
+default half page jump? I tend it to find it disorienting.
+
+ Use the following:
+
+ (setq scroll-step 1)
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...'
+or type `M-x customize <RET> windows <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.6, Next: Q4.6.7, Prev: Q4.6.5, Up: Display
+
+Q4.6.6: How can I turn off automatic horizontal scrolling in specific modes?
+----------------------------------------------------------------------------
+
+Do `(setq truncate-lines t)' in the mode-hooks for any modes in which
+you want lines truncated.
+
+ More precisely: If `truncate-lines' is nil, horizontal scrollbars
+will never appear. Otherwise, they will appear only if the value of
+`scrollbar-height' for that buffer/window/etc. is non-zero. If you do
+
+ (set-specifier scrollbar-height 0)
+
+ then horizontal scrollbars will not appear in truncated buffers
+unless the package specifically asked for them.
+
+\1f
+File: xemacs-faq.info, Node: Q4.6.7, Next: Q4.7.1, Prev: Q4.6.6, Up: Display
+
+Q4.6.7: I find auto-show-mode disconcerting. How do I turn it off?
+-------------------------------------------------------------------
+
+`auto-show-mode' controls whether or not a horizontal scrollbar
+magically appears when a line is too long to be displayed. This is
+enabled by default. To turn it off, put the following in your
+`init.el':
+
+ (setq auto-show-mode nil)
+ (setq-default auto-show-mode nil)
+
+4.7: The Gutter Tabs, The Progress Bar, Widgets
+===============================================
+
+\1f
+File: xemacs-faq.info, Node: Q4.7.1, Next: Q4.7.2, Prev: Q4.6.7, Up: Display
+
+Q4.7.1: How can I disable the gutter tabs?
+------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.7.2, Next: Q4.7.3, Prev: Q4.7.1, Up: Display
+
+Q4.7.2: How can I disable the progress bar?
+-------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.7.3, Next: Q4.7.4, Prev: Q4.7.2, Up: Display
+
+Q4.7.3: There are bugs in the gutter or widgets.
+------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q4.7.4, Prev: Q4.7.3, Up: Display
+
+Q4.7.4: How can I customize the gutter or gutter tabs?
+------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: External Subsystems, Next: Internet, Prev: Display, Up: Top
+
+5 Interfacing with the Operating System and External Devices
+************************************************************
+
+This is part 5 of the XEmacs Frequently Asked Questions list. This
+section is devoted to the various ways that XEmacs interfaces with the
+operating system, with other processes and with external devices such
+as speakers and the printer.
+
+* Menu:
+
+5.0: X Window System and Resources
+* Q5.0.1:: Where is a list of X resources?
+* Q5.0.2:: How can I detect a color display?
+* Q5.0.3:: How can I get the icon to just say `XEmacs'?
+* Q5.0.4:: How can I have the window title area display the full path?
+* Q5.0.5:: `xemacs -name junk' doesn't work?
+* Q5.0.6:: `-iconic' doesn't work.
+
+5.1: Microsoft Windows
+* Q5.1.1:: Does XEmacs rename all the `win32-*' symbols to `w32-*'?
+* Q5.1.2:: How do I get Windows Explorer to associate a file type with XEmacs?
+
+5.2: Printing
+* Q5.2.1:: What do I need to change to make printing work?
+* Q5.2.2:: How can I print WYSIWYG a font-locked buffer?
+* Q5.2.3:: Getting M-x lpr to work with postscript printer.
+* Q5.2.4:: Can you print under MS Windows?
+
+5.3: Sound
+* Q5.3.1:: How do I turn off the sound?
+* Q5.3.2:: How do I get funky sounds instead of a boring beep?
+* Q5.3.3:: What are NAS and ESD (EsounD)?
+* Q5.3.4:: Sunsite sounds don't play.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+* Q5.4.1:: What is an interior shell?
+* Q5.4.2:: How do I start up a second shell buffer?
+* Q5.4.3:: Telnet from shell filters too much
+* Q5.4.4:: Strange things are happening in Shell Mode.
+* Q5.4.5:: XEmacs complains "No such file or directory, diff"
+* Q5.4.6:: Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+
+5.5: Multiple Device Support
+* Q5.5.1:: How do I open a frame on another screen of my multi-headed display?
+* Q5.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How?
+* Q5.5.3:: How do I disable gnuserv from opening a new frame?
+* Q5.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client?
+* Q5.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+
+5.0: X Window System and Resources
+==================================
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.1, Next: Q5.0.2, Prev: External Subsystems, Up: External Subsystems
+
+Q5.0.1: Where is a list of X resources?
+---------------------------------------
+
+Search through the `NEWS' file for `X Resources'. A fairly
+comprehensive list is given after it.
+
+ In addition, an `app-defaults' file `etc/Emacs.ad' is supplied,
+listing the defaults. The file `etc/sample.Xresources' gives a
+different set of defaults that you might consider for installation in
+your `~/.Xresources' file. It is nearly the same as `etc/Emacs.ad',
+but a few entries are altered. Be careful about installing the
+contents of this file into your `.Xresources' (or legacy `.Xdefaults')
+file if you use GNU Emacs under X11 as well.
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.2, Next: Q5.0.3, Prev: Q5.0.1, Up: External Subsystems
+
+Q5.0.2: How can I detect a color display?
+-----------------------------------------
+
+You can test the return value of the function `(device-class)', as in:
+
+ (when (eq (device-class) 'color)
+ (set-face-foreground 'font-lock-comment-face "Grey")
+ (set-face-foreground 'font-lock-string-face "Red")
+ ....
+ )
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.3, Next: Q5.0.4, Prev: Q5.0.2, Up: External Subsystems
+
+Q5.0.3: How can I get the icon to just say `XEmacs'?
+----------------------------------------------------
+
+I'd like the icon to just say `XEmacs', and not include the name of the
+current file in it.
+
+ Add the following line to your `init.el':
+
+ (setq frame-icon-title-format "XEmacs")
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.4, Next: Q5.0.5, Prev: Q5.0.3, Up: External Subsystems
+
+Q5.0.4: How can I have the window title area display the full path?
+-------------------------------------------------------------------
+
+I'd like to have the window title area display the full directory/name
+of the current buffer file and not just the name.
+
+ Add the following line to your `init.el':
+
+ (setq frame-title-format "%S: %f")
+
+ A more sophisticated title might be:
+
+ (setq frame-title-format
+ '("%S: " (buffer-file-name "%f"
+ (dired-directory dired-directory "%b"))))
+
+ That is, use the file name, or the dired-directory, or the buffer
+name.
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.5, Next: Q5.0.6, Prev: Q5.0.4, Up: External Subsystems
+
+Q5.0.5: `xemacs -name junk' doesn't work?
+-----------------------------------------
+
+When I run `xterm -name junk', I get an xterm whose class name
+according to xprop, is `junk'. This is the way it's supposed to work,
+I think. When I run `xemacs -name junk' the class name is not set to
+`junk'. It's still `emacs'. What does `xemacs -name' really do? The
+reason I ask is that my window manager (fvwm) will make a window sticky
+and I use XEmacs to read my mail. I want that XEmacs window to be
+sticky, without having to use the window manager's function to set the
+window sticky. What gives?
+
+ `xemacs -name' sets the application name for the program (that is,
+the thing which normally comes from `argv[0]'). Using `-name' is the
+same as making a copy of the executable with that new name. The
+`WM_CLASS' property on each frame is set to the frame-name, and the
+application-class. So, if you did `xemacs -name FOO' and then created
+a frame named BAR, you'd get an X window with WM_CLASS = `( "BAR",
+"Emacs")'. However, the resource hierarchy for this widget would be:
+
+ Name: FOO .shell .container .BAR
+ Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+
+ instead of the default
+
+ Name: xemacs.shell .container .emacs
+ Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame
+
+ It is arguable that the first element of WM_CLASS should be set to
+the application-name instead of the frame-name, but I think that's less
+flexible, since it does not give you the ability to have multiple frames
+with different WM_CLASS properties. Another possibility would be for
+the default frame name to come from the application name instead of
+simply being `emacs'. However, at this point, making that change would
+be troublesome: it would mean that many users would have to make yet
+another change to their resource files (since the default frame name
+would suddenly change from `emacs' to `xemacs', or whatever the
+executable happened to be named), so we'd rather avoid it.
+
+ To make a frame with a particular name use:
+
+ (make-frame '((name . "the-name")))
+
+\1f
+File: xemacs-faq.info, Node: Q5.0.6, Next: Q5.1.1, Prev: Q5.0.5, Up: External Subsystems
+
+Q5.0.6: `-iconic' doesn't work.
+-------------------------------
+
+When I start up XEmacs using `-iconic' it doesn't work right. Using
+`-unmapped' on the command line, and setting the `initiallyUnmapped' X
+Resource don't seem to help much either...
+
+ Ben Wing <ben@xemacs.org> writes:
+
+ Ugh, this stuff is such an incredible mess that I've about given up
+ getting it to work. The principal problem is numerous
+ window-manager bugs...
+
+5.1: Microsoft Windows
+======================
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.1, Next: Q5.1.2, Prev: Q5.0.6, Up: External Subsystems
+
+Q5.1.1: Does XEmacs rename all the `win32-*' symbols to `w32-*'?
+----------------------------------------------------------------
+
+In his flavor of Emacs 20, Richard Stallman has renamed all the
+`win32-*' symbols to `w32-*'. Does XEmacs do the same?
+
+ We consider such a move counter-productive, thus we do not use the
+`w32' prefix. (His rather questionable justification was that he did
+not consider Windows to be a "winning" platform.) However, the name
+`Win32' is not particularly descriptive outside the Windows world, and
+using just `windows-' would be too generic. So we chose a compromise,
+the prefix `mswindows-' for Windows-related variables and functions.
+
+ Thus all the XEmacs variables and functions directly related to
+either the Windows GUI or OS are prefixed `mswindows-' (except for a
+couple of debugging variables, prefixed `debug-mswindows-'). From an
+architectural perspective, however, we believe that this is mostly a
+non-issue because there should be a very small number of
+window-systems-specific variables anyway. Whenever possible, we try to
+provide generic interfaces that apply to all window systems.
+
+\1f
+File: xemacs-faq.info, Node: Q5.1.2, Next: Q5.2.1, Prev: Q5.1.1, Up: External Subsystems
+
+Q5.1.2: How do I get Windows Explorer to associate a file type with XEmacs?
+---------------------------------------------------------------------------
+
+Associating a new file type with XEmacs.
+........................................
+
+In Explorer select `View->Options->File Types', press `[New Type...]'
+and fill in the dialog box, e.g.:
+
+ Description of type: Emacs Lisp source
+ Associated extension: el
+ Content Type (MIME): text/plain
+
+ then press `[New...]' and fill in the `Action' dialog box as follows:
+
+ Action:
+ Open
+
+ Application used to perform action:
+ D:\Full\path\for\xemacs.exe "%1"
+
+ [x] Use DDE
+
+ DDE Message:
+ open("%1")
+
+ Application:
+ <leave blank>
+
+ DDE Application Not Running:
+ <leave blank>
+
+ Topic:
+ <leave blank>
+
+Associating an existing file type with XEmacs.
+..............................................
+
+In Explorer select `View->Options->File Types'. Click on the file type
+in the list and press `[Edit...]'. If the file type already has an
+`Open' action, double click on it and fill in the `Action' dialog box
+as described above; otherwise create a new action.
+
+ If the file type has more than one action listed, you probably want
+to make the `Open' action that you just edited the default by clicking
+on it and pressing `Set Default'.
+
+ Note for Windows 2000 users: Under Windows 2000, get to `File Types'
+using `Control Panel->Folder Options->File Types'.
+
+5.2: Printing
+=============
+
+\1f
+File: xemacs-faq.info, Node: Q5.2.1, Next: Q5.2.2, Prev: Q5.1.2, Up: External Subsystems
+
+Q5.2.1: What do I need to change to make printing work?
+-------------------------------------------------------
+
+For regular printing there are two variables that can be customized.
+
+`lpr-command'
+ This should be set to a command that takes standard input and sends
+ it to a printer. Something like:
+
+ (setq lpr-command "lp")
+
+`lpr-switches'
+ This should be set to a list that contains whatever the print
+ command requires to do its job. Something like:
+
+ (setq lpr-switches '("-depson"))
+
+ For postscript printing there are three analogous variables to
+customize.
+
+`ps-lpr-command'
+ This should be set to a command that takes postscript on standard
+ input and directs it to a postscript printer.
+
+`ps-lpr-switches'
+ This should be set to a list of switches required for
+ `ps-lpr-command' to do its job.
+
+`ps-print-color-p'
+ This boolean variable should be set `t' if printing will be done in
+ color, otherwise it should be set to `nil'.
+
+ NOTE: It is an undocumented limitation in XEmacs that postscript
+printing (the `Pretty Print Buffer' menu item) *requires* a window
+system environment. It cannot be used outside of X11.
+
+\1f
+File: xemacs-faq.info, Node: Q5.2.2, Next: Q5.2.3, Prev: Q5.2.1, Up: External Subsystems
+
+Q5.2.2: How can I print WYSIWYG a font-locked buffer?
+-----------------------------------------------------
+
+Font-lock looks nice. How can I print (WYSIWYG) the highlighted
+document?
+
+ The package `ps-print', which is now included with XEmacs, provides
+the ability to do this. The source code contains complete instructions
+on its use, in
+`$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el', being
+the default location of an installed ps-print package.
+
+\1f
+File: xemacs-faq.info, Node: Q5.2.3, Next: Q5.2.4, Prev: Q5.2.2, Up: External Subsystems
+
+Q5.2.3: Getting `M-x lpr' to work with postscript printer.
+----------------------------------------------------------
+
+My printer is a Postscript printer and `lpr' only works for Postscript
+files, so how do I get `M-x lpr-region' and `M-x lpr-buffer' to work?
+
+ Put something like this in your `init.el':
+
+ (setq lpr-command "a2ps")
+ (setq lpr-switches '("-p" "-1"))
+
+ If you don't use a2ps to convert ASCII to postscript (why not, it's
+free?), replace with the command you do use. Note also that some
+versions of a2ps require a `-Pprinter' to ensure spooling.
+
+\1f
+File: xemacs-faq.info, Node: Q5.2.4, Next: Q5.3.1, Prev: Q5.2.3, Up: External Subsystems
+
+Q5.2.4: Can you print under MS Windows?
+---------------------------------------
+
+As of 21.4, printing works on Windows, using simply `File->Print
+BUFFER...', and can be configured with `File->Page Setup...'.
+
+ Prior to 21.4, there is no built-in support, but there are some
+clever hacks out there. If you know how, please let us know and we'll
+put it here.
+
+5.3: Sound
+==========
+
+\1f
+File: xemacs-faq.info, Node: Q5.3.1, Next: Q5.3.2, Prev: Q5.2.4, Up: External Subsystems
+
+Q5.3.1: How do I turn off the sound?
+------------------------------------
+
+Add the following line to your `init.el':
+
+ (setq bell-volume 0)
+ (setq sound-alist nil)
+
+ That will make your XEmacs totally silent--even the default ding
+sound (TTY beep on TTY-s) will be gone.
+
+ You can also change these with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Sound->Sound...' or
+type `M-x customize <RET> sound <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q5.3.2, Next: Q5.3.3, Prev: Q5.3.1, Up: External Subsystems
+
+Q5.3.2: How do I get funky sounds instead of a boring beep?
+-----------------------------------------------------------
+
+Make sure your XEmacs was compiled with sound support, and then put this
+in your `init.el':
+
+ (load-default-sounds)
+
+\1f
+File: xemacs-faq.info, Node: Q5.3.3, Next: Q5.3.4, Prev: Q5.3.2, Up: External Subsystems
+
+Q5.3.3: What are NAS and ESD (EsounD)?
+--------------------------------------
+
+"Network Audio System" (NAS) is a client-server sound library for X.
+
+ `http://radscan.com/nas.html'.
+
+ To build XEmacs with it, use the `configure' flag `--with-sound=nas'
+(`--enable-sound=nas' in 21.5 or later).
+
+ "Enlightened Sound Daemon" (ESD or EsounD) is yet another sound
+system.
+
+ `http://www.tux.org/~ricdude/EsounD.html'.
+
+ To build XEmacs with it, use the `configure' flag `--with-sound=esd'
+(`--enable-sound=esd' in 21.5 or later).
+
+ You can specify support for both with a flag like
+`--with-sound=nas,esd' (`--enable-sound=nas,esd' in 21.5 or later).
+
+\1f
+File: xemacs-faq.info, Node: Q5.3.4, Next: Q5.4.1, Prev: Q5.3.3, Up: External Subsystems
+
+Q5.3.4: Sunsite sounds don't play.
+----------------------------------
+
+I'm having some trouble with sounds I've downloaded from sunsite. They
+play when I run them through `showaudio' or cat them directly to
+`/dev/audio', but XEmacs refuses to play them.
+
+ Markus Gutschke <gutschk@uni-muenster.de> writes:
+
+ [Many of] These files have an (erroneous) 24byte header that tells
+ about the format that they have been recorded in. If you cat them
+ to `/dev/audio', the header will be ignored and the default
+ behavior for /dev/audio will be used. This happens to be 8kHz
+ uLaw. It is probably possible to fix the header by piping through
+ `sox' and passing explicit parameters for specifying the sampling
+ format; you then need to perform a 'null' conversion from SunAudio
+ to SunAudio.
+
+5.4: Running an Interior Shell, Invoking Subprocesses
+=====================================================
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.1, Next: Q5.4.2, Prev: Q5.3.4, Up: External Subsystems
+
+Q5.4.1: What is an interior shell?
+----------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.2, Next: Q5.4.3, Prev: Q5.4.1, Up: External Subsystems
+
+Q5.4.2: How do I start up a second shell buffer?
+------------------------------------------------
+
+In the `*shell*' buffer:
+
+ M-x rename-buffer <RET> *shell-1* <RET>
+ M-x shell RET
+
+ This will then start a second shell. The key is that no buffer named
+`*shell*' can exist. It might be preferable to use `M-x
+rename-uniquely' to rename the `*shell*' buffer instead of `M-x
+rename-buffer'.
+
+ Alternately, you can set the variable `shell-multiple-shells'. If
+the value of this variable is non-nil, each time shell mode is invoked,
+a new shell is made
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.3, Next: Q5.4.4, Prev: Q5.4.2, Up: External Subsystems
+
+Q5.4.3: Telnet from shell filters too much
+------------------------------------------
+
+I'm using the Emacs `M-x shell' function, and I would like to invoke
+and use a telnet session within it. Everything works fine except that
+now all `^M''s are filtered out by Emacs. Fixes?
+
+ Use `M-x rsh' or `M-x telnet' to open remote sessions rather than
+doing rsh or telnet within the local shell buffer. You can also use
+`M-x ssh' to open secure remote session if you have `ssh' installed.
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.4, Next: Q5.4.5, Prev: Q5.4.3, Up: External Subsystems
+
+Q5.4.4: Strange things are happening in Shell Mode.
+---------------------------------------------------
+
+Sometimes (i.e. it's not repeatable, and I can't work out why it
+happens) when I'm typing into shell mode, I hit return and only a
+portion of the command is given to the shell, and a blank prompt is
+returned. If I hit return again, the rest of the previous command is
+given to the shell.
+
+ Martin Buchholz <martin@xemacs.org> writes:
+
+ There is a known problem with interaction between `csh' and the
+ `filec' option and XEmacs. You should add the following to your
+ `.cshrc':
+
+ if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.5, Next: Q5.4.6, Prev: Q5.4.4, Up: External Subsystems
+
+Q5.4.5: XEmacs complains "No such file or directory, diff"
+----------------------------------------------------------
+
+or "ispell" or other commands that seem related to whatever you just
+tried to do (M-x ediff or M-$, for example).
+
+ There are a large number of common (in the sense that "everyone has
+these, they really do") Unix utilities that are not provided with
+XEmacs. The GNU Project's implementations are available for Windows in
+the the Cygwin distribution (`http://www.cygwin.com/'), which also
+provides a complete Unix emulation environment (and thus makes ports of
+Unix utilities nearly trivial). Another implementation is that from
+MinGW (`http://www.mingw.org/msys.shtml'). If you know of others,
+please let us know!
+
+\1f
+File: xemacs-faq.info, Node: Q5.4.6, Next: Q5.5.1, Prev: Q5.4.5, Up: External Subsystems
+
+Q5.4.6: Cygwin error "fork_copy: linked dll/bss pass 0 failed"
+--------------------------------------------------------------
+
+If you are getting an error like
+
+ 17797832 [main] bash 3468 fork_copy: linked dll/bss pass 0 failed,
+ 0x675000..0x6756A0, done 0, windows pid 2708, Win 32 error 487
+ bash: fork: resource temporarily unavailable
+
+ when trying to run bash using `M-x shell', then you need to rebase
+your Cygwin DLL's. This is a known problem with Cygwin. To fix:
+
+ 1. Download the `rebase' utility from Cygwin setup (it's under
+ `System').
+
+ 2. Kill *all* of your Cygwin processes, including all of your shells
+ and all background processes. Use `ps -a' to list all the
+ processes you need to kill.
+
+ 3. From a DOS prompt, run `ash' (*not* `bash', `tcsh' or `zsh'). Do
+ not try to be clever and `exec /bin/ash' from your last shell; it
+ won't work.
+
+ 4. Type `/bin/rebaseall -v'.
+
+ The problem should now be fixed - at least, until you install another
+Cygwin package with DLL's, in which case you may have to repeat the
+procedure.
+
+5.5: Multiple Device Support
+============================
+
+\1f
+File: xemacs-faq.info, Node: Q5.5.1, Next: Q5.5.2, Prev: Q5.4.6, Up: External Subsystems
+
+Q5.5.1: How do I open a frame on another screen of my multi-headed display?
+---------------------------------------------------------------------------
+
+Use the command `M-x make-frame-on-display'. This command is also on
+the File menu in the menubar.
+
+ The command `make-frame-on-tty' also exists, which will establish a
+connection to any tty-like device. Opening the TTY devices should be
+left to `gnuclient', though.
+
+\1f
+File: xemacs-faq.info, Node: Q5.5.2, Next: Q5.5.3, Prev: Q5.5.1, Up: External Subsystems
+
+Q5.5.2: Can I really connect to a running XEmacs after calling up over a modem? How?
+-------------------------------------------------------------------------------------
+
+Yes. Use `gnuclient -nw'.
+
+ Also see *Note How do I disable gnuserv from opening a new frame?:
+Q5.5.3.
+
+\1f
+File: xemacs-faq.info, Node: Q5.5.3, Next: Q5.5.4, Prev: Q5.5.2, Up: External Subsystems
+
+Q5.5.3: How do I disable gnuserv from opening a new frame?
+----------------------------------------------------------
+
+If you set the `gnuserv-frame' variable to the frame that should be
+used to display buffers that are pulled up, a new frame will not be
+created. For example, you could put
+
+ (setq gnuserv-frame (selected-frame))
+
+ early on in your `init.el', to ensure that the first frame created
+is the one used for your gnuserv buffers.
+
+ There is an option to set the gnuserv target to the current frame.
+See `Options->Display->"Other Window" Location->Make Current Frame
+Gnuserv Target'
+
+ You can also change this with Customize. Select from the `Options'
+menu `Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv
+Frame...' or type `M-x customize <RET> gnuserv <RET>'.
+
+\1f
+File: xemacs-faq.info, Node: Q5.5.4, Next: Q5.5.5, Prev: Q5.5.3, Up: External Subsystems
+
+Q5.5.4: How do I start gnuserv so that each subsequent XEmacs is a client?
+--------------------------------------------------------------------------
+
+Put the following in your `init.el' file to start the server:
+
+ (gnuserv-start)
+
+ Start your first XEmacs as usual. After that, you can do:
+
+ gnuclient randomfilename
+
+ from the command line to get your existing XEmacs process to open a
+new frame and visit randomfilename in that window. When you're done
+editing randomfilename, hit `C-x #' to kill the buffer and get rid of
+the frame.
+
+ See also man page of gnuclient.
+
+\1f
+File: xemacs-faq.info, Node: Q5.5.5, Prev: Q5.5.4, Up: External Subsystems
+
+Q5.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
+--------------------------------------------------------------------------------------------------------
+
+Jan Vroonhof <vroonhof@math.ethz.ch> writes:
+
+ Here is one of the solutions, we have this in a script called
+ `etc/editclient.sh'.
+ #!/bin/sh
+ if gnuclient -batch -eval t >/dev/null 2>&1
+ then
+ exec gnuclient ${1+"$@"}
+ else
+ xemacs -unmapped -f gnuserv-start &
+ until gnuclient -batch -eval t >/dev/null 2>&1
+ do
+ sleep 1
+ done
+ exec gnuclient ${1+"$@"}
+ fi
+
+ Note that there is a known problem when running XEmacs and
+ 'gnuclient -nw' on the same TTY.
+
+\1f
+File: xemacs-faq.info, Node: Internet, Next: Advanced, Prev: External Subsystems, Up: Top
+
+6 Connecting to the Internet
+****************************
+
+This is part 6 of the XEmacs Frequently Asked Questions list. This
+section is devoted connecting to the Internet.
+
+* Menu:
+
+6.0: General Mail and News
+* Q6.0.1:: What are the various packages for reading mail?
+* Q6.0.2:: How can I send mail?
+* Q6.0.3:: How do I get my outgoing mail archived?
+* Q6.0.4:: How can I read and/or compose MIME messages?
+* Q6.0.5:: How do I customize the From line?
+* Q6.0.6:: How do I get my MUA to filter mail for me?
+* Q6.0.7:: Remote mail reading with an MUA.
+* Q6.0.8:: An MUA gets an error incorporating new mail.
+* Q6.0.9:: Why isn't `movemail' working?
+* Q6.0.10:: How do I make my MUA display graphical smilies?
+* Q6.0.11:: How can I get those oh-so-neat X-Face lines?
+
+6.1: Reading Mail with VM
+* Q6.1.1:: How do I set up VM to retrieve mail from a remote site using POP?
+* Q6.1.2:: How can I get VM to automatically check for new mail?
+* Q6.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
+* Q6.1.4:: Is there a mailing list or FAQ for VM?
+* Q6.1.5:: How do I make VM stay in a single frame?
+* Q6.1.6:: Customization of VM not covered in the manual, or here.
+
+6.2: Reading Netnews and Mail with Gnus
+* Q6.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+* Q6.2.2:: How do I make Gnus stay within a single frame?
+
+6.3: FTP Access
+* Q6.3.1:: Can I edit files on other hosts?
+* Q6.3.2:: What is EFS?
+
+6.4: Web Browsing with W3
+* Q6.4.1:: What is W3?
+* Q6.4.2:: How do I run W3 from behind a firewall?
+* Q6.4.3:: Is it true that W3 supports style sheets and tables?
+
+6.0: General Mail and News
+==========================
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.1, Next: Q6.0.2, Prev: Internet, Up: Internet
+
+Q6.0.1: What are the various packages for reading mail?
+-------------------------------------------------------
+
+#### Write me.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.2, Next: Q6.0.3, Prev: Q6.0.1, Up: Internet
+
+Q6.0.2: How can I send mail?
+----------------------------
+
+Under Unix and Mac OS X, the `sendmail' package is normally used for
+this. #### Write me.
+
+ Under Windows, you need to use `smtpmail', which communicates
+directly with the mail server, as there is no `sendmail' program
+running. To get it working, use code like the following in your
+`init.el' file:
+
+ ;; Get mail working under Windows.
+ (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus
+ (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc.
+ ;; the following ensures that mail problems can be debugged: it logs a trace
+ ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*.
+ (setq smtpmail-debug-info t)
+ ;; Substitute your info here.
+ ;(setq user-mail-address "ben@xemacs.org")
+ ;(setq user-full-name "Ben Wing")
+ ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com")
+ ;; The following two aren't completely necessary but may help.
+ ;(setq smtpmail-local-domain "666.com")
+ ;(setq smtpmail-sendto-domain "666.com")
+ ;; If your SMTP server requires a username/password to authenticate, as
+ ;; many do nowadays, set them like this:
+ ;(setq smtpmail-auth-credentials ; or use ~/.authinfo
+ ; '(("smtp.myserver.myisp.com" 25 "USER@SOMEWHERE" "PASSWORD")))
+
+ ;; Other possibilities for getting smtpmail to work:
+ ;;
+ ;; If for some reason you need to authenticate using the STARTTLS protocol
+ ;; (don't look into this unless you know what it is), use
+ ;; (setq smtpmail-starttls-credentials
+ ;; '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
+ ;; Requires external program
+ ;; ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
+ ;; See http://www.ietf.org/rfc/rfc2246.txt,
+ ;; http://www.ietf.org/rfc/rfc2487.txt
+
+ The lines you need to care about are those that set
+`user-mail-address', `user-full-name', `smtpmail-default-smtp-server',
+and `smtpmail-auth-credentials'. You need to set these with,
+respectively, your email address, your full name, the SMTP server you
+use for outgoing mail, and the username and password you need to log in
+to your SMTP server. (If for some reason your SMTP server doesn't
+require logging in to send mail, don't uncomment this last line.)
+
+ The other settings may be useful in specific cases, but you should
+know what you're doing before enabling them.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.3, Next: Q6.0.4, Prev: Q6.0.2, Up: Internet
+
+Q6.0.3: How do I get my outgoing mail archived?
+-----------------------------------------------
+
+ (setq mail-archive-file-name "~/outbox")
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.4, Next: Q6.0.5, Prev: Q6.0.3, Up: Internet
+
+Q6.0.4: How can I read and/or compose MIME messages?
+----------------------------------------------------
+
+VM, MH-E and GNUS support MIME natively. Other MUAs may or may not
+have MIME support; refer to their documentation and other resources,
+such as web pages and mailing lists. Packages like SEMI/WEMI may be
+useful in connection with MUAs like mew and Wanderlust.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.5, Next: Q6.0.6, Prev: Q6.0.4, Up: Internet
+
+Q6.0.5: How do I customize the From line?
+-----------------------------------------
+
+How do I change the `From:' line? I have set gnus-user-from-line to
+ Gail Gurman <gail.gurman@sybase.com>
+ , but XEmacs Gnus doesn't use it. [This should apply to all MUA's.
+-ed] Instead it uses
+ Gail Mara Gurman <gailg@deall>
+ and then complains that it's incorrect. Also, as you perhaps can
+see, my Message-ID is screwy. How can I change that?
+
+ Lars Magne Ingebrigtsen <larsi@ifi.uio.no> writes:
+
+ Set `user-mail-address' to `gail.gurman@sybase.com' or
+ `mail-host-address' to `sybase.com'.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.6, Next: Q6.0.7, Prev: Q6.0.5, Up: Internet
+
+Q6.0.6: How do I get my MUA to filter mail for me?
+--------------------------------------------------
+
+One possibility is to use procmail to split your mail before it gets to
+the MUA. I prefer this personally, since there are many strange and
+wonderful things one can do with procmail. Procmail may be found at
+`http://www.procmail.org/'.
+
+ Also see the Mail Filtering FAQ at:
+`http://www.faqs.org/faqs/mail/filtering-faq/'.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.7, Next: Q6.0.8, Prev: Q6.0.6, Up: Internet
+
+Q6.0.7: Remote mail reading with an MUA.
+----------------------------------------
+
+My mailbox lives at the office on a big honkin server. My regular INBOX
+lives on my honkin desktop machine. I now can PPP to the office from
+home which is far from honking... I'd like to be able to read mail at
+home without storing it here and I'd like to use xemacs and the MUA at
+home... Is there a recommended setup?
+
+ Joseph J. Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> writes:
+
+ There are several ways to do this.
+
+ 1. Set your display to your home machine and run dxpc or one of
+ the other X compressors.
+
+ 2. NFS mount your desktop machine on your home machine and
+ modify your pop command on your home machine to rsh to your
+ desktop machine and actually do the pop get's.
+
+ 3. Run a POP server on your desktop machine as well and do a
+ sort of two tiered POP get.
+
+ William Perry <wmperry@monolith.spry.com> adds:
+
+ Or you could run a pop script periodically on your desktop
+ machine, and just use ange-ftp or NFS to get to your mailbox. I
+ used to do this all the time back at IU.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.8, Next: Q6.0.9, Prev: Q6.0.7, Up: Internet
+
+Q6.0.8: An MUA gets an error incorporating new mail.
+----------------------------------------------------
+
+rmail and VM, and probably other MUA's as well, get new mail from your
+mailbox (called `/var/mail/$USER' or `/var/spool/mail/$USER' or
+something similar) using a program called `movemail'. This program
+interlocks with `/bin/mail' using the protocol defined by `/bin/mail'.
+
+ There are various different protocols in general use, which you need
+to specify using the `--mail-locking' option (`--with-mail-locking' in
+21.5 or later) to `configure':
+
+`lockf'
+ POSIX file locking with `lockf()'
+
+`flock'
+ BSD file locking with `flock()'
+
+`dot'
+ To manipulate mail file `foo', first create file `foo.lock'
+
+`locking'
+ Use `locking()', Microsoft's renamed `flock()'
+
+`mmdf'
+ Use `lk_open()' and `lk_close()' as defined by the Multi-channel
+ Memo Distribution Facility
+
+`pop'
+ Retrieve mail using POP (the Post Office Protocol). This is the
+ default for Cygwin/MinGW.
+
+ *IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
+SYSTEM, YOU CAN LOSE MAIL!*
+
+ Usually the value is correctly determined automatically: `configure'
+tries to detect the method in use, and defaults exist on systems for
+which this doesn't work.
+
+ However, if you run into problems incorporating new mail, it may be
+because an incorrect method is being used.
+
+ If your system uses the lock file protocol, and permissions are set
+so that ordinary users cannot write lock files in the mail spool
+directory, you may need to make `movemail' setgid to a suitable group
+such as `mail'. You can use these commands (as root):
+
+ chgrp mail movemail
+ chmod 2755 movemail
+
+ If you are using the `pop' locking method, `movemail' must be setuid
+root.
+
+ Installation normally copies movemail from the build directory to an
+installation directory which is usually under `/usr/local/lib'. The
+installed copy of `movemail' is usually in the directory
+`/usr/local/lib/xemacs-VERSION/TARGET' (for example,
+`/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin'). You must change the
+group and mode of the installed copy; changing the group and mode of
+the build directory copy is ineffective.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.9, Next: Q6.0.10, Prev: Q6.0.8, Up: Internet
+
+Q6.0.9: Why isn't `movemail' working?
+-------------------------------------
+
+*Note Q6.0.8::.
+
+ Note also that older versions of Mozilla came with a `movemail'
+program that is *not* compatible with XEmacs. Do not use it. Always
+use the `movemail' installed with your XEmacs. Failure to do so can
+result in lost mail.
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.10, Next: Q6.0.11, Prev: Q6.0.9, Up: Internet
+
+Q6.0.10: How do I make my MUA display graphical smilies?
+--------------------------------------------------------
+
+For mh-e use the following:
+
+ (add-hook 'mh-show-mode-hook '(lambda ()
+ (smiley-region (point-min)
+ (point-max))))
+
+ WJCarpenter <bill@carpenter.ORG> writes: For VM use the following:
+ (autoload 'smiley-region "smiley" nil t)
+ (add-hook 'vm-select-message-hook
+ '(lambda ()
+ (smiley-region (point-min)
+ (point-max))))
+
+ For tm use the following:
+ (autoload 'smiley-buffer "smiley" nil t)
+ (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer)
+
+\1f
+File: xemacs-faq.info, Node: Q6.0.11, Next: Q6.1.1, Prev: Q6.0.10, Up: Internet
+
+Q6.0.11: How can I get those oh-so-neat X-Face lines?
+-----------------------------------------------------
+
+Firstly there is an ftp site which describes X-faces and has the
+associated tools mentioned below, at
+`http://ftp.cs.indiana.edu/pub/faces/'.
+
+ Then the steps are
+
+ 1. Create 48x48x1 bitmap with your favorite tool
+
+ 2. Convert to "icon" format using one of xbm2ikon, pbmtoicon, etc.,
+ and then compile the face.
+
+ 3. cat file.xbm | xbm2ikon |compface > file.face
+
+ 4. Then be sure to quote things that are necessary for emacs strings:
+
+ cat ./file.face | sed 's/\\/\\\\/g'
+ | sed 's/\"/\\\"/g' > ./file.face.quoted
+
+ 5. Then set up emacs to include the file as a mail header - there
+ were a couple of suggestions here--either something like:
+
+ (setq mail-default-headers
+ "X-Face: <Ugly looking text string here>")
+
+ Or, alternatively, as:
+
+ (defun mail-insert-x-face ()
+ (save-excursion
+ (goto-char (point-min))
+ (search-forward mail-header-separator)
+ (beginning-of-line)
+ (insert "X-Face:")
+ (insert-file-contents "~/.face")))
+
+ (add-hook 'mail-setup-hook 'mail-insert-x-face)
+
+ However, 2 things might be wrong:
+
+ Some versions of pbmtoicon produces some header lines that is not
+expected by the version of compface that I grabbed. So I found I had to
+include a `tail +3' in the pipeline like this:
+
+ cat file.xbm | xbm2ikon | tail +3 |compface > file.face
+
+ Some people have also found that if one uses the `(insert-file)'
+method, one should NOT quote the face string using the sed script .
+
+ It might also be helpful to use Stig's <stig@hackvan.com> script
+xbm2face (included in the compface distribution at XEmacs.org) to do the
+conversion.
+
+ Contributors for this item:
+
+ Paul Emsley, Ricardo Marek, Amir J. Katz, Glen McCort, Heinz Uphoff,
+Peter Arius, Paul Harrison, and Vegard Vesterheim
+
+6.1: Reading Mail with VM
+=========================
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.1, Next: Q6.1.2, Prev: Q6.0.11, Up: Internet
+
+Q6.1.1: How do I set up VM to retrieve mail from a remote site using POP?
+-------------------------------------------------------------------------
+
+Use `vm-spool-files', like this for example:
+
+ (setq vm-spool-files '("/var/spool/mail/wing"
+ "netcom23.netcom.com:110:pass:wing:MYPASS"))
+
+ Of course substitute your actual password for MYPASS.
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.2, Next: Q6.1.3, Prev: Q6.1.1, Up: Internet
+
+Q6.1.2: How can I get VM to automatically check for new mail?
+-------------------------------------------------------------
+
+John Turner <turner@lanl.gov> writes:
+
+ Use the following:
+
+ (setq vm-auto-get-new-mail 60)
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.3, Next: Q6.1.4, Prev: Q6.1.2, Up: Internet
+
+Q6.1.3: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"?
+---------------------------------------------------------------------------------------------------------------------
+
+Set `vm-reply-ignored-addresses' to a list, like
+
+ (setq vm-reply-ignored-addresses
+ '("wing@nuspl@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com"
+ "wing@netcom.com" "wing@xemacs.org"))
+
+ Note that each string is a regular expression.
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.4, Next: Q6.1.5, Prev: Q6.1.3, Up: Internet
+
+Q6.1.4: Is there a mailing list or FAQ for VM?
+----------------------------------------------
+
+A FAQ for VM exists at `http://www.wonderworks.com/vm/FAQ.html'.
+
+ VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.5, Next: Q6.1.6, Prev: Q6.1.4, Up: Internet
+
+Q6.1.5: How do I make VM stay in a single frame?
+------------------------------------------------
+
+John.John S Cooper <Cooper@Eng.Sun.COM> writes:
+
+ ; Don't use multiple frames
+ (setq vm-frame-per-composition nil)
+ (setq vm-frame-per-folder nil)
+ (setq vm-frame-per-edit nil)
+ (setq vm-frame-per-summary nil)
+
+\1f
+File: xemacs-faq.info, Node: Q6.1.6, Next: Q6.2.1, Prev: Q6.1.5, Up: Internet
+
+Q6.1.6: Customization of VM not covered in the manual, or here.
+---------------------------------------------------------------
+
+giacomo boffi <boffi@hp735.stru.polimi.it> writes:
+
+ The meta-answer is to look into the file `vm-vars.el', in the vm
+ directory of the lisp library.
+
+ `vm-vars.el' contains, initializes and carefully describes, with
+ examples of usage, the plethora of user options that _fully_
+ control VM's behavior.
+
+ Enter vm-vars, `forward-search' for toolbar, find the variables
+ that control the toolbar placement, appearance, existence, copy to
+ your `init.el' or `.vm' and modify according to the detailed
+ instructions.
+
+ The above also applies to all the various features of VM: search
+ for some keywords, maybe the first you conjure isn't appropriate,
+ find the appropriate variables, copy and experiment.
+
+6.2: Reading Netnews and Mail with Gnus
+=======================================
+
+\1f
+File: xemacs-faq.info, Node: Q6.2.1, Next: Q6.2.2, Prev: Q6.1.6, Up: Internet
+
+Q6.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh!
+--------------------------------------------------------------------------------
+
+The Gnus numbering issues are not meant for mere mortals to know them.
+If you feel you _must_ enter the muddy waters of Gnus, visit the
+excellent FAQ, maintained by Justin Sheehy, at:
+
+ `http://my.gnus.org/FAQ/'
+
+ See also Gnus home page
+ `http://www.gnus.org/'
+
+\1f
+File: xemacs-faq.info, Node: Q6.2.2, Next: Q6.3.1, Prev: Q6.2.1, Up: Internet
+
+Q6.2.2: How do I make Gnus stay within a single frame?
+------------------------------------------------------
+
+The toolbar code to start Gnus opens the new frame--and it's a feature
+rather than a bug. If you don't like it, but would still like to click
+on the seemly icon, use the following code:
+
+ (defun toolbar-news ()
+ (gnus))
+
+ It will redefine the callback function of the icon to just call
+`gnus', without all the fancy frame stuff.
+
+6.3: FTP Access
+===============
+
+\1f
+File: xemacs-faq.info, Node: Q6.3.1, Next: Q6.3.2, Prev: Q6.2.2, Up: Internet
+
+Q6.3.1: Can I edit files on other hosts?
+----------------------------------------
+
+Yes. Of course XEmacs can use any network file system (such as NFS or
+Windows file sharing) you have available, and includes some
+optimizations and safety features appropriate to those environments.
+
+ It is also possible to transparently edit files via FTP, ssh, or
+rsh. That is, XEmacs makes a local copy using the transport in the
+background, and automatically refreshes the remote original from that
+copy when you save it. XEmacs also is capable of doing file system
+manipulations like creating and removing directories and files. The
+FTP interface is provided by the standard `efs' package *Note EFS:
+(efs)Top. The ssh/rsh interface is provided by the optional `tramp'
+package *Note TRAMP: (tramp)Top.
+
+\1f
+File: xemacs-faq.info, Node: Q6.3.2, Next: Q6.4.1, Prev: Q6.3.1, Up: Internet
+
+Q6.3.2: What is EFS?
+--------------------
+
+#### Write me.
+
+6.4: Web Browsing with W3
+=========================
+
+\1f
+File: xemacs-faq.info, Node: Q6.4.1, Next: Q6.4.2, Prev: Q6.3.2, Up: Internet
+
+Q6.4.1: What is W3?
+-------------------
+
+W3 is an advanced graphical browser written in Emacs lisp that runs on
+XEmacs. It has full support for cascaded style sheets, and more...
+
+ It has a home web page at
+`http://www.cs.indiana.edu/elisp/w3/docs.html'.
+
+\1f
+File: xemacs-faq.info, Node: Q6.4.2, Next: Q6.4.3, Prev: Q6.4.1, Up: Internet
+
+Q6.4.2: How do I run W3 from behind a firewall?
+-----------------------------------------------
+
+There is a long, well-written, detailed section in the W3 manual that
+describes how to do this. Look in the section entitled "Firewalls".
+
+\1f
+File: xemacs-faq.info, Node: Q6.4.3, Prev: Q6.4.2, Up: Internet
+
+Q6.4.3: Is it true that W3 supports style sheets and tables?
+------------------------------------------------------------
+
+Yes, and much more. W3, as distributed with the latest XEmacs is a
+full-featured web browser.
+
+\1f
+File: xemacs-faq.info, Node: Advanced, Next: Other Packages, Prev: Internet, Up: Top
+
+7 Advanced Customization Using XEmacs Lisp
+******************************************
+
+This is part 7 of the XEmacs Frequently Asked Questions list. This
+section is devoted to advanced customization using XEmacs Lisp.
+
+* Menu:
+
+7.0: Emacs Lisp and `init.el'
+* Q7.0.1:: What version of Emacs am I running?
+* Q7.0.2:: How can I evaluate Emacs-Lisp expressions?
+* Q7.0.3:: `(setq tab-width 6)' behaves oddly.
+* Q7.0.4:: How can I add directories to the `load-path'?
+* Q7.0.5:: How to check if a lisp function is defined?
+* Q7.0.6:: Can I force the output of `(face-list)' to a buffer?
+
+7.1: Emacs Lisp Programming Techniques
+* Q7.1.1:: What is the difference in key sequences between XEmacs and GNU Emacs?
+* Q7.1.2:: Can I generate "fake" keyboard events?
+* Q7.1.3:: Could you explain `read-kbd-macro' in more detail?
+* Q7.1.4:: What is the performance hit of `let'?
+* Q7.1.5:: What is the recommended use of `setq'?
+* Q7.1.6:: What is the typical misuse of `setq'?
+* Q7.1.7:: I like the `do' form of cl, does it slow things down?
+* Q7.1.8:: I like recursion, does it slow things down?
+* Q7.1.9:: How do I put a glyph as annotation in a buffer?
+* Q7.1.10:: `map-extents' won't traverse all of my extents!
+* Q7.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
+
+7.2: Mathematics
+* Q7.2.1:: What are bignums, ratios, and bigfloats in Lisp?
+* Q7.2.2:: XEmacs segfaults when I use very big numbers!
+* Q7.2.3:: Bignums are really slow!
+* Q7.2.4:: Equal bignums don't compare as equal! What gives?
+
+7.0: Emacs Lisp and `init.el'
+=============================
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.1, Next: Q7.0.2, Prev: Advanced, Up: Advanced
+
+Q7.0.1: What version of Emacs am I running?
+-------------------------------------------
+
+How can `init.el' determine which of the family of Emacsen I am using?
+
+ To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
+XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
+example given in `etc/sample.init.el' (`etc/sample.emacs' in XEmacs
+versions prior to 21.4). There are other nifty things in there as well!
+
+ For all new code, all you really need to do is:
+
+ (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.2, Next: Q7.0.3, Prev: Q7.0.1, Up: Advanced
+
+Q7.0.2: How can I evaluate Emacs-Lisp expressions?
+--------------------------------------------------
+
+I know I can evaluate Elisp expressions from `*scratch*' buffer with
+`C-j' after the expression. How do I do it from another buffer?
+
+ Press `M-:' (the default binding of `eval-expression'), and enter
+the expression to the minibuffer.
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.3, Next: Q7.0.4, Prev: Q7.0.2, Up: Advanced
+
+Q7.0.3: `(setq tab-width 6)' behaves oddly.
+-------------------------------------------
+
+If you put `(setq tab-width 6)' in your `init.el' file it does not
+work! Is there a reason for this? If you do it at the EVAL prompt it
+works fine!! How strange.
+
+ Use `setq-default' instead, since `tab-width' is all-buffer-local.
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.4, Next: Q7.0.5, Prev: Q7.0.3, Up: Advanced
+
+Q7.0.4: How can I add directories to the `load-path'?
+-----------------------------------------------------
+
+Here are two ways to do that, one that puts your directories at the
+front of the load-path, the other at the end:
+
+ ;;; Add things at the beginning of the load-path, do not add
+ ;;; duplicate directories:
+ (pushnew "bar" load-path :test 'equal)
+
+ (pushnew "foo" load-path :test 'equal)
+
+ ;;; Add things at the end, unconditionally
+ (setq load-path (nconc load-path '("foo" "bar")))
+
+ keith (k.p.) hanlan <keithh@nortel.ca> writes:
+
+ To add directories using Unix shell metacharacters use
+ `expand-file-name' like this:
+
+ (push (expand-file-name "~keithh/.emacsdir") load-path)
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.5, Next: Q7.0.6, Prev: Q7.0.4, Up: Advanced
+
+Q7.0.5: How to check if a lisp function is defined?
+---------------------------------------------------
+
+Use the following elisp:
+
+ (fboundp 'foo)
+
+ It's almost always a mistake to test `emacs-version' or any similar
+variables.
+
+ Instead, use feature-tests, such as `featurep', `boundp', `fboundp',
+or even simple behavioral tests, eg.:
+
+ (defvar foo-old-losing-code-p
+ (condition-case nil (progn (losing-code t) nil)
+ (wrong-number-of-arguments t)))
+
+ There is an incredible amount of broken code out there which could
+work much better more often in more places if it did the above instead
+of trying to divine its environment from the value of one variable.
+
+\1f
+File: xemacs-faq.info, Node: Q7.0.6, Next: Q7.1.1, Prev: Q7.0.5, Up: Advanced
+
+Q7.0.6: Can I force the output of `(face-list)' to a buffer?
+------------------------------------------------------------
+
+It would be good having it in a buffer, as the output of `(face-list)'
+is too wide to fit to a minibuffer.
+
+ Evaluate the expression in the `*scratch*' buffer with point after
+the rightmost paren and typing `C-j'.
+
+ If the minibuffer smallness is the only problem you encounter, you
+can simply press `C-h l' to get the former minibuffer contents in a
+buffer.
+
+7.1: Emacs Lisp Programming Techniques
+======================================
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.1, Next: Q7.1.2, Prev: Q7.0.6, Up: Advanced
+
+Q7.1.1: What is the difference in key sequences between XEmacs and GNU Emacs?
+-----------------------------------------------------------------------------
+
+Erik Naggum <clerik@naggum.no> writes;
+
+ Emacs has a legacy of keyboards that produced characters with
+ modifier bits, and therefore map a variety of input systems into
+ this scheme even today. XEmacs is instead optimized for X events.
+ This causes an incompatibility in the way key sequences are
+ specified, but both Emacs and XEmacs will accept a key sequence as
+ a vector of lists of modifiers that ends with a key, e.g., to bind
+ `M-C-a', you would say `[(meta control a)]' in both Emacsen.
+ XEmacs has an abbreviated form for a single key, just (meta
+ control a). Emacs has an abbreviated form for the Control and the
+ Meta modifiers to string-characters (the ASCII characters), as in
+ `\M-\C-a'. XEmacs users need to be aware that the abbreviated
+ form works only for one-character key sequences, while Emacs users
+ need to be aware that the string-character is rather limited.
+ Specifically, the string-character can accommodate only 256
+ different values, 128 of which have the Meta modifier and 128 of
+ which have not. In each of these blocks, only 32 characters have
+ the Control modifier. Whereas `[(meta control A)]' differs from
+ `[(meta control a)]' because the case differs, `\M-\C-a' and
+ `\M-\C-A' do not. Programmers are advised to use the full common
+ form, both because it is more readable and less error-prone, and
+ because it is supported by both Emacsen.
+
+ Another (even safer) way to be sure of the key-sequences is to use
+the `read-kbd-macro' function, which takes a string like `C-c <up>',
+and converts it to the internal key representation of the Emacs you
+use. The function is available both on XEmacs and GNU Emacs.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.2, Next: Q7.1.3, Prev: Q7.1.1, Up: Advanced
+
+Q7.1.2: Can I generate "fake" keyboard events?
+----------------------------------------------
+
+I wonder if there is an interactive function that can generate "fake"
+keyboard events. This way, I could simply map them inside XEmacs.
+
+ This seems to work:
+
+ (defun cg--generate-char-event (ch)
+ "Generate an event, as if ch has been typed"
+ (dispatch-event (character-to-event ch)))
+
+ ;; Backspace and Delete stuff
+ (global-set-key [backspace]
+ (lambda () (interactive) (cg--generate-char-event 127)))
+ (global-set-key [unknown_keysym_0x4]
+ (lambda () (interactive) (cg--generate-char-event 4)))
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.3, Next: Q7.1.4, Prev: Q7.1.2, Up: Advanced
+
+Q7.1.3: Could you explain `read-kbd-macro' in more detail?
+----------------------------------------------------------
+
+The `read-kbd-macro' function returns the internal Emacs representation
+of a human-readable string (which is its argument). Thus:
+
+ (read-kbd-macro "C-c C-a")
+ => [(control ?c) (control ?a)]
+
+ (read-kbd-macro "C-c C-. <up>")
+ => [(control ?c) (control ?.) up]
+
+ In GNU Emacs the same forms will be evaluated to what GNU Emacs
+understands internally--the sequences `"\C-x\C-c"' and `[3 67108910
+up]', respectively.
+
+ The exact "human-readable" syntax is defined in the docstring of
+`edmacro-mode'. I'll repeat it here, for completeness.
+
+ Format of keyboard macros during editing:
+
+ Text is divided into "words" separated by whitespace. Except for
+ the words described below, the characters of each word go directly
+ as characters of the macro. The whitespace that separates words is
+ ignored. Whitespace in the macro must be written explicitly, as in
+ `foo <SPC> bar <RET>'.
+
+ * The special words `RET', `SPC', `TAB', `DEL', `LFD', `ESC',
+ and `NUL' represent special control characters. The words
+ must be written in uppercase.
+
+ * A word in angle brackets, e.g., `<return>', `<down>', or
+ `<f1>', represents a function key. (Note that in the standard
+ configuration, the function key `<return>' and the control key
+ <RET> are synonymous.) You can use angle brackets on the
+ words <RET>, <SPC>, etc., but they are not required there.
+
+ * Keys can be written by their ASCII code, using a backslash
+ followed by up to six octal digits. This is the only way to
+ represent keys with codes above \377.
+
+ * One or more prefixes `M-' (meta), `C-' (control), `S-'
+ (shift), `A-' (alt), `H-' (hyper), and `s-' (super) may
+ precede a character or key notation. For function keys, the
+ prefixes may go inside or outside of the brackets: `C-<down>'
+ == `<C-down>'. The prefixes may be written in any order:
+ `M-C-x' == `C-M-x'.
+
+ Prefixes are not allowed on multi-key words, e.g., `C-abc',
+ except that the Meta prefix is allowed on a sequence of
+ digits and optional minus sign: `M--123' == `M-- M-1 M-2 M-3'.
+
+ * The `^' notation for control characters also works: `^M' ==
+ `C-m'.
+
+ * Double angle brackets enclose command names: `<<next-line>>'
+ is shorthand for `M-x next-line <RET>'.
+
+ * Finally, `REM' or `;;' causes the rest of the line to be
+ ignored as a comment.
+
+ Any word may be prefixed by a multiplier in the form of a decimal
+ number and `*': `3*<right>' == `<right> <right> <right>', and
+ `10*foo' == `foofoofoofoofoofoofoofoofoofoo'.
+
+ Multiple text keys can normally be strung together to form a word,
+ but you may need to add whitespace if the word would look like one
+ of the above notations: `; ; ;' is a keyboard macro with three
+ semicolons, but `;;;' is a comment. Likewise, `\ 1 2 3' is four
+ keys but `\123' is a single key written in octal, and `< right >'
+ is seven keys but `<right>' is a single function key. When in
+ doubt, use whitespace.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.4, Next: Q7.1.5, Prev: Q7.1.3, Up: Advanced
+
+Q7.1.4: What is the performance hit of `let'?
+---------------------------------------------
+
+In most cases, not noticeable. Besides, there's no avoiding `let'--you
+have to bind your local variables, after all. Some pose a question
+whether to nest `let's, or use one `let' per function. I think because
+of clarity and maintenance (and possible future implementation),
+`let'-s should be used (nested) in a way to provide the clearest code.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.5, Next: Q7.1.6, Prev: Q7.1.4, Up: Advanced
+
+Q7.1.5: What is the recommended use of `setq'?
+----------------------------------------------
+
+ * Global variables
+
+ You will typically `defvar' your global variable to a default
+ value, and use `setq' to set it later.
+
+ It is never a good practice to `setq' user variables (like
+ `case-fold-search', etc.), as it ignores the user's choice
+ unconditionally. Note that `defvar' doesn't change the value of a
+ variable if it was bound previously. If you wish to change a
+ user-variable temporarily, use `let':
+
+ (let ((case-fold-search nil))
+ ... ; code with searches that must be case-sensitive
+ ...)
+
+ You will notice the user-variables by their docstrings beginning
+ with an asterisk (a convention).
+
+ * Local variables
+
+ Bind them with `let', which will unbind them (or restore their
+ previous value, if they were bound) after exiting from the `let'
+ form. Change the value of local variables with `setq' or whatever
+ you like (e.g. `incf', `setf' and such). The `let' form can even
+ return one of its local variables.
+
+ Typical usage:
+
+ ;; iterate through the elements of the list returned by
+ ;; `hairy-function-that-returns-list'
+ (let ((l (hairy-function-that-returns-list)))
+ (while l
+ ... do something with (car l) ...
+ (setq l (cdr l))))
+
+ Another typical usage includes building a value simply to work
+ with it.
+
+ ;; Build the mode keymap out of the key-translation-alist
+ (let ((inbox (file-truename (expand-file-name box)))
+ (i 0))
+ ... code dealing with inbox ...
+ inbox)
+
+ This piece of code uses the local variable `inbox', which becomes
+ unbound (or regains old value) after exiting the form. The form
+ also returns the value of `inbox', which can be reused, for
+ instance:
+
+ (setq foo-processed-inbox
+ (let .....))
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.6, Next: Q7.1.7, Prev: Q7.1.5, Up: Advanced
+
+Q7.1.6: What is the typical misuse of `setq'?
+---------------------------------------------
+
+A typical misuse is probably `setq'ing a variable that was meant to be
+local. Such a variable will remain bound forever, never to be
+garbage-collected. For example, the code doing:
+
+ (defun my-function (whatever)
+ (setq a nil)
+ ... build a large list ...
+ ... and exit ...)
+
+ does a bad thing, as `a' will keep consuming memory, never to be
+unbound. The correct thing is to do it like this:
+
+ (defun my-function (whatever)
+ (let (a) ; default initialization is to nil
+ ... build a large list ...
+ ... and exit, unbinding `a' in the process ...)
+
+ Not only is this prettier syntactically, but it makes it possible for
+Emacs to garbage-collect the objects which `a' used to reference.
+
+ Note that even global variables should not be `setq'ed without
+`defvar'ing them first, because the byte-compiler issues warnings. The
+reason for the warning is the following:
+
+ (defun flurgoze nil) ; ok, global internal variable
+ ...
+
+ (setq flurghoze t) ; ops! a typo, but semantically correct.
+ ; however, the byte-compiler warns.
+
+ While compiling toplevel forms:
+ ** assignment to free variable flurghoze
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.7, Next: Q7.1.8, Prev: Q7.1.6, Up: Advanced
+
+Q7.1.7: I like the `do' form of cl, does it slow things down?
+-------------------------------------------------------------
+
+It shouldn't. Here is what Dave Gillespie has to say about cl.el
+performance:
+
+ Many of the advanced features of this package, such as `defun*',
+ `loop', and `setf', are implemented as Lisp macros. In
+ byte-compiled code, these complex notations will be expanded into
+ equivalent Lisp code which is simple and efficient. For example,
+ the forms
+
+ (incf i n)
+ (push x (car p))
+
+ are expanded at compile-time to the Lisp forms
+
+ (setq i (+ i n))
+ (setcar p (cons x (car p)))
+
+ which are the most efficient ways of doing these respective
+ operations in Lisp. Thus, there is no performance penalty for
+ using the more readable `incf' and `push' forms in your compiled
+ code.
+
+ _Interpreted_ code, on the other hand, must expand these macros
+ every time they are executed. For this reason it is strongly
+ recommended that code making heavy use of macros be compiled. (The
+ features labelled "Special Form" instead of "Function" in this
+ manual are macros.) A loop using `incf' a hundred times will
+ execute considerably faster if compiled, and will also
+ garbage-collect less because the macro expansion will not have to
+ be generated, used, and thrown away a hundred times.
+
+ You can find out how a macro expands by using the `cl-prettyexpand'
+ function.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.8, Next: Q7.1.9, Prev: Q7.1.7, Up: Advanced
+
+Q7.1.8: I like recursion, does it slow things down?
+---------------------------------------------------
+
+Yes. The Emacs byte-compiler cannot do much to optimize recursion. But
+think well whether this is a real concern in Emacs. Much of the Emacs
+slowness comes from internal mechanisms such as redisplay, or from the
+fact that it is an interpreter.
+
+ Please try not to make your code much uglier to gain a very small
+speed gain. It's not usually worth it.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.9, Next: Q7.1.10, Prev: Q7.1.8, Up: Advanced
+
+Q7.1.9: How do I put a glyph as annotation in a buffer?
+-------------------------------------------------------
+
+Here is a solution that will insert the glyph annotation at the
+beginning of buffer:
+
+ (make-annotation (make-glyph '([FORMAT :file FILE]
+ [string :data "fallback-text"]))
+ (point-min)
+ 'text
+ (current-buffer))
+
+ Replace `FORMAT' with an unquoted symbol representing the format of
+the image (e.g. `xpm', `xbm', `gif', `jpeg', etc.) Instead of `FILE',
+use the image file name (e.g.
+`/usr/local/lib/xemacs-21.4/etc/recycle.xpm').
+
+ You can turn this to a function (that optionally prompts you for a
+file name), and inserts the glyph at `(point)' instead of `(point-min)'.
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.10, Next: Q7.1.11, Prev: Q7.1.9, Up: Advanced
+
+Q7.1.10: `map-extents' won't traverse all of my extents!
+--------------------------------------------------------
+
+I tried to use `map-extents' to do an operation on all the extents in a
+region. However, it seems to quit after processing a random number of
+extents. Is it buggy?
+
+ No. The documentation of `map-extents' states that it will iterate
+across the extents as long as FUNCTION returns `nil'. Unexperienced
+programmers often forget to return `nil' explicitly, which results in
+buggy code. For instance, the following code is supposed to delete all
+the extents in a buffer, and issue as many `fubar!' messages.
+
+ (map-extents (lambda (ext ignore)
+ (delete-extent ext)
+ (message "fubar!")))
+
+ Instead, it will delete only the first extent, and stop right there -
+because `message' will return a non-nil value. The correct code is:
+
+ (map-extents (lambda (ext ignore)
+ (delete-extent ext)
+ (message "fubar!")
+ nil))
+
+\1f
+File: xemacs-faq.info, Node: Q7.1.11, Next: Q7.2.1, Prev: Q7.1.10, Up: Advanced
+
+Q7.1.11: My elisp program is horribly slow. Is there an easy way to find out where it spends time?
+---------------------------------------------------------------------------------------------------
+
+Hrvoje Niksic <hniksic@xemacs.org> writes:
+
+ Under XEmacs 20.4 and later you can use `M-x profile-key-sequence',
+ press a key (say <RET> in the Gnus Group buffer), and get the
+ results using `M-x profile-results'. It should give you an idea of
+ where the time is being spent.
+
+7.2: Mathematics
+================
+
+\1f
+File: xemacs-faq.info, Node: Q7.2.1, Next: Q7.2.2, Prev: Q7.1.11, Up: Advanced
+
+Q7.2.1: What are bignums, ratios, and bigfloats in Lisp?
+--------------------------------------------------------
+
+Thanks to Jerry James <james@xemacs.org>, XEmacs 21.5.18 and later can
+use the capabilities of multiple-precision libraries that may be
+available for your platform. The GNU Multiple Precision (GMP) and BSD
+Multiple Precision (MP) libraries are partially supported. GMP gives
+you "bignums" (arbitrary precision integers), "ratios" (arbitrary
+precision fractions), and "bigfloats" (arbitrary precision floating
+point numbers). GNU MP is better-supported by XEmacs at the time of
+writing (2004-04-06). BSD MP support does not include ratios or
+bigfloats, and it throws errors that aren't understood.
+
+ In most cases, bignum support should be transparent to users and Lisp
+programmers. A bignum-enabled XEmacs will automatically convert from
+fixnums to bignums and back in pure integer arithmetic, and for GNU MP,
+from floats to bigfloats. (Bigfloats must be explicitly coerced to
+other types, even if they are exactly representable by less precise
+types.) The Lisp reader and printer have been enhanced to handle
+bignums, as have the mathematical functions. Rationals (fixnums,
+bignums, and ratios) are printed using the `%d', `%o', `%x', and `%u'
+format conversions. The read syntax for ratios is `3/5'.
+
+ User-visible changes in behavior include (in probable order of
+annoyance)
+
+ * Arithmetic can cause a segfault, depending on your MP library
+ *Note XEmacs segfaults when I use very big numbers!: Q7.2.2.
+
+ * Terminology is not Common-Lisp-conforming. For example, "integer"
+ for Emacs Lisp means what Common Lisp calls "fixnum". This issue
+ is being investigated, but the use of "integer" for fixnum is
+ pervasive and may cause backward-compatibility and
+ GNU-Emacs-compatibility problems.
+
+ * Many operations that used to cause a range error now succeed, with
+ intermediate results and return values coerced to bignums as
+ needed.
+
+ * An atom with ratio read syntax now returns a number, not a symbol.
+
+ * The `%u' format conversion will now give an error if its argument
+ is negative. (Without MP, it prints a number which Lisp can't
+ read.)
+
+ _Surgeon General's Warning_: The automatic conversions cannot be
+disabled at runtime. New functions have been added which produce
+ratios, so there should be few surprises with type conflicts, but they
+can't be ruled out. "Arbitrary" precision means precisely what it
+says. If you work with extremely large numbers, your machine may
+arbitrarily decide to hand you an unpleasant surprise rather than a
+bignum *Note XEmacs segfaults when I use very big numbers!: Q7.2.2.
+
+ To configure with GNU MP, add `--use-number-lib=gmp'
+(`--enable-bignum=gmp' in 21.5 or later) to your invocation of
+`configure'. For BSD MP, use `--use-number-lib=mp'
+(`--enable-bignum=mp' for 21.5).
+
+ If you would like to help with bignum support, especially on BSD MP,
+please subscribe to the XEmacs Beta mailing list
+(http://www.xemacs.org/Lists/#xemacs-beta), and book up on
+`number-gmp.h' and `number-mp.h'. Jerry has promised to write
+internals documentation eventually, but if your skills run more to
+analysis and documentation than to writing new code, feel free to fill
+in the gap!