+Beginning with release 21.0, XEmacs has worked under MS Windows. A
+group of dedicated developers actively maintains and improves the
+Windows-specific portions of the code. The mailing list at
+@email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
+the -request address to subscribe). (Despite its name, XEmacs actually
+works on all versions of Windows.)
+
+As of May 2001, XEmacs on MS Windows is stable and full-featured, and
+has been so for a year or more -- in fact, some features, such as
+printing, actually work better on Windows than native Unix. However,
+the internationalization (Mule) support does not work -- although this
+is being actively worked on.
+
+
+@node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows
+@unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported? The list name implies NT only.
+
+The list name is misleading, as XEmacs supports and has been compiled on
+Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows
+XP, and all newer versions of Windows. The MS Windows-specific code is
+based on Microsoft Win32 API, and will not work on MS Windows 3.x or on
+MS-DOS.
+
+XEmacs also supports the Cygwin and MinGW development and runtime
+environments, where it also uses native Windows code for graphical
+features.
+
+
+@node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
+@unnumberedsubsec Q6.0.3: Are binaries available?
+
+Binaries are available at @uref{http://www.xemacs.org/Download/win32/}
+for the native and Cygwin MS Windows versions of 21.4, and the native
+version of 21.1.
+
+The 21.4 binaries use a modified version of the Cygwin installer. Run
+the provided @file{setup.exe}, and follow the instructions.
+
+
+@node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows
+@unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support? Do I need to?
+
+Yes, you can, but no you do not need to. In fact, we recommend that you
+use a native-GUI version unless you have a specific need for an X
+version.
+
+@node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows
+@unnumberedsubsec Q6.0.5: I'd like to help out. What do I do?
+
+It depends on the knowledge and time you possess. If you are a
+programmer, try to build XEmacs and see if you can improve it.
+Windows-specific improvements like integration with established
+Windows environments are especially sought after.
+
+Otherwise, you can still help by downloading the binaries, using
+XEmacs as your everyday editor 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.
+
+@node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows
+@unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs?
+
+To answer the second part of the question: No, you, you don't need
+Cygwin or MinGW to build or to run XEmacs. But if you have them and
+want to use them, XEmacs supports these environments.
+
+(One important reason to support Cygwin is that it lets the MS Windows
+developers test out their code in a Unix environment without actually
+having to have a Unix machine around. For this reason alone, Cygwin
+support is likely to remain supported for a long time in XEmacs. Same
+goes for the X support under Cygwin, for the same reasons. MinGW
+support, on the other hand, depends on volunteers to keep it up to date;
+but this is generally not hard.)
+
+Cygwin is a set of tools providing Unix-like API on top of Win32.
+It makes it easy to port large Unix programs without significant
+changes to their source code. It is a development environment as well
+as a runtime environment.
+
+When built with Cygwin, XEmacs supports all display types -- TTY, X &
+Win32 GUI, and can be built with support for all three simultaneously.
+If you build with Win32 GUI support then the Cygwin version uses the
+majority of the Windows-specific code, which is mostly related to
+display. If you want to build with X support you need X libraries (and
+an X server to display XEmacs on); see @ref{Q6.1.4}. TTY and Win32 GUI
+require no additional libraries beyond what comes standard with Cygwin.
+
+The advantages of the Cygwin version are that it integrates well with
+the Cygwin environment for existing Cygwin users; uses configure so
+building with different features is very easy; and actively supports X &
+TTY. Furthermore, the entire Cygwin environment and compiler are free,
+whereas Visual C++ costs money.
+
+The disadvantage is that it requires the whole Cygwin environment,
+whereas the native port requires only a suitable MS Windows compiler.
+Also, it follows the Unix filesystem and process model very closely
+(some will undoubtedly view this as an advantage).
+
+See @uref{http://sources.redhat.com/cygwin/} for more information on
+Cygwin.
+
+MinGW is a collection of header files and import libraries that allow
+one to use GCC under the Cygwin environment to compile and produce
+exactly the same native Win32 programs that you can using Visual C++.
+Programs compiled with MinGW make use of the standard Microsoft runtime
+library @file{MSVCRT.DLL}, present on all Windows systems, and look,
+feel, and act like a standard Visual-C-produced application. (The only
+difference is the compiler.) This means that, unlike a
+standardly-compiled Cygwin application, no extra runtime support
+(e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the
+fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y
+environment, for those die-hard Unix hackers out there), is the main
+advantage of MinGW. It is also potentially faster than Cygwin because
+it has less overhead when calling Windows, but you lose the POSIX
+emulation layer, which makes Unix programs harder to port. (But this is
+irrelevant for XEmacs since it's already ported to Win32.)
+
+See @uref{http://www.mingw.org/} for more information on MinGW.
+
+@node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows
+@unnumberedsubsec Q6.0.7: 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. @xref{Q6.0.6}, for more
+information.
+
+A third way is the MinGW port. It uses the Cygwin environment to build
+but does not require it at runtime. @xref{Q6.0.6}, 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.)
+
+
+@node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows
+@unnumberedsec 6.1: Building XEmacs on MS Windows
+@unnumberedsubsec Q6.1.1: 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. @xref{Q6.0.6}, for more information
+on Cygwin and MinGW.
+
+@node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows
+@unnumberedsubsec Q6.1.2: How do I compile the native port?
+
+Please read the file @file{nt/README} in the XEmacs distribution, which
+contains the full description.
+
+@node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows
+@unnumberedsubsec Q6.1.3: What do I need for Cygwin?
+
+You can find the Cygwin tools and compiler at:
+
+@uref{http://sources.redhat.com/cygwin/}
+
+Click on the @samp{Install now!} link, which will download a file
+@file{setup.exe}, which you can use to download everything else. (You
+will need to pick a mirror site; @samp{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.
+
+If you want to compile under X, you will also need the X libraries; see
+@ref{Q6.1.6}.
+
+If you want to compile without X, you will need the @file{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 @file{cygXpm-noX4.dll}.
+
+
+@node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows
+@unnumberedsubsec Q6.1.4: How do I compile under Cygwin?
+
+Similar as on Unix; use the usual `configure' and `make' process.
+Some problems to watch out for:
+
+@itemize @bullet
+@item
+make sure HOME is set. This controls where you
+@file{init.el}/@file{.emacs} file comes from;
+
+@item
+CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty;
+
+@item
+picking up some other grep or other UNIX-like tools can kill configure;
+
+@item
+static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
+number;
+
+@item
+(Unconfirmed) The Cygwin version doesn't understand
+@file{//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;
+
+@item
+If you're building @strong{WITHOUT} X11, don't forget to change symlinks
+@file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to
+the non-X versions of these libraries. By default they point to the X
+versions. So:
+
+@example
+/usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a
+/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a
+@end example
+
+(This advice may now be obsolete because of the availability of the
+cygXpm-noX4.dll package from Cygwin. Send confirmation to
+@email{faq@@xemacs.org}.)
+
+@item
+Other problems are listed in the @file{PROBLEMS} file, in the top-level
+directory of the XEmacs sources.
+
+@end itemize
+
+
+@node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows
+@unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})?
+
+Similar to the method for Unix. Things to remember:
+
+@itemize @bullet
+@item
+Specify the target host on the command line for @file{./configure}, e.g.
+@samp{./configure i586-pc-mingw32}.
+
+@item
+Be sure that your build directory is mounted such that it has the
+same path either as a cygwin path (@file{/build/xemacs}) or as a Windows
+path (@file{c:\build\xemacs}).
+
+@item
+Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng},
+@file{compface}, etc.
+
+@item
+Specify the target location of the extra libs on the command line
+to @file{configure}, e.g.
+@samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
+@end itemize
+
+
+@node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows
+@unnumberedsubsec Q6.1.6: I decided to run with X. Where do I get an X server?
+
+As of May 2001, we are recommending that you use the port of XFree86 to
+Cygwin. This has recently stabilized, and will undoubtedly soon make
+most other MS Windows X servers obsolete. It is what the Windows
+developers use to test the MS Windows X support.
+
+To install, go to @uref{http://xfree86.cygwin.com/}. There is a
+detailed description on that site of exactly how to install it. This
+installation also provides the libraries, include files, and other stuff
+needed for development; a large collection of internationalized fonts;
+the standard X utilities (xterm, twm, etc.) -- in a word, the works.
+
+NOTE: As of late May 2001, there is a bug in the file
+@file{startxwin.bat}, used to start X Windows. It passes the option
+@samp{-engine -4} to the X server, which is bogus -- you need to edit
+the file and change it to @samp{-engine 4}.
+
+
+@node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows
+@unnumberedsubsec Q6.1.7: How do I compile with X support?
+
+To compile under Cygwin, all you need to do is install XFree86
+(@pxref{Q6.1.6}). Once installed, @file{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
+@file{nt/README} in some detail. Basically, you need to get X11
+libraries from ftp.x.org, and compile them. If the precompiled versions
+are available somewhere, we don't know of it.
+
+
+@node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows
+@unnumberedsec 6.2: Customization and User Interface
+@unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface?
+
+XEmacs (and Emacs in general) UI is pretty different from what is
+expected of a typical MS Windows program. How does the MS Windows port
+cope with it?
+
+As a general rule, we follow native MS Windows conventions as much as
+possible. In cases where there's a clear UI conflict, we currently use
+normal Unix XEmacs behavior by default, but make sure the MS Windows
+"look and feel" (mark via shift-arrow, self-inserting deletes region,
+Alt selects menu items, etc.) is easily configurable (respectively:
+using the variable @code{shifted-motion-keys-select-region} in 21.4 and
+above [it's in fact the default in these versions], or the
+@file{pc-select} package; using the @file{pending-del} package; and
+setting the variable @code{menu-accelerator-enabled} to
+@code{menu-force} in 21.4 and above). In fact, if you use the sample
+@file{init.el} file as your init file, you will get all these behaviors
+automatically turned on.
+
+In future versions, some of these features might be turned on by
+default in the MS Windows environment.
+
+
+@node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows
+@unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows?
+
+In 21.4 and above, use the font menu. In all versions, you can change
+font manually. For example:
+
+@display
+ (set-face-font 'default "Lucida Console:Regular:10")
+ (set-face-font 'modeline "MS Sans Serif:Regular:10")
+@end display
+
+
+@node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows
+@unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file?
+
+@file{init.el} is the name of the init file starting with 21.4, and is
+located in the subdirectory @file{.xemacs/} of your home directory. In
+prior versions, the init file is called @file{.emacs} and is located in
+your home directory. Your home directory under Windows is determined by
+the @samp{HOME} environment variable. If this is not set, it defaults to
+@samp{C:\}.
+
+To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or
+select @samp{Control Panel->System->Advanced->Environment Variables...}
+under Windows NT/2000.
+
+
+@node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows
+@unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs?
+
+@unnumberedsubsubsec Associating a new file type with XEmacs.
+
+In Explorer select @samp{View/Options/File Types}, press @samp{[New
+Type...]} and fill in the dialog box, e.g.:
+
+@example
+ Description of type: Emacs Lisp source
+ Associated extension: el
+ Content Type (MIME): text/plain
+@end example
+
+then press @samp{[New...]} and fill in the @samp{Action} dialog box as
+follows:
+
+@example
+ 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>
+@end example
+
+@unnumberedsubsubsec Associating an existing file type with XEmacs.
+
+In Explorer select @samp{View/Options/File Types}. Click on the file
+type in the list and press @samp{[Edit...]}. If the file type already
+has an @samp{Open} action, double click on it and fill in the
+@samp{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 @samp{Open} action that you just edited the default by clicking on
+it and pressing @samp{Set Default}.
+
+Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types}
+using @samp{Control Panel->Folder Options->File Types}.
+
+
+@node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows
+@unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs?
+
+As of 21.4, printing works on Windows, using simply @samp{File->Print},
+and can be configured with @samp{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.
+
+
+@node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows
+@unnumberedsec 6.3: Miscellaneous
+@unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}?
+
+In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*}
+symbols to @samp{w32-*}. Does XEmacs do the same?
+
+We consider such a move counter-productive, thus we do not use the
+@samp{w32} prefix. (His rather questionable justification was that he
+did not consider Windows to be a "winning" platform.) However, the name
+@samp{Win32} is not particularly descriptive outside the Windows world,
+and using just @samp{windows-} would be too generic. So we chose a
+compromise, the prefix @samp{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 @samp{mswindows-} (except for a
+couple of debugging variables, prefixed @samp{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.
+
+@c not true:
+@c The user variables
+@c that share functionality with existing NT Emacs variables are be named
+@c with our convention, but we provide the GNU Emacs names as
+@c compatibility aliases.
+
+@node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows
+@unnumberedsubsec Q6.3.2: What are the differences between the various MS Windows emacsen?
+
+XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing.
+Could you briefly explain the differences between them?
+
+Here is a recount of various Emacs versions running on MS Windows:
+
+@itemize @bullet
+
+@item
+XEmacs