]> code.delx.au - gnu-emacs/blob - man/misc.texi
(FFAP): Add C-x C-r, C-x C-v, C-x C-d, C-x 4 r, C-x 4 d, C-x 5 r, C-x 5 d.
[gnu-emacs] / man / misc.texi
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
7
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.
15
16 @end iftex
17
18 @ifnottex
19 @raisesections
20 @end ifnottex
21
22 @node Gnus, Shell, Calendar/Diary, Top
23 @section Gnus
24 @cindex Gnus
25 @cindex reading netnews
26
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.
30
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
39
40 @findex gnus
41 To start Gnus, type @kbd{M-x gnus @key{RET}}.
42
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
48
49 @node Buffers of Gnus
50 @subsection Gnus Buffers
51
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}.
56
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.
61
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.
68
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.
73
74 @node Gnus Startup
75 @subsection When Gnus Starts Up
76
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.
81
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.
86
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.
93
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.
98
99 @node Summary of Gnus
100 @subsection Summary of Gnus Commands
101
102 Reading news is a two-step process:
103
104 @enumerate
105 @item
106 Choose a group in the group buffer.
107
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
113
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:
117
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.
124
125 In the summary buffer, exit the current group and return to the
126 group buffer. Thus, typing @kbd{q} twice quits Gnus.
127
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!
133
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.
139
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.
150
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.
157
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.''
161
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.
167
168 @need 1000
169 In the summary buffer,
170
171 @itemize @bullet
172 @item
173 Select the article on the line under the cursor if none is selected.
174
175 @item
176 Scroll the text of the selected article (if there is one).
177
178 @item
179 Select the next unread article if at the end of the current article.
180 @end itemize
181
182 Thus, you can move through all the articles by repeatedly typing @key{SPC}.
183
184 @kindex DEL @r{(Gnus)}
185 @item @key{DEL}
186 In the group buffer, move point to the previous group containing
187 unread articles.
188
189 @findex gnus-summary-prev-page
190 In the summary buffer, scroll the text of the article backwards.
191
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.
197
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.
204
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.
217
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}.
224
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}.
230
231 @end table
232
233 @ignore
234 @node Where to Look
235 @subsection Where to Look Further
236
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:
241
242 @end ifinfo
243 @iftex
244 additional topics in @cite{The Gnus Manual}:
245
246 @itemize @bullet
247 @item
248 Follow discussions on specific topics.@*
249 See section ``Threading.''
250
251 @item
252 Read digests. See section ``Document Groups.''
253
254 @item
255 Refer to and jump to the parent of the current article.@*
256 See section ``Finding the Parent.''
257
258 @item
259 Refer to articles by using Message-IDs included in the messages.@*
260 See section ``Article Keymap.''
261
262 @item
263 Save articles. See section ``Saving Articles.''
264
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.''
269
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}.
281
282 @item
283 Read digests. @xref{Document Groups, , , gnus, The Gnus Manual}.
284
285 @item
286 Refer to and jump to the parent of the current article.@*
287 @xref{Finding the Parent, , , gnus, The Gnus Manual}.
288
289 @item
290 Refer to articles by using Message-IDs included in the messages.@*
291 @xref{Article Keymap, , , gnus, The Gnus Manual}.
292
293 @item
294 Save articles. @xref{Saving Articles, , , gnus, The Gnus Manual}.
295
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}.
300
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
307
308 @node Shell, Emacs Server, Gnus, Top
309 @section Running Shell Commands from Emacs
310 @cindex subshell
311 @cindex shell commands
312
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.
317
318 There is a shell implemented entirely in Emacs, documented in a separate
319 manual. @xref{Top,Eshell,Eshell, eshell, Eshell: The Emacs Shell}.
320
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
340
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
353
354 @node Single Shell
355 @subsection Single Shell Commands
356
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).
366
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.
370
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.
376
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.
382
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.
391
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.
398
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
407
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.
415
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}.
418
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.
424
425 @node Interactive Shell
426 @subsection Interactive Inferior Shell
427
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}.
436
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.
442
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}.
449
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.
456
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.
469
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}.
475
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}.
480
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.
486
487 @node Shell Mode
488 @subsection Shell Mode
489 @cindex Shell mode
490 @cindex mode, Shell
491
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:
497
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}.)
507
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.
514
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.
523
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}).
530
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.
538
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.)
549
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}.
556
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}).
562
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}).
566
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.
573
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.
580
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.
587
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}.
595
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.
603
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}).
611
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}).
617
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.
625
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}).
631
632 @item M-x dirs
633 Ask the shell what its current directory is, so that Emacs can agree
634 with the shell.
635
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.
641
642 Alternatively, you can arrange for Emacs to notice password prompts
643 and turn off echoing for them, as follows:
644
645 @example
646 (add-hook 'comint-output-filter-functions
647 'comint-watch-for-password-prompt)
648 @end example
649
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.}
657
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:
664
665 @example
666 (add-hook 'comint-output-filter-functions
667 'comint-strip-ctrl-m)
668 @end example
669
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:
676
677 @example
678 (add-hook 'comint-output-filter-functions
679 'comint-truncate-buffer)
680 @end example
681 @end table
682
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.
686
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.
694
695 Other Emacs features that use variants of Comint mode include GUD
696 (@pxref{Debuggers}) and @kbd{M-x run-lisp} (@pxref{External Lisp}).
697
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.
702
703 @node Shell History
704 @subsection Shell Command History
705
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.
713
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
719
720 @node Shell Ring
721 @subsubsection Shell History Ring
722
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.
728
729 @kindex M-n @r{(Shell mode)}
730 @findex comint-next-input
731 @item M-n
732 Fetch the next later old shell command.
733
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}.
741
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.
746
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.
751
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
758
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.
764
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.
770
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.
776
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.
780
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.
788
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).
797
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.
802
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.
809
810 @node Shell History Copying
811 @subsubsection Shell History Copying
812
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}).
818
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}).
823
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.
832
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
837
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.
845
846 @node History References
847 @subsubsection Shell History References
848 @cindex history reference
849
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.
854
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}.
862
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}.
870
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.
884
885 @node Directory Tracking
886 @subsection Directory Tracking
887 @cindex directory tracking
888
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.
897
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.
907
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
914
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.
920
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.
925
926 @node Shell Options
927 @subsection Shell Mode Options
928
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.
933
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}.
940
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.
950
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.
957
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.
970
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.
975
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.
986
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:
989
990 @example
991 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
992 @end example
993
994 @node Terminal emulator
995 @subsection Emacs Terminal Emulator
996 @findex term
997
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.
1002
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}.
1005
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.
1012
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.
1022
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.
1027
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.
1032
1033 @node Term Mode
1034 @subsection Term Mode
1035 @cindex Term mode
1036 @cindex mode, Term
1037
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}.
1042
1043 To switch between line and char mode, use these commands:
1044
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.
1050
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
1056
1057 The following commands are only available in char mode:
1058
1059 @table @kbd
1060 @item C-c C-c
1061 Send a literal @key{C-c} to the sub-shell.
1062
1063 @item C-c @var{char}
1064 This is equivalent to @kbd{C-x @var{char}} in normal Emacs. For
1065 example, @kbd{C-c o} invokes the global binding of @kbd{C-x o}, which
1066 is normally @samp{other-window}.
1067 @end table
1068
1069 @node Paging in Term
1070 @subsection Page-At-A-Time Output
1071 @cindex page-at-a-time
1072
1073 Term mode has a page-at-a-time feature. When enabled it makes
1074 output pause at the end of each screenful.
1075
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
1084
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.
1090
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
1097
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.
1101
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.)
1108
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.
1112
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.)
1118
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.
1125
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:
1131
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
1138
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.
1147
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.)
1158
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.
1163
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.
1173
1174 @end ignore
1175
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
1182
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.
1191
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.
1195
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}.)
1204
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.
1212
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.
1219
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.
1223
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.
1233
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.
1237
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:
1244
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.
1251
1252 @item
1253 Using virtual terminals, run @code{mail} in one virtual terminal
1254 and run Emacs in another.
1255
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
1261
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.
1266
1267 @menu
1268 * Invoking emacsclient::
1269 @end menu
1270
1271 @node Invoking emacsclient,, Emacs Server, Emacs Server
1272 @subsection Invoking @code{emacsclient}
1273
1274 To run the @code{emacsclient} program, specify file names as arguments,
1275 and optionally line numbers as well. Do it like this:
1276
1277 @example
1278 emacsclient @r{@{}@r{[}+@var{line}@r{[}@var{column}@r{]}@r{]} @var{filename}@r{@}}@dots{}
1279 @end example
1280
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.
1286
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.
1291
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.)
1295
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:
1301
1302 @example
1303 EDITOR="emacsclient --alternate-editor vi +%d %s"
1304 @end example
1305
1306 @noindent
1307 The environment variable @var{ALTERNATE_EDITOR} has the same effect, but
1308 the value of the @samp{--alternate-editor} takes precedence.
1309
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.
1314
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.
1319
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.
1324
1325 @node Hardcopy, PostScript, Emacs Server, Top
1326 @section Hardcopy Output
1327 @cindex hardcopy
1328
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}).
1333
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
1345
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:
1357
1358 @example
1359 (setq lpr-switches '("-w80"))
1360 @end example
1361
1362 @vindex printer-name
1363 You can specify the printer to use by setting the variable
1364 @code{printer-name}.
1365
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}.
1378
1379 @node PostScript, PostScript Variables, Hardcopy, Top
1380 @section PostScript Hardcopy
1381
1382 These commands convert buffer contents to PostScript,
1383 either printing it or leaving it in another Emacs buffer.
1384
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
1407
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.
1419
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}.
1423
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.
1431
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.
1438
1439 @ifinfo
1440 The following section describes variables for customizing these commands.
1441 @end ifinfo
1442
1443 @node PostScript Variables, Sorting, PostScript, Top
1444 @section Variables for PostScript Hardcopy
1445
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.
1457
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.
1462
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.
1471
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.
1477
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}.
1487
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.
1493
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.
1498
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.
1507
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.
1525
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}.
1531
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}.
1534
1535 @node Sorting, Narrowing, PostScript Variables, Top
1536 @section Sorting Text
1537 @cindex sorting
1538
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.
1548
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.
1555
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.
1566
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.
1571
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.
1576
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.
1583
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.
1589
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.
1597
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.
1602
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
1608
1609 For example, if the buffer contains this:
1610
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
1618
1619 @noindent
1620 applying @kbd{M-x sort-lines} to the entire buffer produces this:
1621
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
1629
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:
1633
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
1641
1642 @noindent
1643 where the sort keys were @samp{Emacs}, @samp{If}, @samp{buffer},
1644 @samp{systems} and @samp{the}.
1645
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.
1654
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.
1660
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}.
1665
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}.
1669
1670 @node Narrowing, Two-Column, Sorting, Top
1671 @section Narrowing
1672 @cindex widening
1673 @cindex restriction
1674 @cindex narrowing
1675 @cindex accessible portion
1676
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}.
1683
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.
1687
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
1698
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.
1705
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.
1712
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}).
1721
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.
1726
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}.
1729
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}.
1735
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
1741
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.
1745
1746 There are three ways to enter two-column mode:
1747
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.
1758
1759 This command is appropriate when the current buffer is empty or contains
1760 just one column and you want to add another column.
1761
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.
1772
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.
1775
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
1785
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.
1792
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.)
1801
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.
1809
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}.
1817
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.
1825
1826 @node Editing Binary Files, Saving Emacs Sessions, Two-Column, Top
1827 @section Editing Binary Files
1828
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.
1838
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.
1842
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:
1847
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.
1852
1853 @item C-M-o
1854 Insert a byte with a code typed in octal.
1855
1856 @item C-M-x
1857 Insert a byte with a code typed in hex.
1858
1859 @item C-x [
1860 Move to the beginning of a 1k-byte ``page.''
1861
1862 @item C-x ]
1863 Move to the end of a 1k-byte ``page.''
1864
1865 @item M-g
1866 Move to an address specified in hex.
1867
1868 @item M-j
1869 Move to an address specified in decimal.
1870
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
1875
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.
1880
1881
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
1889
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.
1894
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:
1902
1903 @example
1904 (desktop-save-mode 1)
1905 @end example
1906
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.
1915
1916 Specify the option @samp{--no-desktop} on the command line when you
1917 don't want it to reload any saved desktop.
1918
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.
1928
1929 @node Recursive Edit, Emulation, Saving Emacs Sessions, Top
1930 @section Recursive Editing Levels
1931 @cindex recursive editing level
1932 @cindex editing level, recursive
1933
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}.
1940
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}).
1947
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}.
1951
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.
1957
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.
1964
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.
1972
1973 Alternatively, the command @kbd{M-x top-level} aborts all levels of
1974 recursive edits, returning immediately to the top-level command reader.
1975
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.
1986
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.
1995
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
2008
2009 GNU Emacs can be programmed to emulate (more or less) most other
2010 editors. Standard facilities can emulate these:
2011
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).
2027
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.
2033
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.
2038
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}.
2050
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.
2063
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.
2071
2072 Turning @code{pc-selection-mode} off restores the old key bindings of
2073 these keys.
2074
2075 @cindex s-region package
2076 The @code{s-region} package provides similar, but less complete,
2077 facilities.
2078
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.
2083
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}.
2092
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.
2099
2100 Because vi emulation works through major modes, it does not work
2101 to switch buffers during emulation. Return to normal Emacs first.
2102
2103 If you plan to use vi emulation much, you probably want to bind a key
2104 to the @code{vi-mode} command.
2105
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}.
2113
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.
2119
2120 @inforef{Top, VIP, vip}, for full information.
2121
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
2127
2128 @node Hyperlinking, Dissociated Press, Emulation, Top
2129 @section Hyperlinking and Navigation Features
2130
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}.
2143
2144 Other non-mode-specific facilities described in this section enable
2145 following links from the current buffer in a context-sensitive
2146 fashion.
2147
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
2154
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
2164
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
2169
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.
2174
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}.
2180
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.
2191
2192 @node Goto-address
2193 @subsection Activating URLs
2194 @findex goto-address
2195 @cindex Goto-address
2196 @cindex URLs, activating
2197
2198 @table @kbd
2199 @item M-x goto-address
2200 Activate URLs and e-mail addresses in the current buffer.
2201 @end table
2202
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}).
2210
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.
2216
2217
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
2226
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.
2234
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.
2239
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.
2245
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 C-r
2252 @kindex C-x C-r @r{(FFAP)}
2253 @code{ffap-read-only}, analogous to @code{find-file-read-only}.
2254 @item C-x C-v
2255 @kindex C-x C-v @r{(FFAP)}
2256 @code{ffap-alternate-file}, analogous to @code{find-alternate-file}.
2257 @item C-x d @var{directory} @key{RET}
2258 @kindex C-x d @r{(FFAP)}
2259 Start Dired on @var{directory}, defaulting to the directory name at
2260 point (@code{ffap-dired-at-point}).
2261 @item C-x C-d
2262 @code{ffap-list-directory}, analogous to @code{list-directory}.
2263 @item C-x 4 f
2264 @kindex C-x 4 f @r{(FFAP)}
2265 @code{ffap-other-window}, analogous to @code{find-file-other-window}.
2266 @item C-x 4 r
2267 @code{ffap-read-only-other-window}, analogous to
2268 @code{find-file-read-only-other-window}.
2269 @item C-x 4 d
2270 @code{ffap-dired-other-window}, analogous to @code{dired-other-window}.
2271 @item C-x 5 f
2272 @kindex C-x 5 f @r{(FFAP)}
2273 @code{ffap-other-frame}, analogous to @code{find-file-other-frame}.
2274 @item C-x 5 r
2275 @code{ffap-read-only-other-frame}, analogous to
2276 @code{find-file-read-only-other-frame}.
2277 @item C-x 5 d
2278 @code{ffap-dired-other-frame}, analogous to @code{dired-other-frame}.
2279 @item M-x ffap-next
2280 Search buffer for next file name or URL, then find that file or URL.
2281 @item S-Mouse-3
2282 @kindex S-Mouse-3 @r{(FFAP)}
2283 @code{ffap-at-mouse} finds the file guessed from text around the position
2284 of a mouse click.
2285 @item C-S-Mouse-3
2286 @kindex C-S-Mouse-3 @r{(FFAP)}
2287 Display a menu of files and URLs mentioned in current buffer, then
2288 find the one you select (@code{ffap-menu}).
2289 @end table
2290
2291 @node Find-func
2292 @subsection Finding Function and Variable Definitions
2293 @cindex definitions, finding in Lisp sources
2294 @cindex Lisp definitions, finding in sources
2295
2296 @table @kbd
2297 @item M-x find-function @key{RET} @var{function} @key{RET}
2298 Find the definition of @var{function} in its source file.
2299 @item M-x find-variable @key{RET} @var{variable} @key{RET}
2300 Find the definition of @var{variable} in its source file.
2301 @item M-x find-function-on-key @key{RET} @var{key}
2302 Find the definition of the function that @var{key} invokes.
2303 @end table
2304
2305 These commands provide an easy way to find the definitions of Emacs
2306 Lisp functions and variables. They are similar in purpose to the Tags
2307 facility (@pxref{Tags}), but don't require a tags table; on the other
2308 hand, they only work for function and variable definitions that are
2309 already loaded in the Emacs session.
2310
2311 @findex find-function
2312 @findex find-function-on-key
2313 @findex find-variable
2314 To find the definition of a function, use @kbd{M-x find-function}.
2315 @kbd{M-x find-variable} finds the definition of a specified variable.
2316 @kbd{M-x find-function-on-key} finds the definition of the function
2317 bound to a specified key.
2318
2319 To use these commands, you must have the Lisp source (@samp{.el})
2320 files available along with the compiled (@samp{.elc}) files, in
2321 directories in @code{load-path}. You can use compressed source files
2322 if you enable Auto Compression mode. These commands only handle
2323 definitions written in Lisp, not primitive functions or variables
2324 defined in the C code of Emacs.
2325
2326 @node Dissociated Press, Amusements, Hyperlinking, Top
2327 @section Dissociated Press
2328
2329 @findex dissociated-press
2330 @kbd{M-x dissociated-press} is a command for scrambling a file of text
2331 either word by word or character by character. Starting from a buffer of
2332 straight English, it produces extremely amusing output. The input comes
2333 from the current Emacs buffer. Dissociated Press writes its output in a
2334 buffer named @samp{*Dissociation*}, and redisplays that buffer after every
2335 couple of lines (approximately) so you can read the output as it comes out.
2336
2337 Dissociated Press asks every so often whether to continue generating
2338 output. Answer @kbd{n} to stop it. You can also stop at any time by
2339 typing @kbd{C-g}. The dissociation output remains in the
2340 @samp{*Dissociation*} buffer for you to copy elsewhere if you wish.
2341
2342 @cindex presidentagon
2343 Dissociated Press operates by jumping at random from one point in the
2344 buffer to another. In order to produce plausible output rather than
2345 gibberish, it insists on a certain amount of overlap between the end of
2346 one run of consecutive words or characters and the start of the next.
2347 That is, if it has just output `president' and then decides to jump
2348 to a different point in the file, it might spot the `ent' in `pentagon'
2349 and continue from there, producing `presidentagon'.@footnote{This
2350 dissociword actually appeared during the Vietnam War, when it was very
2351 appropriate.} Long sample texts produce the best results.
2352
2353 @cindex againformation
2354 A positive argument to @kbd{M-x dissociated-press} tells it to operate
2355 character by character, and specifies the number of overlap characters. A
2356 negative argument tells it to operate word by word and specifies the number
2357 of overlap words. In this mode, whole words are treated as the elements to
2358 be permuted, rather than characters. No argument is equivalent to an
2359 argument of two. For your againformation, the output goes only into the
2360 buffer @samp{*Dissociation*}. The buffer you start with is not changed.
2361
2362 @cindex Markov chain
2363 @cindex ignoriginal
2364 @cindex techniquitous
2365 Dissociated Press produces nearly the same results as a Markov chain
2366 based on a frequency table constructed from the sample text. It is,
2367 however, an independent, ignoriginal invention. Dissociated Press
2368 techniquitously copies several consecutive characters from the sample
2369 between random choices, whereas a Markov chain would choose randomly for
2370 each word or character. This makes for more plausible sounding results,
2371 and runs faster.
2372
2373 @cindex outragedy
2374 @cindex buggestion
2375 @cindex properbose
2376 @cindex mustatement
2377 @cindex developediment
2378 @cindex userenced
2379 It is a mustatement that too much use of Dissociated Press can be a
2380 developediment to your real work. Sometimes to the point of outragedy.
2381 And keep dissociwords out of your documentation, if you want it to be well
2382 userenced and properbose. Have fun. Your buggestions are welcome.
2383
2384 @node Amusements, Customization, Dissociated Press, Top
2385 @section Other Amusements
2386 @cindex boredom
2387 @findex hanoi
2388 @findex yow
2389 @findex gomoku
2390 @cindex tower of Hanoi
2391
2392 If you are a little bit bored, you can try @kbd{M-x hanoi}. If you are
2393 considerably bored, give it a numeric argument. If you are very, very
2394 bored, try an argument of 9. Sit back and watch.
2395
2396 @cindex Go Moku
2397 If you want a little more personal involvement, try @kbd{M-x gomoku},
2398 which plays the game Go Moku with you.
2399
2400 @findex blackbox
2401 @findex mpuz
2402 @findex 5x5
2403 @cindex puzzles
2404 @kbd{M-x blackbox}, @kbd{M-x mpuz} and @kbd{M-x 5x5} are kinds of puzzles.
2405 @code{blackbox} challenges you to determine the location of objects
2406 inside a box by tomography. @code{mpuz} displays a multiplication
2407 puzzle with letters standing for digits in a code that you must
2408 guess---to guess a value, type a letter and then the digit you think it
2409 stands for. The aim of @code{5x5} is to fill in all the squares.
2410
2411 @findex decipher
2412 @cindex ciphers
2413 @cindex cryptanalysis
2414 @kbd{M-x decipher} helps you to cryptanalyze a buffer which is encrypted
2415 in a simple monoalphabetic substitution cipher.
2416
2417 @findex dunnet
2418 @kbd{M-x dunnet} runs an adventure-style exploration game, which is
2419 a bigger sort of puzzle.
2420
2421 @findex lm
2422 @cindex landmark game
2423 @kbd{M-x lm} runs a relatively non-participatory game in which a robot
2424 attempts to maneuver towards a tree at the center of the window based on
2425 unique olfactory cues from each of the four directions.
2426
2427 @findex life
2428 @cindex Life
2429 @kbd{M-x life} runs Conway's ``Life'' cellular automaton.
2430
2431 @findex morse-region
2432 @findex unmorse-region
2433 @cindex Morse code
2434 @cindex --/---/.-./.../.
2435 @kbd{M-x morse-region} converts text in a region to Morse code and
2436 @kbd{M-x unmorse-region} converts it back. No cause for remorse.
2437
2438 @findex pong
2439 @cindex Pong game
2440 @kbd{M-x pong} plays a Pong-like game, bouncing the ball off opposing
2441 bats.
2442
2443 @findex solitaire
2444 @cindex solitaire
2445 @kbd{M-x solitaire} plays a game of solitaire in which you jump pegs
2446 across other pegs.
2447
2448 @findex studlify-region
2449 @cindex StudlyCaps
2450 @kbd{M-x studlify-region} studlify-cases the region, producing
2451 text like this:
2452
2453 @example
2454 M-x stUdlIfY-RegioN stUdlIfY-CaSeS thE region.
2455 @end example
2456
2457 @findex tetris
2458 @cindex Tetris
2459 @findex snake
2460 @cindex Snake
2461 @kbd{M-x tetris} runs an implementation of the well-known Tetris game.
2462 Likewise, @kbd{M-x snake} provides an implementation of Snake.
2463
2464 When you are frustrated, try the famous Eliza program. Just do
2465 @kbd{M-x doctor}. End each input by typing @key{RET} twice.
2466
2467 @cindex Zippy
2468 When you are feeling strange, type @kbd{M-x yow}.
2469
2470 @findex zone
2471 The command @kbd{M-x zone} plays games with the display when Emacs is
2472 idle.
2473
2474 @ifnottex
2475 @lowersections
2476 @end ifnottex
2477
2478 @ignore
2479 arch-tag: 8f094220-c0d5-4e9e-af7d-3e0da8187474
2480 @end ignore