# HG changeset patch # User Karl Berry # Date 1144622434 0 # Node ID 601830ae280ce236182703f3e1344097879314eb # Parent 58d60e878200239fccecf60406f3d7cbc0b78717 move MS-DOS material to emacs-xtra.texi diff -r 58d60e878200 -r 601830ae280c man/ChangeLog --- a/man/ChangeLog Sun Apr 09 19:56:27 2006 +0000 +++ b/man/ChangeLog Sun Apr 09 22:40:34 2006 +0000 @@ -7,6 +7,12 @@ 2006-04-09 Karl Berry + * msdog.texi, emacs-xtra.texi: move all the MS-DOS material to + emacs-xtra.texi, leaving only MS Windows information. + * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi, + msdog.texi, mule.texi, trouble.texi: change cross-references and + node names. + * emacs.texi: move @summarycontents and @contents to the beginning of the file. diff -r 58d60e878200 -r 601830ae280c man/building.texi --- a/man/building.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/building.texi Sun Apr 09 22:40:34 2006 +0000 @@ -323,7 +323,7 @@ subprocesses; to work around this lack, @kbd{M-x compile} runs the compilation command synchronously on MS-DOS. As a consequence, you must wait until the command finishes before you can do anything else in -Emacs. @xref{MS-DOS}. +Emacs. @xref{MS-DOS,,,emacs-xtra,Specialized Emacs Features}. @node Grep Searching @section Searching with Grep under Emacs diff -r 58d60e878200 -r 601830ae280c man/emacs-xtra.texi --- a/man/emacs-xtra.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/emacs-xtra.texi Sun Apr 09 22:40:34 2006 +0000 @@ -64,6 +64,7 @@ * Picture Mode:: Editing pictures made up of characters using the quarter-plane screen model. * Fortran:: Fortran mode and its special features. +* MS-DOG:: * Index:: @end menu @@ -2406,6 +2407,687 @@ Type @samp{;?} or @samp{;C-h} to display a list of all the built-in Fortran abbrevs and what they stand for. + +@node MS-DOG +@chapter Emacs and MS-DOS +@cindex MS-DOG +@cindex MS-DOS peculiarities + + This section briefly describes the peculiarities of using Emacs on +the MS-DOS ``operating system'' (also known as ``MS-DOG''). +Information about Emacs and Microsoft's current operating system +Windows (also known as ``Losedows) is in the main Emacs manual +(@pxref{Emacs and Microsoft Systems,,, emacs, the Emacs Manual}). + + If you build Emacs for MS-DOS, the binary will also run on Windows +3.X, Windows NT, Windows 9X/ME, Windows 2000, or OS/2 as a DOS +application; all of this chapter applies for all of those systems, if +you use an Emacs that was built for MS-DOS. + + @xref{Text and Binary,,,emacs, the Emacs Manual}, for information +about Emacs' special handling of text files under MS-DOS (and +Windows). + +@menu +* Keyboard: MS-DOS Keyboard. Keyboard conventions on MS-DOS. +* Mouse: MS-DOS Mouse. Mouse conventions on MS-DOS. +* Display: MS-DOS Display. Fonts, frames and display size on MS-DOS. +* Files: MS-DOS File Names. File name conventions on MS-DOS. +* Printing: MS-DOS Printing. How to specify the printer on MS-DOS. +* I18N: MS-DOS and MULE. Support for internationalization on MS-DOS. +* Processes: MS-DOS Processes. Running subprocesses on MS-DOS. +@end menu + +@node MS-DOS Keyboard +@section Keyboard Usage on MS-DOS + +@kindex DEL @r{(MS-DOS)} +@kindex BS @r{(MS-DOS)} + The key that is called @key{DEL} in Emacs (because that's how it is +designated on most workstations) is known as @key{BS} (backspace) on a +PC. That is why the PC-specific terminal initialization remaps the +@key{BS} key to act as @key{DEL}; the @key{DELETE} key is remapped to act +as @kbd{C-d} for the same reasons. + +@kindex C-g @r{(MS-DOS)} +@kindex C-BREAK @r{(MS-DOS)} +@cindex quitting on MS-DOS + Emacs built for MS-DOS recognizes @kbd{C-@key{BREAK}} as a quit +character, just like @kbd{C-g}. This is because Emacs cannot detect +that you have typed @kbd{C-g} until it is ready for more input. As a +consequence, you cannot use @kbd{C-g} to stop a running command +(@pxref{Quitting,,,emacs, the Emacs Manual}). By contrast, +@kbd{C-@key{BREAK}} @emph{is} detected as soon as you type it (as +@kbd{C-g} is on other systems), so it can be used to stop a running +command and for emergency escape (@pxref{Emergency Escape,,,emacs, the +Emacs Manual}). + +@cindex Meta (under MS-DOS) +@cindex Hyper (under MS-DOS) +@cindex Super (under MS-DOS) +@vindex dos-super-key +@vindex dos-hyper-key + The PC keyboard maps use the left @key{ALT} key as the @key{META} key. +You have two choices for emulating the @key{SUPER} and @key{HYPER} keys: +choose either the right @key{CTRL} key or the right @key{ALT} key by +setting the variables @code{dos-hyper-key} and @code{dos-super-key} to 1 +or 2 respectively. If neither @code{dos-super-key} nor +@code{dos-hyper-key} is 1, then by default the right @key{ALT} key is +also mapped to the @key{META} key. However, if the MS-DOS international +keyboard support program @file{KEYB.COM} is installed, Emacs will +@emph{not} map the right @key{ALT} to @key{META}, since it is used for +accessing characters like @kbd{~} and @kbd{@@} on non-US keyboard +layouts; in this case, you may only use the left @key{ALT} as @key{META} +key. + +@kindex C-j @r{(MS-DOS)} +@vindex dos-keypad-mode + The variable @code{dos-keypad-mode} is a flag variable that controls +what key codes are returned by keys in the numeric keypad. You can also +define the keypad @key{ENTER} key to act like @kbd{C-j}, by putting the +following line into your @file{_emacs} file: + +@smallexample +;; @r{Make the @key{ENTER} key from the numeric keypad act as @kbd{C-j}.} +(define-key function-key-map [kp-enter] [?\C-j]) +@end smallexample + +@node MS-DOS Mouse +@section Mouse Usage on MS-DOS + +@cindex mouse support under MS-DOS + Emacs on MS-DOS supports a mouse (on the default terminal only). +The mouse commands work as documented, including those that use menus +and the menu bar (@pxref{Menu Bar,,,emacs, the Emacs Manual}). Scroll +bars don't work in MS-DOS Emacs. PC mice usually have only two +buttons; these act as @kbd{Mouse-1} and @kbd{Mouse-2}, but if you +press both of them together, that has the effect of @kbd{Mouse-3}. If +the mouse does have 3 buttons, Emacs detects that at startup, and all +the 3 buttons function normally, as on X. + + Help strings for menu-bar and pop-up menus are displayed in the echo +area when the mouse pointer moves across the menu items. Highlighting +of mouse-sensitive text (@pxref{Mouse References,,,emacs, the Emacs +Manual}) is also supported. + +@cindex mouse, set number of buttons +@findex msdos-set-mouse-buttons + Some versions of mouse drivers don't report the number of mouse +buttons correctly. For example, mice with a wheel report that they +have 3 buttons, but only 2 of them are passed to Emacs; the clicks on +the wheel, which serves as the middle button, are not passed. In +these cases, you can use the @kbd{M-x msdos-set-mouse-buttons} command +to tell Emacs how many mouse buttons to expect. You could make such a +setting permanent by adding this fragment to your @file{_emacs} init +file: + +@example +;; @r{Treat the mouse like a 2-button mouse.} +(msdos-set-mouse-buttons 2) +@end example + +@cindex Windows clipboard support + Emacs built for MS-DOS supports clipboard operations when it runs on +Windows. Commands that put text on the kill ring, or yank text from +the ring, check the Windows clipboard first, just as Emacs does on the +X Window System (@pxref{Mouse Commands,,,emacs, the Emacs Manual}). +Only the primary selection and the cut buffer are supported by MS-DOS +Emacs on Windows; the secondary selection always appears as empty. + + Due to the way clipboard access is implemented by Windows, the +length of text you can put into the clipboard is limited by the amount +of free DOS memory that is available to Emacs. Usually, up to 620KB of +text can be put into the clipboard, but this limit depends on the system +configuration and is lower if you run Emacs as a subprocess of +another program. If the killed text does not fit, Emacs outputs a +message saying so, and does not put the text into the clipboard. + + Null characters also cannot be put into the Windows clipboard. If the +killed text includes null characters, Emacs does not put such text into +the clipboard, and displays in the echo area a message to that effect. + +@vindex dos-display-scancodes + The variable @code{dos-display-scancodes}, when non-@code{nil}, +directs Emacs to display the @acronym{ASCII} value and the keyboard scan code of +each keystroke; this feature serves as a complement to the +@code{view-lossage} command, for debugging. + +@node MS-DOS Display +@section Display on MS-DOS +@cindex faces under MS-DOS +@cindex fonts, emulating under MS-DOS + + Display on MS-DOS cannot use font variants, like bold or italic, but +it does support multiple faces, each of which can specify a foreground +and a background color. Therefore, you can get the full functionality +of Emacs packages that use fonts (such as @code{font-lock}, Enriched +Text mode, and others) by defining the relevant faces to use different +colors. Use the @code{list-colors-display} command (@pxref{Frame +Parameters,,,emacs, the Emacs Manual}) and the +@code{list-faces-display} command (@pxref{Faces,,,emacs, the Emacs +Manual}) to see what colors and faces are available and what they look +like. + + @xref{MS-DOS and MULE}, later in this chapter, for information on +how Emacs displays glyphs and characters that aren't supported by the +native font built into the DOS display. + +@cindex cursor shape on MS-DOS + When Emacs starts, it changes the cursor shape to a solid box. This +is for compatibility with other systems, where the box cursor is the +default in Emacs. This default shape can be changed to a bar by +specifying the @code{cursor-type} parameter in the variable +@code{default-frame-alist} (@pxref{Creating Frames,,,emacs, the Emacs +Manual}). The MS-DOS terminal doesn't support a vertical-bar cursor, +so the bar cursor is horizontal, and the @code{@var{width}} parameter, +if specified by the frame parameters, actually determines its height. +For this reason, the @code{bar} and @code{hbar} cursor types produce +the same effect on MS-DOS. As an extension, the bar cursor +specification can include the starting scan line of the cursor as well +as its width, like this: + +@example + '(cursor-type bar @var{width} . @var{start}) +@end example + +@noindent +In addition, if the @var{width} parameter is negative, the cursor bar +begins at the top of the character cell. + +@cindex frames on MS-DOS + The MS-DOS terminal can only display a single frame at a time. The +Emacs frame facilities work on MS-DOS much as they do on text-only +terminals (@pxref{Frames,,,emacs, the Emacs Manual}). When you run +Emacs from a DOS window on MS-Windows, you can make the visible frame +smaller than the full screen, but Emacs still cannot display more than +a single frame at a time. + +@cindex frame size under MS-DOS +@findex mode4350 +@findex mode25 + The @code{mode4350} command switches the display to 43 or 50 +lines, depending on your hardware; the @code{mode25} command switches +to the default 80x25 screen size. + + By default, Emacs only knows how to set screen sizes of 80 columns by +25, 28, 35, 40, 43 or 50 rows. However, if your video adapter has +special video modes that will switch the display to other sizes, you can +have Emacs support those too. When you ask Emacs to switch the frame to +@var{n} rows by @var{m} columns dimensions, it checks if there is a +variable called @code{screen-dimensions-@var{n}x@var{m}}, and if so, +uses its value (which must be an integer) as the video mode to switch +to. (Emacs switches to that video mode by calling the BIOS @code{Set +Video Mode} function with the value of +@code{screen-dimensions-@var{n}x@var{m}} in the @code{AL} register.) +For example, suppose your adapter will switch to 66x80 dimensions when +put into video mode 85. Then you can make Emacs support this screen +size by putting the following into your @file{_emacs} file: + +@example +(setq screen-dimensions-66x80 85) +@end example + + Since Emacs on MS-DOS can only set the frame size to specific +supported dimensions, it cannot honor every possible frame resizing +request. When an unsupported size is requested, Emacs chooses the next +larger supported size beyond the specified size. For example, if you +ask for 36x80 frame, you will get 40x80 instead. + + The variables @code{screen-dimensions-@var{n}x@var{m}} are used only +when they exactly match the specified size; the search for the next +larger supported size ignores them. In the above example, even if your +VGA supports 38x80 dimensions and you define a variable +@code{screen-dimensions-38x80} with a suitable value, you will still get +40x80 screen when you ask for a 36x80 frame. If you want to get the +38x80 size in this case, you can do it by setting the variable named +@code{screen-dimensions-36x80} with the same video mode value as +@code{screen-dimensions-38x80}. + + Changing frame dimensions on MS-DOS has the effect of changing all the +other frames to the new dimensions. + +@node MS-DOS File Names +@section File Names on MS-DOS +@cindex file names under MS-DOS +@cindex init file, default name under MS-DOS + + MS-DOS normally uses a backslash, @samp{\}, to separate name units +within a file name, instead of the slash used on other systems. Emacs +on MS-DOS permits use of either slash or backslash, and also knows +about drive letters in file names. + + On MS-DOS, file names are case-insensitive and limited to eight +characters, plus optionally a period and three more characters. Emacs +knows enough about these limitations to handle file names that were +meant for other operating systems. For instance, leading dots +@samp{.} in file names are invalid in MS-DOS, so Emacs transparently +converts them to underscores @samp{_}; thus your default init file +(@pxref{Init File,,,emacs, the Emacs Manual}) is called @file{_emacs} +on MS-DOS. Excess characters before or after the period are generally +ignored by MS-DOS itself; thus, if you visit the file +@file{LongFileName.EvenLongerExtension}, you will silently get +@file{longfile.eve}, but Emacs will still display the long file name +on the mode line. Other than that, it's up to you to specify file +names which are valid under MS-DOS; the transparent conversion as +described above only works on file names built into Emacs. + +@cindex backup file names on MS-DOS + The above restrictions on the file names on MS-DOS make it almost +impossible to construct the name of a backup file (@pxref{Backup +Names,,,emacs, the Emacs Manual}) without losing some of the original +file name characters. For example, the name of a backup file for +@file{docs.txt} is @file{docs.tx~} even if single backup is used. + +@cindex file names under Windows 95/NT +@cindex long file names in DOS box under Windows 95/NT + If you run Emacs as a DOS application under Windows 9X, Windows ME, or +Windows 2000, you can turn on support for long file names. If you do +that, Emacs doesn't truncate file names or convert them to lower case; +instead, it uses the file names that you specify, verbatim. To enable +long file name support, set the environment variable @env{LFN} to +@samp{y} before starting Emacs. Unfortunately, Windows NT doesn't allow +DOS programs to access long file names, so Emacs built for MS-DOS will +only see their short 8+3 aliases. + +@cindex @env{HOME} directory under MS-DOS + MS-DOS has no notion of home directory, so Emacs on MS-DOS pretends +that the directory where it is installed is the value of the @env{HOME} +environment variable. That is, if your Emacs binary, +@file{emacs.exe}, is in the directory @file{c:/utils/emacs/bin}, then +Emacs acts as if @env{HOME} were set to @samp{c:/utils/emacs}. In +particular, that is where Emacs looks for the init file @file{_emacs}. +With this in mind, you can use @samp{~} in file names as an alias for +the home directory, as you would on GNU or Unix. You can also set +@env{HOME} variable in the environment before starting Emacs; its +value will then override the above default behavior. + + Emacs on MS-DOS handles the directory name @file{/dev} specially, +because of a feature in the emulator libraries of DJGPP that pretends +I/O devices have names in that directory. We recommend that you avoid +using an actual directory named @file{/dev} on any disk. + +@node MS-DOS Printing +@section Printing and MS-DOS + + Printing commands, such as @code{lpr-buffer} +(@pxref{Printing,,,emacs, the Emacs Manual }) and +@code{ps-print-buffer} (@pxref{PostScript,,,emacs, the Emacs Manual}) +can work in MS-DOS and MS-Windows by sending the output to one of the +printer ports, if a Posix-style @code{lpr} program is unavailable. +The same Emacs variables control printing on all systems, but in some +cases they have different default values on MS-DOS and MS-Windows. + +@vindex printer-name @r{(MS-DOS)} + If you want to use your local printer, printing on it in the usual DOS +manner, then set the Lisp variable @code{lpr-command} to @code{""} (its +default value) and @code{printer-name} to the name of the printer +port---for example, @code{"PRN"}, the usual local printer port (that's +the default), 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 @code{"NUL"}, printed output is silently +discarded (sent to the system null device). + + On MS-Windows, when the Windows network software is installed, you can +also use a printer shared by another machine by setting +@code{printer-name} to the UNC share name for that printer---for example, +@code{"//joes_pc/hp4si"}. (It doesn't matter whether you use forward +slashes or backslashes here.) To find out the names of shared printers, +run the command @samp{net view} at a DOS command prompt 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 network. + +@cindex @samp{net use}, and printing on MS-Windows +@cindex networked printers (MS-Windows) + If the printer doesn't appear in the output of @samp{net view}, or +if setting @code{printer-name} to the UNC share name doesn't produce a +hardcopy on that printer, you can use the @samp{net use} command to +connect a local print port such as @code{"LPT2"} to the networked +printer. For example, typing @kbd{net use LPT2: +\\joes_pc\hp4si}@footnote{ +Note that the @samp{net use} command requires the UNC share name to be +typed with the Windows-style backslashes, while the value of +@code{printer-name} can be set with either forward- or backslashes.} +causes Windows to @dfn{capture} the LPT2 port and redirect the printed +material to the printer connected to the machine @code{joes_pc}. +After this command, setting @code{printer-name} to @code{"LPT2"} +should produce the hardcopy on the networked printer. + + With some varieties of Windows network software, you can instruct +Windows to capture a specific printer port such as @code{"LPT2"}, and +redirect it to a networked printer via the @w{@code{Control +Panel->Printers}} applet instead of @samp{net use}. + + Some printers expect DOS codepage encoding of non-@acronym{ASCII} text, even +though they are connected to a Windows machine which uses a different +encoding for the same locale. For example, in the Latin-1 locale, DOS +uses codepage 850 whereas Windows uses codepage 1252. @xref{MS-DOS and +MULE}. When you print to such printers from Windows, you can use the +@kbd{C-x RET c} (@code{universal-coding-system-argument}) command before +@kbd{M-x lpr-buffer}; Emacs will then convert the text to the DOS +codepage that you specify. For example, @kbd{C-x RET c cp850-dos RET +M-x lpr-region RET} will print the region while converting it to the +codepage 850 encoding. You may need to create the @code{cp@var{nnn}} +coding system with @kbd{M-x codepage-setup}. + + If you set @code{printer-name} to a file name, it's best to use an +absolute file name. Emacs changes the working directory according to +the default directory of the current buffer, so if the file name in +@code{printer-name} is relative, you will end up with several such +files, each one in the directory of the buffer from which the printing +was done. + +@findex print-buffer @r{(MS-DOS)} +@findex print-region @r{(MS-DOS)} +@vindex lpr-headers-switches @r{(MS-DOS)} + The commands @code{print-buffer} and @code{print-region} call the +@code{pr} program, or use special switches to the @code{lpr} program, to +produce headers on each printed page. MS-DOS and MS-Windows don't +normally have these programs, so by default, the variable +@code{lpr-headers-switches} is set so that the requests to print page +headers are silently ignored. Thus, @code{print-buffer} and +@code{print-region} produce the same output as @code{lpr-buffer} and +@code{lpr-region}, respectively. If you do have a suitable @code{pr} +program (for example, from GNU Textutils), set +@code{lpr-headers-switches} to @code{nil}; Emacs will then call +@code{pr} to produce the page headers, and print the resulting output as +specified by @code{printer-name}. + +@vindex print-region-function @r{(MS-DOS)} +@cindex lpr usage under MS-DOS +@vindex lpr-command @r{(MS-DOS)} +@vindex lpr-switches @r{(MS-DOS)} + 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 +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. + +@findex ps-print-buffer @r{(MS-DOS)} +@findex ps-spool-buffer @r{(MS-DOS)} +@vindex ps-printer-name @r{(MS-DOS)} +@vindex ps-lpr-command @r{(MS-DOS)} +@vindex ps-lpr-switches @r{(MS-DOS)} + A parallel set of variables, @code{ps-lpr-command}, +@code{ps-lpr-switches}, and @code{ps-printer-name} (@pxref{PostScript +Variables,,,emacs, the Emacs Manual}), defines how PostScript files +should be printed. These variables are used in the same way as the +corresponding variables described above for non-PostScript printing. +Thus, the value of @code{ps-printer-name} is used as the name of the +device (or file) to which PostScript output is sent, just as +@code{printer-name} is used for non-PostScript printing. (There are +two distinct sets of variables in case you have two printers attached +to two different ports, and only one of them is a PostScript printer.) + + 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 +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 +that need to be passed to the interpreter program are specified using +@code{ps-lpr-switches}. (If the value of @code{ps-printer-name} is a +string, it will be added to the list of switches as the value for the +@code{-P} option. This is probably only useful if you are using +@code{lpr}, so when using an interpreter typically you would set +@code{ps-printer-name} to something other than a string so it is +ignored.) + + For example, to use Ghostscript for printing on an Epson printer +connected to the @samp{LPT2} port, put this in your @file{_emacs} file: + +@example +(setq ps-printer-name t) ; Ghostscript doesn't understand -P +(setq ps-lpr-command "c:/gs/gs386") +(setq ps-lpr-switches '("-q" "-dNOPAUSE" + "-sDEVICE=epson" + "-r240x72" + "-sOutputFile=LPT2" + "-Ic:/gs")) +@end example + +@noindent +(This assumes that Ghostscript is installed in the @file{"c:/gs"} +directory.) + +@vindex dos-printer +@vindex dos-ps-printer + For backwards compatibility, the value of @code{dos-printer} +(@code{dos-ps-printer}), if it has a value, overrides the value of +@code{printer-name} (@code{ps-printer-name}), on MS-DOS and MS-Windows +only. + + +@node MS-DOS and MULE +@section International Support on MS-DOS +@cindex international support @r{(MS-DOS)} + + Emacs on MS-DOS supports the same international character sets as it +does on GNU, Unix and other platforms (@pxref{International,,,emacs, +the Emacs Manual}), including coding systems for converting between +the different character sets. However, due to incompatibilities +between MS-DOS/MS-Windows and other systems, there are several +DOS-specific aspects of this support that you should be aware of. +This section describes these aspects. + + The description below is largely specific to the MS-DOS port of +Emacs, especially where it talks about practical implications for +Emacs users. For other operating systems, see the @file{code-pages.el} +package, which implements support for MS-DOS- and MS-Windows-specific +encodings for all platforms other than MS-DOS. + +@table @kbd +@item M-x dos-codepage-setup +Set up Emacs display and coding systems as appropriate for the current +DOS codepage. + +@item M-x codepage-setup +Create a coding system for a certain DOS codepage. +@end table + +@cindex codepage, MS-DOS +@cindex DOS codepages + MS-DOS is designed to support one character set of 256 characters at +any given time, but gives you a variety of character sets to choose +from. The alternative character sets are known as @dfn{DOS codepages}. +Each codepage includes all 128 @acronym{ASCII} characters, but the other 128 +characters (codes 128 through 255) vary from one codepage to another. +Each DOS codepage is identified by a 3-digit number, such as 850, 862, +etc. + + In contrast to X, which lets you use several fonts at the same time, +MS-DOS normally doesn't allow use of several codepages in a single +session. MS-DOS was designed to load a single codepage at system +startup, and require you to reboot in order to change +it@footnote{Normally, one particular codepage is burnt into the +display memory, while other codepages can be installed by modifying +system configuration files, such as @file{CONFIG.SYS}, and rebooting. +While there is third-party software that allows changing the codepage +without rebooting, we describe here how a stock MS-DOS system +behaves.}. Much the same limitation applies when you run DOS +executables on other systems such as MS-Windows. + +@cindex unibyte operation @r{(MS-DOS)} + If you invoke Emacs on MS-DOS with the @samp{--unibyte} option +(@pxref{Initial Options,,,emacs, the Emacs Manual}), Emacs does not +perform any conversion of non-@acronym{ASCII} characters. Instead, it +reads and writes any non-@acronym{ASCII} characters verbatim, and +sends their 8-bit codes to the display verbatim. Thus, unibyte Emacs +on MS-DOS supports the current codepage, whatever it may be, but +cannot even represent any other characters. + +@vindex dos-codepage + For multibyte operation on MS-DOS, Emacs needs to know which +characters the chosen DOS codepage can display. So it queries the +system shortly after startup to get the chosen codepage number, and +stores the number in the variable @code{dos-codepage}. Some systems +return the default value 437 for the current codepage, even though the +actual codepage is different. (This typically happens when you use the +codepage built into the display hardware.) You can specify a different +codepage for Emacs to use by setting the variable @code{dos-codepage} in +your init file. + +@cindex language environment, automatic selection on @r{MS-DOS} + Multibyte Emacs supports only certain DOS codepages: those which can +display Far-Eastern scripts, like the Japanese codepage 932, and those +that encode a single ISO 8859 character set. + + The Far-Eastern codepages can directly display one of the MULE +character sets for these countries, so Emacs simply sets up to use the +appropriate terminal coding system that is supported by the codepage. +The special features described in the rest of this section mostly +pertain to codepages that encode ISO 8859 character sets. + + For the codepages which correspond to one of the ISO character sets, +Emacs knows the character set name based on the codepage number. Emacs +automatically creates a coding system to support reading and writing +files that use the current codepage, and uses this coding system by +default. The name of this coding system is @code{cp@var{nnn}}, where +@var{nnn} is the codepage number.@footnote{The standard Emacs coding +systems for ISO 8859 are not quite right for the purpose, because +typically the DOS codepage does not match the standard ISO character +codes. For example, the letter @samp{@,{c}} (@samp{c} with cedilla) has +code 231 in the standard Latin-1 character set, but the corresponding +DOS codepage 850 uses code 135 for this glyph.} + +@cindex mode line @r{(MS-DOS)} + All the @code{cp@var{nnn}} coding systems use the letter @samp{D} +(for ``DOS'') as their mode-line mnemonic. Since both the terminal +coding system and the default coding system for file I/O are set to +the proper @code{cp@var{nnn}} coding system at startup, it is normal +for the mode line on MS-DOS to begin with @samp{-DD\-}. @xref{Mode +Line,,,emacs, the Emacs Manual}. Far-Eastern DOS terminals do not use +the @code{cp@var{nnn}} coding systems, and thus their initial mode +line looks like the Emacs default. + + Since the codepage number also indicates which script you are using, +Emacs automatically runs @code{set-language-environment} to select the +language environment for that script (@pxref{Language +Environments,,,emacs, the Emacs Manual}). + + If a buffer contains a character belonging to some other ISO 8859 +character set, not the one that the chosen DOS codepage supports, Emacs +displays it using a sequence of @acronym{ASCII} characters. For example, if the +current codepage doesn't have a glyph for the letter @samp{@`o} (small +@samp{o} with a grave accent), it is displayed as @samp{@{`o@}}, where +the braces serve as a visual indication that this is a single character. +(This may look awkward for some non-Latin characters, such as those from +Greek or Hebrew alphabets, but it is still readable by a person who +knows the language.) Even though the character may occupy several +columns on the screen, it is really still just a single character, and +all Emacs commands treat it as one. + +@cindex IBM graphics characters (MS-DOS) +@cindex box-drawing characters (MS-DOS) +@cindex line-drawing characters (MS-DOS) + Not all characters in DOS codepages correspond to ISO 8859 +characters---some are used for other purposes, such as box-drawing +characters and other graphics. Emacs maps these characters to two +special character sets called @code{eight-bit-control} and +@code{eight-bit-graphic}, and displays them as their IBM glyphs. +However, you should be aware that other systems might display these +characters differently, so you should avoid them in text that might be +copied to a different operating system, or even to another DOS machine +that uses a different codepage. + +@vindex dos-unsupported-character-glyph + Emacs supports many other characters sets aside from ISO 8859, but it +cannot display them on MS-DOS. So if one of these multibyte characters +appears in a buffer, Emacs on MS-DOS displays them as specified by the +@code{dos-unsupported-character-glyph} variable; by default, this glyph +is an empty triangle. Use the @kbd{C-u C-x =} command to display the +actual code and character set of such characters. @xref{Position +Info,,,emacs, the Emacs Manual}. + +@findex codepage-setup + By default, Emacs defines a coding system to support the current +codepage. To define a coding system for some other codepage (e.g., to +visit a file written on a DOS machine in another country), use the +@kbd{M-x codepage-setup} command. It prompts for the 3-digit code of +the codepage, with completion, then creates the coding system for the +specified codepage. You can then use the new coding system to read and +write files, but you must specify it explicitly for the file command +when you want to use it (@pxref{Text Coding,,,emacs, the Emacs Manual}). + + These coding systems are also useful for visiting a file encoded using +a DOS codepage, using Emacs running on some other operating system. + +@cindex MS-Windows codepages + MS-Windows provides its own codepages, which are different from the +DOS codepages for the same locale. For example, DOS codepage 850 +supports the same character set as Windows codepage 1252; DOS codepage +855 supports the same character set as Windows codepage 1251, etc. +The MS-Windows version of Emacs uses the current codepage for display +when invoked with the @samp{-nw} option. Support for codepages in the +Windows port of Emacs is part of the @file{code-pages.el} package. + +@node MS-DOS Processes +@section Subprocesses on MS-DOS + +@cindex compilation under MS-DOS +@cindex inferior processes under MS-DOS +@findex compile @r{(MS-DOS)} +@findex grep @r{(MS-DOS)} + Because MS-DOS is a single-process ``operating system,'' +asynchronous subprocesses are not available. In particular, Shell +mode and its variants do not work. Most Emacs features that use +asynchronous subprocesses also don't work on MS-DOS, including +Shell mode and GUD. When in doubt, try and see; commands that +don't work output an error message saying that asynchronous processes +aren't supported. + + Compilation under Emacs with @kbd{M-x compile}, searching files with +@kbd{M-x grep} and displaying differences between files with @kbd{M-x +diff} do work, by running the inferior processes synchronously. This +means you cannot do any more editing until the inferior process +finishes. + + Spell checking also works, by means of special support for synchronous +invocation of the @code{ispell} program. This is slower than the +asynchronous invocation on other platforms + + Instead of the Shell mode, which doesn't work on MS-DOS, you can use +the @kbd{M-x eshell} command. This invokes the Eshell package that +implements a Posix-like shell entirely in Emacs Lisp. + + By contrast, Emacs compiled as a native Windows application +@strong{does} support asynchronous subprocesses. @xref{Windows +Processes,,,emacs, the Emacs Manual}. + +@cindex printing under MS-DOS + Printing commands, such as @code{lpr-buffer} +(@pxref{Printing,,,emacs, the Emacs Manual}) and +@code{ps-print-buffer} (@pxref{PostScript,,,emacs, the Emacs Manual}), +work in MS-DOS by sending the output to one of the printer ports. +@xref{MS-DOS Printing,,,emacs, the Emacs Manual}. + + When you run a subprocess synchronously on MS-DOS, make sure the +program terminates and does not try to read keyboard input. If the +program does not terminate on its own, you will be unable to terminate +it, because MS-DOS provides no general way to terminate a process. +Pressing @kbd{C-c} or @kbd{C-@key{BREAK}} might sometimes help in these +cases. + + Accessing files on other machines is not supported on MS-DOS. Other +network-oriented commands such as sending mail, Web browsing, remote +login, etc., don't work either, unless network access is built into +MS-DOS with some network redirector. + +@cindex directory listing on MS-DOS +@vindex dired-listing-switches @r{(MS-DOS)} + Dired on MS-DOS uses the @code{ls-lisp} package where other +platforms use the system @code{ls} command. Therefore, Dired on +MS-DOS supports only some of the possible options you can mention in +the @code{dired-listing-switches} variable. The options that work are +@samp{-A}, @samp{-a}, @samp{-c}, @samp{-i}, @samp{-r}, @samp{-S}, +@samp{-s}, @samp{-t}, and @samp{-u}. + + @node Index @unnumbered Index diff -r 58d60e878200 -r 601830ae280c man/emacs.texi --- a/man/emacs.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/emacs.texi Sun Apr 09 22:40:34 2006 +0000 @@ -127,7 +127,7 @@ * Glossary:: The glossary. * Antinews:: Information about Emacs version 21. * Mac OS:: Using Emacs in the Mac. -* MS-DOS:: Using Emacs on MS-DOS and Microsoft Windows. +* Emacs and Microsoft Windows:: Using Emacs on Microsoft Windows. * Manifesto:: What's GNU? Gnu's Not Unix! * Acknowledgments:: Major contributors to GNU Emacs. @@ -860,16 +860,9 @@ * Mac Font Specs:: Specifying fonts on Mac. * Mac Functions:: Mac-specific Lisp functions. -MS-DOS and Windows 95/98/NT +Emacs and Microsoft Windows -* MS-DOS Keyboard:: Keyboard usage on MS-DOS. -* MS-DOS Mouse:: Mouse usage on MS-DOS. -* MS-DOS Display:: Fonts, frames and display size on MS-DOS. -* MS-DOS File Names:: File-name conventions on MS-DOS. * Text and Binary:: Text files on MS-DOS use CRLF to separate lines. -* MS-DOS Printing:: How to specify the printer on MS-DOS. -* MS-DOS and MULE:: Support for internationalization on MS-DOS. -* MS-DOS Processes:: Running subprocesses on MS-DOS. * Windows Processes:: Running subprocesses on Windows. * Windows System Menu:: Controlling what the ALT key does. @end menu @@ -931,10 +924,10 @@ installed on GNU and Unix systems. GNU Emacs can also be used on VMS, MS-DOS (also called MS-DOG), Microsoft Windows, and Macintosh systems. Those systems use different file name syntax; in addition, VMS and -MS-DOS do not support all GNU Emacs features. @xref{MS-DOS}, for -information about using Emacs on MS-DOS and Windows. @xref{Mac OS}, -for information about using Emacs on Macintosh. We don't try to -describe VMS usage in this manual. +MS-DOS do not support all GNU Emacs features. @xref{Emacs and +Microsoft Windows}, for information about using Emacs on Windows. +@xref{Mac OS}, for information about using Emacs on Macintosh. We +don't try to describe VMS usage in this manual. @end iftex @node Distrib, Intro, Top, Top diff -r 58d60e878200 -r 601830ae280c man/frames.texi --- a/man/frames.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/frames.texi Sun Apr 09 22:40:34 2006 +0000 @@ -27,7 +27,7 @@ Emacs compiled for MS-DOS emulates some windowing functionality, so that you can use many of the features described in this chapter. -@xref{MS-DOS Mouse}, for more information. +@xref{MS-DOS Mouse,,,emacs-xtra,Specialized Emacs Features}. @menu * Mouse Commands:: Moving, cutting, and pasting, with the mouse. diff -r 58d60e878200 -r 601830ae280c man/gnu.texi --- a/man/gnu.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/gnu.texi Sun Apr 09 22:40:34 2006 +0000 @@ -2,7 +2,7 @@ @c Copyright (C) 1985, 1986, 1987, 1993, 1995, 2002, 2003, 2004, @c 2005, 2006 Free Software Foundation, Inc. @ifclear justgnu -@node Manifesto,, MS-DOS, Top +@node Manifesto,, Emacs and Microsoft Windows, Top @unnumbered The GNU Manifesto @end ifclear @ifset justgnu diff -r 58d60e878200 -r 601830ae280c man/macos.texi --- a/man/macos.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/macos.texi Sun Apr 09 22:40:34 2006 +0000 @@ -2,7 +2,7 @@ @c Copyright (C) 2000, 2001, 2002, 2003, 2004, @c 2005, 2006 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. -@node Mac OS, MS-DOS, Antinews, Top +@node Mac OS, Emacs and Microsoft Windows, Antinews, Top @appendix Emacs and Mac OS @cindex Mac OS @cindex Macintosh diff -r 58d60e878200 -r 601830ae280c man/msdog.texi --- a/man/msdog.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/msdog.texi Sun Apr 09 22:40:34 2006 +0000 @@ -2,307 +2,28 @@ @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, @c 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. -@node MS-DOS, Manifesto, Mac OS, Top -@appendix Emacs and Microsoft Systems -@cindex MS-DOG +@node Emacs and Microsoft Windows, Manifesto, Mac OS, Top +@appendix Emacs and Microsoft Windows @cindex Microsoft Windows -@cindex MS-DOS peculiarities - - This section briefly describes the peculiarities of using Emacs on -the MS-DOS ``operating system'' (also known as ``MS-DOG'') and on -Microsoft Windows. - If you build Emacs for MS-DOS, the binary will also run on Windows -3.X, Windows NT, Windows 9X/ME, Windows 2000, or OS/2 as a DOS -application; all the of this chapter applies for all of those systems, -if you use an Emacs that was built for MS-DOS. + This section describes peculiarities of using Emacs on Microsoft +Windows. Information about Emacs and Microsoft's older MS-DOS +``operating system'' (also known as ``MS-DOG'') is now in a separate +manual (@inforef{MS-DOG,, emacs-xtra}). - However, if you want to use Emacs on Windows, you would normally -build Emacs specifically for Windows. If you do that, most of this -chapter does not apply; instead, you get behavior much closer to what -is documented in the rest of the manual, including support for long -file names, multiple frames, scroll bars, mouse menus, and -subprocesses. However, the section on text files and binary files -does still apply. There are also two sections at the end of this -chapter which apply specifically for the Windows version. + Iif you want to use Emacs on Windows, you would normally build Emacs +specifically for Windows. If you do that, the behavior is reasonably +similar to what is documented in the rest of the manual, including +support for long file names, multiple frames, scroll bars, mouse +menus, and subprocesses. However, a few special considerations apply, +and they are described here. @menu -* Keyboard: MS-DOS Keyboard. Keyboard conventions on MS-DOS. -* Mouse: MS-DOS Mouse. Mouse conventions on MS-DOS. -* Display: MS-DOS Display. Fonts, frames and display size on MS-DOS. -* Files: MS-DOS File Names. File name conventions on MS-DOS. -* Text and Binary:: Text files on MS-DOS use CRLF to separate lines. -* Printing: MS-DOS Printing. How to specify the printer on MS-DOS. -* I18N: MS-DOS and MULE. Support for internationalization on MS-DOS. -* Processes: MS-DOS Processes. Running subprocesses on MS-DOS. +* Text and Binary:: Text files use CRLF to terminate lines. * Windows Processes:: Running subprocesses on Windows. * Windows System Menu:: Controlling what the ALT key does. @end menu -@node MS-DOS Keyboard -@section Keyboard Usage on MS-DOS - -@kindex DEL @r{(MS-DOS)} -@kindex BS @r{(MS-DOS)} - The key that is called @key{DEL} in Emacs (because that's how it is -designated on most workstations) is known as @key{BS} (backspace) on a -PC. That is why the PC-specific terminal initialization remaps the -@key{BS} key to act as @key{DEL}; the @key{DELETE} key is remapped to act -as @kbd{C-d} for the same reasons. - -@kindex C-g @r{(MS-DOS)} -@kindex C-BREAK @r{(MS-DOS)} -@cindex quitting on MS-DOS - Emacs built for MS-DOS recognizes @kbd{C-@key{BREAK}} as a quit -character, just like @kbd{C-g}. This is because Emacs cannot detect -that you have typed @kbd{C-g} until it is ready for more input. As a -consequence, you cannot use @kbd{C-g} to stop a running command -(@pxref{Quitting}). By contrast, @kbd{C-@key{BREAK}} @emph{is} detected -as soon as you type it (as @kbd{C-g} is on other systems), so it can be -used to stop a running command and for emergency escape -(@pxref{Emergency Escape}). - -@cindex Meta (under MS-DOS) -@cindex Hyper (under MS-DOS) -@cindex Super (under MS-DOS) -@vindex dos-super-key -@vindex dos-hyper-key - The PC keyboard maps use the left @key{ALT} key as the @key{META} key. -You have two choices for emulating the @key{SUPER} and @key{HYPER} keys: -choose either the right @key{CTRL} key or the right @key{ALT} key by -setting the variables @code{dos-hyper-key} and @code{dos-super-key} to 1 -or 2 respectively. If neither @code{dos-super-key} nor -@code{dos-hyper-key} is 1, then by default the right @key{ALT} key is -also mapped to the @key{META} key. However, if the MS-DOS international -keyboard support program @file{KEYB.COM} is installed, Emacs will -@emph{not} map the right @key{ALT} to @key{META}, since it is used for -accessing characters like @kbd{~} and @kbd{@@} on non-US keyboard -layouts; in this case, you may only use the left @key{ALT} as @key{META} -key. - -@kindex C-j @r{(MS-DOS)} -@vindex dos-keypad-mode - The variable @code{dos-keypad-mode} is a flag variable that controls -what key codes are returned by keys in the numeric keypad. You can also -define the keypad @key{ENTER} key to act like @kbd{C-j}, by putting the -following line into your @file{_emacs} file: - -@smallexample -;; @r{Make the @key{ENTER} key from the numeric keypad act as @kbd{C-j}.} -(define-key function-key-map [kp-enter] [?\C-j]) -@end smallexample - -@node MS-DOS Mouse -@section Mouse Usage on MS-DOS - -@cindex mouse support under MS-DOS - Emacs on MS-DOS supports a mouse (on the default terminal only). -The mouse commands work as documented, including those that use menus -and the menu bar (@pxref{Menu Bar}). Scroll bars don't work in -MS-DOS Emacs. PC mice usually have only two buttons; these act as -@kbd{Mouse-1} and @kbd{Mouse-2}, but if you press both of them -together, that has the effect of @kbd{Mouse-3}. If the mouse does have -3 buttons, Emacs detects that at startup, and all the 3 buttons function -normally, as on X. - - Help strings for menu-bar and pop-up menus are displayed in the echo -area when the mouse pointer moves across the menu items. -Highlighting of mouse-sensitive text (@pxref{Mouse References}) is also -supported. - -@cindex mouse, set number of buttons -@findex msdos-set-mouse-buttons - Some versions of mouse drivers don't report the number of mouse -buttons correctly. For example, mice with a wheel report that they -have 3 buttons, but only 2 of them are passed to Emacs; the clicks on -the wheel, which serves as the middle button, are not passed. In -these cases, you can use the @kbd{M-x msdos-set-mouse-buttons} command -to tell Emacs how many mouse buttons to expect. You could make such a -setting permanent by adding this fragment to your @file{_emacs} init -file: - -@example -;; @r{Treat the mouse like a 2-button mouse.} -(msdos-set-mouse-buttons 2) -@end example - -@cindex Windows clipboard support - Emacs built for MS-DOS supports clipboard operations when it runs on -Windows. Commands that put text on the kill ring, or yank text from the -ring, check the Windows clipboard first, just as Emacs does on the X -Window System (@pxref{Mouse Commands}). Only the primary selection and -the cut buffer are supported by MS-DOS Emacs on Windows; the secondary -selection always appears as empty. - - Due to the way clipboard access is implemented by Windows, the -length of text you can put into the clipboard is limited by the amount -of free DOS memory that is available to Emacs. Usually, up to 620KB of -text can be put into the clipboard, but this limit depends on the system -configuration and is lower if you run Emacs as a subprocess of -another program. If the killed text does not fit, Emacs outputs a -message saying so, and does not put the text into the clipboard. - - Null characters also cannot be put into the Windows clipboard. If the -killed text includes null characters, Emacs does not put such text into -the clipboard, and displays in the echo area a message to that effect. - -@vindex dos-display-scancodes - The variable @code{dos-display-scancodes}, when non-@code{nil}, -directs Emacs to display the @acronym{ASCII} value and the keyboard scan code of -each keystroke; this feature serves as a complement to the -@code{view-lossage} command, for debugging. - -@node MS-DOS Display -@section Display on MS-DOS -@cindex faces under MS-DOS -@cindex fonts, emulating under MS-DOS - - Display on MS-DOS cannot use font variants, like bold or italic, -but it does support -multiple faces, each of which can specify a foreground and a background -color. Therefore, you can get the full functionality of Emacs packages -that use fonts (such as @code{font-lock}, Enriched Text mode, and -others) by defining the relevant faces to use different colors. Use the -@code{list-colors-display} command (@pxref{Frame Parameters}) and the -@code{list-faces-display} command (@pxref{Faces}) to see what colors and -faces are available and what they look like. - - @xref{MS-DOS and MULE}, later in this chapter, for information on -how Emacs displays glyphs and characters that aren't supported by the -native font built into the DOS display. - -@cindex cursor shape on MS-DOS - When Emacs starts, it changes the cursor shape to a solid box. This -is for compatibility with other systems, where the box cursor is the -default in Emacs. This default shape can be changed to a bar by -specifying the @code{cursor-type} parameter in the variable -@code{default-frame-alist} (@pxref{Creating Frames}). The MS-DOS -terminal doesn't support a vertical-bar cursor, so the bar cursor is -horizontal, and the @code{@var{width}} parameter, if specified by the -frame parameters, actually determines its height. For this reason, -the @code{bar} and @code{hbar} cursor types produce the same effect on -MS-DOS. As an extension, the bar cursor specification can include the -starting scan line of the cursor as well as its width, like this: - -@example - '(cursor-type bar @var{width} . @var{start}) -@end example - -@noindent -In addition, if the @var{width} parameter is negative, the cursor bar -begins at the top of the character cell. - -@cindex frames on MS-DOS - The MS-DOS terminal can only display a single frame at a time. The -Emacs frame facilities work on MS-DOS much as they do on text-only -terminals (@pxref{Frames}). When you run Emacs from a DOS window on -MS-Windows, you can make the visible frame smaller than the full -screen, but Emacs still cannot display more than a single frame at a -time. - -@cindex frame size under MS-DOS -@findex mode4350 -@findex mode25 - The @code{mode4350} command switches the display to 43 or 50 -lines, depending on your hardware; the @code{mode25} command switches -to the default 80x25 screen size. - - By default, Emacs only knows how to set screen sizes of 80 columns by -25, 28, 35, 40, 43 or 50 rows. However, if your video adapter has -special video modes that will switch the display to other sizes, you can -have Emacs support those too. When you ask Emacs to switch the frame to -@var{n} rows by @var{m} columns dimensions, it checks if there is a -variable called @code{screen-dimensions-@var{n}x@var{m}}, and if so, -uses its value (which must be an integer) as the video mode to switch -to. (Emacs switches to that video mode by calling the BIOS @code{Set -Video Mode} function with the value of -@code{screen-dimensions-@var{n}x@var{m}} in the @code{AL} register.) -For example, suppose your adapter will switch to 66x80 dimensions when -put into video mode 85. Then you can make Emacs support this screen -size by putting the following into your @file{_emacs} file: - -@example -(setq screen-dimensions-66x80 85) -@end example - - Since Emacs on MS-DOS can only set the frame size to specific -supported dimensions, it cannot honor every possible frame resizing -request. When an unsupported size is requested, Emacs chooses the next -larger supported size beyond the specified size. For example, if you -ask for 36x80 frame, you will get 40x80 instead. - - The variables @code{screen-dimensions-@var{n}x@var{m}} are used only -when they exactly match the specified size; the search for the next -larger supported size ignores them. In the above example, even if your -VGA supports 38x80 dimensions and you define a variable -@code{screen-dimensions-38x80} with a suitable value, you will still get -40x80 screen when you ask for a 36x80 frame. If you want to get the -38x80 size in this case, you can do it by setting the variable named -@code{screen-dimensions-36x80} with the same video mode value as -@code{screen-dimensions-38x80}. - - Changing frame dimensions on MS-DOS has the effect of changing all the -other frames to the new dimensions. - -@node MS-DOS File Names -@section File Names on MS-DOS -@cindex file names under MS-DOS -@cindex init file, default name under MS-DOS - - MS-DOS normally uses a backslash, @samp{\}, to separate name units -within a file name, instead of the slash used on other systems. Emacs -on MS-DOS permits use of either slash or backslash, and also knows -about drive letters in file names. - - On MS-DOS, file names are case-insensitive and limited to eight -characters, plus optionally a period and three more characters. Emacs -knows enough about these limitations to handle file names that were -meant for other operating systems. For instance, leading dots @samp{.} -in file names are invalid in MS-DOS, so Emacs transparently converts -them to underscores @samp{_}; thus your default init file (@pxref{Init -File}) is called @file{_emacs} on MS-DOS. Excess characters before or -after the period are generally ignored by MS-DOS itself; thus, if you -visit the file @file{LongFileName.EvenLongerExtension}, you will -silently get @file{longfile.eve}, but Emacs will still display the long -file name on the mode line. Other than that, it's up to you to specify -file names which are valid under MS-DOS; the transparent conversion as -described above only works on file names built into Emacs. - -@cindex backup file names on MS-DOS - The above restrictions on the file names on MS-DOS make it almost -impossible to construct the name of a backup file (@pxref{Backup -Names}) without losing some of the original file name characters. For -example, the name of a backup file for @file{docs.txt} is -@file{docs.tx~} even if single backup is used. - -@cindex file names under Windows 95/NT -@cindex long file names in DOS box under Windows 95/NT - If you run Emacs as a DOS application under Windows 9X, Windows ME, or -Windows 2000, you can turn on support for long file names. If you do -that, Emacs doesn't truncate file names or convert them to lower case; -instead, it uses the file names that you specify, verbatim. To enable -long file name support, set the environment variable @env{LFN} to -@samp{y} before starting Emacs. Unfortunately, Windows NT doesn't allow -DOS programs to access long file names, so Emacs built for MS-DOS will -only see their short 8+3 aliases. - -@cindex @env{HOME} directory under MS-DOS - MS-DOS has no notion of home directory, so Emacs on MS-DOS pretends -that the directory where it is installed is the value of the @env{HOME} -environment variable. That is, if your Emacs binary, -@file{emacs.exe}, is in the directory @file{c:/utils/emacs/bin}, then -Emacs acts as if @env{HOME} were set to @samp{c:/utils/emacs}. In -particular, that is where Emacs looks for the init file @file{_emacs}. -With this in mind, you can use @samp{~} in file names as an alias for -the home directory, as you would on GNU or Unix. You can also set -@env{HOME} variable in the environment before starting Emacs; its -value will then override the above default behavior. - - Emacs on MS-DOS handles the directory name @file{/dev} specially, -because of a feature in the emulator libraries of DJGPP that pretends -I/O devices have names in that directory. We recommend that you avoid -using an actual directory named @file{/dev} on any disk. - @node Text and Binary @section Text Files and Binary Files @cindex text and binary files on MS-DOS/MS-Windows @@ -419,379 +140,6 @@ 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 MS-DOS Printing -@section Printing and MS-DOS - - Printing commands, such as @code{lpr-buffer} (@pxref{Printing}) and -@code{ps-print-buffer} (@pxref{PostScript}) can work in MS-DOS and -MS-Windows by sending the output to one of the printer ports, if a -Posix-style @code{lpr} program is unavailable. The same Emacs -variables control printing on all systems, but in some cases they have -different default values on MS-DOS and MS-Windows. - -@vindex printer-name @r{(MS-DOS)} - If you want to use your local printer, printing on it in the usual DOS -manner, then set the Lisp variable @code{lpr-command} to @code{""} (its -default value) and @code{printer-name} to the name of the printer -port---for example, @code{"PRN"}, the usual local printer port (that's -the default), 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 @code{"NUL"}, printed output is silently -discarded (sent to the system null device). - - On MS-Windows, when the Windows network software is installed, you can -also use a printer shared by another machine by setting -@code{printer-name} to the UNC share name for that printer---for example, -@code{"//joes_pc/hp4si"}. (It doesn't matter whether you use forward -slashes or backslashes here.) To find out the names of shared printers, -run the command @samp{net view} at a DOS command prompt 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 network. - -@cindex @samp{net use}, and printing on MS-Windows -@cindex networked printers (MS-Windows) - If the printer doesn't appear in the output of @samp{net view}, or -if setting @code{printer-name} to the UNC share name doesn't produce a -hardcopy on that printer, you can use the @samp{net use} command to -connect a local print port such as @code{"LPT2"} to the networked -printer. For example, typing @kbd{net use LPT2: -\\joes_pc\hp4si}@footnote{ -Note that the @samp{net use} command requires the UNC share name to be -typed with the Windows-style backslashes, while the value of -@code{printer-name} can be set with either forward- or backslashes.} -causes Windows to @dfn{capture} the LPT2 port and redirect the printed -material to the printer connected to the machine @code{joes_pc}. -After this command, setting @code{printer-name} to @code{"LPT2"} -should produce the hardcopy on the networked printer. - - With some varieties of Windows network software, you can instruct -Windows to capture a specific printer port such as @code{"LPT2"}, and -redirect it to a networked printer via the @w{@code{Control -Panel->Printers}} applet instead of @samp{net use}. - - Some printers expect DOS codepage encoding of non-@acronym{ASCII} text, even -though they are connected to a Windows machine which uses a different -encoding for the same locale. For example, in the Latin-1 locale, DOS -uses codepage 850 whereas Windows uses codepage 1252. @xref{MS-DOS and -MULE}. When you print to such printers from Windows, you can use the -@kbd{C-x RET c} (@code{universal-coding-system-argument}) command before -@kbd{M-x lpr-buffer}; Emacs will then convert the text to the DOS -codepage that you specify. For example, @kbd{C-x RET c cp850-dos RET -M-x lpr-region RET} will print the region while converting it to the -codepage 850 encoding. You may need to create the @code{cp@var{nnn}} -coding system with @kbd{M-x codepage-setup}. - - If you set @code{printer-name} to a file name, it's best to use an -absolute file name. Emacs changes the working directory according to -the default directory of the current buffer, so if the file name in -@code{printer-name} is relative, you will end up with several such -files, each one in the directory of the buffer from which the printing -was done. - -@findex print-buffer @r{(MS-DOS)} -@findex print-region @r{(MS-DOS)} -@vindex lpr-headers-switches @r{(MS-DOS)} - The commands @code{print-buffer} and @code{print-region} call the -@code{pr} program, or use special switches to the @code{lpr} program, to -produce headers on each printed page. MS-DOS and MS-Windows don't -normally have these programs, so by default, the variable -@code{lpr-headers-switches} is set so that the requests to print page -headers are silently ignored. Thus, @code{print-buffer} and -@code{print-region} produce the same output as @code{lpr-buffer} and -@code{lpr-region}, respectively. If you do have a suitable @code{pr} -program (for example, from GNU Textutils), set -@code{lpr-headers-switches} to @code{nil}; Emacs will then call -@code{pr} to produce the page headers, and print the resulting output as -specified by @code{printer-name}. - -@vindex print-region-function @r{(MS-DOS)} -@cindex lpr usage under MS-DOS -@vindex lpr-command @r{(MS-DOS)} -@vindex lpr-switches @r{(MS-DOS)} - 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 -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. - -@findex ps-print-buffer @r{(MS-DOS)} -@findex ps-spool-buffer @r{(MS-DOS)} -@vindex ps-printer-name @r{(MS-DOS)} -@vindex ps-lpr-command @r{(MS-DOS)} -@vindex ps-lpr-switches @r{(MS-DOS)} - A parallel set of variables, @code{ps-lpr-command}, -@code{ps-lpr-switches}, and @code{ps-printer-name} (@pxref{PostScript -Variables}), defines how PostScript files should be printed. These -variables are used in the same way as the corresponding variables -described above for non-PostScript printing. Thus, the value of -@code{ps-printer-name} is used as the name of the device (or file) to -which PostScript output is sent, just as @code{printer-name} is used for -non-PostScript printing. (There are two distinct sets of variables in -case you have two printers attached to two different ports, and only one -of them is a PostScript printer.) - - 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 -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 -that need to be passed to the interpreter program are specified using -@code{ps-lpr-switches}. (If the value of @code{ps-printer-name} is a -string, it will be added to the list of switches as the value for the -@code{-P} option. This is probably only useful if you are using -@code{lpr}, so when using an interpreter typically you would set -@code{ps-printer-name} to something other than a string so it is -ignored.) - - For example, to use Ghostscript for printing on an Epson printer -connected to the @samp{LPT2} port, put this in your @file{_emacs} file: - -@example -(setq ps-printer-name t) ; Ghostscript doesn't understand -P -(setq ps-lpr-command "c:/gs/gs386") -(setq ps-lpr-switches '("-q" "-dNOPAUSE" - "-sDEVICE=epson" - "-r240x72" - "-sOutputFile=LPT2" - "-Ic:/gs")) -@end example - -@noindent -(This assumes that Ghostscript is installed in the @file{"c:/gs"} -directory.) - -@vindex dos-printer -@vindex dos-ps-printer - For backwards compatibility, the value of @code{dos-printer} -(@code{dos-ps-printer}), if it has a value, overrides the value of -@code{printer-name} (@code{ps-printer-name}), on MS-DOS and MS-Windows -only. - - -@node MS-DOS and MULE -@section International Support on MS-DOS -@cindex international support @r{(MS-DOS)} - - Emacs on MS-DOS supports the same international character sets as it -does on GNU, Unix and other platforms (@pxref{International}), including -coding systems for converting between the different character sets. -However, due to incompatibilities between MS-DOS/MS-Windows and other systems, -there are several DOS-specific aspects of this support that you should -be aware of. This section describes these aspects. - - The description below is largely specific to the MS-DOS port of -Emacs, especially where it talks about practical implications for -Emacs users. For other operating systems, see the @file{code-pages.el} -package, which implements support for MS-DOS- and MS-Windows-specific -encodings for all platforms other than MS-DOS. - -@table @kbd -@item M-x dos-codepage-setup -Set up Emacs display and coding systems as appropriate for the current -DOS codepage. - -@item M-x codepage-setup -Create a coding system for a certain DOS codepage. -@end table - -@cindex codepage, MS-DOS -@cindex DOS codepages - MS-DOS is designed to support one character set of 256 characters at -any given time, but gives you a variety of character sets to choose -from. The alternative character sets are known as @dfn{DOS codepages}. -Each codepage includes all 128 @acronym{ASCII} characters, but the other 128 -characters (codes 128 through 255) vary from one codepage to another. -Each DOS codepage is identified by a 3-digit number, such as 850, 862, -etc. - - In contrast to X, which lets you use several fonts at the same time, -MS-DOS normally doesn't allow use of several codepages in a single -session. MS-DOS was designed to load a single codepage at system -startup, and require you to reboot in order to change -it@footnote{Normally, one particular codepage is burnt into the -display memory, while other codepages can be installed by modifying -system configuration files, such as @file{CONFIG.SYS}, and rebooting. -While there is third-party software that allows changing the codepage -without rebooting, we describe here how a stock MS-DOS system -behaves.}. Much the same limitation applies when you run DOS -executables on other systems such as MS-Windows. - -@cindex unibyte operation @r{(MS-DOS)} - If you invoke Emacs on MS-DOS with the @samp{--unibyte} option -(@pxref{Initial Options}), Emacs does not perform any conversion of -non-@acronym{ASCII} characters. Instead, it reads and writes any non-@acronym{ASCII} -characters verbatim, and sends their 8-bit codes to the display -verbatim. Thus, unibyte Emacs on MS-DOS supports the current codepage, -whatever it may be, but cannot even represent any other characters. - -@vindex dos-codepage - For multibyte operation on MS-DOS, Emacs needs to know which -characters the chosen DOS codepage can display. So it queries the -system shortly after startup to get the chosen codepage number, and -stores the number in the variable @code{dos-codepage}. Some systems -return the default value 437 for the current codepage, even though the -actual codepage is different. (This typically happens when you use the -codepage built into the display hardware.) You can specify a different -codepage for Emacs to use by setting the variable @code{dos-codepage} in -your init file. - -@cindex language environment, automatic selection on @r{MS-DOS} - Multibyte Emacs supports only certain DOS codepages: those which can -display Far-Eastern scripts, like the Japanese codepage 932, and those -that encode a single ISO 8859 character set. - - The Far-Eastern codepages can directly display one of the MULE -character sets for these countries, so Emacs simply sets up to use the -appropriate terminal coding system that is supported by the codepage. -The special features described in the rest of this section mostly -pertain to codepages that encode ISO 8859 character sets. - - For the codepages which correspond to one of the ISO character sets, -Emacs knows the character set name based on the codepage number. Emacs -automatically creates a coding system to support reading and writing -files that use the current codepage, and uses this coding system by -default. The name of this coding system is @code{cp@var{nnn}}, where -@var{nnn} is the codepage number.@footnote{The standard Emacs coding -systems for ISO 8859 are not quite right for the purpose, because -typically the DOS codepage does not match the standard ISO character -codes. For example, the letter @samp{@,{c}} (@samp{c} with cedilla) has -code 231 in the standard Latin-1 character set, but the corresponding -DOS codepage 850 uses code 135 for this glyph.} - -@cindex mode line @r{(MS-DOS)} - All the @code{cp@var{nnn}} coding systems use the letter @samp{D} (for -``DOS'') as their mode-line mnemonic. Since both the terminal coding -system and the default coding system for file I/O are set to the proper -@code{cp@var{nnn}} coding system at startup, it is normal for the mode -line on MS-DOS to begin with @samp{-DD\-}. @xref{Mode Line}. -Far-Eastern DOS terminals do not use the @code{cp@var{nnn}} coding -systems, and thus their initial mode line looks like the Emacs default. - - Since the codepage number also indicates which script you are using, -Emacs automatically runs @code{set-language-environment} to select the -language environment for that script (@pxref{Language Environments}). - - If a buffer contains a character belonging to some other ISO 8859 -character set, not the one that the chosen DOS codepage supports, Emacs -displays it using a sequence of @acronym{ASCII} characters. For example, if the -current codepage doesn't have a glyph for the letter @samp{@`o} (small -@samp{o} with a grave accent), it is displayed as @samp{@{`o@}}, where -the braces serve as a visual indication that this is a single character. -(This may look awkward for some non-Latin characters, such as those from -Greek or Hebrew alphabets, but it is still readable by a person who -knows the language.) Even though the character may occupy several -columns on the screen, it is really still just a single character, and -all Emacs commands treat it as one. - -@cindex IBM graphics characters (MS-DOS) -@cindex box-drawing characters (MS-DOS) -@cindex line-drawing characters (MS-DOS) - Not all characters in DOS codepages correspond to ISO 8859 -characters---some are used for other purposes, such as box-drawing -characters and other graphics. Emacs maps these characters to two -special character sets called @code{eight-bit-control} and -@code{eight-bit-graphic}, and displays them as their IBM glyphs. -However, you should be aware that other systems might display these -characters differently, so you should avoid them in text that might be -copied to a different operating system, or even to another DOS machine -that uses a different codepage. - -@vindex dos-unsupported-character-glyph - Emacs supports many other characters sets aside from ISO 8859, but it -cannot display them on MS-DOS. So if one of these multibyte characters -appears in a buffer, Emacs on MS-DOS displays them as specified by the -@code{dos-unsupported-character-glyph} variable; by default, this glyph -is an empty triangle. Use the @kbd{C-u C-x =} command to display the -actual code and character set of such characters. @xref{Position Info}. - -@findex codepage-setup - By default, Emacs defines a coding system to support the current -codepage. To define a coding system for some other codepage (e.g., to -visit a file written on a DOS machine in another country), use the -@kbd{M-x codepage-setup} command. It prompts for the 3-digit code of -the codepage, with completion, then creates the coding system for the -specified codepage. You can then use the new coding system to read and -write files, but you must specify it explicitly for the file command -when you want to use it (@pxref{Text Coding}). - - These coding systems are also useful for visiting a file encoded using -a DOS codepage, using Emacs running on some other operating system. - -@cindex MS-Windows codepages - MS-Windows provides its own codepages, which are different from the -DOS codepages for the same locale. For example, DOS codepage 850 -supports the same character set as Windows codepage 1252; DOS codepage -855 supports the same character set as Windows codepage 1251, etc. -The MS-Windows version of Emacs uses the current codepage for display -when invoked with the @samp{-nw} option. Support for codepages in the -Windows port of Emacs is part of the @file{code-pages.el} package. - -@node MS-DOS Processes -@section Subprocesses on MS-DOS - -@cindex compilation under MS-DOS -@cindex inferior processes under MS-DOS -@findex compile @r{(MS-DOS)} -@findex grep @r{(MS-DOS)} - Because MS-DOS is a single-process ``operating system,'' -asynchronous subprocesses are not available. In particular, Shell -mode and its variants do not work. Most Emacs features that use -asynchronous subprocesses also don't work on MS-DOS, including -Shell mode and GUD. When in doubt, try and see; commands that -don't work output an error message saying that asynchronous processes -aren't supported. - - Compilation under Emacs with @kbd{M-x compile}, searching files with -@kbd{M-x grep} and displaying differences between files with @kbd{M-x -diff} do work, by running the inferior processes synchronously. This -means you cannot do any more editing until the inferior process -finishes. - - Spell checking also works, by means of special support for synchronous -invocation of the @code{ispell} program. This is slower than the -asynchronous invocation on other platforms - - Instead of the Shell mode, which doesn't work on MS-DOS, you can use -the @kbd{M-x eshell} command. This invokes the Eshell package that -implements a Posix-like shell entirely in Emacs Lisp. - - By contrast, Emacs compiled as a native Windows application -@strong{does} support asynchronous subprocesses. @xref{Windows -Processes}. - -@cindex printing under MS-DOS - Printing commands, such as @code{lpr-buffer} (@pxref{Printing}) and -@code{ps-print-buffer} (@pxref{PostScript}), work in MS-DOS by sending -the output to one of the printer ports. @xref{MS-DOS Printing}. - - When you run a subprocess synchronously on MS-DOS, make sure the -program terminates and does not try to read keyboard input. If the -program does not terminate on its own, you will be unable to terminate -it, because MS-DOS provides no general way to terminate a process. -Pressing @kbd{C-c} or @kbd{C-@key{BREAK}} might sometimes help in these -cases. - - Accessing files on other machines is not supported on MS-DOS. Other -network-oriented commands such as sending mail, Web browsing, remote -login, etc., don't work either, unless network access is built into -MS-DOS with some network redirector. - -@cindex directory listing on MS-DOS -@vindex dired-listing-switches @r{(MS-DOS)} - Dired on MS-DOS uses the @code{ls-lisp} package where other -platforms use the system @code{ls} command. Therefore, Dired on -MS-DOS supports only some of the possible options you can mention in -the @code{dired-listing-switches} variable. The options that work are -@samp{-A}, @samp{-a}, @samp{-c}, @samp{-i}, @samp{-r}, @samp{-S}, -@samp{-s}, @samp{-t}, and @samp{-u}. - @node Windows Processes @section Subprocesses on Windows 9X/ME and Windows NT/2K diff -r 58d60e878200 -r 601830ae280c man/mule.texi --- a/man/mule.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/mule.texi Sun Apr 09 22:40:34 2006 +0000 @@ -605,7 +605,7 @@ @key{RET}}@footnote{ In the MS-DOS port of Emacs, you need to create a @code{cp@var{nnn}} coding system with @kbd{M-x codepage-setup}, before you can use it. -@xref{MS-DOS and MULE}.}. +@xref{MS-DOS and MULE,,,emacs-extra,Specialized Emacs Features}.}. In addition to converting various representations of non-@acronym{ASCII} characters, a coding system can perform end-of-line conversion. Emacs diff -r 58d60e878200 -r 601830ae280c man/trouble.texi --- a/man/trouble.texi Sun Apr 09 19:56:27 2006 +0000 +++ b/man/trouble.texi Sun Apr 09 22:40:34 2006 +0000 @@ -58,7 +58,8 @@ like @kbd{C-g}. The reason is that it is not feasible, on MS-DOS, to recognize @kbd{C-g} while a command is running, between interactions with the user. By contrast, it @emph{is} feasible to recognize -@kbd{C-@key{BREAK}} at all times. @xref{MS-DOS Keyboard}. +@kbd{C-@key{BREAK}} at all times. @xref{MS-DOS Keyboard,,,emacs-xtra, +Specialized Emacs Features}. @findex keyboard-quit @kbd{C-g} works by setting the variable @code{quit-flag} to @code{t}