# HG changeset patch # User Dave Love # Date 947114052 0 # Node ID ac3a8cb1ce253561e8e3f742d461ef7811d0b6d0 # Parent b6dec656215341a3d2f88695771e2409cc036c7d PostScript <- Postscript. Add bothner's Term doc. Mention Handwrite. Add crisp-mode, scroll-all-mode, pc-bindings-mode, pc-selection-mode, wordstar-mode, 5x5, lm, life, solitaire, tetris, snake. diff -r b6dec6562153 -r ac3a8cb1ce25 man/misc.texi --- a/man/misc.texi Wed Jan 05 23:08:00 2000 +0000 +++ b/man/misc.texi Wed Jan 05 23:14:12 2000 +0000 @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc. +@c Copyright (C) 1985, 86, 87, 93-95, 97, 2000 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex @chapter Miscellaneous Commands @@ -319,6 +319,10 @@ @item M-x shell Run a subshell with input and output through an Emacs buffer. You can then give commands interactively. +@item M-x term +Run a subshell with input and output through an Emacs buffer. +You can then give commands interactively. +Full terminal emulation is available. @end table @menu @@ -327,6 +331,9 @@ * Shell Mode:: Special Emacs commands used with permanent shell. * History: Shell History. Repeating previous commands in a shell buffer. * Options: Shell Options. Options for customizing Shell mode. +* Terminal emulator:: An Emacs window as a terminal emulator. +* Term Mode:: Special Emacs commands used in Term mode. +* Paging in Term:: Paging in the terminal emulator. * Remote Host:: Connecting to another computer. @end menu @@ -898,6 +905,109 @@ (@code{shell-pushd-dunique}). The values you choose should match the underlying shell, of course. +@node Terminal emulator +@subsection Interactive Inferior Shell with Terminal Emulator +@findex term + + To run a subshell in a terminal emulator, putting its typescript in an Emacs +buffer, use @kbd{M-x term}. This creates (or reuses) a buffer named +@samp{*term*} and runs a subshell with input coming from your keyboard and +output going to that buffer. + +All the normal keys that you type are sent without any interpretation +by Emacs directly to the subshell, as ``terminal input''. +Any ``echo'' of your input is the responsibility of the subshell. +(The exception is the terminal escape character, +which by default is @kbd{C-c}. @xref{Term Mode}.) +Any ``terminal output'' from the subshell goes into the buffer, +advancing point. + + Some programs (such as Emacs itself) need to control the +appearance on the terminal screen in detail. They do this by +sending special control codes. The exact control +codes needed vary from terminal to terminal, but nowadays +most terminals and terminal emulators (including @code{xterm}) +understand the ANSI-standard (VT100-style) escape sequences. +Term mode also understands these escape sequences, +and for each control code does the appropriate thing +to change the buffer so that the appearance of the window +matches what it would be on a real terminal. +Thus you can actually run Emacs inside an Emacs Term window! + + Emacs does not wait for the subshell to do anything. You can switch +windows or buffers and edit them while the shell is waiting, or while +it is running a command. Output from the subshell waits until Emacs +has time to process it; this happens whenever Emacs is waiting for +keyboard input or for time to elapse. + + To make multiple terminal emulators, rename the buffer @samp{*term*} +to something different using @kbd{M-x rename-uniquely}, +just as with Shell mode. + + The file name used to load the subshell is determined +the same way as for Shell mode. + +Unlike Shell mode, Term mode does not track the current directory +by examining your input. Instead, if you use a programmable +shell, you can have it tell Term what the current directory is. +This is done automatically by @code{bash} version 1.15 and later. + +@node Term Mode +@subsection Term Mode +@cindex Term mode +@cindex mode, Term + + Term uses Term mode, which has two input modes: +In line mode, Term basically acts like Shell mode. @xref{Shell Mode}. +In Char mode, each character is sent directly to the inferior subshell, +except for the Term escape character, normally @kbd{C-c}. + +To switch between line and char mode, use these commands: +@table @kbd +@kindex C-c C-k @r{(Term mode)} +@findex term-char-mode +@item C-c C-k +Switch to line mode. Do nothing if already in line mode. + +@kindex C-c C-j @r{(Term mode)} +@findex term-line-mode +@item C-c C-j +Switch to char mode. Do nothing if already in char mode. +@end table + +The following commands are only available in Char mode: +@table @kbd +@item C-c C-c +Send a literal @key{C-c} to the sub-shell. + +@item C-c C-x +A prefix command to access the global @key{C-x} commands conveniently. +For example, @kbd{C-c C-x o} invokes the global binding of +@kbd{C-x o}, which is normally @samp{other-window}. +@end table + +@node Paging in Term +@subsection Paging in the terminal emulator + +Term mode has a pager feature. When the pager is enabled, +term mode will pause at the end of each screenful. + +@table @kbd +@kindex C-c C-q @r{(Term mode)} +@findex term-pager-toggle +@item C-c C-q +Toggles the pager feature: Disables the pager if it is enabled, +and vice versa. This works in both line and char modes. +If the pager enabled, the mode-line contains the word @samp{page}. +@end table + +If the pager is enabled, and Term receives more than a screenful +of output since your last input, Term will enter More break mode. +This is indicated by @samp{**MORE**} in the mode-line. +Type a @kbd{Space} to display the next screenful of output. +Type @kbd{?} to see your other options. The interface is similar +to the Unix @code{more} program. + @node Remote Host @subsection Remote Host Shell @cindex remote host @@ -905,7 +1015,37 @@ @cindex Telnet @cindex Rlogin - Emacs provides two commands for logging in to another computer + You can login to a remote computer, using whatever commands you +would from a regular terminal (e.g.@: using the @code{telnet} or +@code{rlogin} commands), from a Term window. + +A program that asks you for a password will normally suppress +echoing of the password, so the password will not show up in the buffer. +This will happen just as if you were using a real terminal, if +the buffer is in char mode. If it is in line mode, the password +will be temporarily visible, but will be erased when you hit return. +(This happens automatically; there is no special password processing.) + +When you log in to a different machine, you need to specify the +type of terminal your using. Terminal types @samp{ansi} +or @samp{vt100} will work on most systems. + +@c If you are talking to a Bourne-compatible +@c shell, and your system understands the @code{TERMCAP} variable, +@c you can use the command @kbd{M-x shell-send-termcap}, which +@c sends a string specifying the terminal type and size. +@c (This command is also useful after the window has changed size.) + +@c You can of course run @samp{gdb} on that remote computer. One useful +@c trick: If you invoke gdb with the @code{--fullname} option, +@c it will send special commands to Emacs that will cause Emacs to +@c pop up the source files you're debugging. This will work +@c whether or not gdb is running on a different computer than Emacs, +@c as long as Emacs can access the source files specified by gdb. + +You cannot log into to a remove comuter using the Shell mode. +@c (This will change when Shell is re-written to use Term.) +Instead, Emacs provides two commands for logging in to another computer and communicating with it through an Emacs buffer. @table @kbd @@ -1063,7 +1203,7 @@ as you like to edit the files in Emacs.) -@node Hardcopy, Postscript, Emacs Server, Top +@node Hardcopy, PostScript, Emacs Server, Top @section Hardcopy Output @cindex hardcopy @@ -1117,43 +1257,45 @@ @code{lpr-add-switches} should be @code{nil} if your printer program is not compatible with @code{lpr}. -@node Postscript, Postscript Variables, Hardcopy, Top -@section Postscript Hardcopy +@node PostScript, PostScript Variables, Hardcopy, Top +@section PostScript Hardcopy - These commands convert buffer contents to Postscript, + These commands convert buffer contents to PostScript, either printing it or leaving it in another Emacs buffer. @table @kbd @item M-x ps-print-buffer -Print hardcopy of the current buffer in Postscript form. +Print hardcopy of the current buffer in PostScript form. @item M-x ps-print-region -Print hardcopy of the current region in Postscript form. +Print hardcopy of the current region in PostScript form. @item M-x ps-print-buffer-with-faces -Print hardcopy of the current buffer in Postscript form, showing the -faces used in the text by means of Postscript features. +Print hardcopy of the current buffer in PostScript form, showing the +faces used in the text by means of PostScript features. @item M-x ps-print-region-with-faces -Print hardcopy of the current region in Postscript form, showing the +Print hardcopy of the current region in PostScript form, showing the faces used in the text. @item M-x ps-spool-buffer -Generate Postscript for the current buffer text. +Generate PostScript for the current buffer text. @item M-x ps-spool-region -Generate Postscript for the current region. +Generate PostScript for the current region. @item M-x ps-spool-buffer-with-faces -Generate Postscript for the current buffer, showing the faces used. +Generate PostScript for the current buffer, showing the faces used. @item M-x ps-spool-region-with-faces -Generate Postscript for the current region, showing the faces used. +Generate PostScript for the current region, showing the faces used. +@item M-x handwrite +Generates/prints PostScript for the current buffer as if handwritten. @end table @findex ps-print-region @findex ps-print-buffer @findex ps-print-region-with-faces @findex ps-print-buffer-with-faces - The Postscript commands, @code{ps-print-buffer} and -@code{ps-print-region}, print buffer contents in Postscript form. One + The PostScript commands, @code{ps-print-buffer} and +@code{ps-print-region}, print buffer contents in PostScript form. One command prints the entire buffer; the other, just the region. The corresponding @samp{-with-faces} commands, @code{ps-print-buffer-with-faces} and @code{ps-print-region-with-faces}, -use Postscript features to show the faces (fonts and colors) in the text +use PostScript features to show the faces (fonts and colors) in the text properties of the text being printed. If you are using a color display, you can print a buffer of program @@ -1165,20 +1307,26 @@ @findex ps-spool-region-with-faces @findex ps-spool-buffer-with-faces The commands whose names have @samp{spool} instead of @samp{print} -generate the Postscript output in an Emacs buffer instead of sending +generate the PostScript output in an Emacs buffer instead of sending it to the printer. +@findex handwrite +@cindex handwriting +@kbd{M-x handwrite} is more frivolous. It generates a PostScript +rendition of the current buffer as a cursive handwritten document. It +can be customized in group @code{handwrite}. + @ifinfo The following section describes variables for customizing these commands. @end ifinfo -@node Postscript Variables, Sorting, Postscript, Top -@section Variables for Postscript Hardcopy +@node PostScript Variables, Sorting, PostScript, Top +@section Variables for PostScript Hardcopy @vindex ps-lpr-command @vindex ps-lpr-switches @vindex ps-printer-name - All the Postscript hardcopy commands use the variables + All the PostScript hardcopy commands use the variables @code{ps-lpr-command} and @code{ps-lpr-switches} to specify how to print the output. @code{ps-lpr-command} specifies the command name to run, @code{ps-lpr-switches} specifies command line options to use, and @@ -1227,7 +1375,7 @@ Many other customization variables for these commands are defined and described in the Lisp file @file{ps-print.el}. -@node Sorting, Narrowing, Postscript Variables, Top +@node Sorting, Narrowing, PostScript Variables, Top @section Sorting Text @cindex sorting @@ -1683,11 +1831,31 @@ @cindex other editors @cindex EDT @cindex vi +@cindex CRiSP +@cindex Brief +@cindex PC keybindings +@cindex scrolling all windows +@cindex PC selecion +@cindex Motif keybindings +@cindex Macintosh keybindings +@cindex WordStar GNU Emacs can be programmed to emulate (more or less) most other editors. Standard facilities can emulate these: @table @asis +@item CRiSP/Brief (PC editor) +@findex crisp-mode +@vindex crisp-override-meta-x +@findex scroll-all-mode +Turn on keybindings to emulate the CRiSP/Brief editor with @kbd{M-x +crisp-mode}. Note that this rebinds @kbd{M-x} to exit Emacs unless you +change the user option @code{crisp-override-meta-x}. You can also load +the @code{scroll-all} package to emulate CRiSP's scroll-all feature +(scrolling all windows together). Do thsi either with @kbd{M-x +scroll-all-mode} or set the user option @code{crisp-load-scroll-all} to +load it along with @code{crisp-mode}. + @item EDT (DEC VMS editor) @findex edt-emulation-on @findex edt-emulation-off @@ -1699,6 +1867,37 @@ are done in the global keymap, so there is no problem switching buffers or major modes while in EDT emulation. +@item `PC' bindings +@findex pc-bindings-mode +@kbd{M-x pc-bindings-mode} sets up certain key bindings for `PC +compatibility'---what people are often used to on PCs---as follows: +@kbd{Delete} and its variants) delete forward instead of backward, +@kbd{C-Backspace} kills backward a word (as @kbd{C-Delete} normally +would), @kbd{M-Backspace} does undo, @kbd{Home} and @kbd{End} move to +beginning and end of line, @kbd{C-Home} and @kbd{C-End} move to +beginning and end of buffer and @kbd{C-Escape} does @code{list-buffers}. + +@item PC selection mode +@findex pc-selection-mode +@kbd{M-x pc-selction-mode} emulates the mark, copy, cut and paste +look-and-feel of Motif programs (which is the same as the Macintosh GUI +and MS-Windows). It makes the keybindings of PC mode and also modifies +the bindings of the cursor keys and the @kbd{next}, @kbd{prior}, +@kbd{home} and @kbd{end} keys. It does not provide the full set of CUA +keybindings---the fundamental Emacs keys @kbd{C-c}, @kbd{C-v} and +@kbd{C-x} are not rebound. + +The standard keys for moving around (@kbd{right}, @kbd{left}, @kbd{up}, +@kbd{down}, @kbd{home}, @kbd{end}, @kbd{prior}, @kbd{next}, called +``move-keys'') will always de-activate the mark. Using @kbd{Shift} +together with the ``move keys'' activates the region over which they +move. The copy, cut and paste functions (as in many other programs) +operate on the active region, bound to @kbd{C-insert}, @kbd{S-delete} +and @kbd{S-insert} respectively. + +The @code{s-region} package provides similar, but less complete, +facilities. + @item vi (Berkeley editor) @findex viper-mode Viper is the newest emulator for vi. It implements several levels of @@ -1736,6 +1935,11 @@ not use it. @inforef{Top, VIP, vip}, for full information. + +@item WordStar (old wordprocessor) +@findex wordstar-mode +@kbd{M-x wordstar-mode} provides a major mode with WordStar-like +keybindings. @end table @node Dissociated Press, Amusements, Emulation, Top @@ -1802,7 +2006,6 @@ @findex hanoi @findex yow @findex gomoku -@findex mpuz @cindex tower of Hanoi If you are a little bit bored, you can try @kbd{M-x hanoi}. If you are @@ -1815,18 +2018,41 @@ @findex blackbox @findex mpuz +@findex 5x5 @cindex puzzles - @kbd{M-x blackbox} and @kbd{M-x mpuz} are two kinds of puzzles. + @kbd{M-x blackbox}, @kbd{M-x mpuz} and @kbd{M-x 5x5} are kinds of puzzles. @code{blackbox} challenges you to determine the location of objects inside a box by tomography. @code{mpuz} displays a multiplication puzzle with letters standing for digits in a code that you must guess---to guess a value, type a letter and then the digit you think it -stands for. +stands for. The aim of @code{5x5} is to fill in all the squares. @findex dunnet @kbd{M-x dunnet} runs an adventure-style exploration game, which is a bigger sort of puzzle. +@findex lm +@cindex landmark game +@kbd{M-x lm} runs a relatively non-participatory game in which a robot +attempts to maneuver towards a tree at the center of the window based on +unique olfactory cues from each of the four directions. + +@findex life +@cindex Life +@kbd{M-x life} runs Conway's `Life' cellular automaton. + +@findex solitaire +@cindex solitaire +@kbd{M-x solitaire} plays a game of solitaire in which you jump pegs +across other pegs. + +@findex tetris +@cindex Tetris +@kbd{M-x tetris} runs an implementation of the well-known Tetris game. +@findex snake +@cindex Snake +Likewise, @kbd{M-x snake} provides an implementation of Snake. + When you are frustrated, try the famous Eliza program. Just do @kbd{M-x doctor}. End each input by typing @key{RET} twice.