@c This is part of the Emacs manual.
-@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2012
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
+@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Microsoft Windows, Manifesto, Mac OS / GNUstep, Top
+@node Microsoft Windows
@appendix Emacs and Microsoft Windows/MS-DOS
@cindex Microsoft Windows
@cindex MS-Windows, Emacs peculiarities
* Windows Fonts:: Specifying fonts on MS-Windows.
* Windows Misc:: Miscellaneous Windows features.
@ifnottex
-* MS-DOS:: Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
+* MS-DOS:: Using Emacs on MS-DOS.
@end ifnottex
@end menu
the program that invoked @command{emacsclient}.
@end enumerate
+@cindex emacsclient, on MS-Windows
+Note that, due to limitations of MS-Windows, Emacs cannot have both
+GUI and text-mode frames in the same session. It also cannot open
+text-mode frames on more than a single @dfn{Command Prompt} window,
+because each Windows program can have only one console at any given
+time. For these reasons, if you invoke @command{emacsclient} with the
+@option{-c} option, and the Emacs server runs in a text-mode session,
+Emacs will always create a new text-mode frame in the same
+@dfn{Command Prompt} window where it was started; a GUI frame will be
+created only if the server runs in a GUI session. Similarly, if you
+invoke @command{emacsclient} with the @option{-t} option, Emacs will
+create a GUI frame if the server runs in a GUI session, or a text-mode
+frame when the session runs in text mode in a @dfn{Command Prompt}
+window. @xref{emacsclient Options}.
+
@node Text and Binary
@section Text Files and Binary Files
@cindex text and binary files on MS-DOS/MS-Windows
command. For example, to save a buffer with Unix EOL format, type
@kbd{C-x @key{RET} f unix @key{RET} C-x C-s}. If you visit a file
with DOS EOL conversion, then save it with Unix EOL format, that
-effectively converts the file to Unix EOL style, like @code{dos2unix}.
+effectively converts the file to Unix EOL style, like the
+@code{dos2unix} program.
@cindex untranslated file system
@findex add-untranslated-filesystem
Emacs to create new files with the Unix-style convention of using
newline at the end of a line. @xref{Coding Systems}.
-@vindex file-name-buffer-file-type-alist
-@cindex binary files, on MS-DOS/MS-Windows
- Some kinds of files should not be converted at all, because their
-contents are not really text. Therefore, Emacs on MS-Windows distinguishes
-certain files as @dfn{binary files}. (This distinction is not part of
-MS-Windows; it is made by Emacs only.) Binary files include executable
-programs, compressed archives, etc. Emacs uses the file name to decide
-whether to treat a file as binary: the variable
-@code{file-name-buffer-file-type-alist} defines the file-name patterns
-that indicate binary files. If a file name matches one of the patterns
-for binary files (those whose associations are of the type
-@code{(@var{pattern} . t)}, Emacs reads and writes that file using the
-@code{no-conversion} coding system (@pxref{Coding Systems}) which turns
-off @emph{all} coding-system conversions, not only the EOL conversion.
-@code{file-name-buffer-file-type-alist} also includes file-name patterns
-for files which are known to be Windows-style text files with
-carriage-return linefeed EOL format, such as @file{CONFIG.SYS}; Emacs
-always writes those files with Windows-style EOLs.
-
- If a file which belongs to an untranslated file system matches one of
-the file-name patterns in @code{file-name-buffer-file-type-alist}, the
-EOL conversion is determined by @code{file-name-buffer-file-type-alist}.
-
@node Windows Files
@section File Names on MS-Windows
@cindex file names on MS-Windows
@cindex Dired, and MS-Windows/MS-DOS
@cindex @code{ls} emulation
- Dired normally uses the external program @code{ls} (or its close
-work-alike) to produce the directory listing displayed in Dired
+ Dired normally uses the external program @code{ls}
+to produce the directory listing displayed in Dired
buffers (@pxref{Dired}). However, MS-Windows and MS-DOS systems don't
come with such a program, although several ports of @sc{gnu} @code{ls}
are available. Therefore, Emacs on those systems @emph{emulates}
The @code{ls} emulation supports many of the @code{ls} switches, but
it doesn't support all of them. Here's the list of the switches it
does support: @option{-A}, @option{-a}, @option{-B}, @option{-C},
-@option{-c}, @option{-i}, @option{-G}, @option{-g}, @option{-R},
-@option{-r}, @option{-S}, @option{-s}, @option{-t}, @option{-U},
+@option{-c}, @option{-G}, @option{-g}, @option{-h}, @option{-i}, @option{-n},
+@option{-R}, @option{-r}, @option{-S}, @option{-s}, @option{-t}, @option{-U},
@option{-u}, and @option{-X}. The @option{-F} switch is partially
supported (it appends the character that classifies the file, but does
not prevent symlink following).
data; this is only useful on NTFS volumes. @code{uid} means display
the numerical identifier of the user who owns the file. @code{gid}
means display the numerical identifier of the file owner's group. The
-default value is @code{(links uid gid)} i.e.@: all the 3 optional
+default value is @code{(links uid gid)} i.e., all the 3 optional
attributes are displayed.
@vindex ls-lisp-emulation
Emulate Unix systems. Like @code{GNU}, but sets
@code{ls-lisp-verbosity} to @code{(links uid)}.
@item MacOS
-Emulate MacOS. Sets @code{ls-lisp-ignore-case} to @code{t}, and
+Emulate MacOS@. Sets @code{ls-lisp-ignore-case} to @code{t}, and
@code{ls-lisp-dirs-first} and @code{ls-lisp-verbosity} to @code{nil}.
@item MS-Windows
Emulate MS-Windows. Sets @code{ls-lisp-ignore-case} and
@code{ls-lisp-dirs-first} to @code{t}, and @code{ls-lisp-verbosity} to
-@code{(links)} on Windows NT/2K/XP/2K3 and to @code{nil} on Windows 9X.
+@code{(links)} on Windows NT/2K/XP/2K3 and to @code{nil} on Windows 9X@.
Note that the default emulation is @emph{not} @code{MS-Windows}, even
on Windows, since many users of Emacs on those platforms prefer the
@sc{gnu} defaults.
@section HOME and Startup Directories on MS-Windows
@cindex @code{HOME} directory on MS-Windows
- The Windows equivalent of the @code{HOME} directory is the
-@dfn{user-specific application data directory}. The actual location
-depends on the Windows version; typical values are @file{C:\Documents
-and Settings\@var{username}\Application Data} on Windows 2K/XP/2K3,
-@file{C:\Users\@var{username}\AppData\Roaming} on Windows Vista/7/2K8,
-and either @file{C:\WINDOWS\Application Data} or
-@file{C:\WINDOWS\Profiles\@var{username}\Application Data} on the
-older Windows 9X/ME systems. If this directory does not exist or
-cannot be accessed, Emacs falls back to @file{C:\} as the default
-value of @code{HOME}.
+ The Windows equivalent of @code{HOME} is the @dfn{user-specific
+application data directory}. The actual location depends on the
+Windows version; typical values are @file{C:\Documents and
+Settings\@var{username}\Application Data} on Windows 2000/XP/2K3,
+@file{C:\Users\@var{username}\AppData\Roaming} on Windows
+Vista/7/2008, and either @file{C:\WINDOWS\Application Data} or
+@file{C:\WINDOWS\Profiles\@var{username}\Application Data} on Windows
+9X/ME@. If this directory does not exist or cannot be accessed, Emacs
+falls back to @file{C:\} as the default value of @code{HOME}.
You can override this default value of @code{HOME} by explicitly
setting the environment variable @env{HOME} to point to any directory
on your system. @env{HOME} can be set either from the command shell
-prompt or from the @samp{My Computer}s @samp{Properties} dialog.
-@code{HOME} can also be set in the system registry, for details see
-@ref{MS-Windows Registry}.
+prompt or from @samp{Properties} dialog of @samp{My Computer}.
+@code{HOME} can also be set in the system registry,
+@pxref{MS-Windows Registry}.
For compatibility with older versions of Emacs@footnote{
Older versions of Emacs didn't check the application data directory.
Whatever the final place is, Emacs sets the internal value of the
@env{HOME} environment variable to point to it, and it will use that
location for other files and directories it normally looks for or
-creates in the user's home directory.
+creates in your home directory.
- You can always find out where Emacs thinks is your home directory's
+ You can always find out what Emacs thinks is your home directory's
location by typing @kbd{C-x d ~/ @key{RET}}. This should present the
list of files in the home directory, and show its full name on the
first line. Likewise, to visit your init file, type @kbd{C-x C-f
You can redefine some of them with meanings more like the MS-Windows
meanings by enabling CUA Mode (@pxref{CUA Bindings}).
-@kindex F10 @r{(MS-Windows)}
-@cindex menu bar access using keyboard @r{(MS-Windows)}
- The @key{F10} key on Windows activates the menu bar in a way that
-makes it possible to use the menus without a mouse. In this mode, the
-arrow keys traverse the menus, @key{RET} selects a highlighted menu
-item, and @key{ESC} closes the menu.
-
@iftex
@inforef{Windows Keyboard, , emacs}, for information about additional
Windows-specific variables in this category.
@findex w32-register-hot-key
@findex w32-unregister-hot-key
MS-Windows reserves certain key combinations, such as
-@kbd{Alt-@key{TAB}}, for its own use. These key combinations are
+@kbd{@key{Alt}-@key{TAB}}, for its own use. These key combinations are
intercepted by the system before Emacs can see them. You can use the
@code{w32-register-hot-key} function to allow a key sequence to be
-seen by Emacs instead of being grabbed by Windows. This functions
+seen by Emacs instead of being grabbed by Windows. This function
registers a key sequence as a @dfn{hot key}, overriding the special
meaning of that key sequence for Windows. (MS-Windows is told that
the key sequence is a hot key only when one of the Emacs windows has
The argument to @code{w32-register-hot-key} must be a single key,
with or without modifiers, in vector form that would be acceptable to
-@code{define-key}. The meta modifier is interpreted as the @key{ALT}
+@code{define-key}. The meta modifier is interpreted as the @key{Alt}
key if @code{w32-alt-is-meta} is @code{t} (the default), and the hyper
modifier is always interpreted as the Windows key (usually labeled
with @key{start} and the Windows logo). If the function succeeds in
otherwise it returns @code{nil}.
@kindex M-TAB@r{, (MS-Windows)}
-@cindex @kbd{M-@key{TAB}} vs @kbd{Alt-@key{TAB}} (MS-Windows)
-@cindex @kbd{Alt-@key{TAB}} vs @kbd{M-@key{TAB}} (MS-Windows)
+@cindex @kbd{M-@key{TAB}} vs @kbd{@key{Alt}-@key{TAB}} (MS-Windows)
+@cindex @kbd{@key{Alt}-@key{TAB}} vs @kbd{M-@key{TAB}} (MS-Windows)
For example, @code{(w32-register-hot-key [M-tab])} lets you use
-@kbd{M-TAB} normally in Emacs, for instance, to complete the word or
+@kbd{M-@key{TAB}} normally in Emacs; for instance, to complete the word or
symbol at point at top level, or to complete the current search string
against previously sought strings during incremental search.
@cindex Windows system menu
@cindex @code{Alt} key invokes menu (Windows)
Emacs compiled as a native Windows application normally turns off
-the Windows feature that tapping the @key{ALT} key invokes the Windows
-menu. The reason is that the @key{ALT} serves as @key{META} in Emacs.
+the Windows feature that tapping the @key{Alt} key invokes the Windows
+menu. The reason is that the @key{Alt} serves as @key{META} in Emacs.
When using Emacs, users often press the @key{META} key temporarily and
then change their minds; if this has the effect of bringing up the
Windows menu, it alters the meaning of subsequent commands. Many
users find this frustrating.
- You can re-enable Windows' default handling of tapping the @key{ALT}
+ You can re-enable Windows's default handling of tapping the @key{Alt}
key by setting @code{w32-pass-alt-to-system} to a non-@code{nil}
value.
its normal effect: for example, @kbd{@key{Lwindow}} opens the
@code{Start} menu, etc.@footnote{
Some combinations of the ``Windows'' keys with other keys are caught
-by Windows at low level in a way that Emacs currently cannot prevent.
+by Windows at a low level in a way that Emacs currently cannot prevent.
For example, @kbd{@key{Lwindow} r} always pops up the Windows
@samp{Run} dialog. Customizing the value of
@code{w32-phantom-key-code} might help in some cases, though.}
pressed together, is recognized as the @key{AltGr} key. The default
is @code{t}, which means these keys produce @code{AltGr}; setting it
to @code{nil} causes @key{AltGr} or the equivalent key combination to
-be interpreted as the combination of @key{CTRL} and @key{META}
+be interpreted as the combination of @key{Ctrl} and @key{META}
modifiers.
@end ifnottex
@cindex mouse, and MS-Windows
This section describes the Windows-specific variables related to
-mouse.
+the mouse.
@vindex w32-mouse-button-tolerance
@cindex simulation of middle mouse button
subprocess should continue normally. However, if the second subprocess
is synchronous, Emacs itself will be hung until the first subprocess
finishes. If it will not finish without user input, then you have no
-choice but to reboot if you are running on Windows 9X. If you are
+choice but to reboot if you are running on Windows 9X@. If you are
running on Windows NT/2K/XP, you can use a process viewer application to kill
the appropriate instance of NTVDM instead (this will terminate both DOS
subprocesses).
If you have to reboot Windows 9X in this situation, do not use the
@code{Shutdown} command on the @code{Start} menu; that usually hangs the
-system. Instead, type @kbd{CTL-ALT-@key{DEL}} and then choose
+system. Instead, type @kbd{@key{Ctrl}-@key{Alt}-@key{DEL}} and then choose
@code{Shutdown}. That usually works, although it may take a few minutes
to do its job.
@vindex w32-quote-process-args
The variable @code{w32-quote-process-args} controls how Emacs quotes
the process arguments. Non-@code{nil} means quote with the @code{"}
-character. If the value is a character, use that character to escape
-any quote characters that appear; otherwise chose a suitable escape
+character. If the value is a character, Emacs uses that character to escape
+any quote characters that appear; otherwise it chooses a suitable escape
character based on the type of the program.
@ifnottex
customized commands that run MS-Windows applications registered to
handle a certain standard Windows operation for a specific type of
document or file. This function is a wrapper around the Windows
-@code{ShellExecute} API. See the MS-Windows API documentation for
+@code{ShellExecute} API@. See the MS-Windows API documentation for
more details.
@end ifnottex
variables control printing on all systems, but in some cases they have
different default values on MS-DOS and MS-Windows.
- Emacs on Windows automatically determines your default printer and
-sets the variable @code{printer-name} to that printer's name. But in
-some rare cases this can fail, or you may wish to use a different
+ Emacs on MS Windows attempts to determine your default printer
+automatically (using the function @code{default-printer-name}).
+But in some rare cases this can fail, or you may wish to use a different
printer from within Emacs. The rest of this section explains how to
tell Emacs which printer to use.
If you want to use your local printer, then set the Lisp variable
@code{lpr-command} to @code{""} (its default value on Windows) and
@code{printer-name} to the name of the printer port---for example,
-@code{"PRN"}, the usual local printer port or @code{"LPT2"}, or
+@code{"PRN"}, the usual local printer port, or @code{"LPT2"}, or
@code{"COM1"} for a serial printer. You can also set
@code{printer-name} to a file name, in which case ``printed'' output
is actually appended to that file. If you set @code{printer-name} to
obtain a list of servers, and @samp{net view @var{server-name}} to see
the names of printers (and directories) shared by that server.
Alternatively, click the @samp{Network Neighborhood} icon on your
-desktop, and look for machines which share their printers via the
+desktop, and look for machines that share their printers via the
network.
@cindex @samp{net use}, and printing on MS-Windows
Finally, if you do have an @code{lpr} work-alike, you can set the
variable @code{lpr-command} to @code{"lpr"}. Then Emacs will use
@code{lpr} for printing, as on other systems. (If the name of the
-program isn't @code{lpr}, set @code{lpr-command} to specify where to
-find it.) The variable @code{lpr-switches} has its standard meaning
+program isn't @code{lpr}, set @code{lpr-command} to the appropriate value.)
+The variable @code{lpr-switches} has its standard meaning
when @code{lpr-command} is not @code{""}. If the variable
@code{printer-name} has a string value, it is used as the value for the
@code{-P} option to @code{lpr}, as on Unix.
@cindex Ghostscript, use for PostScript printing
The default value of the variable @code{ps-lpr-command} is @code{""},
which causes PostScript output to be sent to the printer port specified
-by @code{ps-printer-name}, but @code{ps-lpr-command} can also be set to
+by @code{ps-printer-name}; but @code{ps-lpr-command} can also be set to
the name of a program which will accept PostScript files. Thus, if you
have a non-PostScript printer, you can set this variable to the name of
a PostScript interpreter program (such as Ghostscript). Any switches
determines whether to make the system caret visible. The default when
no screen reader software is in use is @code{nil}, which means Emacs
draws its own cursor to indicate the position of point. A
-non-@code{nil} value means Emacs will indicate point location by the
+non-@code{nil} value means Emacs will indicate point location with the
system caret; this facilitates use of screen reader software, and is
the default when such software is detected when running Emacs.
When this variable is non-@code{nil}, other variables affecting the