*** empty log message ***
[emacs.git] / man / misc.texi
blobd3aa352d0916ce986f1b871582d09d4590e24a3b
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001, 2004
3 @c   Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @iftex
6 @chapter Miscellaneous Commands
8   This chapter contains several brief topics that do not fit anywhere
9 else: reading netnews, running shell commands and shell subprocesses,
10 using a single shared Emacs for utilities that expect to run an editor
11 as a subprocess, printing hardcopy, sorting text, narrowing display to
12 part of the buffer, editing double-column files and binary files, saving
13 an Emacs session for later resumption, emulating other editors, and
14 various diversions and amusements.
16 @end iftex
18 @ifnottex
19 @raisesections
20 @end ifnottex
22 @node Gnus, Shell, Calendar/Diary, Top
23 @section Gnus
24 @cindex Gnus
25 @cindex reading netnews
27 Gnus is an Emacs package primarily designed for reading and posting
28 Usenet news.  It can also be used to read and respond to messages from a
29 number of other sources---mail, remote directories, digests, and so on.
31 Here we introduce Gnus and describe several basic features.
32 @ifinfo
33 For full details, see @ref{Top, Gnus,, gnus, The Gnus Manual}.
34 @end ifinfo
35 @iftex
36 For full details on Gnus, type @kbd{M-x info} and then select the Gnus
37 manual.
38 @end iftex
40 @findex gnus
41 To start Gnus, type @kbd{M-x gnus @key{RET}}.
43 @menu
44 * Buffers of Gnus::     The group, summary, and article buffers.
45 * Gnus Startup::        What you should know about starting Gnus.
46 * Summary of Gnus::     A short description of the basic Gnus commands.
47 @end menu
49 @node Buffers of Gnus
50 @subsection Gnus Buffers
52 As opposed to most normal Emacs packages, Gnus uses a number of
53 different buffers to display information and to receive commands.  The
54 three buffers users spend most of their time in are the @dfn{group
55 buffer}, the @dfn{summary buffer} and the @dfn{article buffer}.
57 The @dfn{group buffer} contains a list of groups.  This is the first
58 buffer Gnus displays when it starts up.  It normally displays only the
59 groups to which you subscribe and that contain unread articles.  Use
60 this buffer to select a specific group.
62 The @dfn{summary buffer} lists one line for each article in a single
63 group.  By default, the author, the subject and the line number are
64 displayed for each article, but this is customizable, like most aspects
65 of Gnus display.  The summary buffer is created when you select a group
66 in the group buffer, and is killed when you exit the group.  Use this
67 buffer to select an article.
69 The @dfn{article buffer} displays the article.  In normal Gnus usage,
70 you don't select this buffer---all useful article-oriented commands work
71 in the summary buffer.  But you can select the article buffer, and
72 execute all Gnus commands from that buffer, if you want to.
74 @node Gnus Startup
75 @subsection When Gnus Starts Up
77 At startup, Gnus reads your @file{.newsrc} news initialization file
78 and attempts to communicate with the local news server, which is a
79 repository of news articles.  The news server need not be the same
80 computer you are logged in on.
82 If you start Gnus and connect to the server, but do not see any
83 newsgroups listed in the group buffer, type @kbd{L} or @kbd{A k} to get
84 a listing of all the groups.  Then type @kbd{u} to toggle
85 subscription to groups.
87 The first time you start Gnus, Gnus subscribes you to a few selected
88 groups.  All other groups start out as @dfn{killed groups} for you; you
89 can list them with @kbd{A k}.  All new groups that subsequently come to
90 exist at the news server become @dfn{zombie groups} for you; type @kbd{A
91 z} to list them.  You can subscribe to a group shown in these lists
92 using the @kbd{u} command.
94 When you quit Gnus with @kbd{q}, it automatically records in your
95 @file{.newsrc} and @file{.newsrc.eld} initialization files the
96 subscribed or unsubscribed status of all groups.  You should normally
97 not edit these files manually, but you may if you know how.
99 @node Summary of Gnus
100 @subsection Summary of Gnus Commands
102 Reading news is a two-step process:
104 @enumerate
105 @item
106 Choose a group in the group buffer.
108 @item
109 Select articles from the summary buffer.  Each article selected is
110 displayed in the article buffer in a large window, below the summary
111 buffer in its small window.
112 @end enumerate
114   Each Gnus buffer has its own special commands; however, the meanings
115 of any given key in the various Gnus buffers are usually analogous, even
116 if not identical.  Here are commands for the group and summary buffers:
118 @table @kbd
119 @kindex q @r{(Gnus Group mode)}
120 @findex gnus-group-exit
121 @item q
122 In the group buffer, update your @file{.newsrc} initialization file
123 and quit Gnus.
125 In the summary buffer, exit the current group and return to the
126 group buffer.  Thus, typing @kbd{q} twice quits Gnus.
128 @kindex L @r{(Gnus Group mode)}
129 @findex gnus-group-list-all-groups
130 @item L
131 In the group buffer, list all the groups available on your news
132 server (except those you have killed).  This may be a long list!
134 @kindex l @r{(Gnus Group mode)}
135 @findex gnus-group-list-groups
136 @item l
137 In the group buffer, list only the groups to which you subscribe and
138 which contain unread articles.
140 @kindex u @r{(Gnus Group mode)}
141 @findex gnus-group-unsubscribe-current-group
142 @cindex subscribe groups
143 @cindex unsubscribe groups
144 @item u
145 In the group buffer, unsubscribe from (or subscribe to) the group listed
146 in the line that point is on.  When you quit Gnus by typing @kbd{q},
147 Gnus lists in your @file{.newsrc} file which groups you have subscribed
148 to.  The next time you start Gnus, you won't see this group,
149 because Gnus normally displays only subscribed-to groups.
151 @kindex C-k @r{(Gnus)}
152 @findex gnus-group-kill-group
153 @item C-k
154 In the group buffer, ``kill'' the current line's group---don't
155 even list it in @file{.newsrc} from now on.  This affects future
156 Gnus sessions as well as the present session.
158 When you quit Gnus by typing @kbd{q}, Gnus writes information
159 in the file @file{.newsrc} describing all newsgroups except those you
160 have ``killed.''
162 @kindex SPC @r{(Gnus)}
163 @findex gnus-group-read-group
164 @item @key{SPC}
165 In the group buffer, select the group on the line under the cursor
166 and display the first unread article in that group.
168 @need 1000
169 In the summary buffer,
171 @itemize @bullet
172 @item
173 Select the article on the line under the cursor if none is selected.
175 @item
176 Scroll the text of the selected article (if there is one).
178 @item
179 Select the next unread article if at the end of the current article.
180 @end itemize
182 Thus, you can move through all the articles by repeatedly typing @key{SPC}.
184 @kindex DEL @r{(Gnus)}
185 @item @key{DEL}
186 In the group buffer, move point to the previous group containing
187 unread articles.
189 @findex gnus-summary-prev-page
190 In the summary buffer, scroll the text of the article backwards.
192 @kindex n @r{(Gnus)}
193 @findex gnus-group-next-unread-group
194 @findex gnus-summary-next-unread-article
195 @item n
196 Move point to the next unread group, or select the next unread article.
198 @kindex p @r{(Gnus)}
199 @findex gnus-group-prev-unread-group
200 @findex gnus-summary-prev-unread-article
201 @item p
202 Move point to the previous unread group, or select the previous
203 unread article.
205 @kindex C-n @r{(Gnus Group mode)}
206 @findex gnus-group-next-group
207 @kindex C-p @r{(Gnus Group mode)}
208 @findex gnus-group-prev-group
209 @kindex C-n @r{(Gnus Summary mode)}
210 @findex gnus-summary-next-subject
211 @kindex C-p @r{(Gnus Summary mode)}
212 @findex gnus-summary-prev-subject
213 @item C-n
214 @itemx C-p
215 Move point to the next or previous item, even if it is marked as read.
216 This does not select the article or group on that line.
218 @kindex s @r{(Gnus Summary mode)}
219 @findex gnus-summary-isearch-article
220 @item s
221 In the summary buffer, do an incremental search of the current text in
222 the article buffer, just as if you switched to the article buffer and
223 typed @kbd{C-s}.
225 @kindex M-s @r{(Gnus Summary mode)}
226 @findex gnus-summary-search-article-forward
227 @item M-s @var{regexp} @key{RET}
228 In the summary buffer, search forward for articles containing a match
229 for @var{regexp}.
231 @end table
233 @ignore
234 @node Where to Look
235 @subsection Where to Look Further
237 @c Too many references to the name of the manual if done with xref in TeX!
238 Gnus is powerful and customizable.  Here are references to a few
239 @ifinfo
240 additional topics:
242 @end ifinfo
243 @iftex
244 additional topics in @cite{The Gnus Manual}:
246 @itemize @bullet
247 @item
248 Follow discussions on specific topics.@*
249 See section ``Threading.''
251 @item
252 Read digests.  See section ``Document Groups.''
254 @item
255 Refer to and jump to the parent of the current article.@*
256 See section ``Finding the Parent.''
258 @item
259 Refer to articles by using Message-IDs included in the messages.@*
260 See section ``Article Keymap.''
262 @item
263 Save articles.  See section ``Saving Articles.''
265 @item
266 Have Gnus score articles according to various criteria, like author
267 name, subject, or string in the body of the articles.@*
268 See section ``Scoring.''
270 @item
271 Send an article to a newsgroup.@*
272 See section ``Composing Messages.''
273 @end itemize
274 @end iftex
275 @ifinfo
276 @itemize @bullet
277 @item
278 Follow discussions on specific topics.@*
279 @xref{Threading, , Reading Based on Conversation Threads,
280 gnus, The Gnus Manual}.
282 @item
283 Read digests. @xref{Document Groups, , , gnus, The Gnus Manual}.
285 @item
286 Refer to and jump to the parent of the current article.@*
287 @xref{Finding the Parent, , , gnus, The Gnus Manual}.
289 @item
290 Refer to articles by using Message-IDs included in the messages.@*
291 @xref{Article Keymap, , , gnus, The Gnus Manual}.
293 @item
294 Save articles. @xref{Saving Articles, , , gnus, The Gnus Manual}.
296 @item
297 Have Gnus score articles according to various criteria, like author
298 name, subject, or string in the body of the articles.@*
299 @xref{Scoring, , , gnus, The Gnus Manual}.
301 @item
302 Send an article to a newsgroup.@*
303 @xref{Composing Messages, , , gnus, The Gnus Manual}.
304 @end itemize
305 @end ifinfo
306 @end ignore
308 @node Shell, Emacs Server, Gnus, Top
309 @section Running Shell Commands from Emacs
310 @cindex subshell
311 @cindex shell commands
313   Emacs has commands for passing single command lines to inferior shell
314 processes; it can also run a shell interactively with input and output
315 to an Emacs buffer named @samp{*shell*} or run a shell inside a terminal
316 emulator window.
318 There is a shell implemented entirely in Emacs, documented in a separate
319 manual.  @xref{Top,Eshell,Eshell, eshell, Eshell: The Emacs Shell}.
321 @table @kbd
322 @item M-! @var{cmd} @key{RET}
323 Run the shell command line @var{cmd} and display the output
324 (@code{shell-command}).
325 @item M-| @var{cmd} @key{RET}
326 Run the shell command line @var{cmd} with region contents as input;
327 optionally replace the region with the output
328 (@code{shell-command-on-region}).
329 @item M-x shell
330 Run a subshell with input and output through an Emacs buffer.
331 You can then give commands interactively.
332 @item M-x term
333 Run a subshell with input and output through an Emacs buffer.
334 You can then give commands interactively.
335 Full terminal emulation is available.
336 @item M-x eshell
337 @findex eshell
338 Start the Emacs shell.
339 @end table
341 @menu
342 * Single Shell::           How to run one shell command and return.
343 * Interactive Shell::      Permanent shell taking input via Emacs.
344 * Shell Mode::             Special Emacs commands used with permanent shell.
345 * History: Shell History.  Repeating previous commands in a shell buffer.
346 * Directory Tracking::     Keeping track when the subshell changes directory.
347 * Options: Shell Options.  Options for customizing Shell mode.
348 * Terminal emulator::      An Emacs window as a terminal emulator.
349 * Term Mode::              Special Emacs commands used in Term mode.
350 * Paging in Term::         Paging in the terminal emulator.
351 * Remote Host::            Connecting to another computer.
352 @end menu
354 @node Single Shell
355 @subsection Single Shell Commands
357 @kindex M-!
358 @findex shell-command
359   @kbd{M-!} (@code{shell-command}) reads a line of text using the
360 minibuffer and executes it as a shell command in a subshell made just
361 for that command.  Standard input for the command comes from the null
362 device.  If the shell command produces any output, the output appears
363 either in the echo area (if it is short), or in an Emacs buffer named
364 @samp{*Shell Command Output*}, which is displayed in another window
365 but not selected (if the output is long).
367   For instance, one way to decompress a file @file{foo.gz} from Emacs
368 is to type @kbd{M-! gunzip foo.gz @key{RET}}.  That shell command
369 normally creates the file @file{foo} and produces no terminal output.
371   A numeric argument, as in @kbd{M-1 M-!}, says to insert terminal
372 output into the current buffer instead of a separate buffer.  It puts
373 point before the output, and sets the mark after the output.  For
374 instance, @kbd{M-1 M-! gunzip < foo.gz @key{RET}} would insert the
375 uncompressed equivalent of @file{foo.gz} into the current buffer.
377   If the shell command line ends in @samp{&}, it runs asynchronously.
378 For a synchronous shell command, @code{shell-command} returns the
379 command's exit status (0 means success), when it is called from a Lisp
380 program.  You do not get any status information for an asynchronous
381 command, since it hasn't finished yet.
383 @kindex M-|
384 @findex shell-command-on-region
385   @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but
386 passes the contents of the region as the standard input to the shell
387 command, instead of no input.  If a numeric argument is used, meaning
388 insert the output in the current buffer, then the old region is deleted
389 first and the output replaces it as the contents of the region.  It
390 returns the command's exit status when it is called from a Lisp program.
392   One use for @kbd{M-|} is to run @code{uudecode}.  For instance, if
393 the buffer contains uuencoded text, type @kbd{C-x h M-| uudecode
394 @key{RET}} to feed the entire buffer contents to the @code{uudecode}
395 program.  That program will ignore everything except the encoded text,
396 and will store the decoded output into the file whose name is
397 specified in the encoded text.
399 @vindex shell-file-name
400   Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
401 shell to use.  This variable is initialized based on your @env{SHELL}
402 environment variable when Emacs is started.  If the file name does not
403 specify a directory, the directories in the list @code{exec-path} are
404 searched; this list is initialized based on the environment variable
405 @env{PATH} when Emacs is started.  Your @file{.emacs} file can override
406 either or both of these default initializations.@refill
408   Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete.
409 To stop waiting, type @kbd{C-g} to quit; that terminates the shell
410 command with the signal @code{SIGINT}---the same signal that @kbd{C-c}
411 normally generates in the shell.  Emacs waits until the command actually
412 terminates.  If the shell command doesn't stop (because it ignores the
413 @code{SIGINT} signal), type @kbd{C-g} again; this sends the command a
414 @code{SIGKILL} signal which is impossible to ignore.
416   To specify a coding system for @kbd{M-!} or @kbd{M-|}, use the command
417 @kbd{C-x @key{RET} c} immediately beforehand.  @xref{Specify Coding}.
419 @vindex shell-command-default-error-buffer
420   Error output from the command is normally intermixed with the regular
421 output.  If you set the variable
422 @code{shell-command-default-error-buffer} to a string, which is a buffer
423 name, error output is inserted before point in the buffer of that name.
425 @node Interactive Shell
426 @subsection Interactive Inferior Shell
428 @findex shell
429   To run a subshell interactively, putting its typescript in an Emacs
430 buffer, use @kbd{M-x shell}.  This creates (or reuses) a buffer named
431 @samp{*shell*} and runs a subshell with input coming from and output going
432 to that buffer.  That is to say, any ``terminal output'' from the subshell
433 goes into the buffer, advancing point, and any ``terminal input'' for
434 the subshell comes from text in the buffer.  To give input to the subshell,
435 go to the end of the buffer and type the input, terminated by @key{RET}.
437   Emacs does not wait for the subshell to do anything.  You can switch
438 windows or buffers and edit them while the shell is waiting, or while it is
439 running a command.  Output from the subshell waits until Emacs has time to
440 process it; this happens whenever Emacs is waiting for keyboard input or
441 for time to elapse.
443 @cindex @code{comint-highlight-input} face
444 @cindex @code{comint-highlight-prompt} face
445   Input lines, once you submit them, are displayed using the face
446 @code{comint-highlight-input}, and prompts are displayed using the
447 face @code{comint-highlight-prompt}.  This makes it easier to see
448 previous input lines in the buffer.  @xref{Faces}.
450   To make multiple subshells, you can invoke @kbd{M-x shell} with a
451 prefix argument (e.g. @kbd{C-u M-x shell}), which will read a buffer
452 name and create (or reuse) a subshell in that buffer.  You can also
453 rename the @samp{*shell*} buffer using @kbd{M-x rename-uniquely}, then
454 create a new @samp{*shell*} buffer using plain @kbd{M-x shell}.  All the
455 subshells in different buffers run independently and in parallel.
457 @vindex explicit-shell-file-name
458 @cindex environment variables for subshells
459 @cindex @env{ESHELL} environment variable
460 @cindex @env{SHELL} environment variable
461   The file name used to load the subshell is the value of the variable
462 @code{explicit-shell-file-name}, if that is non-@code{nil}.  Otherwise,
463 the environment variable @env{ESHELL} is used, or the environment
464 variable @env{SHELL} if there is no @env{ESHELL}.  If the file name
465 specified is relative, the directories in the list @code{exec-path} are
466 searched; this list is initialized based on the environment variable
467 @env{PATH} when Emacs is started.  Your @file{.emacs} file can override
468 either or both of these default initializations.
470   Emacs sends the new shell the contents of the file
471 @file{~/.emacs_@var{shellname}} as input, if it exists, where
472 @var{shellname} is the name of the file that the shell was loaded
473 from.  For example, if you use bash, the file sent to it is
474 @file{~/.emacs_bash}.
476   To specify a coding system for the shell, you can use the command
477 @kbd{C-x @key{RET} c} immediately before @kbd{M-x shell}.  You can also
478 specify a coding system after starting the shell by using @kbd{C-x
479 @key{RET} p} in the shell buffer.  @xref{Specify Coding}.
481 @cindex @env{EMACS} environment variable
482   Unless the environment variable @env{EMACS} is already defined,
483 Emacs defines it in the subshell, with value @code{t}.  A shell script
484 can check this variable to determine whether it has been run from an
485 Emacs subshell.
487 @node Shell Mode
488 @subsection Shell Mode
489 @cindex Shell mode
490 @cindex mode, Shell
492   Shell buffers use Shell mode, which defines several special keys
493 attached to the @kbd{C-c} prefix.  They are chosen to resemble the usual
494 editing and job control characters present in shells that are not under
495 Emacs, except that you must type @kbd{C-c} first.  Here is a complete list
496 of the special key bindings of Shell mode:
498 @table @kbd
499 @item @key{RET}
500 @kindex RET @r{(Shell mode)}
501 @findex comint-send-input
502 At end of buffer send line as input; otherwise, copy current line to
503 end of buffer and send it (@code{comint-send-input}).  When a line is
504 copied, any prompt at the beginning of the line (text output by
505 programs preceding your input) is omitted.  (See also the variable
506 @code{comint-use-prompt-regexp-instead-of-fields}.)
508 @item @key{TAB}
509 @kindex TAB @r{(Shell mode)}
510 @findex comint-dynamic-complete
511 Complete the command name or file name before point in the shell buffer
512 (@code{comint-dynamic-complete}).  @key{TAB} also completes history
513 references (@pxref{History References}) and environment variable names.
515 @vindex shell-completion-fignore
516 @vindex comint-completion-fignore
517 The variable @code{shell-completion-fignore} specifies a list of file
518 name extensions to ignore in Shell mode completion.  The default
519 setting is @code{nil}, but some users prefer @code{("~" "#" "%")} to
520 ignore file names ending in @samp{~}, @samp{#} or @samp{%}.  Other
521 related Comint modes use the variable @code{comint-completion-fignore}
522 instead.
524 @item M-?
525 @kindex M-? @r{(Shell mode)}
526 @findex comint-dynamic-list-filename@dots{}
527 Display temporarily a list of the possible completions of the file name
528 before point in the shell buffer
529 (@code{comint-dynamic-list-filename-completions}).
531 @item C-d
532 @kindex C-d @r{(Shell mode)}
533 @findex comint-delchar-or-maybe-eof
534 Either delete a character or send @acronym{EOF}
535 (@code{comint-delchar-or-maybe-eof}).  Typed at the end of the shell
536 buffer, @kbd{C-d} sends @acronym{EOF} to the subshell.  Typed at any other
537 position in the buffer, @kbd{C-d} deletes a character as usual.
539 @item C-c C-a
540 @kindex C-c C-a @r{(Shell mode)}
541 @findex comint-bol-or-process-mark
542 Move to the beginning of the line, but after the prompt if any
543 (@code{comint-bol-or-process-mark}).  If you repeat this command twice
544 in a row, the second time it moves back to the process mark, which is
545 the beginning of the input that you have not yet sent to the subshell.
546 (Normally that is the same place---the end of the prompt on this
547 line---but after @kbd{C-c @key{SPC}} the process mark may be in a
548 previous line.)
550 @item C-c @key{SPC}
551 Accumulate multiple lines of input, then send them together.  This
552 command inserts a newline before point, but does not send the preceding
553 text as input to the subshell---at least, not yet.  Both lines, the one
554 before this newline and the one after, will be sent together (along with
555 the newline that separates them), when you type @key{RET}.
557 @item C-c C-u
558 @kindex C-c C-u @r{(Shell mode)}
559 @findex comint-kill-input
560 Kill all text pending at end of buffer to be sent as input
561 (@code{comint-kill-input}).
563 @item C-c C-w
564 @kindex C-c C-w @r{(Shell mode)}
565 Kill a word before point (@code{backward-kill-word}).
567 @item C-c C-c
568 @kindex C-c C-c @r{(Shell mode)}
569 @findex comint-interrupt-subjob
570 Interrupt the shell or its current subjob if any
571 (@code{comint-interrupt-subjob}).  This command also kills
572 any shell input pending in the shell buffer and not yet sent.
574 @item C-c C-z
575 @kindex C-c C-z @r{(Shell mode)}
576 @findex comint-stop-subjob
577 Stop the shell or its current subjob if any (@code{comint-stop-subjob}).
578 This command also kills any shell input pending in the shell buffer and
579 not yet sent.
581 @item C-c C-\
582 @findex comint-quit-subjob
583 @kindex C-c C-\ @r{(Shell mode)}
584 Send quit signal to the shell or its current subjob if any
585 (@code{comint-quit-subjob}).  This command also kills any shell input
586 pending in the shell buffer and not yet sent.
588 @item C-c C-o
589 @kindex C-c C-o @r{(Shell mode)}
590 @findex comint-delete-output
591 Delete the last batch of output from a shell command
592 (@code{comint-delete-output}).  This is useful if a shell command spews
593 out lots of output that just gets in the way.  This command used to be
594 called @code{comint-kill-output}.
596 @item C-c C-s
597 @kindex C-c C-s @r{(Shell mode)}
598 @findex comint-write-output
599 Write the last batch of output from a shell command to a file
600 (@code{comint-write-output}).  With a prefix argument, the file is
601 appended to instead.  Any prompt at the end of the output is not
602 written.
604 @item C-c C-r
605 @itemx C-M-l
606 @kindex C-c C-r @r{(Shell mode)}
607 @kindex C-M-l @r{(Shell mode)}
608 @findex comint-show-output
609 Scroll to display the beginning of the last batch of output at the top
610 of the window; also move the cursor there (@code{comint-show-output}).
612 @item C-c C-e
613 @kindex C-c C-e @r{(Shell mode)}
614 @findex comint-show-maximum-output
615 Scroll to put the end of the buffer at the bottom of the window
616 (@code{comint-show-maximum-output}).
618 @item C-c C-f
619 @kindex C-c C-f @r{(Shell mode)}
620 @findex shell-forward-command
621 @vindex shell-command-regexp
622 Move forward across one shell command, but not beyond the current line
623 (@code{shell-forward-command}).  The variable @code{shell-command-regexp}
624 specifies how to recognize the end of a command.
626 @item C-c C-b
627 @kindex C-c C-b @r{(Shell mode)}
628 @findex shell-backward-command
629 Move backward across one shell command, but not beyond the current line
630 (@code{shell-backward-command}).
632 @item M-x dirs
633 Ask the shell what its current directory is, so that Emacs can agree
634 with the shell.
636 @item M-x send-invisible @key{RET} @var{text} @key{RET}
637 @findex send-invisible
638 Send @var{text} as input to the shell, after reading it without
639 echoing.  This is useful when a shell command runs a program that asks
640 for a password.
642 Alternatively, you can arrange for Emacs to notice password prompts
643 and turn off echoing for them, as follows:
645 @example
646 (add-hook 'comint-output-filter-functions
647           'comint-watch-for-password-prompt)
648 @end example
650 @item M-x comint-continue-subjob
651 @findex comint-continue-subjob
652 Continue the shell process.  This is useful if you accidentally suspend
653 the shell process.@footnote{You should not suspend the shell process.
654 Suspending a subjob of the shell is a completely different matter---that
655 is normal practice, but you must use the shell to continue the subjob;
656 this command won't do it.}
658 @item M-x comint-strip-ctrl-m
659 @findex comint-strip-ctrl-m
660 Discard all control-M characters from the current group of shell output.
661 The most convenient way to use this command is to make it run
662 automatically when you get output from the subshell.  To do that,
663 evaluate this Lisp expression:
665 @example
666 (add-hook 'comint-output-filter-functions
667           'comint-strip-ctrl-m)
668 @end example
670 @item M-x comint-truncate-buffer
671 @findex comint-truncate-buffer
672 This command truncates the shell buffer to a certain maximum number of
673 lines, specified by the variable @code{comint-buffer-maximum-size}.
674 Here's how to do this automatically each time you get output from the
675 subshell:
677 @example
678 (add-hook 'comint-output-filter-functions
679           'comint-truncate-buffer)
680 @end example
681 @end table
683   Shell mode also customizes the paragraph commands so that only shell
684 prompts start new paragraphs.  Thus, a paragraph consists of an input
685 command plus the output that follows it in the buffer.
687 @cindex Comint mode
688 @cindex mode, Comint
689   Shell mode is a derivative of Comint mode, a general-purpose mode for
690 communicating with interactive subprocesses.  Most of the features of
691 Shell mode actually come from Comint mode, as you can see from the
692 command names listed above.  The special features of Shell mode include
693 the directory tracking feature, and a few user commands.
695   Other Emacs features that use variants of Comint mode include GUD
696 (@pxref{Debuggers}) and @kbd{M-x run-lisp} (@pxref{External Lisp}).
698 @findex comint-run
699   You can use @kbd{M-x comint-run} to execute any program of your choice
700 in a subprocess using unmodified Comint mode---without the
701 specializations of Shell mode.
703 @node Shell History
704 @subsection Shell Command History
706   Shell buffers support three ways of repeating earlier commands.  You
707 can use the same keys used in the minibuffer; these work much as they do
708 in the minibuffer, inserting text from prior commands while point
709 remains always at the end of the buffer.  You can move through the
710 buffer to previous inputs in their original place, then resubmit them or
711 copy them to the end.  Or you can use a @samp{!}-style history
712 reference.
714 @menu
715 * Ring: Shell Ring.             Fetching commands from the history list.
716 * Copy: Shell History Copying.  Moving to a command and then copying it.
717 * History References::          Expanding @samp{!}-style history references.
718 @end menu
720 @node Shell Ring
721 @subsubsection Shell History Ring
723 @table @kbd
724 @findex comint-previous-input
725 @kindex M-p @r{(Shell mode)}
726 @item M-p
727 Fetch the next earlier old shell command.
729 @kindex M-n @r{(Shell mode)}
730 @findex comint-next-input
731 @item M-n
732 Fetch the next later old shell command.
734 @kindex M-r @r{(Shell mode)}
735 @kindex M-s @r{(Shell mode)}
736 @findex comint-previous-matching-input
737 @findex comint-next-matching-input
738 @item M-r @var{regexp} @key{RET}
739 @itemx M-s @var{regexp} @key{RET}
740 Search backwards or forwards for old shell commands that match @var{regexp}.
742 @item C-c C-x
743 @kindex C-c C-x @r{(Shell mode)}
744 @findex comint-get-next-from-history
745 Fetch the next subsequent command from the history.
747 @item C-c .
748 @kindex C-c . @r{(Shell mode)}
749 @findex comint-input-previous-argument
750 Fetch one argument from an old shell command.
752 @item C-c C-l
753 @kindex C-c C-l @r{(Shell mode)}
754 @findex comint-dynamic-list-input-ring
755 Display the buffer's history of shell commands in another window
756 (@code{comint-dynamic-list-input-ring}).
757 @end table
759   Shell buffers provide a history of previously entered shell commands.  To
760 reuse shell commands from the history, use the editing commands @kbd{M-p},
761 @kbd{M-n}, @kbd{M-r} and @kbd{M-s}.  These work just like the minibuffer
762 history commands except that they operate on the text at the end of the
763 shell buffer, where you would normally insert text to send to the shell.
765   @kbd{M-p} fetches an earlier shell command to the end of the shell buffer.
766 Successive use of @kbd{M-p} fetches successively earlier shell commands,
767 each replacing any text that was already present as potential shell input.
768 @kbd{M-n} does likewise except that it finds successively more recent shell
769 commands from the buffer.
771   The history search commands @kbd{M-r} and @kbd{M-s} read a regular
772 expression and search through the history for a matching command.  Aside
773 from the choice of which command to fetch, they work just like @kbd{M-p}
774 and @kbd{M-n}.  If you enter an empty regexp, these commands reuse the
775 same regexp used last time.
777   When you find the previous input you want, you can resubmit it by
778 typing @key{RET}, or you can edit it first and then resubmit it if you
779 wish.
781   Often it is useful to reexecute several successive shell commands that
782 were previously executed in sequence.  To do this, first find and
783 reexecute the first command of the sequence.  Then type @kbd{C-c C-x};
784 that will fetch the following command---the one that follows the command
785 you just repeated.  Then type @key{RET} to reexecute this command.  You
786 can reexecute several successive commands by typing @kbd{C-c C-x
787 @key{RET}} over and over.
789   The command @kbd{C-c .}@: (@code{comint-input-previous-argument})
790 copies an individual argument from a previous command, like @kbd{ESC
791 .} in Bash.  The simplest use copies the last argument from the
792 previous shell command.  With a prefix argument @var{n}, it copies the
793 @var{n}th argument instead.  Repeating @kbd{C-c .} copies from an
794 earlier shell command instead, always using the same value of @var{n}
795 (don't give a prefix argument when you repeat the @kbd{C-c .}
796 command).
798   These commands get the text of previous shell commands from a special
799 history list, not from the shell buffer itself.  Thus, editing the shell
800 buffer, or even killing large parts of it, does not affect the history
801 that these commands access.
803 @vindex shell-input-ring-file-name
804   Some shells store their command histories in files so that you can
805 refer to previous commands from previous shell sessions.  Emacs reads
806 the command history file for your chosen shell, to initialize its own
807 command history.  The file name is @file{~/.bash_history} for bash,
808 @file{~/.sh_history} for ksh, and @file{~/.history} for other shells.
810 @node Shell History Copying
811 @subsubsection Shell History Copying
813 @table @kbd
814 @kindex C-c C-p @r{(Shell mode)}
815 @findex comint-previous-prompt
816 @item C-c C-p
817 Move point to the previous prompt (@code{comint-previous-prompt}).
819 @kindex C-c C-n @r{(Shell mode)}
820 @findex comint-next-prompt
821 @item C-c C-n
822 Move point to the following prompt (@code{comint-next-prompt}).
824 @kindex C-c RET @r{(Shell mode)}
825 @findex comint-insert-input
826 @item C-c @key{RET}
827 Copy the input command which point is in, inserting the copy at the end
828 of the buffer (@code{comint-insert-input}).  This is useful if you
829 move point back to a previous command.  After you copy the command, you
830 can submit the copy as input with @key{RET}.  If you wish, you can
831 edit the copy before resubmitting it.
833 @item Mouse-2
834 Copy the input command that you click on, inserting the copy at the end
835 of the buffer.
836 @end table
838   Moving to a previous input and then copying it with @kbd{C-c
839 @key{RET}} or @kbd{Mouse-2} produces the same results---the same
840 buffer contents---that you would get by using @kbd{M-p} enough times
841 to fetch that previous input from the history list.  However, @kbd{C-c
842 @key{RET}} copies the text from the buffer, which can be different
843 from what is in the history list if you edit the input text in the
844 buffer after it has been sent.
846 @node History References
847 @subsubsection Shell History References
848 @cindex history reference
850   Various shells including csh and bash support @dfn{history
851 references} that begin with @samp{!} and @samp{^}.  Shell mode
852 recognizes these constructs, and can perform the history substitution
853 for you.
855   If you insert a history reference and type @key{TAB}, this searches
856 the input history for a matching command, performs substitution if
857 necessary, and places the result in the buffer in place of the history
858 reference.  For example, you can fetch the most recent command
859 beginning with @samp{mv} with @kbd{! m v @key{TAB}}.  You can edit the
860 command if you wish, and then resubmit the command to the shell by
861 typing @key{RET}.
863 @vindex comint-input-autoexpand
864 @findex comint-magic-space
865   Shell mode can optionally expand history references in the buffer
866 when you send them to the shell.  To request this, set the variable
867 @code{comint-input-autoexpand} to @code{input}.  You can make
868 @key{SPC} perform history expansion by binding @key{SPC} to the
869 command @code{comint-magic-space}.
871 @vindex shell-prompt-pattern
872 @vindex comint-prompt-regexp
873 @vindex comint-use-prompt-regexp-instead-of-fields
874 @cindex prompt, shell
875   Shell mode recognizes history references when they follow a prompt.
876 Normally, any text output by a program at the beginning of an input
877 line is considered a prompt.  However, if the variable
878 @code{comint-use-prompt-regexp-instead-of-fields} is non-@code{nil},
879 then Comint mode uses a regular expression to recognize prompts.  In
880 general, the variable @code{comint-prompt-regexp} specifies the
881 regular expression; Shell mode uses the variable
882 @code{shell-prompt-pattern} to set up @code{comint-prompt-regexp} in
883 the shell buffer.
885 @node Directory Tracking
886 @subsection Directory Tracking
887 @cindex directory tracking
889 @vindex shell-pushd-regexp
890 @vindex shell-popd-regexp
891 @vindex shell-cd-regexp
892   Shell mode keeps track of @samp{cd}, @samp{pushd} and @samp{popd}
893 commands given to the inferior shell, so it can keep the
894 @samp{*shell*} buffer's default directory the same as the shell's
895 working directory.  It recognizes these commands syntactically, by
896 examining lines of input that are sent.
898   If you use aliases for these commands, you can tell Emacs to
899 recognize them also.  For example, if the value of the variable
900 @code{shell-pushd-regexp} matches the beginning of a shell command
901 line, that line is regarded as a @code{pushd} command.  Change this
902 variable when you add aliases for @samp{pushd}.  Likewise,
903 @code{shell-popd-regexp} and @code{shell-cd-regexp} are used to
904 recognize commands with the meaning of @samp{popd} and @samp{cd}.
905 These commands are recognized only at the beginning of a shell command
906 line.
908 @ignore  @c This seems to have been deleted long ago.
909 @vindex shell-set-directory-error-hook
910   If Emacs gets an error while trying to handle what it believes is a
911 @samp{cd}, @samp{pushd} or @samp{popd} command, it runs the hook
912 @code{shell-set-directory-error-hook} (@pxref{Hooks}).
913 @end ignore
915 @findex dirs
916   If Emacs gets confused about changes in the current directory of the
917 subshell, use the command @kbd{M-x dirs} to ask the shell what its
918 current directory is.  This command works for shells that support the
919 most common command syntax; it may not work for unusual shells.
921 @findex dirtrack-mode
922   You can also use @kbd{M-x dirtrack-mode} to enable (or disable) an
923 alternative and more aggressive method of tracking changes in the
924 current directory.
926 @node Shell Options
927 @subsection Shell Mode Options
929 @vindex comint-scroll-to-bottom-on-input
930   If the variable @code{comint-scroll-to-bottom-on-input} is
931 non-@code{nil}, insertion and yank commands scroll the selected window
932 to the bottom before inserting.
934 @vindex comint-scroll-show-maximum-output
935   If @code{comint-scroll-show-maximum-output} is non-@code{nil}, then
936 arrival of output when point is at the end tries to place the last line of
937 text at the bottom line of the window, so as to show as much useful
938 text as possible.  (This mimics the scrolling behavior of many
939 terminals.)  The default is @code{nil}.
941 @vindex comint-move-point-for-output
942   By setting @code{comint-move-point-for-output}, you can opt for
943 having point jump to the end of the buffer whenever output arrives---no
944 matter where in the buffer point was before.  If the value is
945 @code{this}, point jumps in the selected window.  If the value is
946 @code{all}, point jumps in each window that shows the Comint buffer.  If
947 the value is @code{other}, point jumps in all nonselected windows that
948 show the current buffer.  The default value is @code{nil}, which means
949 point does not jump to the end.
951 @vindex comint-input-ignoredups
952   The variable @code{comint-input-ignoredups} controls whether successive
953 identical inputs are stored in the input history.  A non-@code{nil}
954 value means to omit an input that is the same as the previous input.
955 The default is @code{nil}, which means to store each input even if it is
956 equal to the previous input.
958 @vindex comint-completion-addsuffix
959 @vindex comint-completion-recexact
960 @vindex comint-completion-autolist
961   Three variables customize file name completion.  The variable
962 @code{comint-completion-addsuffix} controls whether completion inserts a
963 space or a slash to indicate a fully completed file or directory name
964 (non-@code{nil} means do insert a space or slash).
965 @code{comint-completion-recexact}, if non-@code{nil}, directs @key{TAB}
966 to choose the shortest possible completion if the usual Emacs completion
967 algorithm cannot add even a single character.
968 @code{comint-completion-autolist}, if non-@code{nil}, says to list all
969 the possible completions whenever completion is not exact.
971 @vindex shell-completion-execonly
972   Command completion normally considers only executable files.
973 If you set @code{shell-completion-execonly} to @code{nil},
974 it considers nonexecutable files as well.
976 @findex shell-pushd-tohome
977 @findex shell-pushd-dextract
978 @findex shell-pushd-dunique
979   You can configure the behavior of @samp{pushd}.  Variables control
980 whether @samp{pushd} behaves like @samp{cd} if no argument is given
981 (@code{shell-pushd-tohome}), pop rather than rotate with a numeric
982 argument (@code{shell-pushd-dextract}), and only add directories to the
983 directory stack if they are not already on it
984 (@code{shell-pushd-dunique}).  The values you choose should match the
985 underlying shell, of course.
987   If you want Shell mode to handle color output from shell commands,
988 you can enable ANSI Color mode.  Here is how to do this:
990 @example
991 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
992 @end example
994 @node Terminal emulator
995 @subsection Emacs Terminal Emulator
996 @findex term
998   To run a subshell in a terminal emulator, putting its typescript in
999 an Emacs buffer, use @kbd{M-x term}.  This creates (or reuses) a
1000 buffer named @samp{*terminal*}, and runs a subshell with input coming
1001 from your keyboard, and output going to that buffer.
1003   The terminal emulator uses Term mode, which has two input modes.  In
1004 line mode, Term basically acts like Shell mode; see @ref{Shell Mode}.
1006   In char mode, each character is sent directly to the inferior
1007 subshell, as ``terminal input.''  Any ``echoing'' of your input is the
1008 responsibility of the subshell.  The sole exception is the terminal
1009 escape character, which by default is @kbd{C-c} (@pxref{Term Mode}).
1010 Any ``terminal output'' from the subshell goes into the buffer,
1011 advancing point.
1013   Some programs (such as Emacs itself) need to control the appearance
1014 on the terminal screen in detail.  They do this by sending special
1015 control codes.  The exact control codes needed vary from terminal to
1016 terminal, but nowadays most terminals and terminal emulators
1017 (including @code{xterm}) understand the ANSI-standard (VT100-style)
1018 escape sequences.  Term mode recognizes these escape sequences, and
1019 handles each one appropriately, changing the buffer so that the
1020 appearance of the window matches what it would be on a real terminal.
1021 You can actually run Emacs inside an Emacs Term window.
1023    The file name used to load the subshell is determined the same way
1024 as for Shell mode.  To make multiple terminal emulators, rename the
1025 buffer @samp{*terminal*} to something different using @kbd{M-x
1026 rename-uniquely}, just as with Shell mode.
1028   Unlike Shell mode, Term mode does not track the current directory by
1029 examining your input.  But some shells can tell Term what the current
1030 directory is.  This is done automatically by @code{bash} version 1.15
1031 and later.
1033 @node Term Mode
1034 @subsection Term Mode
1035 @cindex Term mode
1036 @cindex mode, Term
1038   The terminal emulator uses Term mode, which has two input modes.  In
1039 line mode, Term basically acts like Shell mode; see @ref{Shell Mode}.
1040 In char mode, each character is sent directly to the inferior
1041 subshell, except for the Term escape character, normally @kbd{C-c}.
1043   To switch between line and char mode, use these commands:
1045 @table @kbd
1046 @kindex C-c C-j @r{(Term mode)}
1047 @findex term-char-mode
1048 @item C-c C-j
1049 Switch to line mode.  Do nothing if already in line mode.
1051 @kindex C-c C-k @r{(Term mode)}
1052 @findex term-line-mode
1053 @item C-c C-k
1054 Switch to char mode.  Do nothing if already in char mode.
1055 @end table
1057   The following commands are only available in char mode:
1059 @table @kbd
1060 @item C-c C-c
1061 Send a literal @key{C-c} to the sub-shell.
1063 @item C-c C-x
1064 A prefix command to access the global @key{C-x} commands conveniently.
1065 For example, @kbd{C-c C-x o} invokes the global binding of
1066 @kbd{C-x o}, which is normally @samp{other-window}.
1067 @end table
1069 @node Paging in Term
1070 @subsection Page-At-A-Time Output
1071 @cindex page-at-a-time
1073   Term mode has a page-at-a-time feature.  When enabled it makes
1074 output pause at the end of each screenful.
1076 @table @kbd
1077 @kindex C-c C-q @r{(Term mode)}
1078 @findex term-pager-toggle
1079 @item C-c C-q
1080 Toggle the page-at-a-time feature.  This command works in both line
1081 and char modes.  When page-at-a-time is enabled, the mode-line
1082 displays the word @samp{page}.
1083 @end table
1085   With page-at-a-time enabled, whenever Term receives more than a
1086 screenful of output since your last input, it pauses, displaying
1087 @samp{**MORE**} in the mode-line.  Type @key{SPC} to display the next
1088 screenful of output.  Type @kbd{?} to see your other options.  The
1089 interface is similar to the @code{more} program.
1091 @node Remote Host
1092 @subsection Remote Host Shell
1093 @cindex remote host
1094 @cindex connecting to remote host
1095 @cindex Telnet
1096 @cindex Rlogin
1098   You can login to a remote computer, using whatever commands you
1099 would from a regular terminal (e.g.@: using the @code{telnet} or
1100 @code{rlogin} commands), from a Term window.
1102   A program that asks you for a password will normally suppress
1103 echoing of the password, so the password will not show up in the
1104 buffer.  This will happen just as if you were using a real terminal,
1105 if the buffer is in char mode.  If it is in line mode, the password is
1106 temporarily visible, but will be erased when you hit return.  (This
1107 happens automatically; there is no special password processing.)
1109   When you log in to a different machine, you need to specify the type
1110 of terminal you're using.  Terminal types @samp{ansi} or @samp{vt100}
1111 will work on most systems.
1113 @c   If you are talking to a Bourne-compatible
1114 @c shell, and your system understands the @env{TERMCAP} variable,
1115 @c you can use the command @kbd{M-x shell-send-termcap}, which
1116 @c sends a string specifying the terminal type and size.
1117 @c (This command is also useful after the window has changed size.)
1119 @c You can of course run @samp{gdb} on that remote computer.  One useful
1120 @c trick:  If you invoke gdb with the @code{--fullname} option,
1121 @c it will send special commands to Emacs that will cause Emacs to
1122 @c pop up the source files you're debugging.  This will work
1123 @c whether or not gdb is running on a different computer than Emacs,
1124 @c as long as Emacs can access the source files specified by gdb.
1126 @ignore
1127   You cannot log in to a remote computer using the Shell mode.
1128 @c (This will change when Shell is re-written to use Term.)
1129 Instead, Emacs provides two commands for logging in to another computer
1130 and communicating with it through an Emacs buffer using Comint mode:
1132 @table @kbd
1133 @item M-x telnet @key{RET} @var{hostname} @key{RET}
1134 Set up a Telnet connection to the computer named @var{hostname}.
1135 @item M-x rlogin @key{RET} @var{hostname} @key{RET}
1136 Set up an Rlogin connection to the computer named @var{hostname}.
1137 @end table
1139 @findex telnet
1140   Use @kbd{M-x telnet} to set up a Telnet connection to another
1141 computer.  (Telnet is the standard Internet protocol for remote login.)
1142 It reads the host name of the other computer as an argument with the
1143 minibuffer.  Once the connection is established, talking to the other
1144 computer works like talking to a subshell: you can edit input with the
1145 usual Emacs commands, and send it a line at a time by typing @key{RET}.
1146 The output is inserted in the Telnet buffer interspersed with the input.
1148 @findex rlogin
1149 @vindex rlogin-explicit-args
1150   Use @kbd{M-x rlogin} to set up an Rlogin connection.  Rlogin is
1151 another remote login communication protocol, essentially much like the
1152 Telnet protocol but incompatible with it, and supported only by certain
1153 systems.  Rlogin's advantages are that you can arrange not to have to
1154 give your user name and password when communicating between two machines
1155 you frequently use, and that you can make an 8-bit-clean connection.
1156 (To do that in Emacs, set @code{rlogin-explicit-args} to @code{("-8")}
1157 before you run Rlogin.)
1159   @kbd{M-x rlogin} sets up the default file directory of the Emacs
1160 buffer to access the remote host via FTP (@pxref{File Names}), and it
1161 tracks the shell commands that change the current directory, just like
1162 Shell mode.
1164 @findex rlogin-directory-tracking-mode
1165   There are two ways of doing directory tracking in an Rlogin
1166 buffer---either with remote directory names
1167 @file{/@var{host}:@var{dir}/} or with local names (that works if the
1168 ``remote'' machine shares file systems with your machine of origin).
1169 You can use the command @code{rlogin-directory-tracking-mode} to switch
1170 modes.  No argument means use remote directory names, a positive
1171 argument means use local names, and a negative argument means turn
1172 off directory tracking.
1174 @end ignore
1176 @node Emacs Server, Hardcopy, Shell, Top
1177 @section Using Emacs as a Server
1178 @pindex emacsclient
1179 @cindex Emacs as a server
1180 @cindex server, using Emacs as
1181 @cindex @env{EDITOR} environment variable
1183   Various programs such as @code{mail} can invoke your choice of editor
1184 to edit a particular piece of text, such as a message that you are
1185 sending.  By convention, most of these programs use the environment
1186 variable @env{EDITOR} to specify which editor to run.  If you set
1187 @env{EDITOR} to @samp{emacs}, they invoke Emacs---but in an
1188 inconvenient fashion, by starting a new, separate Emacs process.  This
1189 is inconvenient because it takes time and because the new Emacs process
1190 doesn't share the buffers in any existing Emacs process.
1192   You can arrange to use your existing Emacs process as the editor for
1193 programs like @code{mail} by using the Emacs client and Emacs server
1194 programs.  Here is how.
1196 @cindex @env{TEXEDIT} environment variable
1197   First, the preparation.  Within Emacs, call the function
1198 @code{server-start}.  (Your @file{.emacs} file can do this automatically
1199 if you add the expression @code{(server-start)} to it.)  Then, outside
1200 Emacs, set the @env{EDITOR} environment variable to @samp{emacsclient}.
1201 (Note that some programs use a different environment variable; for
1202 example, to make @TeX{} use @samp{emacsclient}, you should set the
1203 @env{TEXEDIT} environment variable to @samp{emacsclient +%d %s}.)
1205 @kindex C-x #
1206 @findex server-edit
1207   Then, whenever any program invokes your specified @env{EDITOR}
1208 program, the effect is to send a message to your principal Emacs telling
1209 it to visit a file.  (That's what the program @code{emacsclient} does.)
1210 Emacs displays the buffer immediately and you can immediately begin
1211 editing it.
1213   When you've finished editing that buffer, type @kbd{C-x #}
1214 (@code{server-edit}).  This saves the file and sends a message back to
1215 the @code{emacsclient} program telling it to exit.  The programs that
1216 use @env{EDITOR} wait for the ``editor'' (actually, @code{emacsclient})
1217 to exit.  @kbd{C-x #} also checks for other pending external requests
1218 to edit various files, and selects the next such file.
1220   You can switch to a server buffer manually if you wish; you don't
1221 have to arrive at it with @kbd{C-x #}.  But @kbd{C-x #} is the way to
1222 say that you are finished with one.
1224 @vindex server-kill-new-buffers
1225 @vindex server-temp-file-regexp
1226   Finishing with a server buffer also kills the buffer, unless it
1227 already existed in the Emacs session before the server asked to create
1228 it.  However, if you set @code{server-kill-new-buffers} to @code{nil},
1229 then a different criterion is used: finishing with a server buffer
1230 kills it if the file name matches the regular expression
1231 @code{server-temp-file-regexp}.  This is set up to distinguish certain
1232 ``temporary'' files.
1234 @vindex server-window
1235   If you set the variable @code{server-window} to a window or a frame,
1236 @kbd{C-x #} displays the server buffer in that window or in that frame.
1238   While @code{mail} or another application is waiting for
1239 @code{emacsclient} to finish, @code{emacsclient} does not read terminal
1240 input.  So the terminal that @code{mail} was using is effectively
1241 blocked for the duration.  In order to edit with your principal Emacs,
1242 you need to be able to use it without using that terminal.  There are
1243 three ways to do this:
1245 @itemize @bullet
1246 @item
1247 Using a window system, run @code{mail} and the principal Emacs in two
1248 separate windows.  While @code{mail} is waiting for @code{emacsclient},
1249 the window where it was running is blocked, but you can use Emacs by
1250 switching windows.
1252 @item
1253 Using virtual terminals, run @code{mail} in one virtual terminal
1254 and run Emacs in another.
1256 @item
1257 Use Shell mode or Term mode in Emacs to run the other program such as
1258 @code{mail}; then, @code{emacsclient} blocks only the subshell under
1259 Emacs, and you can still use Emacs to edit the file.
1260 @end itemize
1262   If you run @code{emacsclient} with the option @samp{--no-wait}, it
1263 returns immediately without waiting for you to ``finish'' the buffer
1264 in Emacs.  Note that server buffers created in this way are not killed
1265 automatically when you finish with them.
1267 @menu
1268 * Invoking emacsclient::
1269 @end menu
1271 @node Invoking emacsclient,, Emacs Server, Emacs Server
1272 @subsection Invoking @code{emacsclient}
1274   To run the @code{emacsclient} program, specify file names as arguments,
1275 and optionally line numbers as well.  Do it like this:
1277 @example
1278 emacsclient @r{@{}@r{[}+@var{line}@r{[}@var{column}@r{]}@r{]} @var{filename}@r{@}}@dots{}
1279 @end example
1281 @noindent
1282 This tells Emacs to visit each of the specified files; if you specify a
1283 line number for a certain file, Emacs moves to that line in the file.
1284 If you specify a column number as well, Emacs puts point on that column
1285 in the line.
1287   Ordinarily, @code{emacsclient} does not return until you use the
1288 @kbd{C-x #} command on each of these buffers.  When that happens,
1289 Emacs sends a message to the @code{emacsclient} program telling it to
1290 return.
1292   But if you use the option @samp{-n} or @samp{--no-wait} when running
1293 @code{emacsclient}, then it returns immediately.  (You can take as
1294 long as you like to edit the files in Emacs.)
1296   The option @samp{--alternate-editor=@var{command}} is useful when
1297 running @code{emacsclient} in a script.  It specifies a command to run
1298 if @code{emacsclient} fails to contact Emacs.  For example, the
1299 following setting for the @var{EDITOR} environment variable will
1300 always give an editor, even if Emacs is not running:
1302 @example
1303 EDITOR="emacsclient --alternate-editor vi +%d %s"
1304 @end example
1306 @noindent
1307 The environment variable @var{ALTERNATE_EDITOR} has the same effect, but
1308 the value of the @samp{--alternate-editor} takes precedence.
1310 @pindex emacs.bash
1311   Alternatively, the file @file{etc/emacs.bash} defines a bash
1312 function which will communicate with a running Emacs server, or start
1313 one if none exists.
1315 If you use several displays, you can tell Emacs on which display to
1316 open the given files with the option @samp{--display=@var{DISPLAY}}.
1317 This can be used typically when connecting from home to an Emacs
1318 server running on your machine at your workplace.
1320 You can also use @code{emacsclient} to execute any piece of Emacs Lisp
1321 code, using the option @samp{--eval}.  When this option is given, the
1322 rest of the arguments is not taken as a list of files to visit but as
1323 a list of expressions to evaluate.
1325 @node Hardcopy, PostScript, Emacs Server, Top
1326 @section Hardcopy Output
1327 @cindex hardcopy
1329   The Emacs commands for making hardcopy let you print either an entire
1330 buffer or just part of one, either with or without page headers.
1331 See also the hardcopy commands of Dired (@pxref{Misc File Ops})
1332 and the diary (@pxref{Diary Commands}).
1334 @table @kbd
1335 @item M-x print-buffer
1336 Print hardcopy of current buffer with page headings containing the file
1337 name and page number.
1338 @item M-x lpr-buffer
1339 Print hardcopy of current buffer without page headings.
1340 @item M-x print-region
1341 Like @code{print-buffer} but print only the current region.
1342 @item M-x lpr-region
1343 Like @code{lpr-buffer} but print only the current region.
1344 @end table
1346 @findex print-buffer
1347 @findex print-region
1348 @findex lpr-buffer
1349 @findex lpr-region
1350 @vindex lpr-switches
1351   The hardcopy commands (aside from the Postscript commands) pass extra
1352 switches to the @code{lpr} program based on the value of the variable
1353 @code{lpr-switches}.  Its value should be a list of strings, each string
1354 an option starting with @samp{-}.  For example, to specify a line width
1355 of 80 columns for all the printing you do in Emacs, set
1356 @code{lpr-switches} like this:
1358 @example
1359 (setq lpr-switches '("-w80"))
1360 @end example
1362 @vindex printer-name
1363   You can specify the printer to use by setting the variable
1364 @code{printer-name}.
1366 @vindex lpr-headers-switches
1367 @vindex lpr-commands
1368 @vindex lpr-add-switches
1369   The variable @code{lpr-command} specifies the name of the printer
1370 program to run; the default value depends on your operating system type.
1371 On most systems, the default is @code{"lpr"}.  The variable
1372 @code{lpr-headers-switches} similarly specifies the extra switches to
1373 use to make page headers.  The variable @code{lpr-add-switches} controls
1374 whether to supply @samp{-T} and @samp{-J} options (suitable for
1375 @code{lpr}) to the printer program: @code{nil} means don't add them.
1376 @code{lpr-add-switches} should be @code{nil} if your printer program is
1377 not compatible with @code{lpr}.
1379 @node PostScript, PostScript Variables, Hardcopy, Top
1380 @section PostScript Hardcopy
1382   These commands convert buffer contents to PostScript,
1383 either printing it or leaving it in another Emacs buffer.
1385 @table @kbd
1386 @item M-x ps-print-buffer
1387 Print hardcopy of the current buffer in PostScript form.
1388 @item M-x ps-print-region
1389 Print hardcopy of the current region in PostScript form.
1390 @item M-x ps-print-buffer-with-faces
1391 Print hardcopy of the current buffer in PostScript form, showing the
1392 faces used in the text by means of PostScript features.
1393 @item M-x ps-print-region-with-faces
1394 Print hardcopy of the current region in PostScript form, showing the
1395 faces used in the text.
1396 @item M-x ps-spool-buffer
1397 Generate PostScript for the current buffer text.
1398 @item M-x ps-spool-region
1399 Generate PostScript for the current region.
1400 @item M-x ps-spool-buffer-with-faces
1401 Generate PostScript for the current buffer, showing the faces used.
1402 @item M-x ps-spool-region-with-faces
1403 Generate PostScript for the current region, showing the faces used.
1404 @item M-x handwrite
1405 Generates/prints PostScript for the current buffer as if handwritten.
1406 @end table
1408 @findex ps-print-region
1409 @findex ps-print-buffer
1410 @findex ps-print-region-with-faces
1411 @findex ps-print-buffer-with-faces
1412   The PostScript commands, @code{ps-print-buffer} and
1413 @code{ps-print-region}, print buffer contents in PostScript form.  One
1414 command prints the entire buffer; the other, just the region.  The
1415 corresponding @samp{-with-faces} commands,
1416 @code{ps-print-buffer-with-faces} and @code{ps-print-region-with-faces},
1417 use PostScript features to show the faces (fonts and colors) in the text
1418 properties of the text being printed.
1420   If you are using a color display, you can print a buffer of program
1421 code with color highlighting by turning on Font-Lock mode in that
1422 buffer, and using @code{ps-print-buffer-with-faces}.
1424 @findex ps-spool-region
1425 @findex ps-spool-buffer
1426 @findex ps-spool-region-with-faces
1427 @findex ps-spool-buffer-with-faces
1428   The commands whose names have @samp{spool} instead of @samp{print}
1429 generate the PostScript output in an Emacs buffer instead of sending
1430 it to the printer.
1432 @findex handwrite
1433 @cindex handwriting
1434 @kbd{M-x handwrite} is more frivolous.  It generates a PostScript
1435 rendition of the current buffer as a cursive handwritten document.  It
1436 can be customized in group @code{handwrite}.  This function only
1437 supports ISO 8859-1 characters.
1439 @ifinfo
1440   The following section describes variables for customizing these commands.
1441 @end ifinfo
1443 @node PostScript Variables, Sorting, PostScript, Top
1444 @section Variables for PostScript Hardcopy
1446 @vindex ps-lpr-command
1447 @vindex ps-lpr-switches
1448 @vindex ps-printer-name
1449   All the PostScript hardcopy commands use the variables
1450 @code{ps-lpr-command} and @code{ps-lpr-switches} to specify how to print
1451 the output.  @code{ps-lpr-command} specifies the command name to run,
1452 @code{ps-lpr-switches} specifies command line options to use, and
1453 @code{ps-printer-name} specifies the printer.  If you don't set the
1454 first two variables yourself, they take their initial values from
1455 @code{lpr-command} and @code{lpr-switches}.  If @code{ps-printer-name}
1456 is @code{nil}, @code{printer-name} is used.
1458 @vindex ps-print-header
1459   The variable @code{ps-print-header} controls whether these commands
1460 add header lines to each page---set it to @code{nil} to turn headers
1461 off.
1463 @cindex color emulation on black-and-white printers
1464 @vindex ps-print-color-p
1465   If your printer doesn't support colors, you should turn off color
1466 processing by setting @code{ps-print-color-p} to @code{nil}.  By
1467 default, if the display supports colors, Emacs produces hardcopy output
1468 with color information; on black-and-white printers, colors are emulated
1469 with shades of gray.  This might produce illegible output, even if your
1470 screen colors only use shades of gray.
1472 @vindex ps-use-face-background
1473   By default, PostScript printing ignores the background colors of the
1474 faces, unless the variable @code{ps-use-face-background} is
1475 non-@code{nil}.  This is to avoid unwanted interference with the zebra
1476 stripes and background image/text.
1478 @vindex ps-paper-type
1479 @vindex ps-page-dimensions-database
1480   The variable @code{ps-paper-type} specifies which size of paper to
1481 format for; legitimate values include @code{a4}, @code{a3},
1482 @code{a4small}, @code{b4}, @code{b5}, @code{executive}, @code{ledger},
1483 @code{legal}, @code{letter}, @code{letter-small}, @code{statement},
1484 @code{tabloid}.  The default is @code{letter}.  You can define
1485 additional paper sizes by changing the variable
1486 @code{ps-page-dimensions-database}.
1488 @vindex ps-landscape-mode
1489   The variable @code{ps-landscape-mode} specifies the orientation of
1490 printing on the page.  The default is @code{nil}, which stands for
1491 ``portrait'' mode.  Any non-@code{nil} value specifies ``landscape''
1492 mode.
1494 @vindex ps-number-of-columns
1495   The variable @code{ps-number-of-columns} specifies the number of
1496 columns; it takes effect in both landscape and portrait mode.  The
1497 default is 1.
1499 @vindex ps-font-family
1500 @vindex ps-font-size
1501 @vindex ps-font-info-database
1502   The variable @code{ps-font-family} specifies which font family to use
1503 for printing ordinary text.  Legitimate values include @code{Courier},
1504 @code{Helvetica}, @code{NewCenturySchlbk}, @code{Palatino} and
1505 @code{Times}.  The variable @code{ps-font-size} specifies the size of
1506 the font for ordinary text.  It defaults to 8.5 points.
1508 @vindex ps-multibyte-buffer
1509 @cindex Intlfonts for PostScript printing
1510 @cindex fonts for PostScript printing
1511   Emacs supports more scripts and characters than a typical PostScript
1512 printer.  Thus, some of the characters in your buffer might not be
1513 printable using the fonts built into your printer.  You can augment
1514 the fonts supplied with the printer with those from the GNU Intlfonts
1515 package, or you can instruct Emacs to use Intlfonts exclusively.  The
1516 variable @code{ps-multibyte-buffer} controls this: the default value,
1517 @code{nil}, is appropriate for printing @acronym{ASCII} and Latin-1
1518 characters; a value of @code{non-latin-printer} is for printers which
1519 have the fonts for @acronym{ASCII}, Latin-1, Japanese, and Korean
1520 characters built into them.  A value of @code{bdf-font} arranges for
1521 the BDF fonts from the Intlfonts package to be used for @emph{all}
1522 characters.  Finally, a value of @code{bdf-font-except-latin}
1523 instructs the printer to use built-in fonts for @acronym{ASCII} and Latin-1
1524 characters, and Intlfonts BDF fonts for the rest.
1526 @vindex bdf-directory-list
1527   To be able to use the BDF fonts, Emacs needs to know where to find
1528 them.  The variable @code{bdf-directory-list} holds the list of
1529 directories where Emacs should look for the fonts; the default value
1530 includes a single directory @file{/usr/local/share/emacs/fonts/bdf}.
1532   Many other customization variables for these commands are defined and
1533 described in the Lisp files @file{ps-print.el} and @file{ps-mule.el}.
1535 @node Sorting, Narrowing, PostScript Variables, Top
1536 @section Sorting Text
1537 @cindex sorting
1539   Emacs provides several commands for sorting text in the buffer.  All
1540 operate on the contents of the region (the text between point and the
1541 mark).  They divide the text of the region into many @dfn{sort records},
1542 identify a @dfn{sort key} for each record, and then reorder the records
1543 into the order determined by the sort keys.  The records are ordered so
1544 that their keys are in alphabetical order, or, for numeric sorting, in
1545 numeric order.  In alphabetic sorting, all upper-case letters `A' through
1546 `Z' come before lower-case `a', in accord with the @acronym{ASCII} character
1547 sequence.
1549   The various sort commands differ in how they divide the text into sort
1550 records and in which part of each record is used as the sort key.  Most of
1551 the commands make each line a separate sort record, but some commands use
1552 paragraphs or pages as sort records.  Most of the sort commands use each
1553 entire sort record as its own sort key, but some use only a portion of the
1554 record as the sort key.
1556 @findex sort-lines
1557 @findex sort-paragraphs
1558 @findex sort-pages
1559 @findex sort-fields
1560 @findex sort-numeric-fields
1561 @vindex sort-numeric-base
1562 @table @kbd
1563 @item M-x sort-lines
1564 Divide the region into lines, and sort by comparing the entire
1565 text of a line.  A numeric argument means sort into descending order.
1567 @item M-x sort-paragraphs
1568 Divide the region into paragraphs, and sort by comparing the entire
1569 text of a paragraph (except for leading blank lines).  A numeric
1570 argument means sort into descending order.
1572 @item M-x sort-pages
1573 Divide the region into pages, and sort by comparing the entire
1574 text of a page (except for leading blank lines).  A numeric
1575 argument means sort into descending order.
1577 @item M-x sort-fields
1578 Divide the region into lines, and sort by comparing the contents of
1579 one field in each line.  Fields are defined as separated by
1580 whitespace, so the first run of consecutive non-whitespace characters
1581 in a line constitutes field 1, the second such run constitutes field
1582 2, etc.
1584 Specify which field to sort by with a numeric argument: 1 to sort by
1585 field 1, etc.  A negative argument means count fields from the right
1586 instead of from the left; thus, minus 1 means sort by the last field.
1587 If several lines have identical contents in the field being sorted, they
1588 keep the same relative order that they had in the original buffer.
1590 @item M-x sort-numeric-fields
1591 Like @kbd{M-x sort-fields} except the specified field is converted
1592 to an integer for each line, and the numbers are compared.  @samp{10}
1593 comes before @samp{2} when considered as text, but after it when
1594 considered as a number.  By default, numbers are interpreted according
1595 to @code{sort-numeric-base}, but numbers beginning with @samp{0x} or
1596 @samp{0} are interpreted as hexadecimal and octal, respectively.
1598 @item M-x sort-columns
1599 Like @kbd{M-x sort-fields} except that the text within each line
1600 used for comparison comes from a fixed range of columns.  See below
1601 for an explanation.
1603 @item M-x reverse-region
1604 Reverse the order of the lines in the region.  This is useful for
1605 sorting into descending order by fields or columns, since those sort
1606 commands do not have a feature for doing that.
1607 @end table
1609   For example, if the buffer contains this:
1611 @smallexample
1612 On systems where clash detection (locking of files being edited) is
1613 implemented, Emacs also checks the first time you modify a buffer
1614 whether the file has changed on disk since it was last visited or
1615 saved.  If it has, you are asked to confirm that you want to change
1616 the buffer.
1617 @end smallexample
1619 @noindent
1620 applying @kbd{M-x sort-lines} to the entire buffer produces this:
1622 @smallexample
1623 On systems where clash detection (locking of files being edited) is
1624 implemented, Emacs also checks the first time you modify a buffer
1625 saved.  If it has, you are asked to confirm that you want to change
1626 the buffer.
1627 whether the file has changed on disk since it was last visited or
1628 @end smallexample
1630 @noindent
1631 where the upper-case @samp{O} sorts before all lower-case letters.  If
1632 you use @kbd{C-u 2 M-x sort-fields} instead, you get this:
1634 @smallexample
1635 implemented, Emacs also checks the first time you modify a buffer
1636 saved.  If it has, you are asked to confirm that you want to change
1637 the buffer.
1638 On systems where clash detection (locking of files being edited) is
1639 whether the file has changed on disk since it was last visited or
1640 @end smallexample
1642 @noindent
1643 where the sort keys were @samp{Emacs}, @samp{If}, @samp{buffer},
1644 @samp{systems} and @samp{the}.
1646 @findex sort-columns
1647   @kbd{M-x sort-columns} requires more explanation.  You specify the
1648 columns by putting point at one of the columns and the mark at the other
1649 column.  Because this means you cannot put point or the mark at the
1650 beginning of the first line of the text you want to sort, this command
1651 uses an unusual definition of ``region'': all of the line point is in is
1652 considered part of the region, and so is all of the line the mark is in,
1653 as well as all the lines in between.
1655   For example, to sort a table by information found in columns 10 to 15,
1656 you could put the mark on column 10 in the first line of the table, and
1657 point on column 15 in the last line of the table, and then run
1658 @code{sort-columns}.  Equivalently, you could run it with the mark on
1659 column 15 in the first line and point on column 10 in the last line.
1661   This can be thought of as sorting the rectangle specified by point and
1662 the mark, except that the text on each line to the left or right of the
1663 rectangle moves along with the text inside the rectangle.
1664 @xref{Rectangles}.
1666 @vindex sort-fold-case
1667   Many of the sort commands ignore case differences when comparing, if
1668 @code{sort-fold-case} is non-@code{nil}.
1670 @node Narrowing, Two-Column, Sorting, Top
1671 @section Narrowing
1672 @cindex widening
1673 @cindex restriction
1674 @cindex narrowing
1675 @cindex accessible portion
1677   @dfn{Narrowing} means focusing in on some portion of the buffer,
1678 making the rest temporarily inaccessible.  The portion which you can
1679 still get to is called the @dfn{accessible portion}.  Canceling the
1680 narrowing, which makes the entire buffer once again accessible, is
1681 called @dfn{widening}.  The amount of narrowing in effect in a buffer at
1682 any time is called the buffer's @dfn{restriction}.
1684   Narrowing can make it easier to concentrate on a single subroutine or
1685 paragraph by eliminating clutter.  It can also be used to restrict the
1686 range of operation of a replace command or repeating keyboard macro.
1688 @table @kbd
1689 @item C-x n n
1690 Narrow down to between point and mark (@code{narrow-to-region}).
1691 @item C-x n w
1692 Widen to make the entire buffer accessible again (@code{widen}).
1693 @item C-x n p
1694 Narrow down to the current page (@code{narrow-to-page}).
1695 @item C-x n d
1696 Narrow down to the current defun (@code{narrow-to-defun}).
1697 @end table
1699   When you have narrowed down to a part of the buffer, that part appears
1700 to be all there is.  You can't see the rest, you can't move into it
1701 (motion commands won't go outside the accessible part), you can't change
1702 it in any way.  However, it is not gone, and if you save the file all
1703 the inaccessible text will be saved.  The word @samp{Narrow} appears in
1704 the mode line whenever narrowing is in effect.
1706 @kindex C-x n n
1707 @findex narrow-to-region
1708   The primary narrowing command is @kbd{C-x n n} (@code{narrow-to-region}).
1709 It sets the current buffer's restrictions so that the text in the current
1710 region remains accessible, but all text before the region or after the
1711 region is inaccessible.  Point and mark do not change.
1713 @kindex C-x n p
1714 @findex narrow-to-page
1715 @kindex C-x n d
1716 @findex narrow-to-defun
1717   Alternatively, use @kbd{C-x n p} (@code{narrow-to-page}) to narrow
1718 down to the current page.  @xref{Pages}, for the definition of a page.
1719 @kbd{C-x n d} (@code{narrow-to-defun}) narrows down to the defun
1720 containing point (@pxref{Defuns}).
1722 @kindex C-x n w
1723 @findex widen
1724   The way to cancel narrowing is to widen with @kbd{C-x n w}
1725 (@code{widen}).  This makes all text in the buffer accessible again.
1727   You can get information on what part of the buffer you are narrowed down
1728 to using the @kbd{C-x =} command.  @xref{Position Info}.
1730   Because narrowing can easily confuse users who do not understand it,
1731 @code{narrow-to-region} is normally a disabled command.  Attempting to use
1732 this command asks for confirmation and gives you the option of enabling it;
1733 if you enable the command, confirmation will no longer be required for
1734 it.  @xref{Disabling}.
1736 @node Two-Column, Editing Binary Files, Narrowing, Top
1737 @section Two-Column Editing
1738 @cindex two-column editing
1739 @cindex splitting columns
1740 @cindex columns, splitting
1742   Two-column mode lets you conveniently edit two side-by-side columns of
1743 text.  It uses two side-by-side windows, each showing its own
1744 buffer.
1746   There are three ways to enter two-column mode:
1748 @table @asis
1749 @item @kbd{@key{F2} 2} or @kbd{C-x 6 2}
1750 @kindex F2 2
1751 @kindex C-x 6 2
1752 @findex 2C-two-columns
1753 Enter two-column mode with the current buffer on the left, and on the
1754 right, a buffer whose name is based on the current buffer's name
1755 (@code{2C-two-columns}).  If the right-hand buffer doesn't already
1756 exist, it starts out empty; the current buffer's contents are not
1757 changed.
1759 This command is appropriate when the current buffer is empty or contains
1760 just one column and you want to add another column.
1762 @item @kbd{@key{F2} s} or @kbd{C-x 6 s}
1763 @kindex F2 s
1764 @kindex C-x 6 s
1765 @findex 2C-split
1766 Split the current buffer, which contains two-column text, into two
1767 buffers, and display them side by side (@code{2C-split}).  The current
1768 buffer becomes the left-hand buffer, but the text in the right-hand
1769 column is moved into the right-hand buffer.  The current column
1770 specifies the split point.  Splitting starts with the current line and
1771 continues to the end of the buffer.
1773 This command is appropriate when you have a buffer that already contains
1774 two-column text, and you wish to separate the columns temporarily.
1776 @item @kbd{@key{F2} b @var{buffer} @key{RET}}
1777 @itemx @kbd{C-x 6 b @var{buffer} @key{RET}}
1778 @kindex F2 b
1779 @kindex C-x 6 b
1780 @findex 2C-associate-buffer
1781 Enter two-column mode using the current buffer as the left-hand buffer,
1782 and using buffer @var{buffer} as the right-hand buffer
1783 (@code{2C-associate-buffer}).
1784 @end table
1786   @kbd{@key{F2} s} or @kbd{C-x 6 s} looks for a column separator, which
1787 is a string that appears on each line between the two columns.  You can
1788 specify the width of the separator with a numeric argument to
1789 @kbd{@key{F2} s}; that many characters, before point, constitute the
1790 separator string.  By default, the width is 1, so the column separator
1791 is the character before point.
1793   When a line has the separator at the proper place, @kbd{@key{F2} s}
1794 puts the text after the separator into the right-hand buffer, and
1795 deletes the separator.  Lines that don't have the column separator at
1796 the proper place remain unsplit; they stay in the left-hand buffer, and
1797 the right-hand buffer gets an empty line to correspond.  (This is the
1798 way to write a line that ``spans both columns while in two-column
1799 mode'': write it in the left-hand buffer, and put an empty line in the
1800 right-hand buffer.)
1802 @kindex F2 RET
1803 @kindex C-x 6 RET
1804 @findex 2C-newline
1805   The command @kbd{C-x 6 @key{RET}} or @kbd{@key{F2} @key{RET}}
1806 (@code{2C-newline}) inserts a newline in each of the two buffers at
1807 corresponding positions.  This is the easiest way to add a new line to
1808 the two-column text while editing it in split buffers.
1810 @kindex F2 1
1811 @kindex C-x 6 1
1812 @findex 2C-merge
1813   When you have edited both buffers as you wish, merge them with
1814 @kbd{@key{F2} 1} or @kbd{C-x 6 1} (@code{2C-merge}).  This copies the
1815 text from the right-hand buffer as a second column in the other buffer.
1816 To go back to two-column editing, use @kbd{@key{F2} s}.
1818 @kindex F2 d
1819 @kindex C-x 6 d
1820 @findex 2C-dissociate
1821   Use @kbd{@key{F2} d} or @kbd{C-x 6 d} to dissociate the two buffers,
1822 leaving each as it stands (@code{2C-dissociate}).  If the other buffer,
1823 the one not current when you type @kbd{@key{F2} d}, is empty,
1824 @kbd{@key{F2} d} kills it.
1826 @node Editing Binary Files, Saving Emacs Sessions, Two-Column, Top
1827 @section Editing Binary Files
1829 @cindex Hexl mode
1830 @cindex mode, Hexl
1831 @cindex editing binary files
1832 @cindex hex editing
1833   There is a special major mode for editing binary files: Hexl mode.  To
1834 use it, use @kbd{M-x hexl-find-file} instead of @kbd{C-x C-f} to visit
1835 the file.  This command converts the file's contents to hexadecimal and
1836 lets you edit the translation.  When you save the file, it is converted
1837 automatically back to binary.
1839   You can also use @kbd{M-x hexl-mode} to translate an existing buffer
1840 into hex.  This is useful if you visit a file normally and then discover
1841 it is a binary file.
1843   Ordinary text characters overwrite in Hexl mode.  This is to reduce
1844 the risk of accidentally spoiling the alignment of data in the file.
1845 There are special commands for insertion.  Here is a list of the
1846 commands of Hexl mode:
1848 @c I don't think individual index entries for these commands are useful--RMS.
1849 @table @kbd
1850 @item C-M-d
1851 Insert a byte with a code typed in decimal.
1853 @item C-M-o
1854 Insert a byte with a code typed in octal.
1856 @item C-M-x
1857 Insert a byte with a code typed in hex.
1859 @item C-x [
1860 Move to the beginning of a 1k-byte ``page.''
1862 @item C-x ]
1863 Move to the end of a 1k-byte ``page.''
1865 @item M-g
1866 Move to an address specified in hex.
1868 @item M-j
1869 Move to an address specified in decimal.
1871 @item C-c C-c
1872 Leave Hexl mode, going back to the major mode this buffer had before you
1873 invoked @code{hexl-mode}.
1874 @end table
1876 @noindent
1877 Other Hexl commands let you insert strings (sequences) of binary
1878 bytes, move by @code{short}s or @code{int}s, etc.; type @kbd{C-h a
1879 hexl-@key{RET}} for details.
1882 @node Saving Emacs Sessions, Recursive Edit, Editing Binary Files, Top
1883 @section Saving Emacs Sessions
1884 @cindex saving sessions
1885 @cindex restore session
1886 @cindex remember editing session
1887 @cindex reload files
1888 @cindex desktop
1890    Use the desktop library to save the state of Emacs from one session
1891 to another.  Once you save the Emacs @dfn{desktop}---the buffers,
1892 their file names, major modes, buffer positions, and so on---then
1893 subsequent Emacs sessions reload the saved desktop.
1895 @findex desktop-save
1896 @vindex desktop-save-mode
1897   You can save the desktop manually with the command @kbd{M-x
1898 desktop-save}.  You can also enable automatical desktop saving when
1899 you exit Emacs: use the Customization buffer (@pxref{Easy
1900 Customization}) to set @code{desktop-save-mode} to @code{t} for future
1901 sessions, or add this line in your @file{~/.emacs} file:
1903 @example
1904 (desktop-save-mode 1)
1905 @end example
1907 @findex desktop-change-dir
1908 @findex desktop-revert
1909   When Emacs starts, it looks for a saved desktop in the current
1910 directory.  Thus, you can have separate saved desktops in different
1911 directories, and the starting directory determines which one Emacs
1912 reloads.  You can save the current desktop and reload one saved in
1913 another directory by typing @kbd{M-x desktop-change-dir}.  Typing
1914 @kbd{M-x desktop-revert} reverts to the desktop previously reloaded.
1916   Specify the option @samp{--no-desktop} on the command line when you
1917 don't want it to reload any saved desktop.
1919 @findex desktop-clear
1920 @vindex desktop-globals-to-clear
1921 @vindex desktop-clear-preserve-buffers-regexp
1922   Type @kbd{M-x desktop-clear} to empty the Emacs desktop.  This kills
1923 all buffers except for internal ones, and clears the global variables
1924 listed in @code{desktop-globals-to-clear}.  If you want this to
1925 preserve certain buffers, customize the variable
1926 @code{desktop-clear-preserve-buffers-regexp}, whose value is a regular
1927 expression matching the names of buffers not to kill.
1929 @node Recursive Edit, Emulation, Saving Emacs Sessions, Top
1930 @section Recursive Editing Levels
1931 @cindex recursive editing level
1932 @cindex editing level, recursive
1934   A @dfn{recursive edit} is a situation in which you are using Emacs
1935 commands to perform arbitrary editing while in the middle of another
1936 Emacs command.  For example, when you type @kbd{C-r} inside of a
1937 @code{query-replace}, you enter a recursive edit in which you can change
1938 the current buffer.  On exiting from the recursive edit, you go back to
1939 the @code{query-replace}.
1941 @kindex C-M-c
1942 @findex exit-recursive-edit
1943 @cindex exiting recursive edit
1944   @dfn{Exiting} the recursive edit means returning to the unfinished
1945 command, which continues execution.  The command to exit is @kbd{C-M-c}
1946 (@code{exit-recursive-edit}).
1948   You can also @dfn{abort} the recursive edit.  This is like exiting,
1949 but also quits the unfinished command immediately.  Use the command
1950 @kbd{C-]} (@code{abort-recursive-edit}) to do this.  @xref{Quitting}.
1952   The mode line shows you when you are in a recursive edit by displaying
1953 square brackets around the parentheses that always surround the major and
1954 minor mode names.  Every window's mode line shows this in the same way,
1955 since being in a recursive edit is true of Emacs as a whole rather than
1956 any particular window or buffer.
1958   It is possible to be in recursive edits within recursive edits.  For
1959 example, after typing @kbd{C-r} in a @code{query-replace}, you may type a
1960 command that enters the debugger.  This begins a recursive editing level
1961 for the debugger, within the recursive editing level for @kbd{C-r}.
1962 Mode lines display a pair of square brackets for each recursive editing
1963 level currently in progress.
1965   Exiting the inner recursive edit (such as, with the debugger @kbd{c}
1966 command) resumes the command running in the next level up.  When that
1967 command finishes, you can then use @kbd{C-M-c} to exit another recursive
1968 editing level, and so on.  Exiting applies to the innermost level only.
1969 Aborting also gets out of only one level of recursive edit; it returns
1970 immediately to the command level of the previous recursive edit.  If you
1971 wish, you can then abort the next recursive editing level.
1973   Alternatively, the command @kbd{M-x top-level} aborts all levels of
1974 recursive edits, returning immediately to the top-level command reader.
1976   The text being edited inside the recursive edit need not be the same text
1977 that you were editing at top level.  It depends on what the recursive edit
1978 is for.  If the command that invokes the recursive edit selects a different
1979 buffer first, that is the buffer you will edit recursively.  In any case,
1980 you can switch buffers within the recursive edit in the normal manner (as
1981 long as the buffer-switching keys have not been rebound).  You could
1982 probably do all the rest of your editing inside the recursive edit,
1983 visiting files and all.  But this could have surprising effects (such as
1984 stack overflow) from time to time.  So remember to exit or abort the
1985 recursive edit when you no longer need it.
1987   In general, we try to minimize the use of recursive editing levels in
1988 GNU Emacs.  This is because they constrain you to ``go back'' in a
1989 particular order---from the innermost level toward the top level.  When
1990 possible, we present different activities in separate buffers so that
1991 you can switch between them as you please.  Some commands switch to a
1992 new major mode which provides a command to switch back.  These
1993 approaches give you more flexibility to go back to unfinished tasks in
1994 the order you choose.
1996 @node Emulation, Hyperlinking, Recursive Edit, Top
1997 @section Emulation
1998 @cindex emulating other editors
1999 @cindex other editors
2000 @cindex EDT
2001 @cindex vi
2002 @cindex PC key bindings
2003 @cindex scrolling all windows
2004 @cindex PC selection
2005 @cindex Motif key bindings
2006 @cindex Macintosh key bindings
2007 @cindex WordStar
2009   GNU Emacs can be programmed to emulate (more or less) most other
2010 editors.  Standard facilities can emulate these:
2012 @table @asis
2013 @item CRiSP/Brief (PC editor)
2014 @findex crisp-mode
2015 @vindex crisp-override-meta-x
2016 @findex scroll-all-mode
2017 @cindex CRiSP mode
2018 @cindex Brief emulation
2019 @cindex emulation of Brief
2020 @cindex mode, CRiSP
2021 You can turn on key bindings to emulate the CRiSP/Brief editor with
2022 @kbd{M-x crisp-mode}.  Note that this rebinds @kbd{M-x} to exit Emacs
2023 unless you change the user option @code{crisp-override-meta-x}.  You can
2024 also use the command @kbd{M-x scroll-all-mode} or set the user option
2025 @code{crisp-load-scroll-all} to emulate CRiSP's scroll-all feature
2026 (scrolling all windows together).
2028 @item EDT (DEC VMS editor)
2029 @findex edt-emulation-on
2030 @findex edt-emulation-off
2031 Turn on EDT emulation with @kbd{M-x edt-emulation-on}.  @kbd{M-x
2032 edt-emulation-off} restores normal Emacs command bindings.
2034 Most of the EDT emulation commands are keypad keys, and most standard
2035 Emacs key bindings are still available.  The EDT emulation rebindings
2036 are done in the global keymap, so there is no problem switching
2037 buffers or major modes while in EDT emulation.
2039 @item ``PC'' bindings
2040 @findex pc-bindings-mode
2041 @cindex ``PC'' key bindings
2042 The command @kbd{M-x pc-bindings-mode} sets up certain key bindings
2043 for ``PC compatibility''---what people are often used to on PCs---as
2044 follows: @kbd{Delete} and its variants delete forward instead of
2045 backward, @kbd{C-Backspace} kills backward a word (as @kbd{C-Delete}
2046 normally would), @kbd{M-Backspace} does undo, @kbd{Home} and @kbd{End}
2047 move to beginning and end of line, @kbd{C-Home} and @kbd{C-End} move
2048 to beginning and end of buffer and @kbd{C-Escape} does
2049 @code{list-buffers}.
2051 @item PC Selection mode
2052 @findex pc-selection-mode
2053 @cindex PC Selection minor mode
2054 @cindex mode, PC selection
2055 @cindex selection, PC
2056 The command @kbd{M-x pc-selection-mode} toggles a global minor mode
2057 that emulates the mark, copy, cut and paste commands of various other
2058 systems---an interface known as CUA.  It establishes the key bindings
2059 of PC mode, and also modifies the bindings of the cursor keys and the
2060 @kbd{next}, @kbd{prior}, @kbd{home} and @kbd{end} keys.  It does not
2061 provide the full set of CUA key bindings---the fundamental Emacs keys
2062 @kbd{C-c}, @kbd{C-v} and @kbd{C-x} are not changed.
2064 The standard keys for moving around (@kbd{right}, @kbd{left},
2065 @kbd{up}, @kbd{down}, @kbd{home}, @kbd{end}, @kbd{prior}, @kbd{next},
2066 called ``move-keys'') deactivate the mark in PC selection mode.
2067 However, using @kbd{Shift} together with the ``move keys'' activates
2068 the region over which they move.  The copy, cut and paste functions
2069 are available on @kbd{C-insert}, @kbd{S-delete} and @kbd{S-insert}
2070 respectively.
2072 Turning @code{pc-selection-mode} off restores the old key bindings of
2073 these keys.
2075 @cindex s-region package
2076 The @code{s-region} package provides similar, but less complete,
2077 facilities.
2079 @item TPU (DEC VMS editor)
2080 @findex tpu-edt-on
2081 @cindex TPU
2082 @kbd{M-x tpu-edt-on} turns on emulation of the TPU editor emulating EDT.
2084 @item vi (Berkeley editor)
2085 @findex viper-mode
2086 Viper is the newest emulator for vi.  It implements several levels of
2087 emulation; level 1 is closest to vi itself, while level 5 departs
2088 somewhat from strict emulation to take advantage of the capabilities of
2089 Emacs.  To invoke Viper, type @kbd{M-x viper-mode}; it will guide you
2090 the rest of the way and ask for the emulation level.  @inforef{Top,
2091 Viper, viper}.
2093 @item vi (another emulator)
2094 @findex vi-mode
2095 @kbd{M-x vi-mode} enters a major mode that replaces the previously
2096 established major mode.  All of the vi commands that, in real vi, enter
2097 ``input'' mode are programmed instead to return to the previous major
2098 mode.  Thus, ordinary Emacs serves as vi's ``input'' mode.
2100 Because vi emulation works through major modes, it does not work
2101 to switch buffers during emulation.  Return to normal Emacs first.
2103 If you plan to use vi emulation much, you probably want to bind a key
2104 to the @code{vi-mode} command.
2106 @item vi (alternate emulator)
2107 @findex vip-mode
2108 @kbd{M-x vip-mode} invokes another vi emulator, said to resemble real vi
2109 more thoroughly than @kbd{M-x vi-mode}.  ``Input'' mode in this emulator
2110 is changed from ordinary Emacs so you can use @key{ESC} to go back to
2111 emulated vi command mode.  To get from emulated vi command mode back to
2112 ordinary Emacs, type @kbd{C-z}.
2114 This emulation does not work through major modes, and it is possible
2115 to switch buffers in various ways within the emulator.  It is not
2116 so necessary to assign a key to the command @code{vip-mode} as
2117 it is with @code{vi-mode} because terminating insert mode does
2118 not use it.
2120 @inforef{Top, VIP, vip}, for full information.
2122 @item WordStar (old wordprocessor)
2123 @findex wordstar-mode
2124 @kbd{M-x wordstar-mode} provides a major mode with WordStar-like
2125 key bindings.
2126 @end table
2128 @node Hyperlinking, Dissociated Press, Emulation, Top
2129 @section Hyperlinking and Navigation Features
2131 @cindex hyperlinking
2132 @cindex navigation
2133   Various modes documented elsewhere have hypertext features so that
2134 you can follow links, usually by clicking @kbd{Mouse-2} on the link or
2135 typing @key{RET} while point is on the link.  Info mode, Help mode and
2136 the Dired-like modes are examples.  The Tags facility links between
2137 uses and definitions in source files, see @ref{Tags}.  Imenu provides
2138 navigation amongst items indexed in the current buffer, see
2139 @ref{Imenu}.  Info-lookup provides mode-specific lookup of definitions
2140 in Info indexes, see @ref{Documentation}.  Speedbar maintains a frame
2141 in which links to files, and locations in files are displayed, see
2142 @ref{Speedbar}.
2144   Other non-mode-specific facilities described in this section enable
2145 following links from the current buffer in a context-sensitive
2146 fashion.
2148 @menu
2149 * Browse-URL::                  Following URLs.
2150 * Goto-address::                Activating URLs.
2151 * FFAP::                        Finding files etc. at point.
2152 * Find-func::                   Finding function and variable definitions.
2153 @end menu
2155 @node Browse-URL
2156 @subsection  Following URLs
2157 @cindex World Wide Web
2158 @cindex Web
2159 @findex browse-url
2160 @findex browse-url-at-point
2161 @findex browse-url-at-mouse
2162 @cindex Browse-URL
2163 @cindex URLs
2165 @table @kbd
2166 @item M-x browse-url @key{RET} @var{url} @key{RET}
2167 Load a URL into a Web browser.
2168 @end table
2170 The Browse-URL package provides facilities for following URLs specifying
2171 links on the World Wide Web.  Usually this works by invoking a web
2172 browser, but you can, for instance, arrange to invoke @code{compose-mail}
2173 from @samp{mailto:} URLs.
2175   The general way to use this feature is to type @kbd{M-x browse-url},
2176 which displays a specified URL.  If point is located near a plausible
2177 URL, that URL is used as the default.  Other commands are available
2178 which you might like to bind to keys, such as
2179 @code{browse-url-at-point} and @code{browse-url-at-mouse}.
2181 @vindex browse-url-browser-function
2182   You can customize Browse-URL's behavior via various options in the
2183 @code{browse-url} Customize group, particularly
2184 @code{browse-url-browser-function}.  You can invoke actions dependent
2185 on the type of URL by defining @code{browse-url-browser-function} as
2186 an association list.  The package's commentary available via @kbd{C-h
2187 p} under the @samp{hypermedia} keyword provides more information.
2188 Packages with facilities for following URLs should always go through
2189 Browse-URL, so that the customization options for Browse-URL will
2190 affect all browsing in Emacs.
2192 @node Goto-address
2193 @subsection Activating URLs
2194 @findex goto-address
2195 @cindex Goto-address
2196 @cindex URLs, activating
2198 @table @kbd
2199 @item M-x goto-address
2200 Activate URLs and e-mail addresses in the current buffer.
2201 @end table
2203   You can make URLs in the current buffer active with @kbd{M-x
2204 goto-address}.  This finds all the URLs in the buffer, and establishes
2205 bindings for @kbd{Mouse-2} and @kbd{C-c @key{RET}} on them.  After
2206 activation, if you click on a URL with @kbd{Mouse-2}, or move to a URL
2207 and type @kbd{C-c @key{RET}}, that will display the web page that the URL
2208 specifies.  For a @samp{mailto} URL, it sends mail instead, using your
2209 selected mail-composition method (@pxref{Mail Methods}).
2211   It can be useful to add @code{goto-address} to mode hooks and the
2212 hooks used to display an incoming message.
2213 @code{rmail-show-message-hook} is the appropriate hook for Rmail, and
2214 @code{mh-show-mode-hook} for MH-E.  This is not needed for Gnus,
2215 which has a similar feature of its own.
2218 @node FFAP
2219 @subsection Finding Files and URLs at Point
2220 @findex find-file-at-point
2221 @findex ffap
2222 @findex ffap-dired-at-point
2223 @findex ffap-next
2224 @findex ffap-menu
2225 @cindex finding file at point
2227   FFAP mode replaces certain key bindings for finding files, including
2228 @kbd{C-x C-f}, with commands that provide more sensitive defaults.
2229 These commands behave like the ordinary ones when given a prefix
2230 argument.  Otherwise, they get the default file name or URL from the
2231 text around point.  If what is found in the buffer has the form of a
2232 URL rather than a file name, the commands use @code{browse-url} to
2233 view it.
2235   This feature is useful for following references in mail or news
2236 buffers, @file{README} files, @file{MANIFEST} files, and so on.  The
2237 @samp{ffap} package's commentary available via @kbd{C-h p} under the
2238 @samp{files} keyword and the @code{ffap} Custom group provide details.
2240 @cindex FFAP minor mode
2241 @findex ffap-mode
2242   You can turn on FFAP minor mode by calling @code{ffap-bindings} to
2243 make the following key bindings and to install hooks for using
2244 @code{ffap} in Rmail, Gnus and VM article buffers.
2246 @table @kbd
2247 @item C-x C-f @var{filename} @key{RET}
2248 @kindex C-x C-f @r{(FFAP)}
2249 Find @var{filename}, guessing a default from text around point
2250 (@code{find-file-at-point}).
2251 @item C-x 4 f
2252 @kindex C-x 4 f @r{(FFAP)}
2253 @code{ffap-other-window}, analogous to @code{find-file-other-window}.
2254 @item C-x 5 f
2255 @kindex C-x 5 f @r{(FFAP)}
2256 @code{ffap-other-frame}, analogous to @code{find-file-other-frame}.
2257 @item M-x ffap-next
2258 Search buffer for next file name or URL, then find that file or URL.
2259 @item C-x d @var{directory} @key{RET}
2260 @kindex C-x d @r{(FFAP)}
2261 Start Dired on @var{directory}, defaulting to the directory name at
2262 point (@code{ffap-dired-at-point}).
2263 @item S-Mouse-3
2264 @kindex S-Mouse-3 @r{(FFAP)}
2265 @code{ffap-at-mouse} finds the file guessed from text around the position
2266 of a mouse click.
2267 @item C-S-Mouse-3
2268 @kindex C-S-Mouse-3 @r{(FFAP)}
2269 Display a menu of files and URLs mentioned in current buffer, then
2270 find the one you select (@code{ffap-menu}).
2271 @end table
2273 @node Find-func
2274 @subsection Finding Function and Variable Definitions
2275 @cindex definitions, finding in Lisp sources
2276 @cindex Lisp definitions, finding in sources
2278 @table @kbd
2279 @item M-x find-function @key{RET} @var{function} @key{RET}
2280 Find the definition of @var{function} in its source file.
2281 @item M-x find-variable @key{RET} @var{variable} @key{RET}
2282 Find the definition of @var{variable} in its source file.
2283 @item M-x find-function-on-key @key{RET} @var{key}
2284 Find the definition of the function that @var{key} invokes.
2285 @end table
2287   These commands provide an easy way to find the definitions of Emacs
2288 Lisp functions and variables.  They are similar in purpose to the Tags
2289 facility (@pxref{Tags}), but don't require a tags table; on the other
2290 hand, they only work for function and variable definitions that are
2291 already loaded in the Emacs session.
2293 @findex find-function
2294 @findex find-function-on-key
2295 @findex find-variable
2296   To find the definition of a function, use @kbd{M-x find-function}.
2297 @kbd{M-x find-variable} finds the definition of a specified variable.
2298 @kbd{M-x find-function-on-key} finds the definition of the function
2299 bound to a specified key.
2301   To use these commands, you must have the Lisp source (@samp{.el})
2302 files available along with the compiled (@samp{.elc}) files, in
2303 directories in @code{load-path}.  You can use compressed source files
2304 if you enable Auto Compression mode.  These commands only handle
2305 definitions written in Lisp, not primitive functions or variables
2306 defined in the C code of Emacs.
2308 @node Dissociated Press, Amusements, Hyperlinking, Top
2309 @section Dissociated Press
2311 @findex dissociated-press
2312   @kbd{M-x dissociated-press} is a command for scrambling a file of text
2313 either word by word or character by character.  Starting from a buffer of
2314 straight English, it produces extremely amusing output.  The input comes
2315 from the current Emacs buffer.  Dissociated Press writes its output in a
2316 buffer named @samp{*Dissociation*}, and redisplays that buffer after every
2317 couple of lines (approximately) so you can read the output as it comes out.
2319   Dissociated Press asks every so often whether to continue generating
2320 output.  Answer @kbd{n} to stop it.  You can also stop at any time by
2321 typing @kbd{C-g}.  The dissociation output remains in the
2322 @samp{*Dissociation*} buffer for you to copy elsewhere if you wish.
2324 @cindex presidentagon
2325   Dissociated Press operates by jumping at random from one point in the
2326 buffer to another.  In order to produce plausible output rather than
2327 gibberish, it insists on a certain amount of overlap between the end of
2328 one run of consecutive words or characters and the start of the next.
2329 That is, if it has just output `president' and then decides to jump
2330 to a different point in the file, it might spot the `ent' in `pentagon'
2331 and continue from there, producing `presidentagon'.@footnote{This
2332 dissociword actually appeared during the Vietnam War, when it was very
2333 appropriate.}  Long sample texts produce the best results.
2335 @cindex againformation
2336   A positive argument to @kbd{M-x dissociated-press} tells it to operate
2337 character by character, and specifies the number of overlap characters.  A
2338 negative argument tells it to operate word by word and specifies the number
2339 of overlap words.  In this mode, whole words are treated as the elements to
2340 be permuted, rather than characters.  No argument is equivalent to an
2341 argument of two.  For your againformation, the output goes only into the
2342 buffer @samp{*Dissociation*}.  The buffer you start with is not changed.
2344 @cindex Markov chain
2345 @cindex ignoriginal
2346 @cindex techniquitous
2347   Dissociated Press produces nearly the same results as a Markov chain
2348 based on a frequency table constructed from the sample text.  It is,
2349 however, an independent, ignoriginal invention.  Dissociated Press
2350 techniquitously copies several consecutive characters from the sample
2351 between random choices, whereas a Markov chain would choose randomly for
2352 each word or character.  This makes for more plausible sounding results,
2353 and runs faster.
2355 @cindex outragedy
2356 @cindex buggestion
2357 @cindex properbose
2358 @cindex mustatement
2359 @cindex developediment
2360 @cindex userenced
2361   It is a mustatement that too much use of Dissociated Press can be a
2362 developediment to your real work.  Sometimes to the point of outragedy.
2363 And keep dissociwords out of your documentation, if you want it to be well
2364 userenced and properbose.  Have fun.  Your buggestions are welcome.
2366 @node Amusements, Customization, Dissociated Press, Top
2367 @section Other Amusements
2368 @cindex boredom
2369 @findex hanoi
2370 @findex yow
2371 @findex gomoku
2372 @cindex tower of Hanoi
2374   If you are a little bit bored, you can try @kbd{M-x hanoi}.  If you are
2375 considerably bored, give it a numeric argument.  If you are very, very
2376 bored, try an argument of 9.  Sit back and watch.
2378 @cindex Go Moku
2379   If you want a little more personal involvement, try @kbd{M-x gomoku},
2380 which plays the game Go Moku with you.
2382 @findex blackbox
2383 @findex mpuz
2384 @findex 5x5
2385 @cindex puzzles
2386   @kbd{M-x blackbox}, @kbd{M-x mpuz} and @kbd{M-x 5x5} are kinds of puzzles.
2387 @code{blackbox} challenges you to determine the location of objects
2388 inside a box by tomography.  @code{mpuz} displays a multiplication
2389 puzzle with letters standing for digits in a code that you must
2390 guess---to guess a value, type a letter and then the digit you think it
2391 stands for.  The aim of @code{5x5} is to fill in all the squares.
2393 @findex decipher
2394 @cindex ciphers
2395 @cindex cryptanalysis
2396 @kbd{M-x decipher} helps you to cryptanalyze a buffer which is encrypted
2397 in a simple monoalphabetic substitution cipher.
2399 @findex dunnet
2400   @kbd{M-x dunnet} runs an adventure-style exploration game, which is
2401 a bigger sort of puzzle.
2403 @findex lm
2404 @cindex landmark game
2405 @kbd{M-x lm} runs a relatively non-participatory game in which a robot
2406 attempts to maneuver towards a tree at the center of the window based on
2407 unique olfactory cues from each of the four directions.
2409 @findex life
2410 @cindex Life
2411 @kbd{M-x life} runs Conway's ``Life'' cellular automaton.
2413 @findex morse-region
2414 @findex unmorse-region
2415 @cindex Morse code
2416 @cindex --/---/.-./.../.
2417 @kbd{M-x morse-region} converts text in a region to Morse code and
2418 @kbd{M-x unmorse-region} converts it back.  No cause for remorse.
2420 @findex pong
2421 @cindex Pong game
2422 @kbd{M-x pong} plays a Pong-like game, bouncing the ball off opposing
2423 bats.
2425 @findex solitaire
2426 @cindex solitaire
2427 @kbd{M-x solitaire} plays a game of solitaire in which you jump pegs
2428 across other pegs.
2430 @findex studlify-region
2431 @cindex StudlyCaps
2432 @kbd{M-x studlify-region} studlify-cases the region, producing
2433 text like this:
2435 @example
2436 M-x stUdlIfY-RegioN stUdlIfY-CaSeS thE region.
2437 @end example
2439 @findex tetris
2440 @cindex Tetris
2441 @findex snake
2442 @cindex Snake
2443 @kbd{M-x tetris} runs an implementation of the well-known Tetris game.
2444 Likewise, @kbd{M-x snake} provides an implementation of Snake.
2446   When you are frustrated, try the famous Eliza program.  Just do
2447 @kbd{M-x doctor}.  End each input by typing @key{RET} twice.
2449 @cindex Zippy
2450   When you are feeling strange, type @kbd{M-x yow}.
2452 @findex zone
2453 The command @kbd{M-x zone} plays games with the display when Emacs is
2454 idle.
2456 @ifnottex
2457 @lowersections
2458 @end ifnottex
2460 @ignore
2461    arch-tag: 8f094220-c0d5-4e9e-af7d-3e0da8187474
2462 @end ignore