doc/misc/efaq-w32.texi: Remove outdated information and update.

This commit is contained in:
Eli Zaretskii 2015-03-16 19:46:45 +02:00
parent c43762dd81
commit ac85901854
2 changed files with 189 additions and 236 deletions

View file

@ -1,3 +1,7 @@
2015-03-16 Eli Zaretskii <eliz@gnu.org>
* efaq-w32.texi: Remove outdated information and update.
2015-03-15 Martin Rudalics <rudalics@gmx.at> 2015-03-15 Martin Rudalics <rudalics@gmx.at>
* efaq.texi (Fullscreen mode on MS-Windows): Fix description (Bug#20110). * efaq.texi (Fullscreen mode on MS-Windows): Fix description (Bug#20110).

View file

@ -128,10 +128,12 @@ systems.
@cindex supported versions of Windows @cindex supported versions of Windows
Emacs @value{EMACSVER} is known to run on all versions of Windows from Emacs @value{EMACSVER} is known to run on all versions of Windows from
@c FIXME does it really still support Windows 98? Does it matter? Windows 98 and Windows NT 4.0 through to Windows 8.1. The Windows
Windows 98 and Windows NT 4.0 through to Windows 7. The Windows port is port is built using the Win32 API and supports most features of the X
built using the Win32 API and supports most features of the X version, version, including variable width fonts, images and tooltips.
including variable width fonts, images and tooltips.
Emacs on Windows can be compiled as either a 32-bit or a 64-bit
executable, using the MinGW GCC compiler and development tools.
@node Other versions of Emacs @node Other versions of Emacs
@section What other versions of Emacs run on Windows? @section What other versions of Emacs run on Windows?
@ -163,10 +165,12 @@ instructions (requires DJGPP).
@cindex where to get Emacs binaries @cindex where to get Emacs binaries
Pre-compiled versions are distributed from Pre-compiled versions are distributed from
@uref{http://ftpmirror.gnu.org/emacs/windows/, ftp.gnu.org mirrors}. @uref{http://ftpmirror.gnu.org/emacs/windows/, ftp.gnu.org mirrors}.
Emacs binaries are distributed as zip files, digitally Emacs binaries are distributed as zip files, digitally signed by the
signed by the developer who built them. Generally most users will developer who built them. Generally most users will want the file
want the file @file{emacs-@value{EMACSVER}-bin-i386.zip}, which @file{emacs-@value{EMACSVER}-bin-i686-pc-mingw.zip} for the 32-bit
contains everything you need to get started. build, and @file{emacs-@value{EMACSVER}-bin-x86_64-w64-mingw32.zip}
for the 64-bit build. The zip archive contains everything you need to
get started.
@cindex where to get sources @cindex where to get sources
@cindex Emacs source code @cindex Emacs source code
@ -187,17 +191,18 @@ development site.
@section How can I compile Emacs myself? @section How can I compile Emacs myself?
@cindex compiling Emacs @cindex compiling Emacs
To compile Emacs on Windows, you will need the MingW or Cygwin port of To compile Emacs on Windows, you will need the MingW port of GCC and
GCC with MingW make, or a Microsoft C compiler with nmake and the Binutils, the MinGW runtime and development environment, and the MSYS
single threaded C runtime library. Recent versions of Microsoft suite of tools. For the details, see the file @file{nt/INSTALL} in
Visual Studio no longer come with the single threaded C runtime the Emacs source distribution.
library, which is required for certain POSIX compatibility, so MingW
is usually the best choice. Image support requires external Support for displaying images, as well as XML/HTML rendering and TLS
libraries, the headers and import libraries for which will need to be networking requires external libraries, the headers and import
installed where your compiler can find them. You will also need ports libraries for which will need to be installed where your compiler can
of GNU @command{rm} and @command{cp}, as the Windows native find them. Again, the details, including URLs of sites where you can
equivalents are not consistent between versions. GNU texinfo will be download these libraries are in @file{nt/INSTALL}. @xref{Other useful
required to build the manuals. @xref{Other useful ports}. ports}, for auxiliary tools you may wish to install and use in
conjunction with Emacs.
After unpacking the source, or checking out of the repository, be sure After unpacking the source, or checking out of the repository, be sure
to read the instructions in @file{nt/README} and @file{nt/INSTALL}. to read the instructions in @file{nt/README} and @file{nt/INSTALL}.
@ -211,39 +216,25 @@ to read the instructions in @file{nt/README} and @file{nt/INSTALL}.
By default, Emacs is compiled with debugging on, and optimizations enabled. By default, Emacs is compiled with debugging on, and optimizations enabled.
The optimizations may interfere with some types of debugging; the debugger The optimizations may interfere with some types of debugging; the debugger
may not show clearly where it is, or may not be able to inspect certain may not show clearly where it is, or may not be able to inspect certain
variables. If this is the case, reconfigure with @option{--no-opt}. variables. If this is the case, reconfigure with @kbd{CFLAGS='-O0 -g3'}
The file @file{etc/DEBUG} contains general debugging hints, as well as The file @file{etc/DEBUG} contains general debugging hints, as well as
specific notes about debugging Emacs with both gdb and Microsoft debuggers. specific notes about debugging Emacs.
@menu
* GDB::
* Microsoft Developer Studio::
@end menu
@node GDB
@subsection GDB
@cindex GDB, debugging Emacs with
@cindex debugging Emacs with GDB @cindex debugging Emacs with GDB
GDB is the GNU debugger, which can be used to debug Emacs when it has GDB is the GNU debugger, which can be used to debug Emacs when it has
been compiled with GCC. The best results will be obtained if you been compiled with MinGW GCC. The best results will be obtained if
start gdb from the @file{src} directory as @samp{gdb oo/i386/emacs.exe}. you start gdb from the @file{src} directory as @kbd{gdb ./emacs.exe}.
This will load the init file @file{.gdbinit} in that directory, to This will load the init file @file{.gdbinit}@footnote{
define some extra commands for working with lisp while debugging, and Latest versions of GDB might refuse to load the init file for security
set up breakpoints to catch abnormal aborts. reasons, unless you customize GDB; alternatively, use an explicit
@kbd{source ./gdbinit} command after entering GDB.
} in that directory, to define some extra commands for working with
lisp while debugging, and set up breakpoints to catch abnormal
aborts.
@node Microsoft Developer Studio A Windows port of GDB can be found on MinGW download sites and on some
@subsection Microsoft Developer Studio others.
@cindex MSVC++, debugging Emacs with
@cindex DevStudio, debugging Emacs with
@cindex debugging Emacs with MS DevStudio
MS DevStudio can be used to debug Emacs when it has been compiled with
a Microsoft compiler. To view lisp variables, you can call the
function @code{debug_print} from the Quickwatch window. Some
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/debug.txt,
old tips} are probably still valid.
@c ------------------------------------------------------------ @c ------------------------------------------------------------
@node Installing Emacs @node Installing Emacs
@ -251,7 +242,7 @@ old tips} are probably still valid.
@menu @menu
* Unpacking:: * Unpacking::
* Installing:: * Installing binaries::
* Image support:: * Image support::
* Init file:: * Init file::
* Location of init file:: * Location of init file::
@ -279,24 +270,27 @@ old tips} are probably still valid.
The binary distributions are distributed as zip files, which are handled The binary distributions are distributed as zip files, which are handled
natively by Windows XP and later. For earlier versions, there are many natively by Windows XP and later. For earlier versions, there are many
tools that can handle the zip format, from InfoZip's command line unzip tools that can handle the zip format, from InfoZip's command line unzip
tool, to 7zip's multi-format graphical archive explorer. Although tool, to 7zip's multi-format graphical archive explorer. (Although
popular, WinZip has caused problems with line-ends in the past, and is not popular, WinZip has caused problems with line-ends in the past, and is not
Free software, so we do not recommend it. Free software, so we do not recommend it.)
Source distributions are distributed as gzipped tar files. 7zip and Source distributions are distributed as @file{.tar.gz} or
similar multi-format graphical tools can handle these, or you can get @file{.tar.xz} files. 7zip and similar multi-format graphical tools
Windows ports of the command line gzip and tar tools from multiple sources. can handle these, or you can get Windows ports of the command line
gzip and tar tools from multiple sources, or use @command{bsdtar}.
@xref{Other useful ports}. @xref{Other useful ports}.
The command to unpack a source distribution from the command line is: The command to unpack a source distribution from the command line is:
@example @example
tar xzf emacs-@value{EMACSVER}.tar.gz tar xzf emacs-@value{EMACSVER}.tar.gz
@end example @end example
If this does not work with the versions of tar and gzip that you have, If this does not work with the versions of tar and gzip that you have,
you may need to try a two step process: you may need to try a two step process:
@example @example
gzip -dc emacs-@value{EMACSVER}.tar.gz | tar xvf - gzip -dc emacs-@value{EMACSVER}.tar.gz | tar xf -
@end example @end example
You may see many messages from tar complaining about being unable to change You may see many messages from tar complaining about being unable to change
@ -304,8 +298,21 @@ the modification time on directories, and from gzip complaining about a
broken pipe. These messages are usually harmless, caused by incomplete ports broken pipe. These messages are usually harmless, caused by incomplete ports
that are not fully aware of the limitations of Windows. that are not fully aware of the limitations of Windows.
@node Installing And here's an example of using @command{bsdtar} (from the
@section How do I install Emacs after unpacking? @samp{libarchive} package) to unpack a @file{.tar.xz} archive:
@example
bsdtar -xf emacs-@value{EMACSVER}.tar.xz
@end example
Expect @command{bsdtar} to unpack the whole distribution without any
complaints.
Once you unpack the source distribution, look in @file{nt/INSTALL}
file for build instructions.
@node Installing binaries
@section How do I install Emacs after unpacking the binary zip?
@cindex installing Emacs @cindex installing Emacs
@pindex addpm @pindex addpm
@cindex Start Menu, creating icons for Emacs @cindex Start Menu, creating icons for Emacs
@ -313,7 +320,8 @@ that are not fully aware of the limitations of Windows.
You can run Emacs without any extra steps, but if you want icons in your You can run Emacs without any extra steps, but if you want icons in your
Start Menu, or for Emacs to detect the image libraries that are already Start Menu, or for Emacs to detect the image libraries that are already
installed on your system as part of GTK, then you should run the program installed on your system as part of GTK, then you should run the program
@file{emacs-@value{EMACSVER}\bin\addpm.exe}. @file{addpm.exe}, which is usually installed into the same @file{bin}
directory with @file{emacs.exe}.
@node Image support @node Image support
@section How do I get image support? @section How do I get image support?
@ -323,6 +331,7 @@ installed on your system as part of GTK, then you should run the program
@cindex gif, installing image support in Emacs @cindex gif, installing image support in Emacs
@cindex tiff, installing image support in Emacs @cindex tiff, installing image support in Emacs
@cindex xpm, installing image support in Emacs @cindex xpm, installing image support in Emacs
@cindex rsvg, installing image support in Emacs
@cindex toolbar, installing color icons in @cindex toolbar, installing color icons in
@cindex color images, installing support for images in Emacs @cindex color images, installing support for images in Emacs
@cindex monochrome images, getting color images in Emacs @cindex monochrome images, getting color images in Emacs
@ -330,12 +339,12 @@ installed on your system as part of GTK, then you should run the program
Emacs has built in support for XBM and PBM/PGM/PPM images. This is Emacs has built in support for XBM and PBM/PGM/PPM images. This is
sufficient to see the monochrome splash screen and tool-bar icons. sufficient to see the monochrome splash screen and tool-bar icons.
Since 22.2, the official precompiled binaries for Windows have bundled Since v22.2, the official precompiled binaries for Windows have bundled
libXpm, which is required to display the color versions of those images. libXpm, which is required to display the color versions of those images.
Emacs is compiled to recognize JPEG, PNG, GIF and TIFF images also, Emacs is compiled to recognize JPEG, PNG, GIF, TIFF, and RSVG images
but displaying these image types require external DLLs which are not also, but displaying these image types require external DLLs which are
bundled with Emacs. @xref{Other useful ports}. not bundled with Emacs. @xref{Other useful ports}.
@node Init file @node Init file
@section What is my init file? @section What is my init file?
@ -344,11 +353,11 @@ bundled with Emacs. @xref{Other useful ports}.
When Emacs starts up, it attempts to load and execute the contents of When Emacs starts up, it attempts to load and execute the contents of
a file commonly called @file{.emacs} (though it may have other names, a file commonly called @file{.emacs} (though it may have other names,
@pxref{Installing Emacs,,Where do I put my init file?}) which contains any @pxref{Location of init file,,Where do I put my init file?}) which
customizations you have made. You can manually add lisp code to your contains any customizations you have made. You can manually add lisp
.emacs, or you can use the Customization interface accessible from the code to your .emacs, or you can use the Customization interface
@emph{Options} menu. If the file does not exist, Emacs will start accessible from the @emph{Options} menu. If the file does not exist,
with the default settings. Emacs will start with the default settings.
@node Location of init file @node Location of init file
@section Where do I put my init file? @section Where do I put my init file?
@ -358,15 +367,15 @@ with the default settings.
@cindex init.el @cindex init.el
@cindex registry, setting the HOME directory in @cindex registry, setting the HOME directory in
On Windows, the .emacs file may be called _emacs for backward On Windows, the @file{.emacs} file may be called @file{_emacs} for
compatibility with DOS and FAT filesystems where filenames could not backward compatibility with DOS and FAT filesystems where filenames
start with a dot. Some users prefer to continue using such a name, could not start with a dot. Some users prefer to continue using such
because Explorer cannot create a file with a name starting with a dot, a name due to historical problems various Windows tools had in the
even though the filesystem and most other programs can handle it. past with file names that begin with a dot. In Emacs 22 and later,
In Emacs 22 and later, the init file may also be called the init file may also be called @file{.emacs.d/init.el}. Many of the
@file{.emacs.d/init.el}. Many of the other files that are created other files that are created by lisp packages are now stored in the
by lisp packages are now stored in the @file{.emacs.d} directory too, @file{.emacs.d} directory too, so this keeps all your Emacs related
so this keeps all your Emacs related files in one place. files in one place.
All the files mentioned above should go in your @env{HOME} directory. All the files mentioned above should go in your @env{HOME} directory.
The @env{HOME} directory is determined by following the steps below: The @env{HOME} directory is determined by following the steps below:
@ -387,14 +396,14 @@ backward compatibility, as previous versions defaulted to @file{C:/}
if @env{HOME} was not set. if @env{HOME} was not set.
@item @item
Use the user's AppData directory, usually a directory called Use the user's AppData directory, usually a directory called
@file{Application Data} under the user's profile directory, the location @file{AppData} under the user's profile directory, the location
of which varies according to Windows version and whether the computer is of which varies according to Windows version and whether the computer is
part of a domain. part of a domain.
@end enumerate @end enumerate
Within Emacs, @key{~} at the beginning of a file name is expanded to your Within Emacs, @key{~} at the beginning of a file name is expanded to your
@env{HOME} directory, so you can always find your .emacs file with @env{HOME} directory, so you can always find your @file{.emacs} file
@kbd{C-x C-f ~/.emacs}. by typing the command @kbd{C-x C-f ~/.emacs}.
@node Troubleshooting init file @node Troubleshooting init file
@section Troubleshooting init file problems @section Troubleshooting init file problems
@ -409,15 +418,16 @@ to. You can do this by evaluating the following expression in the
@file{*scratch*} buffer using @kbd{C-x C-e}: @file{*scratch*} buffer using @kbd{C-x C-e}:
@example @example
(insert (getenv "HOME")) (getenv "HOME")
@end example @end example
Look carefully at what is printed and make sure the value is Look carefully at what is printed in the echo area, and make sure the
valid. For example, if the value has trailing whitespace, Emacs won't value is valid. For example, if the value has trailing whitespace,
be able to find the directory. Also, be sure that the value isn't a Emacs won't be able to find the directory. Also, be sure that the
relative drive letter (e.g., @file{d:} without a backslash); if it is, value isn't a relative drive letter (e.g., @file{d:} without a
then @env{HOME} is going to be whatever the current directory on that backslash or a forward slash after the colon); if it is, then
drive is, which is likely not what you want to happen. @env{HOME} is going to be whatever the current directory on that drive
is, which is likely not what you want to happen.
@node Associate files with Emacs @node Associate files with Emacs
@section How do I associate files with Emacs? @section How do I associate files with Emacs?
@ -488,9 +498,9 @@ Thanks to Jason Rumney and Sigbjorn Finne for these tips.
The location of the Desktop varies between different versions of The location of the Desktop varies between different versions of
Windows, and in a corporate environment can be moved around by the Windows, and in a corporate environment can be moved around by the
network administrator. On NT derivatives, you can use the value of network administrator. On latest Windows versions, you can use the
the @env{USERPROFILE} environment variable to find where the desktop value of the @env{USERPROFILE} environment variable to find where the
might be: desktop might be:
@example @example
@kbd{C-x C-f $USERPROFILE/Desktop} @kbd{C-x C-f $USERPROFILE/Desktop}
@ -512,7 +522,7 @@ menu by default). Once you have a file from the Desktop inside Emacs,
@end menu @end menu
@node Focus follows mouse @node Focus follows mouse
@subsection How do it make the active window follow the mouse? @subsection How do I make the active window follow the mouse?
@vindex focus-follows-mouse @vindex focus-follows-mouse
@cindex point to focus @cindex point to focus
@cindex mouse over to focus @cindex mouse over to focus
@ -524,6 +534,11 @@ even though Windows has a click to focus policy by default (there is
software available to change that though). The latter can be used to software available to change that though). The latter can be used to
make Emacs use a focus-follow-mouse policy within its own frames. make Emacs use a focus-follow-mouse policy within its own frames.
You can also change the Windows click-to-focus policy by changing
settings in the Registry. The details vary according to your Windows
version; look on the Internet for instructions to enable ``active
window tracking'' for your version of Windows.
@node Swap CapsLock and Control @node Swap CapsLock and Control
@subsection How do I swap CapsLock and Control? @subsection How do I swap CapsLock and Control?
@cindex scan codes, modifying @cindex scan codes, modifying
@ -576,7 +591,7 @@ Date: 04 Dec 1996 14:36:21 -0600
Message-ID: <fawg21mm4hm.fsf@@mordor.rsn.hp.com> Message-ID: <fawg21mm4hm.fsf@@mordor.rsn.hp.com>
Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0 Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0
@end ignore @end ignore
@example @smallexample
It's a binary value that lets you map keystrokes in the low-level keyboard It's a binary value that lets you map keystrokes in the low-level keyboard
drivers in NT. As a result you don't have to worry about applications drivers in NT. As a result you don't have to worry about applications
bypassing mappings that you've done at a higher level (i.e. it just works). bypassing mappings that you've done at a higher level (i.e. it just works).
@ -600,7 +615,7 @@ lock key will behave as caps-lock. To swap, you also need to map 0x3a to
This registry value is system wide, and can't be made user-specific. It This registry value is system wide, and can't be made user-specific. It
also only takes affect on reboot. also only takes affect on reboot.
@end example @end smallexample
@item @item
Ulfar Erlingsson has provided a registry file that sets the CapsLock key Ulfar Erlingsson has provided a registry file that sets the CapsLock key
to be a Control key and the Windows key to be an Alt key: to be a Control key and the Windows key to be an Alt key:
@ -663,7 +678,8 @@ buffers etc. will instead act on the region. An inactive mark needs
to be reactivated to operate on it, unless @code{mark-even-if-inactive} to be reactivated to operate on it, unless @code{mark-even-if-inactive}
is set. Secondly, @code{transient-mark-mode} also highlights the is set. Secondly, @code{transient-mark-mode} also highlights the
region when it is active, providing the same visual clue that you get region when it is active, providing the same visual clue that you get
in other programs. in other programs. This mode is turned on by default in latest
versions of Emacs.
In addition to seeing the highlighting, new Emacs users often expect In addition to seeing the highlighting, new Emacs users often expect
editing commands to replace the region when it is active. This behavior editing commands to replace the region when it is active. This behavior
@ -717,14 +733,16 @@ message as documented in Microsoft's API documentation.
@cindex delete Emacs directory @cindex delete Emacs directory
Emacs does not come with an uninstall program. No files are installed Emacs does not come with an uninstall program. No files are installed
outside of the Emacs base directory, so deleting that directory is outside of the directories you find in the binary zip archive, so
sufficient to clean away the files. If you ran @command{addpm}, deleting those directories is sufficient to clean away the files. If
you'll need to delete the Start Menu group too. The registry entries you ran @command{addpm}, you'll need to delete the Start Menu group
inserted by @command{addpm} will not cause any problems if you leave too. The registry entries inserted by @command{addpm} will not cause
them there, but for the sake of completeness, you can use @command{regedit} any problems if you leave them there, but for the sake of
to remove the keys under @code{HKEY_LOCAL_MACHINE} orx completeness, you can use @command{regedit} to remove the keys under
@code{HKEY_CURRENT_USER}: @code{SOFTWARE\GNU\Emacs}, and the key @code{HKEY_LOCAL_MACHINE} orx @code{HKEY_CURRENT_USER}:
@code{HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\emacs.exe} if it exists. @code{SOFTWARE\GNU\Emacs}, and the key
@code{HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App
Paths\emacs.exe} if it exists.
@node Does not run @node Does not run
@section When I run Emacs nothing happens @section When I run Emacs nothing happens
@ -751,9 +769,10 @@ been truncated to CONTRIBU or CONTRI~1, your distribution has been
corrupted while unpacking and Emacs will not start. corrupted while unpacking and Emacs will not start.
@end enumerate @end enumerate
If it is still not working, send mail to the list, describing what If it is still not working, send mail to the
you've done, and what you are seeing. (The more information you send @email{help-gnu-emacs@@gnu.org} mailing list, describing what you've
the more likely it is that you'll receive a helpful response.. done, and what you are seeing. (The more information you send the more
likely it is that you'll receive a helpful response.)
@node Virus @node Virus
@section Does Emacs contain a virus? @section Does Emacs contain a virus?
@ -880,7 +899,6 @@ The doc string contains a list of the system sounds you can use.
* Font names:: * Font names::
* Bold and italic:: * Bold and italic::
* Multilingual fonts:: * Multilingual fonts::
* BDF fonts::
* Font menu:: * Font menu::
* Line ends:: * Line ends::
@end menu @end menu
@ -910,9 +928,9 @@ an indication of whether the font is outline (.TTF, .ATM) or raster (.FON)
based when fonts are listed, which may let you differentiate between two based when fonts are listed, which may let you differentiate between two
fonts with the same name and different technologies. fonts with the same name and different technologies.
From Emacs 23, the preferred font name format will be moving to the simpler Starting with Emacs 23, the preferred font name format will be moving
and more flexible fontconfig format. XLFD names will continue to be to the simpler and more flexible fontconfig format. XLFD names will
supported for backward compatibility. continue to be supported for backward compatibility.
@example @example
XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1 XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1
@ -959,6 +977,9 @@ and manually set the font for italic, bold and bold-italic as follows:
(set-face-font 'bold-italic "-*-Courier New-bold-i-*-*-11-*-*-*-c-*-iso8859-1") (set-face-font 'bold-italic "-*-Courier New-bold-i-*-*-11-*-*-*-c-*-iso8859-1")
@end example @end example
The @code{w32-enable-synthesized-fonts} variable is obsolete starting
from Emacs 24.4, as Emacs no longer has this limitation.
@node Multilingual fonts @node Multilingual fonts
@section Multilingual font support @section Multilingual font support
@cindex multilingual display, fonts @cindex multilingual display, fonts
@ -985,11 +1006,8 @@ require the BDF fonts from the GNU intlfonts package.
For many languages, native truetype fonts are sufficient, and in Emacs For many languages, native truetype fonts are sufficient, and in Emacs
23 the need for BDF fonts will disappear for almost all languages. At 23 the need for BDF fonts will disappear for almost all languages. At
the time of writing, some Arabic characters in the HELLO file still do the time of writing, all supported characters are able to be displayed
not display with native fonts, because they are pre-composed characters with appropriate truetype or opentype fonts.
from MULE character sets rather than standard Unicode Arabic, but all
other characters are able to be displayed with appropriate truetype or
opentype fonts.
@node Non-latin display @node Non-latin display
@subsection How do I get Emacs to display non-latin characters? @subsection How do I get Emacs to display non-latin characters?
@ -1025,6 +1043,12 @@ new fontset with @code{create-fontset-from-ascii-font} or
chinese-big5-2:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5-*" t) chinese-big5-2:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5-*" t)
@end example @end example
Alternatively, you can augment the default fontset with information of
which fonts to use for certain ranges of characters or for specific
scripts/character sets. @xref{Modifying Fontsets,, Modifying
Fontsets, emacs, The GNU Emacs Manual}, for details and some useful
examples.
@node International fonts @node International fonts
@subsection Where can I find fonts for other languages? @subsection Where can I find fonts for other languages?
@cindex language support, finding fonts @cindex language support, finding fonts
@ -1037,10 +1061,10 @@ new fontset with @code{create-fontset-from-ascii-font} or
In addition to the wide range of fonts that come with the language In addition to the wide range of fonts that come with the language
support packages of various components of Windows itself, GNU/Linux support packages of various components of Windows itself, GNU/Linux
distributions these days come with a number of Free truetype fonts distributions these days come with a number of Free truetype fonts
that cover a wide range of languages. The GNU intlfonts source that cover a wide range of languages. The GNU Unifont project
distribution contains BDF fonts covering all of the languages that can contains glyphs for most of the Unicode codespace, and can be
be displayed by Emacs 22, and can be downloaded from downloaded from @uref{http://ftpmirror.gnu.org/unifont, ftp.gnu.org
@uref{http://ftpmirror.gnu.org/intlfonts, ftp.gnu.org mirrors}. mirrors}.
@node Third-party multibyte @node Third-party multibyte
@subsection How do I use third party programs to display multibyte characters? @subsection How do I use third party programs to display multibyte characters?
@ -1058,12 +1082,6 @@ for that language, but the third party software is intercepting it
and using a different font behind the scenes). and using a different font behind the scenes).
@xref{Non-latin display}. @xref{Non-latin display}.
In addition to defining a fontset with the expected font, you may also need
to disable unicode output with:
@example
(setq w32-enable-unicode-output nil)
@end example
@node Localized fonts @node Localized fonts
@subsection Can I use a font with a name in my language? @subsection Can I use a font with a name in my language?
@cindex fonts, localized font names @cindex fonts, localized font names
@ -1073,87 +1091,9 @@ Normally Emacs should initialize @code{locale-coding-system} appropriately
based on your locale, which will let Emacs use font names in your local based on your locale, which will let Emacs use font names in your local
language successfully. language successfully.
@node BDF fonts @c This feature disappeared in Emacs 23, but I'm keeping its
@section How do I use bdf fonts with Emacs? @c description here, since I think it was a mistake to remove it, and
@cindex BDF fonts, using @c resurrecting it doesn't sound too problematic.
@cindex GNU intlfonts, using
@cindex intlfonts, using
@vindex w32-bdf-filename-alist
@vindex bdf-directory-alist
@vindex font-encoding-alist
@findex w32-find-bdf-fonts
@findex set-frame-font
To use bdf fonts with Emacs, you need to tell Emacs where the fonts
are located, create fontsets for them, and then use them. We'll use
the 16 dot international fonts from @uref{http://ftpmirror.gnu.org/intlfonts,
ftp.gnu.org/gnu/intlfonts} as an
example put together by Jason Rumney.
Download @file{16dots.tar.gz} and unpack it; I'll assume that they are in
@file{c:\intlfonts}. Then set @code{w32-bdf-filename-alist} to the list of
fonts returned by using @code{w32-find-bdf-fonts} to enumerate all of
the font files. It is a good idea to set the variable
@code{bdf-directory-list} at the same time so @code{ps-print} knows where
to find the fonts:
@example
(setq bdf-directory-list
'("c:/intlfonts/Asian" "c:/intlfonts/Chinese"
"c:/intlfonts/Chinese-X" "c:/intlfonts/Ethiopic"
"c:/intlfonts/European" "c:/intlfonts/Japanese"
"c:/intlfonts/Japanese-X" "c:/intlfonts/Korean-X"
"c:/intlfonts/Misc/"))
(setq w32-bdf-filename-alist (w32-find-bdf-fonts bdf-directory-list))
@end example
Then create fontsets for the BDF fonts:
@example
(create-fontset-from-fontset-spec
"-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
@end example
Many of the international bdf fonts from gnu.org are type 0, and therefore
need to be added to font-encoding-alist:
@example
;; Need to add some fonts to font-encoding-alist since the bdf fonts
;; are type 0 not the default type 1.
(setq font-encoding-alist
(append '(("MuleTibetan-0" (tibetan . 0))
("GB2312" (chinese-gb2312 . 0))
("JISX0208" (japanese-jisx0208 . 0))
("JISX0212" (japanese-jisx0212 . 0))
("VISCII" (vietnamese-viscii-lower . 0))
("KSC5601" (korean-ksc5601 . 0))
("MuleArabic-0" (arabic-digit . 0))
("MuleArabic-1" (arabic-1-column . 0))
("MuleArabic-2" (arabic-2-column . 0))) font-encoding-alist))
@end example
You can now use the Emacs font menu (@pxref{Fonts and text
translation,,How can I have Emacs use a font menu like on X?}) to
select the @emph{bdf: 16-dot medium} fontset, or you can select it by
setting the default font:
@example
(set-frame-font "fontset-bdf")
@end example
Try loading the file @file{etc/HELLO}, and you should be able to see the
various international fonts displayed (except for Hindi, which is not
included in the 16-dot font distribution).
@node Font menu @node Font menu
@section How can I have Emacs use a font menu like on X? @section How can I have Emacs use a font menu like on X?
@cindex fonts, displaying a menu @cindex fonts, displaying a menu
@ -1171,6 +1111,8 @@ Place the following in your init file:
* Add fonts to menu:: * Add fonts to menu::
@end menu @end menu
@c This variable still exists, but will have no effect until
@c w32-use-w32-font-dialog support is resurrected, see above.
@node Add fonts to menu @node Add fonts to menu
@subsection How can I add my font to the font menu? @subsection How can I add my font to the font menu?
@cindex font menu, adding fonts @cindex font menu, adding fonts
@ -1204,7 +1146,6 @@ this collection of email messages} on the topic.
@menu @menu
* Automatic line ends:: * Automatic line ends::
* Line ends by filename::
* Line ends by file system:: * Line ends by file system::
@end menu @end menu
@ -1220,19 +1161,6 @@ file in Unix (LF) mode with the Ctrl-M characters displayed as @samp{^M}.
It does this to be safe, as no data loss will occur if the file is really It does this to be safe, as no data loss will occur if the file is really
binary and the Ctrl-M characters are significant. binary and the Ctrl-M characters are significant.
@node Line ends by filename
@subsection CR/LF translation by file extension
@cindex line ends, determining by filename
@cindex binary files, determining by file name
@vindex file-name-buffer-file-type-alist
The variable @code{file-name-buffer-file-type-alist} holds a list of
filename patterns and their associated type; binary or text. Files marked
as binary will not have line-end detection performed on them, and instead
will always be displayed as is. With auto-detection in recent versions of
Emacs, this is seldom useful for existing files, but can still be used
to influence the choice of line ends for newly created files.
@node Line ends by file system @node Line ends by file system
@subsection CR/LF translation by file system @subsection CR/LF translation by file system
@cindex line ends, determining by filesystem @cindex line ends, determining by filesystem
@ -1260,8 +1188,9 @@ MS Windows, but this has still been insufficient to keep up with
changes in printing technology from text and postscript based printers changes in printing technology from text and postscript based printers
connected via ports that can be accessed directly, to graphical connected via ports that can be accessed directly, to graphical
printers that are only accessible via USB. For details, see printers that are only accessible via USB. For details, see
@uref{http://www.emacswiki.org/cgi-bin/wiki/PrintingFromEmacs, Emacs @uref{http://www.emacswiki.org/emacs/PrintingFromEmacs, Emacs
Wiki}. Wiki}, @uref{http://www.emacswiki.org/emacs/PrintWithWebBrowser}, and
@uref{http://www.emacswiki.org/emacs/PrintFromWindowsExplorer}.
@c ------------------------------------------------------------ @c ------------------------------------------------------------
@node Sub-processes @node Sub-processes
@ -1293,9 +1222,7 @@ Wiki}.
The quoting rules for native Windows shells and Cygwin shells have The quoting rules for native Windows shells and Cygwin shells have
some subtle differences. When Emacs spawns subprocesses, it tries to some subtle differences. When Emacs spawns subprocesses, it tries to
determine whether the process is a Cygwin program and changes its determine whether the process is a Cygwin program and changes its
quoting mechanism appropriately. See this quoting mechanism appropriately.
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/shell-quoting,
previous discussion} for details.
@node Subprocess hang @node Subprocess hang
@section Programs reading input hang @section Programs reading input hang
@ -1357,9 +1284,11 @@ you can use @code{setbuf} and @code{setvbuf} to manipulate
the buffering semantics. the buffering semantics.
Some programs handle this by having an explicit flag to control their Some programs handle this by having an explicit flag to control their
buffering behavior, typically @option{-i} for interactive. Other buffering behavior, typically @option{-i} for interactive, or by a
programs manage to detect that they are running under Emacs, by special environment variable. Other programs manage to detect that
using @samp{getenv("emacs")} internally. they are running under Emacs, by using @samp{getenv("emacs")}
internally. Look in the program's documentation for the way around
this issue.
@menu @menu
* Perl script buffering:: * Perl script buffering::
@ -1428,6 +1357,7 @@ this discussion} for more details.
@vindex explicit-shell-file-name @vindex explicit-shell-file-name
You can start an interactive shell in Emacs by typing @kbd{M-x shell}. You can start an interactive shell in Emacs by typing @kbd{M-x shell}.
By default, this will start the standard Windows shell @file{cmd.exe}.
Emacs uses the @env{SHELL} environment variable to determine which Emacs uses the @env{SHELL} environment variable to determine which
program to use as the shell. To instruct Emacs to use a non-default program to use as the shell. To instruct Emacs to use a non-default
shell, you can either set this environment variable, or customize shell, you can either set this environment variable, or customize
@ -1467,11 +1397,6 @@ default shell in Emacs, you can place the following in your init file:
(add-hook 'shell-mode-hook 'my-shell-setup) (add-hook 'shell-mode-hook 'my-shell-setup)
@end example @end example
If you find that you are having trouble with Emacs tracking drive
changes with bash, see Mike Fabian's
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/drive-tracking,
note}.
WARNING: Some versions of bash set and use the environment variable WARNING: Some versions of bash set and use the environment variable
PID. For some as yet unknown reason, if @env{PID} is set and Emacs PID. For some as yet unknown reason, if @env{PID} is set and Emacs
passes it on to bash subshells, bash dies (Emacs can inherit the passes it on to bash subshells, bash dies (Emacs can inherit the
@ -1489,7 +1414,7 @@ continue to use bash as your subshell:
@cindex cygwin mount points, using within Emacs @cindex cygwin mount points, using within Emacs
The package The package
@uref{http://www.emacswiki.org/cgi-bin/wiki/cygwin-mount.el, @uref{http://www.emacswiki.org/emacs/cygwin-mount.el,
cygwin-mount.el} teaches Emacs about Cygwin mount points. cygwin-mount.el} teaches Emacs about Cygwin mount points.
@node Dired ls @node Dired ls
@ -1849,11 +1774,15 @@ your type (@code{flyspell}). Both packages depend on a copy of
@command{ispell} 3.2 or a compatible spell-checking program. @command{ispell} 3.2 or a compatible spell-checking program.
GNU Aspell is a popular choice these days, Windows installers are GNU Aspell is a popular choice these days, Windows installers are
available from the @uref{http://aspell.net/win32/, official site}. available from the @uref{http://aspell.net/win32/, official site}.
Another possibility is Hunspell, which is available from
@uref{https://sourceforge.net/projects/ezwinports/files/?source=navbar,
the ezwinports site}.
Once installed, you will need to configure @code{ispell-program-name} Once installed, you will need to configure @code{ispell-program-name}
to tell ispell and flyspell to use @command{aspell} as a replacement for to tell ispell and flyspell to use @command{aspell} or
ispell. You can include the full path to the @file{aspell} binary, which @command{hunspell} as a replacement for ispell. You can include the
means you do not need to add its installation directory to the @env{PATH}. full path to the @file{aspell}/@file{hunspell} binary, which means you
do not need to add its installation directory to the @env{PATH}.
@node Encryption @node Encryption
@section Emacs and encryption @section Emacs and encryption
@ -1942,6 +1871,13 @@ of grep is to use @samp{findstr /n /r}.
@node Developing with Emacs @node Developing with Emacs
@chapter Developing with Emacs @chapter Developing with Emacs
We recommend using the GNU Compiler Collection for developing C/C++
code from Emacs. The MinGW development toolchain provides Windows
ports of GCC and other compilers.
The rest of this chapter describes other alternatives which you may
need to use.
@menu @menu
* MSVC:: * MSVC::
* Borland C++ Builder:: * Borland C++ Builder::
@ -2178,6 +2114,7 @@ suggestions} for improving the interaction of perldb and Emacs.
@menu @menu
* Cygwin:: * Cygwin::
* MinGW:: * MinGW::
* EZWinPorts::
* UWIN:: * UWIN::
* GnuWin32:: * GnuWin32::
* GTK:: * GTK::
@ -2230,6 +2167,17 @@ filesystem mapping to appear more POSIX like to the scripts that it
runs. This is intended to complement the MinGW tools to make it easier runs. This is intended to complement the MinGW tools to make it easier
to port software to Windows. to port software to Windows.
@node EZWinPorts
@section EZWinPorts
@cindex ezwinports
The @uref{https://sourceforge.net/projects/ezwinports/, EZWinPorts
project} provides many useful ports of recent versions of GNU and Unix
software. This includes all the optional libraries used by Emacs
(image libraries, libxml2, GnuTLS), RCS, Terxinfo, a clone of
@command{man} command, Grep, xz, bzip2, bsdtar, ID Utils, Findutils,
Hunspell, Gawk, GNU Make, Groff, GDB.
@node UWIN @node UWIN
@section UWIN @section UWIN
@cindex uwin environment @cindex uwin environment
@ -2251,8 +2199,8 @@ is @command{ksh}, the Korn shell.
@uref{http://gnuwin32.sourceforge.net/} @uref{http://gnuwin32.sourceforge.net/}
GnuWin32 provides precompiled native Windows ports of a wide selection GnuWin32 provides precompiled native Windows ports of a wide selection
of Free software and libraries. Tools available here that are useful of Free software and libraries. Unfortunately, the ports are
for Emacs include: outdated. Tools available here that are useful for Emacs include:
@itemize @itemize
@item Arc - used by @code{archive-mode} to edit .arc files. @item Arc - used by @code{archive-mode} to edit .arc files.
@ -2302,7 +2250,8 @@ Man pages for Emacs and other ported programs that you have can be
read using Emacs' built-in manual reader @code{woman}. This read using Emacs' built-in manual reader @code{woman}. This
requires no external programs, but if you do have a port of requires no external programs, but if you do have a port of
@command{man}, there is also an Emacs wrapper @code{man} that @command{man}, there is also an Emacs wrapper @code{man} that
which may be slightly faster. which may be slightly faster. A Windows version of @command{man} is
available from the EZWinPorts site (@pxref{EZWinPorts}).
@c ------------------------------------------------------------ @c ------------------------------------------------------------
@node Further information @node Further information