+@node MS Windows, Current Events, Miscellaneous, Top
+@unnumbered 6 XEmacs on MS Windows
+
+This is part 6 of the XEmacs Frequently Asked Questions list, written by
+Hrvoje Niksic and others. This section is devoted to the MS Windows
+port of XEmacs.
+
+@menu
+
+General Info
+* Q6.0.1:: What is the status of the XEmacs port to Windows?
+* Q6.0.2:: What flavors of MS Windows are supported?
+* Q6.0.3:: Where are the XEmacs on MS Windows binaries?
+* Q6.0.4:: Does XEmacs on MS Windows require an X server to run?
+
+Building XEmacs on MS Windows
+* Q6.1.1:: I decided to run with X. Where do I get an X server?
+* Q6.1.2:: What compiler do I need to compile XEmacs?
+* Q6.1.3:: How do I compile for the native port?
+* Q6.1.4:: How do I compile for the X port?
+* Q6.1.5:: How do I compile for Cygnus' Cygwin?
+* Q6.1.6:: What do I need for Cygwin?
+
+Customization and User Interface
+* Q6.2.1:: How will the port cope with differences in the Windows user interface?
+* Q6.2.2:: How do I change fonts in XEmacs on MS Windows?
+* Q6.2.3:: Where do I put my @file{.emacs} file?
+
+Miscellaneous
+* Q6.3.1:: Will XEmacs rename all the win32-* symbols to w32-*?
+* Q6.3.2:: What are the differences between the various MS Windows emacsen?
+* Q6.3.3:: What is the porting team doing at the moment?
+
+Troubleshooting:
+* Q6.4.1:: XEmacs won't start on Windows. (NEW)
+
+@end menu
+
+@node Q6.0.1, Q6.0.2, MS Windows, MS Windows
+@unnumberedsec 6.0: General Info
+@unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows?
+
+Is XEmacs really getting ported to MS Windows? What is the status of the port?
+
+Yes, a group of volunteers actively works on making XEmacs code base
+cleanly compile and run on MS Windows operating systems. The mailing
+list at @email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
+the -request address to subscribe).
+
+At this time, XEmacs on MS Windows is usable, but lacks some of the
+features of XEmacs on UNIX and UNIX-like systems. Notably,
+internationalization does not work.
+
+@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 will support both Windows 95,
+Windows 98 and Windows NT. The MS Windows-specific code is based on
+Microsoft Win32 API, and will not work on MS Windows 3.x or on MS-DOS.
+
+
+@node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
+@unnumberedsubsec Q6.0.3: Are binary kits available?
+
+Binary kits are available at
+@uref{ftp://ftp.xemacs.org/pub/xemacs/binary-kits/win32/} for the
+"plain" MS Windows version.
+
+@node Q6.0.4, Q6.1.1, Q6.0.3, MS Windows
+@unnumberedsubsec Q6.0.4: Does XEmacs on MS Windows require an X server to run?
+
+Short answer: No.
+
+Long answer: XEmacs can be built in several ways in the MS Windows
+environment, some of them requiring an X server and some not.
+
+One is what we call the "X" port---it requires X libraries to build
+and an X server to run. Internally it uses the Xt event loop and
+makes use of X toolkits. Its look is quite un-Windowsy, but it works
+reliably and supports all of the graphical features of Unix XEmacs.
+
+The other is what we call the "native" port. It uses the Win32 API
+and does not require X libraries to build, nor does it require an X to
+run. In fact, it has no connection with X whatsoever. At this time,
+the native port obsoletes the X port, providing almost all of its
+features, including support for menus, scrollbars, toolbars, embedded
+images and background pixmaps, frame pointers, etc. Most of the
+future work will be based on the native port.
+
+There is also a third special case, the Cygwin port. It takes
+advantage of Cygnus emulation library under Win32, which enables it to
+reuse much of the Unix XEmacs code base, such as processes and network
+support, or internal select() mechanisms.
+
+Cygwin port supports all display types---TTY, X & MS gui, and can be
+built with support for all three. If you build with ms gui support
+then the Cygwin version uses the majority of the msw code, which is
+mostly related to display. If you want to build with X support you
+need X libraries. If you want to build with tty support you need
+ncurses. MS gui requires no additional libraries.
+
+Some of the advantages of the Cygwin version are that it:
+
+@itemize @bullet
+
+@item integrates well with Cygwin environment for existing Cygwin users;
+@item uses configure so building with different features is very easy;
+@item has process support in X & tty.
+
+@end itemize
+
+The disadvantage is that it requires several Unix utilities and 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).
+
+@node Q6.1.1, Q6.1.2, Q6.0.4, MS Windows
+@unnumberedsec 6.1: Building XEmacs on MS Windows
+@unnumberedsubsec Q6.1.1: I decided to run with X. Where do I get an X server?
+
+Pointers to X servers can be found at
+@iftex
+@*
+@end iftex
+@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/};
+
+look for "Where to get an X server". Also note that, although the above
+page talks about Cygnus gnu-win32 (Cygwin), the information on X servers
+is Cygwin-independent. You don't have to be running/using Cygwin to use
+these X servers, and you don't have to compile XEmacs under Cygwin to
+use XEmacs with these X servers. An "X port" XEmacs compiled under
+Visual C++ will work with these X servers (as will XEmacs running on a
+Unix box, redirected to the server running on your PC).
+
+
+@node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows
+@unnumberedsubsec Q6.1.2: What compiler do I need to compile XEmacs?
+
+You need Visual C++ 4.2, 5.0, or 6.0, with the exception of the Cygwin
+port, which uses Gcc. There is also a MINGW32 port of XEmacs (using
+Gcc, but using native libraries rather than the Cygwin libraries). ####
+More information about this should be provided.
+
+
+@node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows
+@unnumberedsubsec Q6.1.3: How do I compile for the native port?
+
+Please read the file @file{nt/README} in the XEmacs distribution, which
+contains the full description.
+
+
+@node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows
+@unnumberedsubsec Q6.1.4: How do I compile for the X port?
+
+Again, it is 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, I don't know of it.
+
+
+@node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows
+@unnumberedsubsec Q6.1.5: How do I compile for Cygnus' 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{.emacs} file comes
+from;
+
+@item
+CYGWIN needs to be set to tty for process support work. e.g. CYGWIN=tty;
+(use CYGWIN32=tty under b19 and older.)
+
+@item
+picking up some other grep or other unix like tools can kill configure;
+
+@item
+static heap too small, adjust src/sheap-adjust.h to a more positive
+number;
+
+@item
+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.
+
+@end itemize
+
+@node Q6.1.6, Q6.2.1, Q6.1.5, MS Windows
+@unnumberedsubsec Q6.1.6: What do I need for Cygwin?
+
+You can find the Cygwin tools and compiler at:
+
+@uref{http://sourceware.cygnus.com/cygwin/}
+
+You will need version b19 or later.
+The latest current version is 1.1.1.
+Other common versions you will see are b20.1.
+
+Another location, one of the mirror sites of the site just mentioned,
+is usually a last faster:
+
+@uref{ftp://ftp.freesoftware.com/pub/sourceware/cygwin/}
+
+You can obtain the latest version (currently 1.1.1) from the
+@samp{latest/} subdirectory of either of the above two just-mentioned
+URL's.
+
+@strong{WARNING: The version of GCC supplied under @samp{latest/}, as of
+June 6th, 2000, does not appear to work. It generates loads of spurious
+preprocessor warnings and errors, which makes it impossible to compile
+XEmacs with it.}
+
+You will also need the X libraries. You can get them on the XEmacs FTP
+site at
+
+@uref{ftp://ftp.xemacs.org/pub/xemacs/aux/cygwin/}
+
+You will find b19 and b20 versions of the X libraries, plus b19 and b20
+versions of stuff that should go into @samp{/usr/local/}, donated by
+Andy Piper. This includes pre-built versions of various graphics libraries,
+such as PNG, JPEG, TIFF, and XPM. (Remember, GIF support is built-in to
+XEmacs.)
+
+(X libraries for v1 and beyond of Cygwin can be found on the Cygwin site
+itself -- look in the @samp{xfree/} subdirectory.)
+
+@emph{NOTE:} There are two versions of the XPM library provided in
+Andy's packets. Once is for building with X support, and the other for
+building without. The X version should work if you're building with
+both X and Windows support. The two files are called @file{libXpm-X.a}
+and @file{libXpm-noX.a} respectively, and you must symlink the
+appropriate one to @file{libXpm.a}. @strong{CAREFUL:} By default, the
+non-X version is symlinked in. If you then configure XEmacs with X,
+you won't run into problems until you start compiling @file{events.c},
+at which point you'll get strange and decidedly non-obvious errors.
+
+Please see @uref{http://www.xemacs.freeserve.co.uk/} (Andy Piper's home
+page) for more information.
+
+BTW There are also libraries at
+@iftex
+@*
+@end iftex
+@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}, but
+these are not b19 compatible, and may in fact be native-compiled.
+
+
+@node Q6.2.1, Q6.2.2, Q6.1.6, MS Windows
+@unnumberedsec 6.2: Customization and User Interface
+@unnumberedsubsec Q6.2.1: How will 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 will
+the MS Windows port cope with it?
+
+Fortunately, Emacs is also one of the most configurable editor beasts
+in the world. The MS Windows "look and feel" (mark via shift-arrow,
+self-inserting deletes region, etc.) can be easily configured via
+various packages distributed with XEmacs. The `pending-delete'
+package is an example of such a utility.
+
+In future versions, some of these packages 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.2.*, use the font menu. In 21.1.*, 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.3.1, Q6.2.2, MS Windows
+@unnumberedsubsec Q6.2.3: Where do I put my @file{.emacs} file?
+
+If the HOME environment variable is set, @file{.emacs} will be looked for
+there. Else the directory defaults to `c:\'.
+
+@node Q6.3.1, Q6.3.2, Q6.2.3, MS Windows
+@unnumberedsec 6.3: Miscellaneous
+@unnumberedsubsec Q6.3.1: Will XEmacs rename all the win32-* symbols to w32-*?
+
+In his flavor of Emacs 20, Richard Stallman has renamed all the win32-*
+symbols to w32-*. Will XEmacs do the same?
+
+We consider such a move counter-productive, thus we will not use the
+`w32' prefix. However, we do recognize that Win32 name is little more
+than a marketing buzzword (will it be Win64 in the next release?), so
+we decided not to use it. Using `windows-' would be wrong because the
+term is too generic, which is why we settled on a compromise
+`mswindows' term.
+
+Thus all the XEmacs variables and functions directly related to Win32
+are prefixed `mswindows-'. The user-variables shared with NT Emacs
+will be provided as compatibility aliases.
+
+Architectural note: We believe that there should be a very small
+number of window-systems-specific variables, and will try to provide
+generic interfaces whenever possible.
+
+
+@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
+Win-Emacs
+
+@itemize @minus
+
+@item
+Win-Emacs is a port of Lucid Emacs 19.6 to MS Windows using X
+compatibility libraries. Win-Emacs has been written by Ben Wing. The
+MS Windows code has not made it back to Lucid Emacs, which left Win-Emacs
+pretty much dead for our purposes. Win-Emacs used to be available at
+Pearlsoft, but not anymore, since Pearlsoft went out of business.
+@end itemize
+
+@item
+GNU Emacs for DOS
+
+@itemize @minus
+
+@item
+GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
+port of Gcc). Such an Emacs is heavily underfeatured, because it does
+not supports long file names, lacks proper subprocesses support, and
+is far too big compared to typical DOS editors.
+@end itemize
+
+@item
+GNU Emacs compiled with Win32
+
+@itemize @minus
+
+@item
+Starting with version 19.30, it has been possible to compile GNU Emacs
+under MS Windows using the DJGPP compiler and X libraries. The result
+is is very similar to GNU Emacs compiled under MS DOS, only it
+supports longer file names, etc. This "port" is similar to the "X"
+flavor of XEmacs on MS Windows.
+@end itemize
+
+@item
+NT Emacs
+
+@itemize @minus
+
+@item
+NT Emacs is a version of GNU Emacs modified to compile and run under
+MS MS Windows 95 and NT using the native Win32 API. As such, it is close
+in spirit to the XEmacs "native" port.
+
+@item
+NT Emacs has been written by Geoff Voelker, and more information can be
+found at
+@iftex
+@*
+@end iftex
+@uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}.
+
+@end itemize
+
+@item
+XEmacs
+
+@itemize @minus
+
+@item
+Beginning with XEmacs 19.12, XEmacs' architecture has been redesigned
+in such a way to allow clean support of multiple window systems. At
+this time the TTY support was added, making X and TTY the first two
+"window systems" XEmacs supported. The 19.12 design is the basis for
+the current native MS Windows code.
+
+@item
+Some time during 1997, David Hobley (soon joined by Marc Paquette)
+imported some of the NT-specific portions of GNU Emacs, making XEmacs
+with X support compile under Windows NT, and creating the "X" port.
+
+@item
+Several months later, Jonathan Harris sent out initial patches to use
+the Win32 API, thus creating the native port. Since then, various
+people have contributed, including Kirill M. Katsnelson (contributed
+support for menubars, subprocesses and network, as well as loads of
+other code), Andy Piper (ported XEmacs to Cygwin environment,
+contributed Windows unexec, Windows-specific glyphs and toolbars code,
+and more), Jeff Sparkes (contributed scrollbars support) and many
+others.
+
+@end itemize
+
+@end itemize
+
+
+@node Q6.3.3, Q6.4.1, Q6.3.2, MS Windows
+@unnumberedsubsec Q6.3.3: What is the porting team doing at the moment?
+
+The porting team is continuing work on the MS Windows-specific code.
+
+@node Q6.4.1, ,Q6.3.3, MS Windows
+@unnumberedsec 6.3: Troubleshooting
+@unnumberedsubsec Q6.4.1 XEmacs won't start on Windows. (NEW)
+
+XEmacs relies on a process called "dumping" to generate a working
+executable. Under MS-Windows this process effectively fixes the memory
+addresses of information in the executable. When XEmacs starts up it tries
+to reserve these memory addresses so that the dumping process can be
+reversed - putting the information back at the correct addresses.
+Unfortunately some .dlls (For instance the soundblaster driver) occupy
+memory addresses that can conflict with those needed by the dumped XEmacs
+executable. In this instance XEmacs will fail to start without any
+explanation. Note that this is extremely machine specific.
+
+21.1.10 includes a fix for this that makes more intelligent guesses
+about which memory addresses will be free, and this should cure the
+problem for most people. Unfortunately, no binary is yet available for
+this version. Check back periodically at
+
+@uref{ftp://ftp.xemacs.org/pub/xemacs/binaries/}.
+
+21.2 implements "portable dumping" which will eliminate the problem
+altogether. You might have better luck with the 21.2 beta binary,
+available at
+
+@uref{ftp://ftp.xemacs.org/pub/xemacs/beta/binaries/}.
+
+
+@node Current Events, , MS Windows, Top
+@unnumbered 7 What the Future Holds